public void AddSpawner(VehicleSpawner spawner) { if (_Spawners.IndexOf(spawner) == -1) { _Spawners.Add(spawner); } }
private void OnTriggerEnter(Collider other) { if (collided) { return; } if (other.gameObject.layer != LayerMask.NameToLayer("Street")) { collided = true; } _currentCrossroad = other.GetComponent <Crossroad>(); if (_currentCrossroad) { targetRotation = _currentCrossroad.GetRotation(transform.position, transform.eulerAngles); if (targetRotation.y < transform.localEulerAngles.y) { steerLeftDelay = _steerLeftDelayMem; } } else if (_canFadeAway) { _spawner = other.GetComponent <VehicleSpawner>(); if (_spawner) { _anim.SetTrigger("FadeAway"); _spawner.AddVehicleToCount(); } } }
public Simulation() { TurnOnDoubleBuffering(); VehicleSpawner = new VehicleSpawner(); InitializeComponent(); InitializeHardcodedCars(); }
internal void LoadParkedVehicles() { if (loadParkedVehicles) { var parkedVehicles = Item.GetPlacements <ParkedVehicle> (CellIds.ToArray()); m_cars = parkedVehicles.Select(x => VehicleSpawner.Create(x)) .Cast <MapObject> () .ToArray(); UnityEngine.Debug.Log("Num parked vehicles " + m_cars.Length); } }
private void SelectSpawner() { Road road = IsTargetingRoadEnd(); if (road) { if (Input.GetMouseButtonDown(0)) { _CurrentSpawner = road.GetSpawner(road.GetClickedRoadEnd(Camera.main.ScreenToWorldPoint(_CurrentMousePos))); if (_CurrentSpawner) { _IntervalInput.text = _CurrentSpawner.spawnInterval.ToString(); } } } }
public void Simulate() { _Simulate = !_Simulate; Network.instance.Simulate(_Simulate); if (_Simulate) { _LaneCountUI.gameObject.SetActive(false); } else { _CurrentRoad = null; _CurrentCrossRoad = null; _CurrentSpawner = null; _RoadUI.gameObject.SetActive(false); _SpawnerUI.gameObject.SetActive(false); _LaneCountUI.gameObject.SetActive(true); } }
public bool ConnectSpawner(GameObject spawner, int endToConnect) { if (_EndPoints[endToConnect]._ConnectedSpawner || !_EndPoints[endToConnect]._LaneBeginPoint) { return(false); } VehicleSpawner vSpawner = spawner.GetComponent <VehicleSpawner>(); Vector3 pos = _EndPoints[endToConnect]._LaneBeginPoint.position; pos.z = -0.01f; spawner.transform.position = pos; spawner.transform.parent = transform; vSpawner._ConnectedLane = _EndPoints[endToConnect]._LaneBeginPoint.connectedLanes[0]; _EndPoints[endToConnect]._ConnectedSpawner = spawner; return(true); }
void Update() { if (RootDivision == null && Loader.HasLoaded) { RootDivision = Division.Create(transform); RootDivision.SetBounds( new Vector2(-3000f, -3000f), new Vector2(+3000f, +3000f)); using (Utilities.Profiler.Start("Cell partitioning time")) { var placements = Item.GetPlacements <Instance> (CellIds.ToArray()); var insts = placements.ToDictionary(x => x, x => StaticGeometry.Create()); UnityEngine.Debug.Log("Num static geometries " + placements.Count() + "."); totalNumObjects = placements.Count(); foreach (var inst in insts) { inst.Value.Initialize(inst.Key, insts); } // if (NetConfig.IsServer) { if (this.loadParkedVehicles) { var parkedVehicles = Item.GetPlacements <ParkedVehicle> (CellIds.ToArray()); var cars = parkedVehicles.Select(x => VehicleSpawner.Create(x)) .Cast <MapObject>() .ToArray(); UnityEngine.Debug.Log("Num parked vehicles " + parkedVehicles.Count() + "."); RootDivision.AddRange(insts.Values.Cast <MapObject>().Concat(cars)); } else { RootDivision.AddRange(insts.Values.Cast <MapObject>()); } } if (Water != null) { using (Utilities.Profiler.Start("Water load time")) { Water.Initialize(new WaterFile(Config.GetPath("water_path"))); } } _timer = new Stopwatch(); _leaves = RootDivision.ToList(); } if (null == _leaves) { return; } _timer.Reset(); _timer.Start(); numLeavesLoadedThisFrame = 0; numObjectsLoadedThisFrame = 0; foreach (var div in _leaves) { if (float.IsPositiveInfinity(div.LoadOrder)) { break; } numObjectsLoadedThisFrame += div.LoadWhile(() => _timer.Elapsed.TotalSeconds < 1d / 60d); if (_timer.Elapsed.TotalSeconds >= 1d / 60d) { // break; } else { numLeavesLoadedThisFrame++; } } measuredTimes [2] = (float)_timer.Elapsed.TotalMilliseconds; }
public void RemoveSpawner(VehicleSpawner spawner) { _Spawners.Remove(spawner); }
void Update() { if (RootDivision == null && Loader.HasLoaded) { RootDivision = Division.Create(transform); RootDivision.SetBounds( new Vector2(-3000f, -3000f), new Vector2(+3000f, +3000f)); using (Utilities.Profiler.Start("Cell partitioning time")) { var insts = Item.GetPlacements <Instance>(CellIds.ToArray()) .ToDictionary(x => x, x => StaticGeometry.Create()); foreach (var inst in insts) { inst.Value.Initialize(inst.Key, insts); } if (NetConfig.IsServer) { var cars = Item.GetPlacements <ParkedVehicle>(CellIds.ToArray()) .Select(x => VehicleSpawner.Create(x)) .Cast <MapObject>() .ToArray(); RootDivision.AddRange(insts.Values.Cast <MapObject>().Concat(cars)); } else { RootDivision.AddRange(insts.Values.Cast <MapObject>()); } } if (Water != null) { using (Utilities.Profiler.Start("Water load time")) { Water.Initialize(new WaterFile(Config.GetPath("water_path"))); } } _timer = new Stopwatch(); _leaves = RootDivision.ToList(); } if (_leaves == null) { return; } var pos = Focus.position; var toLoad = _leaves.Aggregate(false, (current, leaf) => current | leaf.RefreshLoadOrder(pos)); if (!toLoad) { return; } _leaves.Sort(); _timer.Reset(); _timer.Start(); foreach (var div in _leaves) { if (float.IsPositiveInfinity(div.LoadOrder)) { break; } if (!div.LoadWhile(() => _timer.Elapsed.TotalSeconds < 1d / 60d)) { break; } } }