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

292 lines
9.3 KiB
Python

"""
多平台输入支持插件
为EG引擎提供统一的多平台输入设备支持
"""
from .core.input_manager import InputManager
from .core.advanced_input_processor import AdvancedInputProcessor
from .devices.device_manager import DeviceManager
from .devices.device_calibrator import DeviceCalibrator
from .events.event_system import EventSystem
from .mapping.input_mapper import InputMapper
from .gestures.gesture_recognizer import GestureRecognizer
from .haptics.haptic_manager import HapticManager
from .config.config_manager import ConfigManager
from .editor.input_editor import InputEditor
from .utils.input_utils import InputUtils
from .platforms.platform_adapter import PlatformAdapter
class MultiPlatformInputPlugin:
"""
多平台输入支持插件主类
整合所有输入设备支持功能模块
"""
def __init__(self, engine):
"""
初始化多平台输入支持插件
Args:
engine: EG引擎实例
"""
self.engine = engine
self.name = "MultiPlatformInput"
self.version = "1.0.0"
self.author = "EG Plugin System"
# 功能模块
self.input_manager = None
self.advanced_input_processor = None
self.device_manager = None
self.device_calibrator = None
self.event_system = None
self.input_mapper = None
self.gesture_recognizer = None
self.haptic_manager = None
self.config_manager = None
self.input_editor = None
self.input_utils = None
self.platform_adapter = None
# 插件状态
self.enabled = False
self.initialized = False
# 性能统计
self.stats = {
'devices_connected': 0,
'events_processed': 0,
'gestures_recognized': 0,
'haptic_effects': 0,
'input_mappings': 0
}
print(f"✓ 多平台输入支持插件 v{self.version} 已创建")
def initialize(self) -> bool:
"""
初始化插件
Returns:
是否初始化成功
"""
try:
print("正在初始化多平台输入支持插件...")
# 初始化核心组件
self.input_manager = InputManager(self)
self.advanced_input_processor = AdvancedInputProcessor(self)
self.device_manager = DeviceManager(self)
self.device_calibrator = DeviceCalibrator(self)
self.event_system = EventSystem(self)
self.input_mapper = InputMapper(self)
self.gesture_recognizer = GestureRecognizer(self)
self.haptic_manager = HapticManager(self)
self.config_manager = ConfigManager(self)
self.input_editor = InputEditor(self)
self.input_utils = InputUtils(self)
self.platform_adapter = PlatformAdapter(self)
# 初始化各个模块
modules = [
self.input_manager,
self.advanced_input_processor,
self.device_manager,
self.device_calibrator,
self.event_system,
self.input_mapper,
self.gesture_recognizer,
self.haptic_manager,
self.config_manager,
self.input_editor,
self.input_utils,
self.platform_adapter
]
for module in modules:
if module and not module.initialize():
print(f"✗ 模块初始化失败: {module.__class__.__name__}")
return False
self.initialized = True
print("✓ 多平台输入支持插件初始化完成")
return True
except Exception as e:
print(f"✗ 多平台输入支持插件初始化失败: {e}")
import traceback
traceback.print_exc()
return False
def enable(self) -> bool:
"""
启用插件
Returns:
是否启用成功
"""
try:
if not self.initialized:
print("✗ 插件未初始化")
return False
print("正在启用多平台输入支持插件...")
# 启用各个模块
modules = [
self.input_manager,
self.advanced_input_processor,
self.device_manager,
self.device_calibrator,
self.event_system,
self.input_mapper,
self.gesture_recognizer,
self.haptic_manager,
self.config_manager,
self.input_editor,
self.input_utils,
self.platform_adapter
]
for module in modules:
if module and not module.enable():
print(f"✗ 模块启用失败: {module.__class__.__name__}")
return False
self.enabled = True
print("✓ 多平台输入支持插件已启用")
return True
except Exception as e:
print(f"✗ 多平台输入支持插件启用失败: {e}")
import traceback
traceback.print_exc()
return False
def disable(self):
"""禁用插件"""
try:
if not self.enabled:
return
print("正在禁用多平台输入支持插件...")
# 禁用各个模块
modules = [
self.input_manager,
self.advanced_input_processor,
self.device_manager,
self.device_calibrator,
self.event_system,
self.input_mapper,
self.gesture_recognizer,
self.haptic_manager,
self.config_manager,
self.input_editor,
self.input_utils,
self.platform_adapter
]
for module in modules:
if module:
module.disable()
self.enabled = False
print("✓ 多平台输入支持插件已禁用")
except Exception as e:
print(f"✗ 多平台输入支持插件禁用失败: {e}")
import traceback
traceback.print_exc()
def finalize(self):
"""清理插件资源"""
try:
print("正在清理多平台输入支持插件资源...")
# 清理各个模块
modules = [
self.input_manager,
self.advanced_input_processor,
self.device_manager,
self.device_calibrator,
self.event_system,
self.input_mapper,
self.gesture_recognizer,
self.haptic_manager,
self.config_manager,
self.input_editor,
self.input_utils,
self.platform_adapter
]
for module in modules:
if module:
module.finalize()
self.initialized = False
print("✓ 多平台输入支持插件资源已清理")
except Exception as e:
print(f"✗ 多平台输入支持插件资源清理失败: {e}")
import traceback
traceback.print_exc()
def update(self, dt: float):
"""
更新插件状态
Args:
dt: 时间增量(秒)
"""
try:
if not self.enabled:
return
# 更新各个模块
modules = [
self.input_manager,
self.advanced_input_processor,
self.device_manager,
self.device_calibrator,
self.event_system,
self.input_mapper,
self.gesture_recognizer,
self.haptic_manager,
self.config_manager,
self.input_editor,
self.input_utils,
self.platform_adapter
]
for module in modules:
if module:
module.update(dt)
# 更新统计信息
self.stats['events_processed'] += 1
except Exception as e:
print(f"✗ 多平台输入支持插件更新失败: {e}")
import traceback
traceback.print_exc()
def get_stats(self) -> dict:
"""
获取插件统计信息
Returns:
统计信息字典
"""
return self.stats.copy()
def reset_stats(self):
"""重置统计信息"""
self.stats = {
'devices_connected': 0,
'events_processed': 0,
'gestures_recognized': 0,
'haptic_effects': 0,
'input_mappings': 0
}
print("✓ 多平台输入支持统计信息已重置")