public override void StartTask(TrafficAI_Base ai) { Debug.Log("Starting landing at airport task!"); Debug.Log("Trying to land on " + airport.id); TrafficAI_Transport transportAI = (TrafficAI_Transport)ai; transportAI.aircraft.RearmAt(airport); base.StartTask(ai); }
public override void StartTask(TrafficAI_Base ai) { Debug.Log("Starting landing at temporary task!"); TrafficAI_Transport transportAI = (TrafficAI_Transport)ai; ai.waypoint.GetTransform().position = VTMapManager.GlobalToWorldPoint(point); transportAI.aircraft.LandAtWpt(ai.waypoint); idleTimer = UnityEngine.Random.Range(15f, 30f); base.StartTask(ai); }
public override void StartTask(TrafficAI_Base ai) { Debug.Log("Starting fly off map task!"); TrafficAI_Transport ai2 = (TrafficAI_Transport)ai; ai2.waypoint.GetTransform().position = VTMapManager.GlobalToWorldPoint(AirTraffic.PointOnMapRadius()); ai2.aircraft.SetOrbitNow(ai2.waypoint, 10000, AirTraffic.cruisingAltitudes.Random()); ai2.pilot.navSpeed = UnityEngine.Random.Range(ai2.normalSpeed, ai2.pilot.maxSpeed); base.StartTask(ai2); }
public override void StartTask(TrafficAI_Base ai) { Debug.Log("Starting air to air refueling!"); Debug.Log("Trying to refuel with " + refuelPlane.gameObject.name); TrafficAI_Transport transportAI = (TrafficAI_Transport)ai; transportAI.pilot.fuelTank.SetNormFuel(Mathf.Min(transportAI.pilot.fuelTank.fuel / transportAI.pilot.fuelTank.maxFuel, 0.5f)); transportAI.pilot.GoRefuel(refuelPlane); base.StartTask(ai); }
public override bool CanStartTask(TrafficAI_Base ai) { if (base.CanStartTask(ai)) { TrafficAI_Transport transportAI = (TrafficAI_Transport)ai; return(transportAI.pilot.isVtol); } else { return(false); } }
public override void UpdateTask(TrafficAI_Base ai, float deltaTime) { TrafficAI_Transport transportAI = (TrafficAI_Transport)ai; if (transportAI.pilot.commandState == AIPilot.CommandStates.Park) { idleTimer -= deltaTime; if (idleTimer < 0) { transportAI.aircraft.TakeOff(); } } }
public override bool CanStartTask(TrafficAI_Base ai) { TrafficAI_Transport transportAI = (TrafficAI_Transport)ai; if (base.CanStartTask(ai)) { return(refuelPlane != null && transportAI.pilot.refuelPort); } else { return(false); } }
public override bool CanStartTask(TrafficAI_Base ai) { if (base.CanStartTask(ai)) { if (ai.gameObject.name == "ABomberAI") { return(false); } TrafficAI_Transport transportAI = (TrafficAI_Transport)ai; return(transportAI.pilot.parkingSize < maxSize && (transportAI.rb.mass < maxMass || (vtolOnly && transportAI.pilot.isVtol)) && ParkingAvailable(transportAI.pilot.parkingSize)); } else { return(false); } }
void SpawnRandomAircraft(Vector3D pos, Vector3 dir) { if (mpMode && host == false) { return; } if (spawnableAircraft.Count > 0) { GameObject aircraft = spawnableAircraft[UnityEngine.Random.Range(0, spawnableAircraft.Count)].SpawnAircraft(); FloatingOriginTransform floatingTransform = aircraft.AddComponent <FloatingOriginTransform>(); if (floatingTransform != null) { floatingTransform.SetRigidbody(aircraft.GetComponent <Rigidbody>()); } aircraft.GetComponent <Rigidbody>().interpolation = RigidbodyInterpolation.Interpolate; TrafficAI_Transport ai = aircraft.AddComponent <TrafficAI_Transport>(); GameObject unitSpawner = new GameObject(); ai.aircraft.unitSpawner = unitSpawner.AddComponent <UnitSpawner>(); Traverse unitSpawnerTraverse = Traverse.Create(ai.aircraft.unitSpawner); unitSpawnerTraverse.Field("_spawned").SetValue(true); Traverse aircraftSpawnerTraverse = Traverse.Create(ai.aircraft); aircraftSpawnerTraverse.Field("taxiSpeed").SetValue(ai.aircraft.aiPilot.taxiSpeed); ai.Spawn(pos, dir); Debug.Log("Spawned " + aircraft.name + " as air traffic"); activeAircraftAmmount++; if (mpMode) { Debug.Log("MP is enabled, networking this aircraft!"); MPSetUpAircraft(ai.aircraft.actor); } } else { Debug.Log("No aircraft were available, cannot spawn a traffic aircraft."); } }
public override bool IsTaskCompleted(TrafficAI_Base ai) { TrafficAI_Transport transportAI = (TrafficAI_Transport)ai; return(transportAI.pilot.commandState == AIPilot.CommandStates.Orbit); }