""" 流体动力学插件 此文件定义了插件的主类和基本接口 """ 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