/// <summary>
        /// This method create the initial scene
        /// </summary>
        protected override void CreateScene()
        {
            physics = new Physics();

            player = new Player(mSceneMgr);

            cameraNode = mSceneMgr.CreateSceneNode();
            cameraNode.AttachObject(mCamera);
            player.Model.GameNode.AddChild(cameraNode);

            inputsManager.PlayerController = (PlayerController)player.Controller;


            robot  = new Robot(mSceneMgr);
            robot2 = new Robot(mSceneMgr);
            robot3 = new Robot(mSceneMgr);

            robot.RobotNode.Translate(100, -7, -100);
            robot2.RobotNode.Translate(200, -7, 200);
            robot3.RobotNode.Translate(-200, -7, -200);



            gemBlue = new BlueGem(mSceneMgr, ((PlayerStats)player.Stats).Score);

            gemBlue.GemNode.Translate(100, 0, 0);

            gemRed = new RedGem(mSceneMgr, ((PlayerStats)player.Stats).Score);

            gemRed.GemNode.Translate(200, 0, 0);



            shieldPU = new ShieldPU(mSceneMgr, player.Stats.Shield);

            shieldPU.PUNode.Translate(-100, 0, 0);

            lifePU = new LifePU(mSceneMgr, player.Stats.Lives);

            lifePU.PUNode.Translate(0, 0, 0);

            healthPU = new HealthPU(mSceneMgr, player.Stats.Health);

            healthPU.ControlNode.Translate(0, 300, 0);



            bombs         = new List <Bomb>();
            bombsToRemove = new List <Bomb>();



            wallLeft = new Cube(mSceneMgr);
            MeshPtr cubePtr = wallLeft.getCube("wallLeft", "Dirt", 20, 50, 1000);

            wallLeftEntity = mSceneMgr.CreateEntity("wallLeft_Entity", "wallLeft");
            wallLeftNode   = mSceneMgr.RootSceneNode.CreateChildSceneNode("wallLeft_Node");
            wallLeftNode.AttachObject(wallLeftEntity);

            wallLeftNode.Translate(500, 0, 0);

            wallRight = new Cube(mSceneMgr);
            MeshPtr wallRightPtr = wallRight.getCube("wallRight", "Dirt", 20, 50, 1000);

            wallRightEntity = mSceneMgr.CreateEntity("wallRight_Entity", "wallRight");
            wallRightNode   = mSceneMgr.RootSceneNode.CreateChildSceneNode("wallRight_Node");
            wallRightNode.AttachObject(wallRightEntity);

            wallRightNode.Translate(-500, 0, 0);

            wallTop = new Cube(mSceneMgr);
            MeshPtr wallTopPtr = wallTop.getCube("wallTop", "Dirt", 1000, 50, 20);

            wallTopEntity = mSceneMgr.CreateEntity("wallTop_Entity", "wallTop");
            wallTopNode   = mSceneMgr.RootSceneNode.CreateChildSceneNode("wallTop_Node");
            wallTopNode.AttachObject(wallTopEntity);

            wallTopNode.Translate(0, 0, 500);

            wallBottom = new Cube(mSceneMgr);
            MeshPtr wallBottomPtr = wallBottom.getCube("wallBottom", "Dirt", 1000, 50, 20);

            wallBottomEntity = mSceneMgr.CreateEntity("wallBottom_Entity", "wallBottom");
            wallBottomNode   = mSceneMgr.RootSceneNode.CreateChildSceneNode("wallBottom_Node");
            wallBottomNode.AttachObject(wallBottomEntity);

            wallBottomNode.Translate(0, 0, -500);



            PlayerStats playerStats = new PlayerStats();

            gameHMD = new GameInterface(mSceneMgr, mWindow, playerStats);

            environment = new Environment(mSceneMgr, mWindow);

            physics.StartSimTimer();
        }