Ejemplo n.º 1
0
 public void AddSpawner(VehicleSpawner spawner)
 {
     if (_Spawners.IndexOf(spawner) == -1)
     {
         _Spawners.Add(spawner);
     }
 }
Ejemplo n.º 2
0
    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();
            }
        }
    }
Ejemplo n.º 3
0
        public Simulation()
        {
            TurnOnDoubleBuffering();

            VehicleSpawner = new VehicleSpawner();

            InitializeComponent();

            InitializeHardcodedCars();
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
    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();
                }
            }
        }
    }
Ejemplo n.º 6
0
    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);
        }
    }
Ejemplo n.º 7
0
    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);
    }
Ejemplo n.º 8
0
        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;
        }
Ejemplo n.º 9
0
 public void RemoveSpawner(VehicleSpawner spawner)
 {
     _Spawners.Remove(spawner);
 }
Ejemplo n.º 10
0
Archivo: Cell.cs Proyecto: CyberSys/UTA
        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;
                }
            }
        }