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)));
            }
Esempio n. 2
0
 private List <Vector3> GetTime(int currentTime)
 {
     if (!cache.ContainsKey(currentTime))
     {
         List <Vector3> list = OrbitWrapper.GetPlanetsOrbit2(currentTime);
         cache.Add(currentTime, list);
     }
     return(cache [currentTime]);
 }
Esempio n. 3
0
    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);
    }
Esempio n. 4
0
 public void OnDestroy()
 {
     OrbitWrapper.UninitializeDatabase();
 }