public Result <ManeuverNodeAdapter, string> AddBurnVector(double ut, Vector3d burnVector) { if (vessel.patchedConicSolver == null) { return(Result.Err <ManeuverNodeAdapter, string>("Vessel maneuvers not available")); } if (!Double.IsFinite(ut) || !Double.IsFinite(burnVector.x) || !Double.IsFinite(burnVector.y) || !Double.IsFinite(burnVector.z)) { return(Result.Err <ManeuverNodeAdapter, string>( $"Parameter not finite ut={{ut}} burnVector={burnVector}")); } ManeuverNode node = vessel.patchedConicSolver.AddManeuverNode(ut); KSPOrbitModule.IOrbit orbit = new OrbitWrapper(vessel.orbit); node.DeltaV = new Vector3d( Vector3d.Dot(orbit.RadialPlus(ut), burnVector), Vector3d.Dot(-orbit.NormalPlus(ut), burnVector), Vector3d.Dot(orbit.Prograde(ut), burnVector) ); vessel.patchedConicSolver.UpdateFlightPlan(); return(Result.Ok <ManeuverNodeAdapter, string>(new ManeuverNodeAdapter(vessel, node))); }
private List <Vector3> GetTime(int currentTime) { if (!cache.ContainsKey(currentTime)) { List <Vector3> list = OrbitWrapper.GetPlanetsOrbit2(currentTime); cache.Add(currentTime, list); } return(cache [currentTime]); }
public void Awake() { planets.Add(GameObject.Find("Mercury").GetComponent <Planet>()); planets.Add(GameObject.Find("Venus").GetComponent <Planet>()); planets.Add(GameObject.Find("Earth").GetComponent <Planet>()); planets.Add(GameObject.Find("Mars").GetComponent <Planet>()); planets.Add(GameObject.Find("Saturn").GetComponent <Planet>()); planets.Add(GameObject.Find("Jupiter").GetComponent <Planet>()); planets.Add(GameObject.Find("Uranus").GetComponent <Planet>()); planets.Add(GameObject.Find("Neptune").GetComponent <Planet>()); spaceObjects = new List <Asteroid> (); buildAsteoridBelt(); OrbitWrapper.InitializeDatabase(0); }
public void OnDestroy() { OrbitWrapper.UninitializeDatabase(); }