Ejemplo n.º 1
0
        public SceneObject PickCameraSpawnPoint(string spawnGroups)
        {
            SimObject spawnPoint = spawnGroups.Split(' ')
                                   .ToList()
                                   .Select((group) => Sim.FindObjectByName <SimSet>(group)?.GetRandom())
                                   .ToList()
                                   .Find((x) => x != null && Global.IsObject(x.GetId().ToString()));

            if (spawnPoint != null)
            {
                return(spawnPoint.As <SceneObject>());
            }

            // Didn't find a spawn point by looking for the groups
            // so let's return the "default" SpawnSphere
            // First create it if it doesn't already exist
            SpawnSphere spawn;

            if (!Global.IsObject("DefaultCameraSpawnSphere"))
            {
                spawn = new SpawnSphere("DefaultCameraSpawnSphere")
                {
                    DataBlock      = Sim.FindObjectByName <GameBaseData>("SpawnSphereMarker"),
                    SpawnClass     = Global.GetConsoleString("Game::DefaultCameraClass"),
                    SpawnDatablock = Global.GetConsoleString("Game::DefaultCameraDataBlock"),
                };
                spawn.RegisterObject();

                // Add it to the MissionCleanup group so that it
                // doesn't get saved to the Mission (and gets cleaned
                // up of course)
                Core.SimObjects.Collections.MissionCleanup.Add(spawn);
            }
            else
            {
                spawn = Sim.FindObjectByName <SpawnSphere>("DefaultCameraSpawnSphere");
            }

            return(spawn);
        }