Basic mission vessel tunnel
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class ManeuverAlarmType(Enum):
|
||||
ManeuverNode = 1,
|
||||
SOI = 2
|
||||
|
||||
|
||||
class Maneuver:
|
||||
def __init__(self, conn, vessel):
|
||||
self.vessel = vessel
|
||||
self.conn = conn
|
||||
|
||||
def plan_next_maneuver(self, conn):
|
||||
pass
|
||||
|
||||
|
||||
class NodeManeuver(Maneuver):
|
||||
alarm_type = ManeuverAlarmType.ManeuverNode
|
||||
|
||||
def __init__(self, conn, vessel):
|
||||
super().__init__(conn, vessel)
|
||||
self.mech_jeb = conn.mech_jeb
|
||||
self.node_executor = self.mech_jeb.node_executor
|
||||
|
||||
def execute(self) -> bool:
|
||||
sc = self.conn.space_center
|
||||
if sc.active_vessel.name != self.vessel.name:
|
||||
sc.active_vessel = self.vessel
|
||||
|
||||
while self.vessel.control.nodes:
|
||||
self._execute_node()
|
||||
|
||||
return self.plan_next_maneuver()
|
||||
|
||||
def _execute_node(self):
|
||||
self.node_executor.execute_all_nodes()
|
||||
|
||||
with self.conn.stream(getattr, self.node_executor, "enabled") as enabled:
|
||||
enabled.rate = 1
|
||||
with enabled.condition:
|
||||
while enabled():
|
||||
enabled.wait()
|
||||
|
||||
|
||||
class MechJebManeuver(NodeManeuver):
|
||||
def __init__(self, conn, vessel):
|
||||
super().__init__(conn, vessel)
|
||||
self.maneuver_planner = self.mech_jeb.maneuver_planner
|
||||
|
||||
|
||||
Reference in New Issue
Block a user