void Ship :: setupCamera () const { CoordinateSystem camera = getCameraCoordinateSystem(); const Vector3& camera_position = camera.getPosition(); const Vector3& camera_up = camera.getUp(); Vector3 look_at = camera_position + camera.getForward(); gluLookAt(camera_position.x, camera_position.y, camera_position.z, look_at.x, look_at.y, look_at.z, camera_up.x, camera_up.y, camera_up.z); }
void World::update() { handleKeyPress(); m_playerShip.update(*this); int i = 0; // bullet for (; i < Const::BULLET_COUNT; i++) { m_bullets[i].update(*this); } int abc = 0; // enemy ships Vector3 playerPosition = m_playerShip.getPosition(); for (i = 0; i < Const::ENEMY_SHIP_AMOUNT;i++){ if (m_ships[i].isAlive()){ double distance = m_ships[i].getPosition().getDistanceSquared(playerPosition); if (distance < Const::NEAR_TO_PLAYER){ m_ships[i].runAi(*this); m_ships[i].update(*this); abc++; } } } CoordinateSystem cs = m_playerShip.getCoordinate(); Vector3 position = cs.getPosition(); Vector3 up = cs.getUp(); m_camera.setUp(cs.getUp()); Vector3 forward = cs.getForward(); m_camera.setForward(forward); position += 20 * up; position -= 100 * forward; m_camera.setPosition(position); checkCollision(); }