# 粒子系统插件

一个功能完整的3D粒子系统插件，为EG引擎提供高性能的粒子特效功能。

## 功能特性

### 核心功能
- **多种粒子效果**: 支持火焰、烟雾、爆炸、水花、魔法、雪花等多种预设效果
- **实时物理模拟**: 重力、风力、碰撞检测、力场等物理效果
- **高性能渲染**: 支持广告牌和点精灵渲染模式，优化的批量渲染
- **可视化编辑**: 直观的参数调节界面，实时预览效果
- **性能监控**: 实时监控FPS、粒子数量、渲染时间等性能指标
- **预设管理**: 内置预设和自定义预设的保存、加载功能

### 粒子属性控制
- 生命周期和颜色渐变
- 尺寸变化和旋转效果
- 速度和发射形状控制
- 重力、空气阻力和反弹系数
- 多种发射器形状（点、圆形、球形、盒形）

### 物理系统
- 重力和风力模拟
- 地面和边界碰撞检测
- 自定义力场（引力、斥力、涡流等）
- 与Bullet物理引擎集成

### 编辑功能
- 实时参数调节
- 效果类型切换
- 预设保存和加载
- 可视化性能监控

## 使用方法

### 快捷键操作
- **F5**: 切换粒子编辑器显示
- **F6**: 切换性能监控器显示
- **F7**: 创建测试粒子效果
- **F8**: 清除所有粒子
- **F9**: 创建火焰效果
- **F10**: 创建烟雾效果
- **F11**: 创建爆炸效果
- **F12**: 创建水花效果

### GUI界面操作
插件会在屏幕左上角创建控制面板，可以通过按钮直接创建各种粒子效果。

### 编程接口
```python
# 获取插件实例
particle_plugin = world.plugin_manager.get_plugin("particle_system")

# 创建预设效果
particle_plugin.create_fire_effect()      # 火焰效果
particle_plugin.create_smoke_effect()     # 烟雾效果
particle_plugin.create_explosion_effect() # 爆炸效果
particle_plugin.create_water_effect()     # 水花效果
particle_plugin.create_magic_effect()     # 魔法效果
particle_plugin.create_snow_effect()      # 雪花效果

# 创建自定义效果
config = {
    'emission_rate': 100,
    'particle_lifetime': 3.0,
    'start_color': Vec3(1.0, 0.5, 0.0),
    'end_color': Vec3(1.0, 0.0, 0.0),
    'start_size': 0.3,
    'end_size': 0.6,
    'velocity': Vec3(0, 0, 2),
    'gravity_scale': -0.5
}
particle_plugin.particle_manager.create_emitter("custom", position, config)

# 性能控制
particle_plugin.set_max_particles(5000)           # 设置最大粒子数
particle_plugin.set_global_time_scale(0.5)        # 设置时间缩放
particle_plugin.set_emit_rate_multiplier(2.0)     # 设置发射速率倍增
particle_plugin.set_particle_size_multiplier(1.5) # 设置粒子尺寸倍增

# 预设管理
particle_plugin.list_presets()                    # 列出所有预设
particle_plugin.load_preset("经典火焰")            # 加载预设
```

## 性能优化

### 对象池技术
使用对象池管理粒子对象，避免频繁创建和销毁对象的开销。

### 批量渲染
支持批量渲染大量粒子，减少绘制调用次数。

### 自适应更新
根据粒子数量和复杂度动态调整更新频率。

## 预设效果

### 内置预设
- 经典火焰: 典型的上升火焰效果
- 浓密烟雾: 缓慢上升的烟雾效果
- 强力爆炸: 瞬间爆发的爆炸效果
- 清澈水花: 下落并反弹的水花效果
- 魔法光球: 悬浮旋转的魔法粒子效果
- 飘落雪花: 从上至下飘落的雪花效果

### 自定义预设
支持创建、保存和加载自定义预设，满足特定项目需求。

## 扩展开发

### 添加新的粒子效果类型
1. 在[particle_manager.py](file:///home/hello/EG/plugins/user/particle_system/core/particle_manager.py)中添加新的创建方法
2. 在[particle_emitter.py](file:///home/hello/EG/plugins/user/particle_system/core/particle_emitter.py)中支持新的参数配置
3. 在[particle_renderer.py](file:///home/hello/EG/plugins/user/particle_system/core/particle_renderer.py)中添加渲染支持
4. 在编辑器中添加对应的界面元素

### 添加新的物理效果
1. 在[particle_physics.py](file:///home/hello/EG/plugins/user/particle_system/core/particle_physics.py)中实现新的物理计算
2. 在粒子属性中添加对应的参数
3. 在编辑器中添加参数调节控件

## 性能监控

插件内置性能监控功能，可以实时显示：
- FPS和平均FPS
- 当前粒子数量和活跃发射器数量
- 渲染时间和物理计算时间
- 内存使用情况
- 绘制调用次数和顶点数量

通过性能监控可以及时发现和解决性能瓶颈问题。

## 故障排除

### 粒子效果不显示
1. 检查插件是否已正确启用
2. 确认粒子数量限制设置
3. 检查摄像机位置和粒子发射位置

### 性能问题
1. 使用性能监控器查看瓶颈所在
2. 降低粒子数量或简化粒子效果
3. 调整渲染设置（如使用点精灵代替广告牌）

### 编辑器无法使用
1. 确认GUI系统是否正常工作
2. 检查快捷键是否被其他系统占用
3. 重新启用插件尝试

## 版本信息

- 版本: 1.0.0
- 作者: EG Team
- 发布日期: 2024年

## 许可证

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