예제 #1
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            GL.ClearColor(1, 1, 1, 1);

            FontDrawing = new QFontDrawing();
            MainFont    = new QFont("Tahoma", 16, new QFontBuilderConfiguration());

            // load the rooms
            var rooms = Directory.GetFiles(@"Content\Rooms", "*.txt", SearchOption.AllDirectories)
                        .Select(path => RoomLoader.Load(path))
                        .ToList();
            var items = Directory.GetFiles(@"Content\Items", "*.txt", SearchOption.AllDirectories)
                        .SelectMany(path => ItemLoader.Load(path).Select(w => w.itemtemplate))
                        .ToList();

            // build the map
            const int mapw = 75, maph = 25;

            Map = new Map(mapw, maph, rooms, new Random());

            // and the terrain renderer
            TerrainRenderer = new TerrainRenderer(Map)
            {
                ViewMatrix = Matrix4.CreateTranslation(2, 2, 0) * Matrix4.CreateScale(.1f)
            };
        }
예제 #2
0
        public void RoomLoadingTest()
        {
            var roomtemplate = RoomLoader.Load(@"
++d+
+..++++
d.....+
+.....d
+++++++".ToMemoryStream());

            // test the loaded room
            Assert.AreEqual(TileTemplate.WallTile, roomtemplate.Tiles[0, 0]);
            Assert.AreEqual(TileTemplate.WallTile, roomtemplate.Tiles[0, 1]);
            Assert.AreEqual(TileTemplate.DoorTile, roomtemplate.Tiles[0, 2]);
            Assert.AreEqual(TileTemplate.WallTile, roomtemplate.Tiles[0, 3]);
            Assert.AreEqual(TileTemplate.VoidTile, roomtemplate.Tiles[0, 4]);
            Assert.AreEqual(TileTemplate.VoidTile, roomtemplate.Tiles[0, 5]);
            Assert.AreEqual(TileTemplate.EmptyTile, roomtemplate.Tiles[3, 3]);
            Assert.AreEqual(TileTemplate.DoorTile, roomtemplate.Tiles[3, 6]);
            Assert.ThrowsException <IndexOutOfRangeException>(() => roomtemplate.Tiles[0, 7]);

            // test the doorways
            Assert.IsTrue(roomtemplate.Doorways.Any(d => d.X == 2 && d.Y == 0 && d.Direction == DoorwayDirection.North));
            Assert.IsTrue(roomtemplate.Doorways.Any(d => d.X == 0 && d.Y == 2 && d.Direction == DoorwayDirection.West));
            Assert.IsTrue(roomtemplate.Doorways.Any(d => d.X == 6 && d.Y == 3 && d.Direction == DoorwayDirection.East));
        }
예제 #3
0
        public void MapPlacementTest()
        {
            var room1 = RoomLoader.Load(@"
+d++
ds.+
++++".ToMemoryStream());
            var room2 = RoomLoader.Load(@"
++++
+..d
++++".ToMemoryStream());
            var map   = new Map(10, 4);

            // place the rooms
            room2.Place(map, 0, 0);
            room1.Place(map, 4, 0);

            // test the placed rooms
            Assert.AreEqual(TileTemplate.WallTile, map.Tiles[0, 3]);
            Assert.AreEqual(TileTemplate.WallTile, map.Tiles[0, 4]);
            Assert.AreEqual(TileTemplate.DoorTile, map.Tiles[0, 5]);
            Assert.AreEqual(TileTemplate.DoorTile, map.Tiles[1, 3]);
            Assert.AreEqual(TileTemplate.DoorTile, map.Tiles[1, 4]);
            Assert.AreEqual(TileTemplate.EmptyTile, map.Tiles[1, 2]);
            Assert.AreEqual(TileTemplate.EmptyTile, map.Tiles[1, 1]);
            Assert.AreEqual(TileTemplate.EmptyTile, map.Tiles[1, 6]);
            Assert.AreEqual(TileTemplate.StartTile, map.Tiles[1, 5]);
        }
예제 #4
0
파일: Game.cs 프로젝트: theowiik/tdws
        public override void _Ready()
        {
            _crosshair = GetNode <Sprite>("Crosshair");
            _hud       = GetNode <HUD>("CanvasLayer/HUD");

            // Hide the cursor
            Input.SetMouseMode(Input.MouseMode.Hidden);

            // Player
            SpawnPlayer();
            _player.AddChild(_camera);

            // HUD
            _player.Connect(nameof(AbstractActor.HealthChanged), _hud, nameof(HUD.HealthChanged));
            _player.Connect(nameof(AbstractActor.ChatAdded), _hud, nameof(HUD.AddChat));

            // Coins
            _player.Connect(nameof(AbstractActor.CoinDropped), this, nameof(OnCoinDropped));
            _player.Connect(nameof(AbstractActor.CoinsChanged), _hud, nameof(HUD.OnCoinsChanged));
            _coinScene = NodeService.LoadNotNull <PackedScene>("res://Scenes/Objects/Coin.tscn");

            // Projectile signal
            _player.Connect(nameof(Player.ProjectileShooterChanged), this, nameof(OnProjectileShooterChanged));

            // Room loader
            _roomLoader = GetNode <RoomLoader>("RoomLoader");
            _roomLoader.SetPlayer(_player);
            // _roomLoader
            NextRoom();

            SpawnBoss();
        }
예제 #5
0
 private static Dictionary <string, Room> ParseRooms(List <string> roomNames)
 {
     RoomLoader.Rooms = new DirectoryInfo(
         Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..", "..", "Tests"));
     RoomLoader.RoomFileNames = roomNames;
     return(RoomLoader.GetRoomsFromDirectory());
 }
예제 #6
0
        public void RoomPropertiesTest()
        {
            var room = RoomLoader.Load(@"
++
++

===

choose_weight = 0.1
".ToMemoryStream());

            Assert.AreEqual(0.1f, room.ChooseWeight);
        }
예제 #7
0
    void Instantiate(string path)
    {
        RoomLayout roomLayout = Resources.Load <RoomLayout>(path);

        if (roomLayout != null)
        {
            Room room = new Room(0, 0);
            room.layout = roomLayout.entities;
            room.size   = roomLayout.size;
            RoomLoader roomLoader = GameObject.Find("Room Spawn").GetComponent <RoomLoader>();
            roomLoader.DestroyRoom();
            roomLoader.Load(room);
        }
    }
예제 #8
0
    public void Start()
    {
        if (instance)
        {
            Debug.Log("Fatal Err0r");
        }
        else
        {
            instance = this;
        }

        Setup();

        StartCoroutine(Wait());
    }
예제 #9
0
파일: Program.cs 프로젝트: myblindy/dmr
        static void Main(string[] args)
        {
            var rooms = Directory.GetFiles(@"Content\Rooms", "*.txt", SearchOption.AllDirectories)
                        .Select(path => RoomLoader.Load(path))
                        .ToList();
            var items = Directory.GetFiles(@"Content\Items", "*.txt", SearchOption.AllDirectories)
                        .SelectMany(path => ItemLoader.Load(path).Select(w => w.itemtemplate))
                        .ToList();

            const int mapw = 75, maph = 25;
            var       map = new Map(mapw, maph, rooms, new Random());

            for (var row = 0; row < maph; ++row)
            {
                Console.Write('/');
                for (var col = 0; col < mapw; ++col)
                {
                    var tile = map.Tiles[row, col];
                    if (tile == TileTemplate.DoorTile)
                    {
                        Console.Write('d');
                    }
                    else if (tile == TileTemplate.WallTile)
                    {
                        Console.Write('+');
                    }
                    else if (tile == TileTemplate.StartTile)
                    {
                        Console.Write('s');
                    }
                    else if (tile == TileTemplate.EmptyTile)
                    {
                        Console.Write('.');
                    }
                    else if (tile == TileTemplate.VoidTile)
                    {
                        Console.Write(' ');
                    }
                    else
                    {
                        throw new InvalidOperationException();
                    }
                }
                Console.WriteLine('/');
            }

            Console.ReadKey();
        }
예제 #10
0
    public void Awake()
    {
        singleton = this;
        GameSettings.Load();
        Timer.InitializeCreate();
        LanguageManager.Initialize();
        LanguageManager.SetLanguage(x => x.Code.Equals(GameSettings.SettingLanguageCode.Value));
        ItemManager.Initialize();
        //MessageManager.Initialize();

        ObjectsManager.LoadAllObjectsFromResources();
        RoomLoader.LoadAllRoomsFromResources();
        RoomLayerMask   = LayerMask.GetMask("Room");
        PlayerLayerMask = LayerMask.GetMask("Player");
        TrapLayerMask   = LayerMask.GetMask("Trap");
    }
예제 #11
0
    public static List <GameObject> InitializeRoom(GameObject room)
    {
        if (!NetworkManagerCustom.IsServer)
        {
            return(null);
        }

        List <GameObject> objects = RoomLoader.SpawnSerializebleObjects(RoomLoader.loadedRooms.Find(x => x.fileName.Equals(room.GetComponent <Room>().RoomName)), room);

        foreach (GameObject gameObject in objects)
        {
            if (gameObject.GetComponent <ISerializableObject>() != null)
            {
                SerializationManager.InitializeObject(gameObject);
            }
        }

        room.GetComponent <Room>().Initialized = true;
        return(objects);
    }
예제 #12
0
        public void MapGenerationTest()
        {
            var room1 = RoomLoader.Load(@"
+d++
ds.+
++++".ToMemoryStream());
            var room2 = RoomLoader.Load(@"
++++
+..d
++++".ToMemoryStream());
            var room3 = RoomLoader.Load(@"
++++
+..+
+d++".ToMemoryStream());
            var room4 = RoomLoader.Load(@"
+++++
+...d
+++d+".ToMemoryStream());
            var map   = new Map(30, 30, new List <RoomTemplate> {
                room1, room2, room3, room4
            }, new Random());
        }
예제 #13
0
    public override void OnInspectorGUI()
    {
        base.DrawDefaultInspector();

        RoomLoader loader = (RoomLoader)target;

        if (GUILayout.Button("Unserialize"))
        {
            Undo.RecordObject(loader, "Unserialize Room");
            loader.Unserialize(loader.currentRoom);
        }

        if (GUILayout.Button("Serialize"))
        {
            EditorUtility.SetDirty(loader.currentRoom);

            Undo.RecordObject(loader.currentRoom, "Serialize Room");
            loader.Serialize();

            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
        }
    }
예제 #14
0
    private static GameObject SpawnRoom(RoomLoader.Room room, RoomInfo position, Transform parent, bool onServer)
    {
        GameObject spawnedRoom = RoomLoader.SpawnRoom(room, new Vector3(position.Position.x * 495, position.Position.y * 277, 0), onServer);

        spawnedRoom.GetComponent <Room>().Position = position.Position;
        if (NetworkManagerCustom.IsServer && SerializationManager.World != null &&
            SerializationManager.World.Objects[position.Position.x, position.Position.y] != null)
        {
            spawnedRoom.GetComponent <Room>().Initialized = true;
        }
        spawnedRoom.transform.parent = parent;
        List <GameObject> gates = Utils.GetComponentsRecursive <GateObject>(spawnedRoom).ConvertAll(x => x.gameObject);

        gates.ForEach(x =>
                      x.transform.Find("trigger").GetComponent <GateTrigger>().GetEventSystem <GateTrigger.EnterGateEvent>()
                      .SubcribeEvent(y => OnGateEnter(y.Player, y.Sender, false)));

        foreach (GameObject gateObject in gates)
        {
            Vector2Int localPosition = GateInfo.RoomObjectToLocalPosition(gateObject.transform.localPosition);
            if (gateObject.GetComponent <GateObject>().gateType == 0)
            {
                gateObject.GetComponent <GateObject>().Enable =
                    position.Gates.Exists(x => x.LocalPosition == localPosition);
            }
        }

        for (int x = 0; x < position.Size.x; x++)
        {
            for (int y = 0; y < position.Size.y; y++)
            {
                spawnedRooms[x + position.Position.x, y + position.Position.y] = spawnedRoom;
            }
        }
        spawnedRoom.SetActive(false);
        return(spawnedRoom);
    }
예제 #15
0
        public GameManager(Game1 game, Dictionary <String, Texture2D> spriteSheet, SpriteFont font, SpriteFont header, Sounds sounds)
        {
            this.game = game;
            sprites   = spriteSheet;
            state     = GameState.PLAYING;

            //load room 17 first

            sound = sounds;

            roomLoad = new RoomLoader(sprites);
            rooms.Add("Room17", roomLoad.Load("Room17.txt"));
            roomKey = "Room17";

            player     = new Player(spriteSheet["playersheet"], new Vector2(500, 200), spriteSheet["PlayerProjectiles"], sound);
            hud        = new HUD(spriteSheet["hudSheet"], font);
            itemScreen = new ItemSelectionScreen(spriteSheet["ItemSelection"]);
            pause      = new PauseScreen(spriteSheet["MenuScreens"], font, header);
            gameOver   = new GameOverScreen(spriteSheet["MenuScreens"], font, header);
            win        = new WinScreen(spriteSheet["MenuScreens"]);


            EPCol = new EnemyProjectileCollisionHandler(this);
        }
예제 #16
0
파일: RoomWorld.cs 프로젝트: efwen/ASL
 public override void Awake()
 {
     base.Awake();
     roomLoader = GetComponent <RoomLoader>();
     Debug.Assert(roomOrigin != null);
 }
예제 #17
0
        public GameManager(Game1 game, Dictionary <String, Texture2D> spriteSheet, SpriteFont font, SpriteFont header, Sounds sounds)
        {
            GameplayConstants.Initialize(1);//initialize constants to normal mode, just at the start so constants are somehting

            this.game = game;
            sprites   = spriteSheet;
            state     = GameState.START;

            difficulty  = 1;
            isHordeMode = false;



            //load room 17 first

            sound = sounds;

            roomLoad = new RoomLoader(sprites, this);
            rooms.Add("Room17", roomLoad.Load("Room17.txt"));
            roomKey      = "Room17";
            transitioner = new RoomTransition();

            //initialize player
            player = new Player(spriteSheet["playersheet"], new Vector2(500, 200), spriteSheet["PlayerProjectiles"], sound);

            //initailize screens
            hud        = new HUD(spriteSheet["hudSheet"], font);
            itemScreen = new ItemSelectionScreen(spriteSheet["ItemSelection"]);
            pause      = new PauseScreen(spriteSheet["MenuScreens"], font, header);
            gameOver   = new GameOverScreen(spriteSheet["MenuScreens"], font, header);
            win        = new WinScreen(spriteSheet["MenuScreens"]);
            start      = new StartMenuScreen(spriteSheet["StartMenu"], font, header, this);


            EPCol = new EnemyProjectileCollisionHandler(this);

            //initailize cheat code dictionary
            cheatCodes = new Dictionary <string, ICommand>();

            //initailize cheat codes
            ICommand extraHealth = new ExtraHealth(player);
            ICommand extraRupees = new ExtraRupees(player);
            ICommand invinc      = new Invincibility(player);
            ICommand bombs       = new UnlimitedBombs(player);

            cheatCodes.Add("NBKJH", extraHealth);
            cheatCodes.Add("MNBVX", extraRupees);
            cheatCodes.Add("ZZKNL", invinc);
            cheatCodes.Add("GFGFG", bombs);

            //initailize special move code dictionary
            specialMoves = new Dictionary <string, ICommand>();

            //initailize special moves
            ICommand fireSpin     = new FireSpinSpecialMove(this);
            ICommand reapingArrow = new ReapingArrowSpecialMove(this);
            ICommand rupeeShied   = new RupeeShieldSpecialMove(this);

            specialMoves.Add("TYHGT", fireSpin);
            specialMoves.Add("JKJKJ", reapingArrow);
            specialMoves.Add("KJHGF", rupeeShied);
        }
예제 #18
0
    void Start()
    {
        string[] data       = GetComponent <SpawnedData>().spawnedData;
        int      length     = int.Parse(data[0]);
        bool     horizontal = bool.Parse(data[1]);

        Mesh meshBorder = new Mesh();

        meshBorder.SetVertices(new List <Vector3>()
        {
            new Vector3(0, 0, 0), new Vector3(length, 0, 0), new Vector3(length, -9, 0), new Vector3(0, -9, 0),
            new Vector3(0, -6, 0), new Vector3(-9, -6, 0), new Vector3(-9, -9, 0), new Vector3(0, -9, 0),
            new Vector3(length, -6, 0), new Vector3(length + 9, -6, 0), new Vector3(length + 9, -9, 0), new Vector3(length, -9, 0),
        });
        meshBorder.SetUVs(0, new List <Vector2>()
        {
            new Vector2(0, 0.695f), new Vector2(length / 32f, 0.695f), new Vector2(length / 32f, 0.625f), new Vector2(0, 0.625f),
            new Vector2(0.594f, 0.508f), new Vector2(0.875f, 0.508f), new Vector2(0.875f, 0.484f), new Vector2(0.594f, 0.484f),
            new Vector2(0.594f, 0.508f), new Vector2(0.875f, 0.508f), new Vector2(0.875f, 0.484f), new Vector2(0.594f, 0.484f),
        });
        meshBorder.triangles = new int[] { 0, 1, 3, 1, 2, 3, 4, 7, 6, 5, 4, 6, 8, 9, 11, 11, 9, 10 };
        meshBorder.normals   = RoomLoader.getNormals(12);
        meshBorder.RecalculateBounds();
        meshBorder.RecalculateNormals();
        meshBorder.RecalculateTangents();

        Mesh meshShadow = new Mesh();

        meshShadow.SetVertices(new List <Vector3>()
        {
            new Vector3(0, 0, -100), new Vector3(length, 0, -100), new Vector3(length, 0, 100), new Vector3(0, 0, 100)
        });
        meshShadow.SetUVs(0, new List <Vector2>()
        {
            new Vector2(0, 0.695f), new Vector2(1, 0.695f), new Vector2(1, 0.65f), new Vector2(0, 0.65f)
        });
        meshShadow.triangles = new int[] { 1, 0, 2, 3, 2, 0 };
        meshShadow.normals   = RoomLoader.getNormals(4);
        meshShadow.RecalculateBounds();
        meshShadow.RecalculateNormals();
        meshShadow.RecalculateTangents();

        if (isServer)
        {
            GameObject hitBox = transform.Find("HitBox").gameObject;
            hitBox.GetComponent <BoxCollider2D>().offset =
                new Vector2(length / 2f, hitBox.GetComponent <BoxCollider2D>().offset.y);
            hitBox.GetComponent <BoxCollider2D>().size =
                new Vector2(length, hitBox.GetComponent <BoxCollider2D>().size.y);
        }

        GameObject border = transform.Find("Border").gameObject;

        border.GetComponent <MeshFilter>().mesh      = meshBorder;
        border.GetComponent <BoxCollider2D>().offset = new Vector2(length / 2f, border.GetComponent <BoxCollider2D>().offset.y);
        border.GetComponent <BoxCollider2D>().size   = new Vector2(length, border.GetComponent <BoxCollider2D>().size.y);

        transform.Find("Shadow").gameObject.GetComponent <MeshFilter>().mesh = meshShadow;

        BoxCollider2D flapper = transform.Find("Flapper").gameObject.GetComponent <BoxCollider2D>();

        flapper.offset = new Vector2(length / 2f, flapper.offset.y);
        flapper.size   = new Vector2(length, flapper.size.y);

        BoxCollider2D triggerEnter = transform.Find("TriggerEnter").gameObject.GetComponent <BoxCollider2D>();

        triggerEnter.offset = new Vector2(length / 2f, triggerEnter.offset.y);
        triggerEnter.size   = new Vector2(length, triggerEnter.size.y);

        BoxCollider2D triggerOut = transform.Find("TriggerOut").gameObject.GetComponent <BoxCollider2D>();

        triggerOut.offset = new Vector2(length / 2f, triggerOut.offset.y);
        triggerOut.size   = new Vector2(length, triggerOut.size.y);

        if (!horizontal)
        {
            transform.localEulerAngles = new Vector3(0, 0, -90);
        }
    }
예제 #19
0
 private void Start()
 {
     if (isServer)
     {
         NetworkManagerCustomGUI gui = GameObject.Find("Manager").GetComponent <NetworkManagerCustomGUI>();
         if (gui.StartArguments[0].Equals("new game"))
         {
             seedToGeneration = int.Parse(ServerEvents.singleton.SeedToGenerate);
             seedToSpawn      = int.Parse(ServerEvents.singleton.SeedToSpawn);
             GenerationInfo generation = GetGeneration(seedToGeneration == 0 ? rnd.Next() : seedToGeneration);
             seedToSpawn = seedToSpawn == 0 ? rnd.Next() : seedToSpawn;
             GenerationManager.SpawnGeneration(RoomLoader.loadedRooms, generation, seedToSpawn, false);
             MessageManager.GetGenServerMessage.SendToServer(new EmptyMessage());
             if (GameSettings.SettingVisualizeTestGeneration.Value)
             {
                 GenerationManager.VisualizeGeneration(generation);
             }
         }
         else if (gui.StartArguments[0].Equals("load game"))
         {
             SerializationManager.LoadWorld(gui.StartArguments[1]);
             GenerationInfo generation = GetGeneration(SerializationManager.World.Info.SeedToGenerate);
             GenerationManager.SpawnGeneration(RoomLoader.loadedRooms, generation, SerializationManager.World.Info.SeedToSpawn, false);
             MessageManager.GetGenServerMessage.SendToServer(new EmptyMessage());
             if (GameSettings.SettingVisualizeTestGeneration.Value)
             {
                 GenerationManager.VisualizeGeneration(generation);
             }
         }
         else if (gui.StartArguments[0].Equals("test mode"))
         {
             GenerationManager.SetCurrentRoom(RoomLoader.SpawnRoom(RoomLoader.loadedRooms.Find(x => x.fileName.Equals(GameSettings.SettingTestRoomName.Value)), Vector3.zero, false));
             GenerationManager.InitializeRoom(GenerationManager.currentRoom);
             GameObject player = Instantiate(LocalPlayer);
             Vector3    toPos  = Vector3.zero;
             Transform  parent = GenerationManager.currentRoom.transform.Find("Objects");
             for (int i = 0; i < parent.childCount; i++)
             {
                 if (parent.GetChild(i).name.Contains("playerPosition"))
                 {
                     toPos = parent.GetChild(i).position;
                 }
             }
             player.transform.position = toPos + new Vector3(18, 25);
             if (ServerEvents.singleton.ServerOnlyProfile != null)
             {
                 player.GetComponent <GameProfile>().Deserialize(ServerEvents.singleton.ServerOnlyProfile);
             }
             NetworkServer.AddPlayerForConnection(NetworkServer.connections[0], player, indexController++);
         }
         else if (gui.StartArguments[0].Equals("room editor"))
         {
             RoomLoader.Room room = RoomLoader.LoadRoom(Application.streamingAssetsPath + "/room.json", Encoding.UTF8);
             GenerationManager.SetCurrentRoom(RoomLoader.SpawnRoom(room, Vector3.zero, false));
             RoomLoader.loadedRooms.Add(room);
             GenerationManager.InitializeRoom(GenerationManager.currentRoom);
             string[] gateInfo = File.ReadAllLines(Application.streamingAssetsPath + "/gate.txt", Encoding.UTF8);
             GameObject.Find("startPosition").transform.position = new Vector3(int.Parse(gateInfo[0]), int.Parse(gateInfo[1]), -1f);
             doStartForce = bool.Parse(gateInfo[2]);
             GameObject player = Instantiate(LocalPlayer);
             player.transform.position = GameObject.Find("startPosition").transform.position;
             NetworkServer.AddPlayerForConnection(NetworkServer.connections[0], player, indexController++);
         }
     }
     else
     {
         MessageManager.GetGenServerMessage.SendToServer(new EmptyMessage());
     }
 }
    // Use this for initialization
    void Start()
    {
        if (worldManagerObject == null)
        {
            worldManager = FindObjectOfType <WorldManager>();
        }
        else
        {
            worldManager = worldManagerObject.GetComponent <WorldManager>();
        }

        roomLoader = FindObjectOfType <RoomLoader>();

        // load main menu scene
        keywords.Add("Main Menu", () =>
        {
            worldManager.LoadScene("MainMenu");
        });

        // Call the OnReset method on every gameobject.
        keywords.Add("Reset world", () =>
        {
            PersistoMatic[] objects = (PersistoMatic[])GameObject.FindObjectsOfType(typeof(PersistoMatic));
            foreach (PersistoMatic obj in objects)
            {
                obj.SendMessage("OnRemove");
            }
        });

        keywords.Add("Toggle wireframe", () =>
        {
            worldManager.ToggleWireframe();
        });

        keywords.Add("Toggle room", () =>
        {
            roomLoader.ToggleRoom();
        });

        keywords.Add("Start scan", () =>
        {
            SpatialMappingManager.Instance.StartObserver();
        });

        keywords.Add("Stop scan", () =>
        {
            SpatialMappingManager.Instance.StopObserver();
        });

        keywords.Add("Place stem base", () =>
        {
            worldManager.CreateStemBase();
        });

        keywords.Add("Place console", () =>
        {
            worldManager.CreateConsole();
        });

        keywords.Add("Place spawn", () =>
        {
            worldManager.CreateSpawnPoint();
        });



        keywords.Add("Place scoreboard", () =>
        {
            worldManager.CreateScoreboard();
        });

        keywords.Add("Place metal barrel", () =>
        {
            worldManager.CreateMetalBarrel();
        });


        //not yet ready
        //keywords.Add("Place room model", () =>
        //{
        //    worldManager.CreateRoomModel();
        //});



        keywords.Add("Place infinite ammo box", () =>
        {
            worldManager.CreateInfiniteAmmoBox();
        });

        keywords.Add("Place path finder", () =>
        {
            worldManager.CreatePathFinder();
        });

        keywords.Add("Place start button", () =>
        {
            worldManager.CreateStartButton();
        });

        keywords.Add("Place mist", () =>
        {
            worldManager.CreateMist();
        });

        keywords.Add("Place mist end", () =>
        {
            worldManager.CreateMistEnd();
        });


        keywords.Add("Place hot spot", () =>
        {
            worldManager.CreateHotspot();
        });



        keywords.Add("Place Target", () =>
        {
            worldManager.CreateTarget();
        });

        keywords.Add("Remove", () =>
        {
            var focusObject = GazeManager.Instance.HitObject;
            if (focusObject != null)
            {
                // Call the OnDrop method on just the focused object.
                focusObject.SendMessage("OnRemove");
            }
        });

        // Tell the KeywordRecognizer about our keywords.
        keywordRecognizer = new KeywordRecognizer(keywords.Keys.ToArray());

        // Register a callback for the KeywordRecognizer and start recognizing!
        keywordRecognizer.OnPhraseRecognized += KeywordRecognizer_OnPhraseRecognized;
        keywordRecognizer.Start();
    }