void Camera::FollowCharacter(DirectX::XMFLOAT3 p_playerPos) { // Lock shadows on the player. DirectX::XMFLOAT3 playerPosition = p_playerPos; DirectX::XMFLOAT3 position = DirectX::XMFLOAT3(playerPosition.x + 25.0f, playerPosition.y + 100.0f, playerPosition.z + 50.0f); DirectX::XMFLOAT3 target = playerPosition; UpdatePosition(position); UpdateTarget(target); UpdateViewMatrix(); UpdateProjectionMatrix(true); GraphicsEngine::SetLightViewAndProjection(GetViewMatrix(), GetProjectionMatrix()); // Visibility view projection.. playerPosition = p_playerPos; position = DirectX::XMFLOAT3(playerPosition.x, playerPosition.y + 30.0f, playerPosition.z); target = playerPosition; UpdatePosition(position); UpdateTarget(target); UpdateViewMatrix(); GraphicsEngine::SetViewPolygonMatrix(GetViewMatrix()); // Lock camera on the player. playerPosition = p_playerPos; position = DirectX::XMFLOAT3(playerPosition.x, playerPosition.y + 30.0f, playerPosition.z - 15.0f); target = playerPosition; SetOutliningRayPosition(position); SetOutliningRayTarget(target); if (GLOBAL::GetInstance().CAMERA_MOVING) { MovingCamera(playerPosition); } else { UpdatePosition(position); UpdateTarget(target); UpdateViewMatrix(); UpdateProjectionMatrix(false); GraphicsEngine::SetViewAndProjection(GetViewMatrix(), GetProjectionMatrix()); m_oldPosition = position; } GraphicsEngine::UpdateVisibilityPolygon(Point(playerPosition.x, playerPosition.z), (float)GLOBAL::GetInstance().GetDeltaTime()); }
int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer glLoadIdentity(); // Reset The View /******new motion variables****/ xpos *= 0.8f; zpos *= 0.8f; xtrans2 += xpos/10; ztrans2 += zpos/10; // tu wczesniej byly deklaracje - czy to duza zmiana? xtrans = -xtrans2; ztrans = -ztrans2; zprot*=0.9; _heading += zprot; heading = mouse_xpos_cursor + _heading; yrot = heading; //ytrans = ytrans-walkbias-0.35f; GLfloat sceneroty = 360.0f - yrot; glRotatef(lookupdown,1.0f,0,0); glRotated(mouse_ypos_cursor,1.0f,0,0); glRotatef(sceneroty,0,1.0f,0); glTranslatef(xtrans,ytrans,ztrans); SetLights(); /****end of new variables****/ DrawGLMap( current ); glBegin(GL_TRIANGLES); glNormal3f( 0, 1, 0 ); glVertex3f(x_light,y_light,z_light); glVertex3f(x_light,y_light,z_light-0.05f); glVertex3f( x_light, y_light-0.05f, z_light-0.05f); glEnd(); // dzwieki ruchu gracza - w jakim miejscu? MovingCamera(); //gluCylinder(quadratic,0.2f,0.2f,3.0f,32,32); // Draw Our Cylinder return TRUE; // Everything Went OK }