EG/plugins/user/fluid_dynamics/plugin.py
2025-10-30 11:46:41 +08:00

99 lines
3.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
流体动力学插件
此文件定义了插件的主类和基本接口
"""
from plugins.plugin_manager import BasePlugin
from .core.fluid_world import FluidWorld
class Plugin(BasePlugin):
"""
流体动力学插件主类
"""
def __init__(self, plugin_manager, name):
super().__init__(plugin_manager, name)
# 设置插件配置
self.config = {
"version": "1.0.0",
"author": "Your Name",
"description": "基于物理的流体动力学模拟插件"
}
# 流体世界实例
self.fluid_world = None
def initialize(self) -> bool:
"""
初始化插件
在插件加载时调用,用于执行一次性设置
返回True表示初始化成功False表示失败
"""
print(f"初始化流体动力学插件: {self.name}")
# 在这里执行插件初始化逻辑
return True
def enable(self) -> bool:
"""
启用插件
在插件启用时调用用于注册事件处理器、创建GUI元素等
返回True表示启用成功False表示失败
"""
if not super().enable():
return False
print(f"启用流体动力学插件: {self.name}")
# 创建流体世界实例
try:
self.fluid_world = FluidWorld(self.plugin_manager.world)
print("流体世界创建成功")
except Exception as e:
print(f"流体世界创建失败: {e}")
return False
# 在这里执行插件启用逻辑
# 例如注册事件处理器:
# self.plugin_manager.world.accept("f1", self.on_f1_pressed)
return True
def disable(self) -> bool:
"""
禁用插件
在插件禁用时调用,用于清理资源、移除事件处理器等
返回True表示禁用成功False表示失败
"""
if not super().disable():
return False
print(f"禁用流体动力学插件: {self.name}")
# 清理流体世界资源
if self.fluid_world:
self.fluid_world.cleanup()
# 在这里执行插件禁用逻辑
# 例如移除事件处理器:
# self.plugin_manager.world.ignore("f1")
return True
def finalize(self):
"""
清理插件资源
在插件卸载时调用,用于执行最终清理工作
"""
print(f"清理流体动力学插件资源: {self.name}")
# 在这里执行最终清理逻辑
if self.fluid_world:
self.fluid_world.cleanup()
def get_info(self) -> dict:
"""
获取插件信息
返回包含插件信息的字典
"""
info = super().get_info()
info.update({
"version": self.config.get("version", "1.0.0"),
"author": self.config.get("author", "Unknown"),
"description": self.config.get("description", "Fluid dynamics plugin")
})
return info