# 植被分布和生态模拟插件

## 概述

植被分布和生态模拟插件为EG引擎提供了一个完整的生态系统模拟解决方案，包括植被生成、动物行为模拟、环境影响、季节变化和可视化展示等功能。该插件可以帮助开发者创建逼真的自然环境，支持复杂的生态关系和动态变化。

## 功能特性

### 1. 植被管理系统
- 多种植被类型支持（草地、灌木、树木、花卉等）
- 基于环境条件的植被分布
- 植被生长、繁殖和死亡模拟
- 植被健康度和年龄系统

### 2. 动物行为模拟
- 多种动物种类（兔子、鹿、狼、鸟类等）
- 动物繁殖、死亡和迁徙行为
- 食物链和捕食者-猎物关系
- 动物群体行为模拟

### 3. 生态系统动力学
- 能量流动和物质循环模拟
- 生态位和竞争关系建模
- 生态系统稳定性分析
- 生物多样性评估

### 4. 环境影响系统
- 地形对植被分布的影响
- 气候和季节性变化
- 土壤质量和水资源影响
- 微气候效应模拟

### 5. 季节变化系统
- 四季循环和过渡效果
- 季节性植被变化
- 动物行为的季节性调整
- 环境参数的季节性调整

### 6. 可视化系统
- 高性能植被渲染
- LOD（细节层次）系统
- 动态光照和阴影
- 季节性色彩调整

### 7. 编辑器工具
- 可视化编辑界面
- 参数调整和实时预览
- 预设管理系统
- 撤销/重做功能

## 安装和使用

### 安装
将插件文件夹复制到EG引擎的plugins目录中：

```
cp -r vegetation_ecosystem /path/to/eg/plugins/user/
```

### 初始化插件
在EG引擎中加载插件：

```python
from plugins.user.vegetation_ecosystem.plugin import VegetationEcosystemPlugin

# 创建插件实例
eco_plugin = VegetationEcosystemPlugin(engine)

# 初始化插件
if eco_plugin.initialize():
    # 启用插件
    eco_plugin.enable()
```

### 基本使用

#### 生成植被
```python
# 获取植被生成器
spawner = eco_plugin.vegetation_spawner

# 在指定区域生成植被
spawner.spawn_vegetation(
    area=((-50, -50), (50, 50)),
    density=0.8,
    algorithm='environmental'
)
```

#### 调整环境参数
```python
# 获取植被管理器
vegetation_manager = eco_plugin.vegetation_manager

# 更新环境因子
vegetation_manager.update_environment_factors({
    'temperature': 25.0,
    'humidity': 70.0,
    'soil_fertility': 0.8
})
```

#### 控制季节变化
```python
# 获取季节效应系统
seasonal_effects = eco_plugin.seasonal_effects

# 快进到夏季
seasonal_effects.fast_forward_to_season('summer')

# 或者调整季节持续时间
seasonal_effects.set_season_duration('spring', 60)  # 60天
```

## API参考

### 核心模块

#### VegetationManager（植被管理器）
- `get_vegetation_types()` - 获取所有植被类型
- `create_vegetation_instance()` - 创建植被实例
- `update_environment_factors()` - 更新环境因子
- `get_suitability_score()` - 计算植被适宜性评分

#### AnimalSimulator（动物模拟器）
- `get_animal_species()` - 获取所有动物种类
- `create_animal_instance()` - 创建动物实例
- `simulate_feeding()` - 模拟进食过程
- `get_population_data()` - 获取种群数据

#### EcosystemManager（生态系统管理器）
- `add_predator_prey_relationship()` - 添加捕食关系
- `get_biodiversity_index()` - 获取生物多样性指数
- `get_system_state()` - 获取系统状态

#### VegetationSpawner（植被生成器）
- `spawn_vegetation()` - 生成植被
- `get_distribution_algorithms()` - 获取分布算法
- `regenerate_vegetation()` - 重新生成植被

