feat: 对接KCP-C

This commit is contained in:
meiqi
2026-03-30 23:04:39 +08:00
parent cc1f766009
commit faebc5d44c
9 changed files with 1357 additions and 2 deletions

View File

@@ -47,7 +47,13 @@ def timing_decorator(func):
class XMIGCSControlNode(Node):
"""xMIGCS控制节点Python版本"""
VALID_CONTROL_TOOLS = ("joystick", "xbox", "keyboard", "udp_loopback")
VALID_CONTROL_TOOLS = (
"joystick",
"xbox",
"keyboard",
"udp_loopback",
"omnisocket_loopback",
)
def __init__(self, debug=False):
super().__init__('xmigcs_control_node')
@@ -185,6 +191,13 @@ class XMIGCSControlNode(Node):
self.udp_fsm_controller.init()
self.udp_fsm_controller.start()
if "omnisocket_loopback" in self.control_tools:
from udp_loopback.omnisocket_fsm_controller import OmniSocketFSMController
self.omnisocket_fsm_controller = OmniSocketFSMController()
self.omnisocket_fsm_controller.init()
self.omnisocket_fsm_controller.start()
# Xbox控制器
if "xbox" in self.control_tools:
self.xbox_controller = XBOXController()
@@ -333,6 +346,15 @@ class XMIGCSControlNode(Node):
self.udp_fsm_controller.get_last_fsm_command_time(),
))
if "omnisocket_loopback" in self.control_tools:
self.omnisocket_fsm_controller.update_flag()
source_flags.append((
"omnisocket_loopback",
self.omnisocket_fsm_controller.get_udp_flag(),
self.omnisocket_fsm_controller.get_last_input_time(),
self.omnisocket_fsm_controller.get_last_fsm_command_time(),
))
source_name, active_flag = self._select_control_flag(source_flags)
flag = self._copy_control_flag(active_flag)
flag.fsm_state_command = self._select_fsm_command(source_flags)
@@ -421,6 +443,9 @@ class XMIGCSControlNode(Node):
if hasattr(self,
'udp_fsm_controller') and "udp_loopback" in self.control_tools:
self.udp_fsm_controller.stop()
if hasattr(self,
'omnisocket_fsm_controller') and "omnisocket_loopback" in self.control_tools:
self.omnisocket_fsm_controller.stop()
if self.control_thread and self.control_thread.is_alive():
self.control_thread.join(timeout=1.0)