feat: 对接KCP-C
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user