SGD::Point pointLerp(SGD::Point start, SGD::Point end, float dt, float duration) { SGD::Point position; position.x = floatLerp(start.x, end.x, dt, duration); position.y = floatLerp(start.y, end.y, dt, duration); return position; }
void CPUTCameraModelViewer::Update(float deltaSeconds) { float prevDistance = mDistance; float lerp = floatClamp( deltaSeconds * 6, 0.0f, 1.0f); mDistance = floatLerp(mDistance, mDstDistance, lerp); float3 look = (float4x4RotationX(mViewAngles.x) * float4x4RotationY(mViewAngles.y)) * float3( 0, 0, 1 ); float3 pos = mTarget - look * mDistance; mpCamera->SetPosition(pos); ((CPUTCamera*)mpCamera)->LookAt(mTarget); mpCamera->Update(deltaSeconds); }
void CPUTCameraControllerOrthographic::Update(float deltaSeconds) { mPosition = ClampPosition(mPosition); mCurWidth = floatLerp(mMinWidth, mMaxWidth, mZoomRatio); //float scale = mViewportDim.x / mCurWidth; float aspectRatio = mViewportDim.x / mViewportDim.y; mCurHeight = mCurWidth / aspectRatio; mCamera->SetPosition(mPosition); mCamera->SetFarPlaneDistance(1000); mCamera->SetNearPlaneDistance(0.1f); mCamera->SetWidth(mCurWidth); mCamera->SetHeight(mCurHeight); mCamera->Update(); float4x4 projMatrix = *mCamera->GetProjectionMatrix(); projMatrix.r1.y *= -1.0f; mCamera->SetProjectionMatrix(projMatrix); }