133 lines
3.9 KiB
Python
133 lines
3.9 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() |