From: <au...@us...> - 2011-04-01 14:41:24
|
Revision: 8174 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=8174&view=rev Author: auria Date: 2011-04-01 14:41:18 +0000 (Fri, 01 Apr 2011) Log Message: ----------- Fixed lightning being multiplied in multiplayer mode Modified Paths: -------------- main/trunk/src/graphics/rain.cpp main/trunk/src/graphics/rain.hpp main/trunk/src/karts/kart.cpp main/trunk/src/karts/kart.hpp main/trunk/src/modes/profile_world.cpp main/trunk/src/modes/world.cpp main/trunk/src/network/network_kart.cpp main/trunk/src/states_screens/race_gui.cpp Modified: main/trunk/src/graphics/rain.cpp =================================================================== --- main/trunk/src/graphics/rain.cpp 2011-04-01 04:50:43 UTC (rev 8173) +++ main/trunk/src/graphics/rain.cpp 2011-04-01 14:41:18 UTC (rev 8174) @@ -39,10 +39,12 @@ const float TEXTURE_Y_TILES[RAIN_RING_COUNT] = { 8.0f, 7.0f, 6.0f, 4.0f, 4.0f }; -Rain::Rain(irr::scene::ICameraSceneNode* camera, irr::scene::ISceneNode* parent) +Rain::Rain(irr::scene::ICameraSceneNode* camera, irr::scene::ISceneNode* parent, bool lightning) { - m_thunder_sound = sfx_manager->createSoundSource("thunder"); + m_lightning = lightning; + if (lightning) m_thunder_sound = sfx_manager->createSoundSource("thunder"); + Material* m = material_manager->getMaterial("rain.png"); assert(m != NULL); @@ -120,7 +122,7 @@ m_node[r]->remove(); } - if (m_thunder_sound) sfx_manager->deleteSFX(m_thunder_sound); + if (m_lightning && m_thunder_sound != NULL) sfx_manager->deleteSFX(m_thunder_sound); } // ---------------------------------------------------------------------------- @@ -140,20 +142,23 @@ matrix.setTextureTranslate(m_x[m], m_y[m]); } - m_next_lightning -= dt; - - if (m_next_lightning < 0.0f) + if (m_lightning) { - RaceGUIBase* gui_base = World::getWorld()->getRaceGUI(); - RaceGUI* gui = dynamic_cast<RaceGUI*>(gui_base); - if (gui != NULL) + m_next_lightning -= dt; + + if (m_next_lightning < 0.0f) { - gui->lightning(); - if (m_thunder_sound) m_thunder_sound->play(); + RaceGUIBase* gui_base = World::getWorld()->getRaceGUI(); + RaceGUI* gui = dynamic_cast<RaceGUI*>(gui_base); + if (gui != NULL) + { + gui->lightning(); + if (m_thunder_sound) m_thunder_sound->play(); + } + + RandomGenerator g; + m_next_lightning = 35 + (float)g.get(35); } - - RandomGenerator g; - m_next_lightning = 35 + (float)g.get(35); } } // update Modified: main/trunk/src/graphics/rain.hpp =================================================================== --- main/trunk/src/graphics/rain.hpp 2011-04-01 04:50:43 UTC (rev 8173) +++ main/trunk/src/graphics/rain.hpp 2011-04-01 14:41:18 UTC (rev 8174) @@ -37,10 +37,11 @@ float m_y[RAIN_RING_COUNT]; float m_next_lightning; + bool m_lightning; SFXBase* m_thunder_sound; public: - Rain(irr::scene::ICameraSceneNode* camera, irr::scene::ISceneNode* parent); + Rain(irr::scene::ICameraSceneNode* camera, irr::scene::ISceneNode* parent, bool lightning); ~Rain(); void update(float dt); Modified: main/trunk/src/karts/kart.cpp =================================================================== --- main/trunk/src/karts/kart.cpp 2011-04-01 04:50:43 UTC (rev 8173) +++ main/trunk/src/karts/kart.cpp 2011-04-01 14:41:18 UTC (rev 8174) @@ -63,9 +63,10 @@ * \param ident The identifier for the kart model to use. * \param position The position (or rank) for this kart (between 1 and * number of karts). This is used to determine the start position. + * \param is_first_kart Indicates whether this is the first *player* kart * \param init_transform The initial position and rotation for this kart. */ -Kart::Kart (const std::string& ident, Track* track, int position, +Kart::Kart (const std::string& ident, Track* track, int position, bool is_first_kart, const btTransform& init_transform, RaceManager::KartType type) : TerrainInfo(1), Moveable(), EmergencyAnimation(this), MaxSpeed(this), m_powerup(this) @@ -172,7 +173,7 @@ animations = false; } - loadData(type, track, animations); + loadData(type, is_first_kart, track, animations); reset(); } // Kart @@ -1656,13 +1657,14 @@ /** Attaches the right model, creates the physics and loads all special * effects (particle systems etc.) */ -void Kart::loadData(RaceManager::KartType type, Track* track, bool animatedModel) +void Kart::loadData(RaceManager::KartType type, bool is_first_kart, Track* track, bool animatedModel) { if (animatedModel) { scene::ISceneNode* staticModel = m_kart_model->attachModel(false); scene::ISceneNode* animatedModelNode = m_kart_model->attachModel(animatedModel); - LODNode* node = new LODNode(irr_driver->getSceneManager()->getRootSceneNode(), irr_driver->getSceneManager()); + LODNode* node = new LODNode(irr_driver->getSceneManager()->getRootSceneNode(), + irr_driver->getSceneManager()); node->add(50, animatedModelNode, true); node->add(500, staticModel, true); m_node = node; @@ -1720,7 +1722,7 @@ type == RaceManager::KT_PLAYER) { // camera not yet available at this point - m_rain = new Rain(NULL, NULL); + m_rain = new Rain(NULL, NULL, is_first_kart); } Vec3 position(0, getKartHeight()*0.35f, -getKartLength()*0.35f); Modified: main/trunk/src/karts/kart.hpp =================================================================== --- main/trunk/src/karts/kart.hpp 2011-04-01 04:50:43 UTC (rev 8173) +++ main/trunk/src/karts/kart.hpp 2011-04-01 14:41:18 UTC (rev 8174) @@ -191,12 +191,13 @@ KartModel* m_kart_model; public: - Kart(const std::string& ident, Track* track, int position, + Kart(const std::string& ident, Track* track, int position, bool is_first_kart, const btTransform& init_transform, RaceManager::KartType type); virtual ~Kart(); unsigned int getWorldKartId() const { return m_world_kart_id; } void setWorldKartId(unsigned int n) { m_world_kart_id=n; } - void loadData(RaceManager::KartType type, Track* track, bool animatedModel); + void loadData(RaceManager::KartType type, bool is_first_kart, Track* track, + bool animatedModel); virtual void updateGraphics(const Vec3& off_xyz, const btQuaternion& off_rotation); void createPhysics (); Modified: main/trunk/src/modes/profile_world.cpp =================================================================== --- main/trunk/src/modes/profile_world.cpp 2011-04-01 04:50:43 UTC (rev 8173) +++ main/trunk/src/modes/profile_world.cpp 2011-04-01 14:41:18 UTC (rev 8174) @@ -91,7 +91,7 @@ race_manager->getNumberOfKarts()-1); btTransform init_pos = m_track->getStartTransform(index); - Kart *new_kart = new Kart(prof_kart_id, m_track, index+1, init_pos, RaceManager::KT_AI); + Kart *new_kart = new Kart(prof_kart_id, m_track, index+1, false, init_pos, RaceManager::KT_AI); Controller *controller = loadAIController(new_kart); new_kart->setController(controller); Modified: main/trunk/src/modes/world.cpp =================================================================== --- main/trunk/src/modes/world.cpp 2011-04-01 04:50:43 UTC (rev 8173) +++ main/trunk/src/modes/world.cpp 2011-04-01 14:41:18 UTC (rev 8174) @@ -179,7 +179,8 @@ { int position = index+1; btTransform init_pos = m_track->getStartTransform(index); - Kart *new_kart = new Kart(kart_ident, m_track, position, init_pos, race_manager->getKartType(index)); + Kart *new_kart = new Kart(kart_ident, m_track, position, (local_player_id == 0), init_pos, + race_manager->getKartType(index)); Controller *controller = NULL; switch(race_manager->getKartType(index)) { Modified: main/trunk/src/network/network_kart.cpp =================================================================== --- main/trunk/src/network/network_kart.cpp 2011-04-01 04:50:43 UTC (rev 8173) +++ main/trunk/src/network/network_kart.cpp 2011-04-01 14:41:18 UTC (rev 8174) @@ -27,7 +27,7 @@ NetworkKart::NetworkKart(const std::string &kart_name, Track* track, int position, const btTransform &init_transform, int global_player_id, RaceManager::KartType type) - : Kart(kart_name, track, position, init_transform, type) + : Kart(kart_name, track, position, false, init_transform, type) { m_global_player_id = global_player_id; } // NetworkKart Modified: main/trunk/src/states_screens/race_gui.cpp =================================================================== --- main/trunk/src/states_screens/race_gui.cpp 2011-04-01 04:50:43 UTC (rev 8173) +++ main/trunk/src/states_screens/race_gui.cpp 2011-04-01 14:41:18 UTC (rev 8174) @@ -373,7 +373,11 @@ if (m_lightning > 0.0f) { GLint glviewport[4]; - glGetIntegerv(GL_VIEWPORT, glviewport); + glviewport[0] = viewport.UpperLeftCorner.X; + glviewport[1] = viewport.UpperLeftCorner.Y; + glviewport[2] = viewport.LowerRightCorner.X; + glviewport[3] = viewport.LowerRightCorner.Y; + //glGetIntegerv(GL_VIEWPORT, glviewport); glDisable(GL_TEXTURE_2D); glDisable(GL_DEPTH_TEST); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |