void ChangeCamera(DrawMethodArgs args) { PhysicsScene scene = demo.Engine.Factory.PhysicsSceneManager.Get(args.OwnerSceneIndex); DemoKeyboardState keyboardState = demo.GetKeyboardState(); if (keyboardState[Key.Tab] && !oldKeyboardState[Key.Tab]) { PhysicsObject activeCameraObject = null; int activeCameraInstanceIndex = 0; for (int i = 0; i < scene.PhysicsObjectWithCameraCount; i++) { PhysicsObject cameraObject = scene.GetPhysicsObjectWithCamera(i); if (cameraObject.Camera.Active) { activeCameraObject = cameraObject; activeCameraInstanceIndex = i; cameraObject.Camera.Active = false; } } int nextActiveCameraInstanceIndex = (activeCameraInstanceIndex + 1) % scene.PhysicsObjectWithCameraCount; PhysicsObject nextCameraObject = scene.GetPhysicsObjectWithCamera(nextActiveCameraInstanceIndex); nextCameraObject.Camera.Active = true; } oldKeyboardState = keyboardState; }
void Draw(DrawMethodArgs args) { PhysicsScene scene = demo.Engine.Factory.PhysicsSceneManager.Get(args.OwnerSceneIndex); PhysicsObject objectBase = scene.Factory.PhysicsObjectManager.Get(args.OwnerIndex); PhysicsObject physicsObjectWithCamera = scene.GetPhysicsObjectWithCamera(0); if (physicsObjectWithCamera == null) { return; } PhysicsCamera activeCamera = physicsObjectWithCamera.Camera; if (activeCamera == null) { return; } float time = args.Time; if ((infoScreen == null) || (infoDescription == null)) { return; } if (!infoDescription.EnableDrawing) { return; } string sceneScreenName = infoScreen.Material.UserDataStr; if (sceneScreenName == null) { return; } if (!demo.Descriptions.ContainsKey(sceneScreenName)) { return; } List <string> Descriptions = demo.Descriptions[sceneScreenName]; string info = null; infoDescription.MainWorldTransform.GetPosition(ref position); activeCamera.View.GetViewMatrix(ref view); activeCamera.Projection.GetProjectionMatrix(ref projection); RenderPCT render = demo.DemoFont3D.Render; render.SetWorld(ref world); render.SetView(ref view); render.SetProjection(ref projection); GL.CullFace(CullFaceMode.Back); demo.DemoFont3D.Begin(); for (int i = 0; i < Descriptions.Count; i++) { info = Descriptions[i]; if (info != null) { demo.DemoFont3D.Draw(position.X - 25.0f, position.Y + 12.0f - 1.4f * i, position.Z - 0.5f, 0.08125f, 0.12125f, info, whiteColor); } } demo.DemoFont3D.End(); }