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

133 lines
3.8 KiB
Python

"""
地形编辑器核心类
"""
from plugins.plugin_manager import BasePlugin
class TerrainEditorPlugin(BasePlugin):
"""
地形编辑器插件核心类
"""
def __init__(self, plugin_manager, name):
super().__init__(plugin_manager, name)
self.config = {
"version": "1.0.0",
"author": "EG Team",
"description": "地形编辑器插件,提供完整的地形创建和编辑功能"
}
self.terrain_editor_ui = None
self.terrain_tools = None
self.terrain_materials = None
self.terrain_io = None
self.terrain_optimization = None
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._init_modules()
# 创建UI界面
self._create_ui()
# 注册事件处理器
self._register_events()
return True
def disable(self) -> bool:
"""
禁用地形编辑器插件
"""
if not super().disable():
return False
print(f"禁用地形编辑器插件: {self.name}")
# 清理UI界面
self._cleanup_ui()
# 注销事件处理器
self._unregister_events()
return True
def finalize(self):
"""
清理地形编辑器插件资源
"""
print(f"清理地形编辑器插件资源: {self.name}")
def _init_modules(self):
"""
初始化各个功能模块
"""
try:
# 动态导入各个模块
from .ui.terrain_editor_ui import TerrainEditorUI
from .tools.terrain_tools import TerrainTools
from .materials.terrain_materials import TerrainMaterials
from .io.terrain_io import TerrainIO
from .optimization.terrain_optimization import TerrainOptimization
# 创建模块实例
self.terrain_editor_ui = TerrainEditorUI(self.plugin_manager.world)
self.terrain_tools = TerrainTools(self.plugin_manager.world)
self.terrain_materials = TerrainMaterials(self.plugin_manager.world)
self.terrain_io = TerrainIO(self.plugin_manager.world)
self.terrain_optimization = TerrainOptimization(self.plugin_manager.world)
print("✓ 地形编辑器各功能模块初始化成功")
except Exception as e:
print(f"❌ 地形编辑器模块初始化失败: {e}")
def _create_ui(self):
"""
创建UI界面
"""
if self.terrain_editor_ui:
self.terrain_editor_ui.create_interface()
def _cleanup_ui(self):
"""
清理UI界面
"""
if self.terrain_editor_ui:
self.terrain_editor_ui.cleanup()
def _register_events(self):
"""
注册事件处理器
"""
world = self.plugin_manager.world
# 注册快捷键
world.accept("f6", self._toggle_terrain_editor)
def _unregister_events(self):
"""
注销事件处理器
"""
world = self.plugin_manager.world
# 注销快捷键
world.ignore("f6")
def _toggle_terrain_editor(self):
"""
切换地形编辑器显示/隐藏
"""
if self.terrain_editor_ui:
self.terrain_editor_ui.toggle_visibility()