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(); }