Beispiel #1
0
    static public GameObject SetupInstance(GameObject source, GameObject dest)
    {
        GameObject template = (GameObject)Resources.Load("ShipPrefab", typeof(GameObject));

        GameObject newRen = Instantiate(template);

        newRen.name = $"Ship #{GameEvents.current.GetNextShipNr()}";

        newRen.transform.parent = source.transform.parent;
        newRen.transform.SetPositionAndRotation(source.transform.position, new Quaternion());

        Ship ship = newRen.GetComponent <Ship>();

        ship.flightState = new FlightState(source.GetComponent <Planet>(), FlightState.StateEnum.OnSurface, ship);

        FlightState autopilotTarget = new FlightState(dest.GetComponent <Planet>(), FlightState.StateEnum.OnSurface, ship);

        ship.autopilot        = new HohmannTransferPendlerAutopilot(ship, ship.flightState, autopilotTarget);
        ship.autopilot.target = autopilotTarget;

        // fuel and engine initialization
        RP1Resource rp1      = new RP1Resource();
        LOXResource lox      = new LOXResource();
        Fuel        fuel     = new RP1Fuel(rp1, lox);
        double      fuelMass = 100000;
        FuelTank    rp1Tank  = new FuelTank(fuelMass, rp1, fuelMass * 0.07);
        FuelTank    loxTank  = new FuelTank(fuelMass * rp1.oxidizer_ratio, lox, fuelMass * rp1.oxidizer_ratio * 0.07);

        ship.engine = new ChemicalEngine(fuel, fuelMass * 0.07, ship);
        ship.fuelTanks.Add(rp1Tank);
        ship.fuelTanks.Add(loxTank);
        ship.Refuel();

        ship.orbit         = null;
        ship.orbitRenderer = null;

        GameEvents.current.allShips.Add(newRen);
        GameEvents.current.UpdateScales();

        return(newRen);
    }
Beispiel #2
0
public class RP1Fuel : ChemicalFuel { public RP1Fuel(RP1Resource fuelResource, OxidizerResource oxidizerResource) : base(fuelResource, oxidizerResource)
                                      {
                                      }