void LoadAndSetupScene()
        {
            FrameworkScene pScene = new FrameworkScene("dp_scene.xml");

            List<NodeRef> nodes = new List<NodeRef>();
            nodes.Add(pScene.FindNode("cube"));
            nodes.Add(pScene.FindNode("rightBar"));
            nodes.Add(pScene.FindNode("leaningBar"));
            nodes.Add(pScene.FindNode("spinBar"));
            g_lightNumBinder = new UniformIntBinder();
            AssociateUniformWithNodes(nodes, g_lightNumBinder, "numberOfLights");
            SetStateBinderWithNodes(nodes, g_lightNumBinder);

             			int unlit = pScene.FindProgram("p_unlit");
            int lit = pScene.FindProgram("p_lit");
            Mesh pSphereMesh = pScene.FindMesh("m_sphere");

            //No more things that can throw.
            g_spinBarOrient = nodes[3].NodeGetOrient();

            g_unlitProg = unlit;
            GL.UseProgram(unlit);
            g_unlitModelToCameraMatrixUnif = GL.GetUniformLocation(unlit, "modelToCameraMatrix");
            g_unlitCameraToClipMatrixUnif  = GL.GetUniformLocation(unlit, "cameraToClipMatrix");
            g_unlitObjectColorUnif = GL.GetUniformLocation(unlit, "objectColor");
            GL.UseProgram(0);

            g_litProg = lit;
            GL.UseProgram(lit);
            g_litCameraToClipMatrixUnif  = GL.GetUniformLocation(lit, "cameraToClipMatrix");
            GL.UseProgram(0);

            g_nodes = nodes;
            g_pSphereMesh = pSphereMesh;

            g_pScene = pScene;
        }
        public override String keyboard(Keys keyCode, int x, int y)
        {
            StringBuilder result = new StringBuilder();
            result.AppendLine(keyCode.ToString());
            switch (keyCode)
            {
            case Keys.Escape:
                g_pScene = null;
                break;
            case Keys.Space:
                g_persViewPole.Reset();
                break;
            case Keys.T:
                g_bDrawCameraPos = !g_bDrawCameraPos;
                break;
            case Keys.Y:
                g_bDepthClampProj = !g_bDepthClampProj;
                break;
            case Keys.P:
                g_timer.TogglePause();
                break;
            case Keys.Enter: //Enter key.
                {
                    try
                    {
                        LoadAndSetupScene();
                    }
                    catch(Exception ex)
                    {
                        MessageBox.Show("Failed to reload, due to: " + ex.ToString());
                    }
                }
                break;
            }

            g_viewPole.CharPress((char)keyCode);
            return result.ToString();
        }