Beispiel #1
0
    private void Start()
    {
        MapOrigin            = MapOrigin.Find();
        spawnsManager        = GetComponent <SpawnsManager>();
        PedSpawnCheckBitmask = LayerMask.GetMask("Pedestrian", "Agent", "NPC");
        PedMaxCount          = MapOrigin.PedMaxCount;
        SimCameraManager     = SimulatorManager.Instance.CameraManager;
        SimulatorCamera      = SimCameraManager.SimulatorCamera;
        MapManager           = SimulatorManager.Instance.MapManager;

        SpawnInfo[] spawnInfos = FindObjectsOfType <SpawnInfo>();
        Loader.Instance.Network.MessagesManager?.RegisterObject(this);
        var pt = Vector3.zero;

        if (spawnInfos.Length > 0)
        {
            pt = spawnInfos[0].transform.position;
        }

        if (Loader.Instance.Network.IsClient)
        {
            return;
        }

        if (NavMesh.SamplePosition(pt, out NavMeshHit hit, 1f, NavMesh.AllAreas))
        {
            if (!SimulatorManager.Instance.IsAPI && !Loader.Instance.Network.IsClient)
            {
                SpawnPedPool();
                if (PedestriansActive)
                {
                    SetPedOnMap(true);
                }
            }
        }
Beispiel #2
0
    private void Start()
    {
        MapOrigin        = MapOrigin.Find();
        spawnsManager    = GetComponent <SpawnsManager>();
        NPCMaxCount      = MapOrigin.NPCMaxCount;
        SimCameraManager = SimulatorManager.Instance.CameraManager;
        SimulatorCamera  = SimCameraManager.SimulatorCamera;
        MapManager       = SimulatorManager.Instance.MapManager;
        InitSpawn        = true;

        NPCVehicles.Clear();

        if (Loader.Instance.CurrentSimulation == null)
        {
            return;
        }

        if (Loader.Instance.CurrentSimulation.NPCs == null)
        {
            Loader.Instance.CurrentSimulation.NPCs = Simulator.Web.Config.NPCVehicles.Values.ToArray();
        }

        foreach (var data in Loader.Instance.CurrentSimulation.NPCs)
        {
            if (data.Enabled)
            {
                GameObject obj = null;
                foreach (var item in Simulator.Web.Config.NPCVehicles.Values)
                {
                    if (item.Name == data.Name)
                    {
                        obj = item.Prefab;
                    }
                }
                NPCVehicles.Add(new NPCAssetData
                {
                    NPCType = data.NPCType,
                    Prefab  = obj,
                });

                if (NPCColorData.Count(d => d.Type == data.NPCType) == 0)
                {
                    Debug.LogWarning($"NPC of type {data.NPCType} loaded but no colors to pick configured for this type");
                }
            }
        }

        var network = Loader.Instance.Network;

        network.MessagesManager?.RegisterObject(this);
        if (!SimulatorManager.Instance.IsAPI && !network.IsClient)
        {
            SpawnNPCPool();
            if (NPCActive)
            {
                SetNPCOnMap(true);
            }
        }
    }
Beispiel #3
0
    protected virtual void Start()
    {
        MapOrigin     = MapOrigin.Find();
        SpawnsManager = GetComponent <SpawnsManager>();
        NPCMaxCount   = MapOrigin.NPCMaxCount;
        NPCVehicles.Clear();
        InitialSpawn = false;

        if (Loader.Instance.CurrentSimulation == null)
        {
            return;
        }

        if (Loader.Instance.CurrentSimulation.NPCs == null)
        {
            Loader.Instance.CurrentSimulation.NPCs = Simulator.Web.Config.NPCVehicles.Values.ToArray();
        }

        foreach (var data in Loader.Instance.CurrentSimulation.NPCs)
        {
            if (data.Enabled)
            {
                GameObject obj = null;
                foreach (var item in Simulator.Web.Config.NPCVehicles.Values)
                {
                    if (item.Name == data.Name)
                    {
                        obj = item.Prefab;
                    }
                }
                NPCVehicles.Add(new NPCAssetData
                {
                    NPCType   = data.NPCType,
                    Prefab    = obj,
                    Name      = data.Name,
                    AssetGuid = data.AssetGuid
                });

                if (NPCColorData.Count(d => d.Type == data.NPCType) == 0)
                {
                    Debug.LogWarning($"NPC of type {data.NPCType} loaded but no colors to pick configured for this type");
                }
            }
        }

        var network = Loader.Instance.Network;

        network.MessagesManager?.RegisterObject(this);
        if (!SimulatorManager.Instance.IsAPI && !network.IsClient) // TODO API mode always remove need to pool check
        {
            SpawnNPCPool();
        }
    }
    private void Start()
    {
        MapOrigin = MapOrigin.Find();
        spawnsManager = GetComponent<SpawnsManager>();
        PedSpawnCheckBitmask = LayerMask.GetMask("Pedestrian", "Agent", "NPC");
        PedMaxCount = MapOrigin.PedMaxCount;
        SimCameraManager = SimulatorManager.Instance.CameraManager;
        SimulatorCamera = SimCameraManager.SimulatorCamera;
        MapManager = SimulatorManager.Instance.MapManager;

        PedestrianData.Clear();

        if (Loader.Instance.CurrentSimulation == null)
        {
            return;
        }

        if (Loader.Instance.CurrentSimulation.Peds == null)
        {
            Loader.Instance.CurrentSimulation.Peds = Simulator.Web.Config.Pedestrians.Values.ToArray();
        }

        foreach (var data in Loader.Instance.CurrentSimulation.Peds)
        {
            if (data.Enabled)
            {
                GameObject obj = null;
                foreach (var item in Simulator.Web.Config.Pedestrians.Values)
                {
                    if (item.Name == data.Name)
                    {
                        obj = item.Prefab;
                    }
                }
                PedestrianData.Add(new PedAssetData
                {
                    Prefab = obj,
                    Name = obj.name,
                });
            }
        }

        SpawnInfo[] spawnInfos = FindObjectsOfType<SpawnInfo>();
        Loader.Instance.Network.MessagesManager?.RegisterObject(this);
        var pt = Vector3.zero;
        if (spawnInfos.Length > 0)
        {
            pt = spawnInfos[0].transform.position;
        }

        if (Loader.Instance.Network.IsClient)
        {
            return;
        }

        if (NavMesh.SamplePosition(pt, out NavMeshHit hit, 1f, NavMesh.AllAreas))
        {
            if (!SimulatorManager.Instance.IsAPI && !Loader.Instance.Network.IsClient)
            {
                var pool = SpawnPedPool();
                if (pool != null)
                {
                    if (PedestriansActive)
                    {
                        SetPedOnMap(true);
                    }
                }
                else
                {
                    Debug.Log("No pedestrian pool, disabled pedestrian manager ");
                    gameObject.SetActive(false);
                }
            }
        }