""" 示例插件 演示如何创建一个简单的插件 """ from plugins.plugin_manager import BasePlugin class Plugin(BasePlugin): """ 示例插件 演示如何创建一个简单的插件 """ def __init__(self, plugin_manager, name): super().__init__(plugin_manager, name) self.config = { "version": "1.0.0", "author": "EG Team", "description": "示例插件,演示插件基本功能" } def initialize(self) -> bool: """ 初始化插件 """ print(f"初始化示例插件: {self.name}") return True def enable(self) -> bool: """ 启用插件 """ if not super().enable(): return False print(f"启用示例插件: {self.name}") # 注册一个示例事件处理器 self.plugin_manager.world.accept("f10", self.on_f10_pressed) # 在场景中添加一个示例文本 self.example_text = self.plugin_manager.world.render.attachNewNode("example_text") self.example_text.setPos(0, 0, 5) # 如果有GUI管理器,添加一个示例按钮 if hasattr(self.plugin_manager.world, 'gui_manager') and self.plugin_manager.world.gui_manager: self.example_button = self.plugin_manager.world.gui_manager.createGUIButton( pos=(0.5, 0, 0.9), text="示例插件按钮", size=0.08 ) # 注册按钮点击事件 self.plugin_manager.world.accept("example_button_click", self.on_button_click) return True def disable(self) -> bool: """ 禁用插件 """ if not super().disable(): return False print(f"禁用示例插件: {self.name}") # 移除事件处理器 self.plugin_manager.world.ignore("f10") # 清理示例文本 if hasattr(self, 'example_text'): self.example_text.removeNode() # 清理示例按钮 if hasattr(self, 'example_button'): self.plugin_manager.world.gui_manager.deleteGUIElement(self.example_button) self.plugin_manager.world.ignore("example_button_click") return True def finalize(self): """ 清理插件资源 """ print(f"清理示例插件资源: {self.name}") def on_f10_pressed(self): """ F10按键事件处理器 """ print("示例插件: F10按键被按下") def on_button_click(self): """ 按钮点击事件处理器 """ print("示例插件: 按钮被点击")