-
Notifications
You must be signed in to change notification settings - Fork 1
/
ManeuverPlannerRPM.cs
65 lines (53 loc) · 1.29 KB
/
ManeuverPlannerRPM.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using UnityEngine;
using KSP;
using System;
namespace ManeuverPlannerRPM
{
internal class ManeuverPlannerRPM : InternalModule
{
double prograde = 0.0;
double normal = 0.0;
double radialOut = 0.0;
double relTime = 0.0;
public void SetPrograde(double prograde)
{
this.prograde = prograde;
}
public void SetNormal(double normal)
{
this.normal = normal;
}
public void SetRadialOut(double radialOut)
{
this.radialOut = radialOut;
}
public void SetRelativeTime(double time)
{
this.relTime = time;
}
public double GetPrograde()
{
return prograde;
}
public double GetNormal()
{
return normal;
}
public double GetRadialOut()
{
return radialOut;
}
public void PlaceManeuver(bool state)
{
if (vessel.patchedConicSolver == null)
throw new Exception(
"A KSP limitation makes it impossible to access the manuever nodes of this vessel at this time. " +
"(perhaps it's not the active vessel?)");
// place the actual node at current time+relative time
ManeuverNode node = vessel.patchedConicSolver.AddManeuverNode(Planetarium.GetUniversalTime() + relTime);
// apply the DV values to the maneuver
node.DeltaV = new Vector3d(radialOut, normal, prograde);
vessel.patchedConicSolver.UpdateFlightPlan();
}
}
}