From 4dc1164dbe8472312a3b7c9d9e3bbb9e395daf5b Mon Sep 17 00:00:00 2001 From: kearwood Date: Thu, 12 Apr 2012 06:41:56 +0000 Subject: [PATCH] Test App controls are now frame-rate independent --HG-- extra : convert_revision : svn%3A7752d6cf-9f14-4ad2-affc-04f1e67b81a5/trunk%4037 --- objview/Classes/KRObjViewGLView.mm | 14 -------------- objview/Classes/KRObjViewViewController.h | 2 ++ objview/Classes/KRObjViewViewController.mm | 12 +++++++++--- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/objview/Classes/KRObjViewGLView.mm b/objview/Classes/KRObjViewGLView.mm index c1daf6c..d2b1f1c 100644 --- a/objview/Classes/KRObjViewGLView.mm +++ b/objview/Classes/KRObjViewGLView.mm @@ -138,20 +138,6 @@ } KRModelManager *pModelManager = [renderEngine getModelManager]; - //m_scene.addInstance(pModelManager->getModel("fachwerkhaus12"), KRMat4()); - //m_scene.addInstance(pModelManager->getModel("ballroom"), KRMat4()); - //m_scene.addInstance(pModelManager->getModel("HoganCombined"), KRMat4()); - //m_scene.addInstance(pModelManager->getModel("polySurface12848"), KRMat4(), "PillarLightmap2k"); - //m_scene.addInstance(pModelManager->getModel("Wall2"), KRMat4(), "Wall2_lightmap"); - /* - std::map models = pModelManager->getModels(); - for(std::map::iterator itr=models.begin(); itr != models.end(); itr++) { - std::string lightmap = (*itr).first; - lightmap.append("_lightmap"); - m_pScene->addInstance((*itr).second->getName(), (*itr).second->getName(), KRMat4(), lightmap); - - } - */ [renderEngine setNearZ: 25.0]; [renderEngine setFarZ: 5000.0]; diff --git a/objview/Classes/KRObjViewViewController.h b/objview/Classes/KRObjViewViewController.h index 01aefad..3d61d01 100644 --- a/objview/Classes/KRObjViewViewController.h +++ b/objview/Classes/KRObjViewViewController.h @@ -65,6 +65,8 @@ id displayLink; + + CFTimeInterval _lastTime; } diff --git a/objview/Classes/KRObjViewViewController.mm b/objview/Classes/KRObjViewViewController.mm index 7fe3c1c..b402a76 100644 --- a/objview/Classes/KRObjViewViewController.mm +++ b/objview/Classes/KRObjViewViewController.mm @@ -162,6 +162,8 @@ camera_position = KRVector3(-850, -10, -700); + _lastTime= CFAbsoluteTimeGetCurrent(); + displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(drawView:)]; [displayLink setFrameInterval:1]; // Maximum 60fps [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; @@ -177,6 +179,10 @@ - (void)drawView:(id)sender { + CFTimeInterval time = CFAbsoluteTimeGetCurrent(); + float deltaTime = (time - _lastTime); + _lastTime = time; + const GLfloat PI = 3.14159265; const GLfloat d2r = PI * 2 / 360; @@ -237,13 +243,13 @@ //double dScaleFactor = [engine getModelManager]->getFirstModel()->getMaxDimension() / 100.0f; - double dScaleFactor = 10.0f; + double dScaleFactor = 1000.0f * deltaTime; camera_position.z += (-cos(camera_pitch) * cos(camera_yaw) * leftStickDeltaX + -cos(camera_pitch) * cos(camera_yaw - 90.0f * d2r) * -leftStickDeltaY) * dScaleFactor; camera_position.x += (cos(camera_pitch) * sin(camera_yaw) * leftStickDeltaX + cos(camera_pitch) * sin(camera_yaw - 90.0f * d2r) * -leftStickDeltaY) * dScaleFactor; camera_position.y += sin(camera_pitch) * leftStickDeltaX * dScaleFactor; - camera_yaw += rightStickDeltaY * 4.0 * d2r; - camera_pitch += rightStickDeltaX * 4.0 * d2r; + camera_yaw += rightStickDeltaY * 180.0 * d2r * deltaTime; + camera_pitch += rightStickDeltaX * 180.0 * d2r * deltaTime; [engine renderScene: [glView getScene] WithPosition:camera_position Yaw: camera_yaw Pitch: camera_pitch Roll:0.0f];