public static Road CreateParkingSpot(int x, int y, float zRotation) { InitializePrefabs(); GameObject road = (GameObject)SpoofInstantiate(parkingSpotPrefab); road.transform.position = new Vector3(x, y, 0); road.transform.Rotate(0, 0, zRotation); ParkingSpotRoad r = road.AddComponent <ParkingSpotRoad>(); r.xPos = x; r.yPos = y; r.neighbourRoads = new List <Road>(); //Register end as parking spot! if (worldInstance == null) { worldInstance = GameObject.FindObjectOfType <World>(); } //Debug.Log("Adding parking spots. " + road.GetComponentsInChildren<ParkingSpace>().Length); worldInstance.parkingSpots.AddRange(road.GetComponentsInChildren <ParkingSpace>()); foreach (ParkingSpace p in road.GetComponentsInChildren <ParkingSpace>()) { p.road = r; } return(r); }
public static Road CreateParkingSpotRight(int x, int y) { ParkingSpotRoad r = (ParkingSpotRoad)CreateParkingSpot(x, y, 270); r.transform.position += new Vector3(+0.35f, 0, 0); r.right = true; return(r); }
public static Road CreateParkingSpotLeft(int x, int y) { ParkingSpotRoad r = (ParkingSpotRoad)CreateParkingSpot(x, y, 90); r.transform.position += new Vector3(-0.35f, 0, 0); r.left = true; return(r); }
public static Road CreateParkingSpotDown(int x, int y) { ParkingSpotRoad r = (ParkingSpotRoad)CreateParkingSpot(x, y, 180); r.transform.position += new Vector3(0, -0.35f, 0); r.down = true; return(r); }
public static Road CreateParkingSpotUp(int x, int y) { ParkingSpotRoad r = (ParkingSpotRoad)CreateParkingSpot(x, y, 0); r.transform.position += new Vector3(0, +0.35f, 0); r.up = true; return(r); }
public static Car CreateCar(ParkingSpotRoad parking) { GameObject car = CreateNewCar(); Car c = (Car)car.GetComponent <Car>(); PlaceCarOnRoad(c, parking); ParkingSpace p = parking.ParkCar(c); c.plan.parkedAt = p; c.Park(p); //rotate car Vector2 lookto = parking.neighbourRoads[0].AsVector() - parking.AsVector(); FaceCarInDirection(c, lookto); car.transform.position = new Vector3(p.transform.position.x, p.transform.position.y, 0); return(c); }
//last few waypoints may have specific behavior private void BehaveLastWaypoints(LinkedList <Waypoint> points) { int count = points.Count; switch (ActiveTrip.type) { case Trip.TripType.Park: { ParkingSpotRoad p = (ParkingSpotRoad)points.Last.Value.onRoad; ParkingSpace parking = p.GetEmptySpace(); if (parking == null) { Debug.LogError("Unhandled exception: parking full."); return; } Waypoint last = points.Last.Value; last.Set(parking.transform.position.ToVector2()); break; } case Trip.TripType.Charge: { PowerStationRoad p = (PowerStationRoad)points.Last.Value.onRoad; if (count < 2) { //Set static collision avoidance controlledCar.SetCollisionAvoidance(Car.CollisionAvoidance.staticc); if (p.GetEmptyPoweredStation() == null) { controlledCar.GoToState(Car.CarState.waiting); StartCoroutine(PollForStation(p)); } } if (count <= 1) { Debug.Log("Disabling collision avoidance"); //set dynamic collision avoidance controlledCar.SetCollisionAvoidance(Car.CollisionAvoidance.disabled); } break; } } }
//Reads and creates the destinations from the json node given private List <Trip> ReadDestinations(JSONNode car) { JSONArray destinations = car["trips"].AsArray; List <Trip> trips = new List <Trip>(); ParkingSpotRoad lastDest = FindParkingRoad(car["x"].AsInt, car["y"].AsInt); for (int i = 0; i < destinations.Count; ++i) { JSONNode thisdest = destinations[i]; ParkingSpotRoad p = FindParkingRoad(thisdest["x"].AsInt, thisdest["y"].AsInt); Trip trip = new Trip(); trip.start = lastDest; trip.end = p; trip.type = Trip.TripType.Park; trip.departure = new TimeClass(DateTime.ParseExact(thisdest["departure"], "HHmm", CultureInfo.InvariantCulture)); trips.Add(trip); lastDest = p; } return(trips); }
void Awake() { road = gameObject.GetComponentInParent <Road>() as ParkingSpotRoad; //Debug.Log(road); }