From: <st...@us...> - 2009-05-07 15:18:09
|
Revision: 3467 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=3467&view=rev Author: stevo14 Date: 2009-05-07 15:17:58 +0000 (Thu, 07 May 2009) Log Message: ----------- Camera now points in the direction that the kart will be turning (but less so at higher speeds in order to reduce sudden camera movement). Modified Paths: -------------- main/branches/irrlicht/src/graphics/camera.cpp Modified: main/branches/irrlicht/src/graphics/camera.cpp =================================================================== --- main/branches/irrlicht/src/graphics/camera.cpp 2009-05-06 19:47:14 UTC (rev 3466) +++ main/branches/irrlicht/src/graphics/camera.cpp 2009-05-07 15:17:58 UTC (rev 3467) @@ -35,7 +35,7 @@ m_mode = CM_NORMAL; m_index = camera_index; m_camera = irr_driver->addCamera(); - m_distance = kart->getKartProperties()->getCameraDistance(); + m_distance = kart->getKartProperties()->getCameraDistance() * 0.75f; m_kart = kart; m_angle_up = 0.0f; m_angle_around = 0.0f; @@ -145,10 +145,13 @@ switch(m_mode) { case CM_NORMAL: - m_target = m_kart->getXYZ(); - m_angle_around = m_kart->getHPR().getX(); + // This first line moves the camera around behind the kart, pointing it + // towards where the kart is turning (but only at lower speeds). + m_angle_around = m_kart->getHPR().getX() + (m_kart->getSteerPercent() / (m_kart->getSpeed() * 0.1f + 1)); m_angle_up = m_kart->getHPR().getY() - DEGREE_TO_RAD(30.0f); + m_target = m_kart->getXYZ(); + m_position.setX( sin(m_angle_around)); m_position.setY(-cos(m_angle_around)); m_position.setZ(-sin(m_angle_up)); @@ -157,23 +160,25 @@ break; case CM_CLOSEUP: // Lower to the ground and closer to the kart - m_target = m_kart->getXYZ(); - m_angle_around = m_kart->getHPR().getX(); + m_angle_around = m_kart->getHPR().getX() + (m_kart->getSteerPercent() / (m_kart->getSpeed() * 0.1f + 1)); m_angle_up = m_kart->getHPR().getY() - DEGREE_TO_RAD(20.0f); + m_target = m_kart->getXYZ(); + m_position.setX( sin(m_angle_around)); m_position.setY(-cos(m_angle_around)); m_position.setZ(-sin(m_angle_up)); - m_position *= m_distance * 0.5f; + m_position *= m_distance * 0.75f; m_position += m_target; break; case CM_LEADER_MODE: // Follows the leader kart, higher off of the ground, further from the kart, // and turns in the opposite direction from the kart for a nice effect. :) - m_target = RaceManager::getKart(0)->getXYZ(); m_angle_around = RaceManager::getKart(0)->getHPR().getX(); m_angle_up = RaceManager::getKart(0)->getHPR().getY() + DEGREE_TO_RAD(40.0f); + m_target = RaceManager::getKart(0)->getXYZ(); + m_position.setX(sin(m_angle_around)); m_position.setY(cos(m_angle_around)); m_position.setZ(sin(m_angle_up)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <st...@us...> - 2009-05-09 16:01:26
|
Revision: 3471 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=3471&view=rev Author: stevo14 Date: 2009-05-09 16:01:16 +0000 (Sat, 09 May 2009) Log Message: ----------- Implemented CM_FINAL camera mode. Modified Paths: -------------- main/branches/irrlicht/src/graphics/camera.cpp Modified: main/branches/irrlicht/src/graphics/camera.cpp =================================================================== --- main/branches/irrlicht/src/graphics/camera.cpp 2009-05-09 14:49:19 UTC (rev 3470) +++ main/branches/irrlicht/src/graphics/camera.cpp 2009-05-09 16:01:16 UTC (rev 3471) @@ -145,6 +145,8 @@ //----------------------------------------------------------------------------- void Camera::update(float dt) { + const Track* track=RaceManager::getTrack(); + // Each case should set m_target and m_position according to what is needed for that mode. // Yes, there is a lot of duplicate code but it is (IMHO) much easier to follow this way. switch(m_mode) @@ -194,7 +196,17 @@ break; case CM_FINAL: - // TODO: Implement + if(!track->hasFinalCamera()) + { + m_mode = CM_NORMAL; + break; + } + m_position = track->getCameraPosition(); + m_target.setX(-sin( track->getCameraHPR().getX() ) ); + m_target.setY( cos( track->getCameraHPR().getX() ) ); + m_target.setZ( sin( track->getCameraHPR().getY() ) ); + m_target *= 10.0f; + m_target += m_position; break; case CM_SIMPLE_REPLAY: // TODO: Implement This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2009-05-23 02:22:30
|
Revision: 3532 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=3532&view=rev Author: auria Date: 2009-05-23 01:45:50 +0000 (Sat, 23 May 2009) Log Message: ----------- dampened camera moving around. should make you feel less dizzy while not ebing as static as it used to be Modified Paths: -------------- main/branches/irrlicht/src/graphics/camera.cpp Modified: main/branches/irrlicht/src/graphics/camera.cpp =================================================================== --- main/branches/irrlicht/src/graphics/camera.cpp 2009-05-23 01:28:14 UTC (rev 3531) +++ main/branches/irrlicht/src/graphics/camera.cpp 2009-05-23 01:45:50 UTC (rev 3532) @@ -154,7 +154,9 @@ case CM_NORMAL: // This first line moves the camera around behind the kart, pointing it // towards where the kart is turning (and turning even more while skidding). - m_angle_around = m_kart->getHPR().getX() + m_rotation_range * m_kart->getSteerPercent() * m_kart->getSkidding(); + const float steering = m_kart->getSteerPercent() * (1.0f + (m_kart->getSkidding() - 1.0f)/2.3f ); // dampen skidding effect + const float dampened_steer = fabsf(steering) * steering; // quadratically to dampen small variations (but keep sign) + m_angle_around = m_kart->getHPR().getX() + m_rotation_range * dampened_steer * 0.5f; m_angle_up = m_kart->getHPR().getY() - DEGREE_TO_RAD(30.0f); m_target = m_kart->getXYZ(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mbj...@us...> - 2009-05-23 23:43:35
|
Revision: 3534 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=3534&view=rev Author: mbjornstk Date: 2009-05-23 23:43:26 +0000 (Sat, 23 May 2009) Log Message: ----------- Fix compiling issue in Linux, definition of variables after case labels fail. Modified Paths: -------------- main/branches/irrlicht/src/graphics/camera.cpp Modified: main/branches/irrlicht/src/graphics/camera.cpp =================================================================== --- main/branches/irrlicht/src/graphics/camera.cpp 2009-05-23 23:04:57 UTC (rev 3533) +++ main/branches/irrlicht/src/graphics/camera.cpp 2009-05-23 23:43:26 UTC (rev 3534) @@ -146,6 +146,8 @@ void Camera::update(float dt) { const Track* track=RaceManager::getTrack(); + float steering; + float dampened_steer; // Each case should set m_target and m_position according to what is needed for that mode. // Yes, there is a lot of duplicate code but it is (IMHO) much easier to follow this way. @@ -154,8 +156,8 @@ case CM_NORMAL: // This first line moves the camera around behind the kart, pointing it // towards where the kart is turning (and turning even more while skidding). - const float steering = m_kart->getSteerPercent() * (1.0f + (m_kart->getSkidding() - 1.0f)/2.3f ); // dampen skidding effect - const float dampened_steer = fabsf(steering) * steering; // quadratically to dampen small variations (but keep sign) + steering = m_kart->getSteerPercent() * (1.0f + (m_kart->getSkidding() - 1.0f)/2.3f ); // dampen skidding effect + dampened_steer = fabsf(steering) * steering; // quadratically to dampen small variations (but keep sign) m_angle_around = m_kart->getHPR().getX() + m_rotation_range * dampened_steer * 0.5f; m_angle_up = m_kart->getHPR().getY() - DEGREE_TO_RAD(30.0f); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2009-10-20 14:06:51
|
Revision: 4137 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=4137&view=rev Author: auria Date: 2009-10-20 14:06:41 +0000 (Tue, 20 Oct 2009) Log Message: ----------- Updated camera start position for a nicer effect Modified Paths: -------------- main/branches/irrlicht/src/graphics/camera.cpp Modified: main/branches/irrlicht/src/graphics/camera.cpp =================================================================== --- main/branches/irrlicht/src/graphics/camera.cpp 2009-10-20 14:02:07 UTC (rev 4136) +++ main/branches/irrlicht/src/graphics/camera.cpp 2009-10-20 14:06:41 UTC (rev 4137) @@ -137,8 +137,8 @@ */ void Camera::setInitialTransform() { - m_position = Vec3(0,0,0); m_target = m_kart->getXYZ(); + m_position = m_target - Vec3(0,50,-25); m_temp_position = m_position; m_temp_target = m_target; } // updateKartPosition This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2009-11-08 12:16:45
|
Revision: 4211 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=4211&view=rev Author: hikerstk Date: 2009-11-08 12:13:50 +0000 (Sun, 08 Nov 2009) Log Message: ----------- Added (usually commented out) settings for a debug camera, which shows the track from high above, which is useful for debugging AI behaviour. Modified Paths: -------------- main/branches/irrlicht/src/graphics/camera.cpp Modified: main/branches/irrlicht/src/graphics/camera.cpp =================================================================== --- main/branches/irrlicht/src/graphics/camera.cpp 2009-11-06 10:52:57 UTC (rev 4210) +++ main/branches/irrlicht/src/graphics/camera.cpp 2009-11-08 12:13:50 UTC (rev 4211) @@ -238,6 +238,15 @@ m_camera->setPosition(m_temp_position.toIrrVector()); m_camera->setTarget(m_temp_target.toIrrVector()); + // The following settings give a debug camera which shows the track from + // high above the kart straight down. +#undef DEBUG_CAMERA +#ifdef DEBUG_CAMERA + core::vector3df xyz = RaceManager::getKart(0)->getXYZ().toIrrVector(); + m_camera->setTarget(xyz); + xyz.Y = xyz.Y+30; + m_camera->setPosition(xyz); +#endif if(race_manager->getNumLocalPlayers() < 2) sound_manager->positionListener(m_temp_position, m_temp_target - m_temp_position); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2009-11-30 13:30:41
|
Revision: 4230 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=4230&view=rev Author: hikerstk Date: 2009-11-30 13:30:32 +0000 (Mon, 30 Nov 2009) Log Message: ----------- Added missing initialisation of ambient light, which should fix dark tracks on non-windows system (untested yet). Modified Paths: -------------- main/branches/irrlicht/src/graphics/camera.cpp Modified: main/branches/irrlicht/src/graphics/camera.cpp =================================================================== --- main/branches/irrlicht/src/graphics/camera.cpp 2009-11-29 13:04:57 UTC (rev 4229) +++ main/branches/irrlicht/src/graphics/camera.cpp 2009-11-30 13:30:32 UTC (rev 4230) @@ -40,6 +40,7 @@ m_kart = kart; m_angle_up = 0.0f; m_angle_around = 0.0f; + m_ambient_light = RaceManager::getTrack()->getDefaultAmbientColor(); // TODO: Put these values into a config file // Global or per split screen zone? This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2009-12-06 17:56:49
|
Revision: 4259 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=4259&view=rev Author: auria Date: 2009-12-06 17:56:41 +0000 (Sun, 06 Dec 2009) Log Message: ----------- Decreased FOV in multiplayer mode, will look much less weird Modified Paths: -------------- main/branches/irrlicht/src/graphics/camera.cpp Modified: main/branches/irrlicht/src/graphics/camera.cpp =================================================================== --- main/branches/irrlicht/src/graphics/camera.cpp 2009-12-06 17:48:47 UTC (rev 4258) +++ main/branches/irrlicht/src/graphics/camera.cpp 2009-12-06 17:56:41 UTC (rev 4259) @@ -84,9 +84,11 @@ : UserConfigParams::m_height); m_scaling = core::vector2df(1.0f, 0.5f); m_aspect *= 2.0f; - m_fov = DEGREE_TO_RAD*85.0f; + m_fov = DEGREE_TO_RAD*65.0f; break; - case 3: if(m_index<2) + case 3: + /* + if(m_index<2) { m_viewport = core::recti(m_index==0 ? 0 : UserConfigParams::m_width>>1, @@ -103,10 +105,10 @@ UserConfigParams::m_width, UserConfigParams::m_height); m_scaling = core::vector2df(1.0f, 0.5f); - m_fov = DEGREE_TO_RAD*85.0f; + m_fov = DEGREE_TO_RAD*65.0f; m_aspect *= 2.0f; } - break; + break;*/ case 4: m_viewport = core::recti(m_index%2==0 ? 0 : UserConfigParams::m_width>>1, m_index<2 ? 0 @@ -124,7 +126,7 @@ UserConfigParams::m_width, UserConfigParams::m_height); m_scaling = core::vector2df(1.0f, 1.0f); - m_fov = DEGREE_TO_RAD*75.0f; + m_fov = DEGREE_TO_RAD*65.0f; break; } // switch m_camera->setFOV(m_fov); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2009-12-06 18:17:16
|
Revision: 4260 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=4260&view=rev Author: auria Date: 2009-12-06 18:17:10 +0000 (Sun, 06 Dec 2009) Log Message: ----------- Fixed 4-player split-screen (Seems like Hiker loves ternary operators; but they made it totally unobvious that screen width was used to compute viewport y ;) ) Modified Paths: -------------- main/branches/irrlicht/src/graphics/camera.cpp Modified: main/branches/irrlicht/src/graphics/camera.cpp =================================================================== --- main/branches/irrlicht/src/graphics/camera.cpp 2009-12-06 17:56:41 UTC (rev 4259) +++ main/branches/irrlicht/src/graphics/camera.cpp 2009-12-06 18:17:10 UTC (rev 4260) @@ -87,7 +87,6 @@ m_fov = DEGREE_TO_RAD*65.0f; break; case 3: - /* if(m_index<2) { m_viewport = core::recti(m_index==0 ? 0 @@ -108,15 +107,15 @@ m_fov = DEGREE_TO_RAD*65.0f; m_aspect *= 2.0f; } - break;*/ - case 4: m_viewport = core::recti(m_index%2==0 ? 0 - : UserConfigParams::m_width>>1, - m_index<2 ? 0 - : UserConfigParams::m_width>>1, - m_index%2==0 ? UserConfigParams::m_width>>1 - : UserConfigParams::m_width, - m_index<2 ? UserConfigParams::m_height>>1 - : UserConfigParams::m_height); + break; + case 4: + const int x1 = (m_index%2==0 ? 0 : UserConfigParams::m_width>>1); + const int y1 = (m_index<2 ? 0 : UserConfigParams::m_height>>1); + const int x2 = (m_index%2==0 ? UserConfigParams::m_width>>1 : UserConfigParams::m_width); + const int y2 = (m_index<2 ? UserConfigParams::m_height>>1 : UserConfigParams::m_height); + m_viewport = core::recti(x1, y1, x2, y2); + std::cout << "Viewport : " << m_viewport.UpperLeftCorner.X << ", " << m_viewport.UpperLeftCorner.Y << "; size : " + << m_viewport.getWidth() << "x" << m_viewport.getHeight() << "\n"; m_scaling = core::vector2df(0.5f, 0.5f); m_fov = DEGREE_TO_RAD*50.0f; break; @@ -126,7 +125,7 @@ UserConfigParams::m_width, UserConfigParams::m_height); m_scaling = core::vector2df(1.0f, 1.0f); - m_fov = DEGREE_TO_RAD*65.0f; + m_fov = DEGREE_TO_RAD*75.0f; break; } // switch m_camera->setFOV(m_fov); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mbj...@us...> - 2009-12-06 21:04:09
|
Revision: 4269 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=4269&view=rev Author: mbjornstk Date: 2009-12-06 21:03:59 +0000 (Sun, 06 Dec 2009) Log Message: ----------- Wrap some lines with {} so g++ 4.3 does not abort. For reference, and in case there is a better fix, the error reported was: graphics/camera.cpp:124: error: jump to case label graphics/camera.cpp:117: error: crosses initialization of "const int y2" graphics/camera.cpp:116: error: crosses initialization of "const int x2" graphics/camera.cpp:115: error: crosses initialization of "const int y1" graphics/camera.cpp:114: error: crosses initialization of "const int x1" Modified Paths: -------------- main/branches/irrlicht/src/graphics/camera.cpp Modified: main/branches/irrlicht/src/graphics/camera.cpp =================================================================== --- main/branches/irrlicht/src/graphics/camera.cpp 2009-12-06 19:42:50 UTC (rev 4268) +++ main/branches/irrlicht/src/graphics/camera.cpp 2009-12-06 21:03:59 UTC (rev 4269) @@ -86,7 +86,7 @@ m_aspect *= 2.0f; m_fov = DEGREE_TO_RAD*65.0f; break; - case 3: + case 3: /* if(m_index<2) { @@ -110,6 +110,7 @@ } break;*/ case 4: + { // g++ 4.3 whines about the variables in switch/case if not {}-wrapped (???) const int x1 = (m_index%2==0 ? 0 : UserConfigParams::m_width>>1); const int y1 = (m_index<2 ? 0 : UserConfigParams::m_height>>1); const int x2 = (m_index%2==0 ? UserConfigParams::m_width>>1 : UserConfigParams::m_width); @@ -119,6 +120,7 @@ << m_viewport.getWidth() << "x" << m_viewport.getHeight() << "\n"; m_scaling = core::vector2df(0.5f, 0.5f); m_fov = DEGREE_TO_RAD*50.0f; + } break; default:fprintf(stderr, "Incorrect number of players: '%d' - assuming 1.\n", race_manager->getNumLocalPlayers()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |