/// <summary> /// Load and creates a command after saving a command. Returns null if no object /// has been loaded. /// </summary> /// <param name="n">Node with the command infos</param> /// <param name="fc">Current flightcomputer</param> public static ICommand LoadCommand(ConfigNode n, FlightComputer fc) { ICommand command = null; // switch the different commands switch (n.name) { case "AttitudeCommand": { command = new AttitudeCommand(); break; } case "ActionGroupCommand": { command = new ActionGroupCommand(); break; } case "BurnCommand": { command = new BurnCommand(); break; } case "ManeuverCommand": { command = new ManeuverCommand(); break; } case "CancelCommand": { command = new CancelCommand(); break; } case "TargetCommand": { command = new TargetCommand(); break; } case "EventCommand": { command = new EventCommand(); break; } case "DriveCommand": { command = new DriveCommand(); break; } case "ExternalAPICommand": { command = new ExternalAPICommand(); break; } case "PartActionCommand": { command = new PartActionCommand(); break; } } if (command != null) { ConfigNode.LoadObjectFromConfig(command, n); // additional loadings var result = command.Load(n, fc); RTLog.Verbose("Loading command {0}({1})={2}", RTLogLevel.LVL1, n.name, command.CmdGuid, result); // delete command if we can't load the command correctlys if (result == false) command = null; } return command; }
/// <summary> /// Load and creates a command after saving a command. Returns null if no object /// has been loaded. /// </summary> /// <param name="n">Node with the command infos</param> /// <param name="fc">Current flightcomputer</param> public static ICommand LoadCommand(ConfigNode n, FlightComputer fc) { ICommand command = null; // switch the different commands switch (n.name) { case "AttitudeCommand": { command = new AttitudeCommand(); break; } case "ActionGroupCommand": { command = new ActionGroupCommand(); break; } case "BurnCommand": { command = new BurnCommand(); break; } case "ManeuverCommand": { command = new ManeuverCommand(); break; } case "CancelCommand": { command = new CancelCommand(); break; } case "TargetCommand": { command = new TargetCommand(); break; } case "EventCommand": { command = new EventCommand(); break; } case "DriveCommand": { command = new DriveCommand(); break; } case "ExternalAPICommand": { command = new ExternalAPICommand(); break; } case "PartActionCommand": { command = new PartActionCommand(); break; } case "StockAutopilotCommand": { command = new StockAutopilotCommand(); break; } case "HibernationCommand": { command = new HibernationCommand(); break; } case "AxisGroupCommand": { command = new AxisGroupCommand(); break; } case "PIDCommand": { command = new PIDCommand(); break; } case "FlightControlCommand": { command = new FlightControlCommand(); break; } } if (command != null) { ConfigNode.LoadObjectFromConfig(command, n); // additional loadings var result = command.Load(n, fc); RTLog.Verbose("Loading command {0}({1})={2}", RTLogLevel.LVL1, n.name, command.CmdGuid, result); // delete command if we can't load the command correctlys if (result == false) { command = null; } } return(command); }
public static ManeuverCommand WithNode(int nodeIndex, FlightComputer f) { double thrust = FlightCore.GetTotalThrust(f.Vessel); ManeuverNode node = f.Vessel.patchedConicSolver.maneuverNodes[nodeIndex]; double advance = f.Delay; if (thrust > 0) { advance += (node.DeltaV.magnitude / (thrust / f.Vessel.GetTotalMass())) / 2; } var newNode = new ManeuverCommand() { Node = node, TimeStamp = node.UT - advance, }; return(newNode); }
public static ManeuverCommand WithNode(int nodeIndex, FlightComputer f) { double thrust = FlightCore.GetTotalThrust(f.Vessel); ManeuverNode node = f.Vessel.patchedConicSolver.maneuverNodes[nodeIndex]; double advance = f.Delay; if (thrust > 0) { advance += (node.DeltaV.magnitude / (thrust / f.Vessel.GetTotalMass())) / 2; // add 1 second for the throttle down time @ the end of the burn advance += 1; } var newNode = new ManeuverCommand() { Node = node, TimeStamp = node.UT - advance, }; return newNode; }