#### GrowthSimulator（生长模拟器）
- `set_growth_model()` - 设置生长模型
- `get_growth_parameters()` - 获取生长参数
- `simulate_seasonal_growth()` - 模拟季节性生长

#### TerrainInfluence（地形影响）
- `calculate_terrain_influence()` - 计算地形影响
- `get_terrain_suitability_map()` - 获取地形适宜性地图
- `simulate_terrain_adaptation()` - 模拟地形适应

#### SeasonalEffects（季节效应）
- `get_current_season()` - 获取当前季节
- `start_season_transition()` - 开始季节过渡
- `get_seasonal_events()` - 获取季节性事件

#### EcoVisualizer（生态可视化器）
- `render_vegetation()` - 渲染植被
- `render_animals()` - 渲染动物
- `set_render_config()` - 设置渲染配置
- `capture_screenshot()` - 截取屏幕截图

### 编辑器模块

#### EcoEditor（生态编辑器）
- `set_edit_mode()` - 设置编辑模式
- `set_parameter()` - 设置参数
- `undo()` / `redo()` - 撤销/重做
- `spawn_vegetation()` - 生成植被

#### PresetManager（预设管理器）
- `save_preset()` - 保存预设
- `apply_preset()` - 应用预设
- `list_presets()` - 列出预设
- `search_presets()` - 搜索预设

### 工具模块

#### EcoUtils（生态系统工具）
- `log_message()` - 记录日志
- `get_performance_stats()` - 获取性能统计
- `cache_data()` - 缓存数据
- `serialize_data()` - 序列化数据

## 配置选项

### 插件配置
```python
config = {
    'simulation_speed': 1.0,      # 模拟速度
    'render_distance': 100.0,     # 渲染距离
    'max_instances': 5000,        # 最大实例数
    'season_duration': 90         # 季节持续时间（天）
}
```

### 植被配置
```python
vegetation_config = {
    'density': 1.0,               # 植被密度
    'clumping_factor': 0.7,       # 聚集因子
    'spawn_area': ((-100, -100), (100, 100))  # 生成区域
}
```

### 动物配置
```python
animal_config = {
    'feeding_efficiency': 0.8,    # 进食效率
    'energy_consumption': 0.1,    # 能量消耗率
    'migration_probability': 0.05  # 迁移概率
}
```

## 性能优化

1. **LOD系统** - 根据距离自动调整渲染细节
2. **对象池** - 重用植被和动物实例
3. **数据缓存** - 缓存计算结果避免重复计算
4. **批量处理** - 批量更新和渲染操作
5. **视锥剔除** - 只渲染视野内的对象

## 扩展开发

### 添加新的植被类型
```python
# 在VegetationManager中添加新的植被类型定义
new_plant = {
    'name': '新植物',
    'description': '植物描述',
    'height_range': (0.5, 2.0),
    'growth_rate': 0.1,
    'preferred_conditions': {
        'temperature': (15, 25),
        'humidity': (60, 80)
    }
}
```

### 添加新的动物种类
```python
# 在AnimalSimulator中添加新的动物种类定义
new_animal = {
    'name': '新动物',
    'diet': 'herbivore',
    'reproduction_rate': 0.1,
    'preferred_food': ['grass', 'flower']
}
```

### 自定义生长模型
```python
# 在GrowthSimulator中实现新的生长模型
def custom_growth_function(time, params):
    # 自定义生长算法
    return size
```

## 故障排除

### 常见问题

1. **性能问题**
   - 降低渲染距离
   - 减少最大实例数
   - 使用更低的LOD级别

2. **植被分布不自然**
   - 调整环境权重
   - 更改分布算法
   - 修改聚集因子

3. **动物行为异常**
   - 检查食物链配置
   - 调整行为参数
   - 验证环境适应性

### 支持

如遇到问题，请查看日志文件或联系开发者支持。

## 许可证

本插件遵循EG引擎的许可证协议。

## 版本历史

- v1.0.0 - 初始版本，包含完整的植被和生态系统模拟功能