コード例 #1
0
        public Microsoft.Xna.Framework.Vector3 GetSpawnLocation(WorldManager world, EntitySpawnLocation SpawnLocation)
        {
            Microsoft.Xna.Framework.Vector3 location = location = VoxelHelpers.FindFirstVoxelBelowIncludeWater(new VoxelHandle(world.ChunkManager.ChunkData, GlobalVoxelCoordinate.FromVector3(MonsterSpawner.GetRandomWorldEdge(world)))).WorldPosition + Microsoft.Xna.Framework.Vector3.Up * 1.5f;
            switch (SpawnLocation)
            {
            case EntitySpawnLocation.BalloonPort:
            {
                var balloonport = world.PlayerFaction.GetRooms().OfType <BalloonPort>();
                if (balloonport.Any())
                {
                    location = Datastructures.SelectRandom(balloonport).GetBoundingBox().Center() + Microsoft.Xna.Framework.Vector3.Up * 1.5f;
                }
                break;
            }

            case EntitySpawnLocation.RandomZone:
            {
                var zones = world.PlayerFaction.GetRooms();
                if (zones.Any())
                {
                    location = Datastructures.SelectRandom(zones).GetBoundingBox().Center() + Microsoft.Xna.Framework.Vector3.Up * 1.5f;
                }
                break;
            }

            case EntitySpawnLocation.WorldEdge:
            {
                // already computed
                break;
            }
            }

            return(location);
        }