From 872413ba913bc90b993f20565434885dc6957262 Mon Sep 17 00:00:00 2001 From: konstin Date: Sun, 13 Jul 2014 19:45:10 +0200 Subject: [PATCH 01/35] clean code --- src/karts/kart_properties.cpp | 262 +++++++++++++++++----------------- src/karts/kart_properties.hpp | 6 +- 2 files changed, 134 insertions(+), 134 deletions(-) diff --git a/src/karts/kart_properties.cpp b/src/karts/kart_properties.cpp index c9fb3cb4f..a216c37d0 100644 --- a/src/karts/kart_properties.cpp +++ b/src/karts/kart_properties.cpp @@ -461,149 +461,149 @@ void KartProperties::getAllData(const XMLNode * root) } // if sounds-node exist if(const XMLNode *nitro_node = root->getNode("nitro")) + { + nitro_node->get("consumption", &m_nitro_consumption ); + nitro_node->get("small-container", &m_nitro_small_container ); + nitro_node->get("big-container", &m_nitro_big_container ); + nitro_node->get("max-speed-increase", &m_nitro_max_speed_increase); + nitro_node->get("engine-force", &m_nitro_engine_force ); + nitro_node->get("duration", &m_nitro_duration ); + nitro_node->get("fade-out-time", &m_nitro_fade_out_time ); + nitro_node->get("max", &m_nitro_max ); + nitro_node->get("min-consumption-time", &m_nitro_min_consumption ); + } + + if(const XMLNode *bubble_node = root->getNode("bubblegum")) + { + bubble_node->get("time", &m_bubblegum_time ); + bubble_node->get("speed-fraction", &m_bubblegum_speed_fraction); + bubble_node->get("fade-in-time", &m_bubblegum_fade_in_time ); + bubble_node->get("torque", &m_bubblegum_torque ); + } + + if(const XMLNode *rescue_node = root->getNode("rescue")) + { + rescue_node->get("vert-offset", &m_rescue_vert_offset); + rescue_node->get("time", &m_rescue_time ); + rescue_node->get("height", &m_rescue_height ); + } + + if(const XMLNode *explosion_node = root->getNode("explosion")) + { + explosion_node->get("time", &m_explosion_time ); + explosion_node->get("radius", &m_explosion_radius); + explosion_node->get("invulnerability-time", + &m_explosion_invulnerability_time); + } + + if(const XMLNode *skid_node = root->getNode("skid")) + { + m_skidding_properties->load(skid_node); + } + + + if(const XMLNode *slipstream_node = root->getNode("slipstream")) + { + slipstream_node->get("length", &m_slipstream_length ); + slipstream_node->get("width", &m_slipstream_width ); + slipstream_node->get("collect-time", &m_slipstream_collect_time ); + slipstream_node->get("use-time", &m_slipstream_use_time ); + slipstream_node->get("add-power", &m_slipstream_add_power ); + slipstream_node->get("min-speed", &m_slipstream_min_speed ); + slipstream_node->get("max-speed-increase", + &m_slipstream_max_speed_increase); + slipstream_node->get("duration", &m_slipstream_duration ); + slipstream_node->get("fade-out-time",&m_slipstream_fade_out_time ); + } + + if(const XMLNode *turn_node = root->getNode("turn")) + { + turn_node->get("time-full-steer", &m_time_full_steer ); + turn_node->get("time-reset-steer", &m_time_reset_steer ); + turn_node->get("turn-radius", &m_turn_angle_at_speed ); + // For now store the turn radius in turn angle, the correct + // value can only be determined later in ::load + } + + if(const XMLNode *engine_node = root->getNode("engine")) + { + engine_node->get("brake-factor", &m_brake_factor); + engine_node->get("max-speed-reverse-ratio", &m_max_speed_reverse_ratio); + engine_node->get("power", &m_engine_power); + if(m_engine_power.size()!=RaceManager::DIFFICULTY_COUNT) { - nitro_node->get("consumption", &m_nitro_consumption ); - nitro_node->get("small-container", &m_nitro_small_container ); - nitro_node->get("big-container", &m_nitro_big_container ); - nitro_node->get("max-speed-increase", &m_nitro_max_speed_increase); - nitro_node->get("engine-force", &m_nitro_engine_force ); - nitro_node->get("duration", &m_nitro_duration ); - nitro_node->get("fade-out-time", &m_nitro_fade_out_time ); - nitro_node->get("max", &m_nitro_max ); - nitro_node->get("min-consumption-time", &m_nitro_min_consumption ); + Log::fatal("[KartProperties]", + "Incorrect engine-power specifications for kart '%s'", + getIdent().c_str()); } - - if(const XMLNode *bubble_node = root->getNode("bubblegum")) + engine_node->get("max-speed", &m_max_speed); + if(m_max_speed.size()!=RaceManager::DIFFICULTY_COUNT) { - bubble_node->get("time", &m_bubblegum_time ); - bubble_node->get("speed-fraction", &m_bubblegum_speed_fraction); - bubble_node->get("fade-in-time", &m_bubblegum_fade_in_time ); - bubble_node->get("torque", &m_bubblegum_torque ); + Log::fatal("[KartProperties]", + "Incorrect max-speed specifications for kart '%s'", + getIdent().c_str()); } + } // if getNode("engine") - if(const XMLNode *rescue_node = root->getNode("rescue")) + if(const XMLNode *gear_node = root->getNode("gear")) + { + gear_node->get("switch-ratio", &m_gear_switch_ratio ); + gear_node->get("power-increase", &m_gear_power_increase); + } + + if(const XMLNode *mass_node = root->getNode("mass")) + mass_node->get("value", &m_mass); + + if(const XMLNode *plunger_node= root->getNode("plunger")) + { + plunger_node->get("band-max-length", &m_rubber_band_max_length ); + plunger_node->get("band-force", &m_rubber_band_force ); + plunger_node->get("band-duration", &m_rubber_band_duration ); + plunger_node->get("band-speed-increase",&m_rubber_band_speed_increase); + plunger_node->get("band-fade-out-time", &m_rubber_band_fade_out_time ); + plunger_node->get("in-face-time", &m_plunger_in_face_duration); + if(m_plunger_in_face_duration.size()!=RaceManager::DIFFICULTY_COUNT) { - rescue_node->get("vert-offset", &m_rescue_vert_offset); - rescue_node->get("time", &m_rescue_time ); - rescue_node->get("height", &m_rescue_height ); + Log::fatal("KartProperties", + "Invalid plunger in-face-time specification."); } + } - if(const XMLNode *explosion_node = root->getNode("explosion")) + if(const XMLNode *zipper_node= root->getNode("zipper")) + { + zipper_node->get("time", &m_zipper_time ); + zipper_node->get("fade-out-time", &m_zipper_fade_out_time ); + zipper_node->get("force", &m_zipper_force ); + zipper_node->get("speed-gain", &m_zipper_speed_gain ); + zipper_node->get("max-speed-increase", &m_zipper_max_speed_increase); + } + + if(const XMLNode *swatter_node= root->getNode("swatter")) + { + swatter_node->get("duration", &m_swatter_duration ); + swatter_node->get("squash-duration", &m_squash_duration ); + swatter_node->get("squash-slowdown", &m_squash_slowdown ); + if(swatter_node->get("distance", &m_swatter_distance2) ) { - explosion_node->get("time", &m_explosion_time ); - explosion_node->get("radius", &m_explosion_radius); - explosion_node->get("invulnerability-time", - &m_explosion_invulnerability_time); + // Avoid squaring if distance is not defined, so that + // distance2 remains UNDEFINED (which is a negative value) + m_swatter_distance2 *= m_swatter_distance2; } + } - if(const XMLNode *skid_node = root->getNode("skid")) - { - m_skidding_properties->load(skid_node); - } + if(const XMLNode *lean_node= root->getNode("lean")) + { + lean_node->get("max", &m_max_lean ); + lean_node->get("speed", &m_lean_speed); + m_max_lean *= DEGREE_TO_RAD; + m_lean_speed *= DEGREE_TO_RAD; + } - - if(const XMLNode *slipstream_node = root->getNode("slipstream")) - { - slipstream_node->get("length", &m_slipstream_length ); - slipstream_node->get("width", &m_slipstream_width ); - slipstream_node->get("collect-time", &m_slipstream_collect_time ); - slipstream_node->get("use-time", &m_slipstream_use_time ); - slipstream_node->get("add-power", &m_slipstream_add_power ); - slipstream_node->get("min-speed", &m_slipstream_min_speed ); - slipstream_node->get("max-speed-increase", - &m_slipstream_max_speed_increase); - slipstream_node->get("duration", &m_slipstream_duration ); - slipstream_node->get("fade-out-time",&m_slipstream_fade_out_time ); - } - - if(const XMLNode *turn_node = root->getNode("turn")) - { - turn_node->get("time-full-steer", &m_time_full_steer ); - turn_node->get("time-reset-steer", &m_time_reset_steer ); - turn_node->get("turn-radius", &m_turn_angle_at_speed ); - // For now store the turn radius in turn angle, the correct - // value can only be determined later in ::load - } - - if(const XMLNode *engine_node = root->getNode("engine")) - { - engine_node->get("brake-factor", &m_brake_factor); - engine_node->get("max-speed-reverse-ratio", &m_max_speed_reverse_ratio); - engine_node->get("power", &m_engine_power); - if(m_engine_power.size()!=RaceManager::DIFFICULTY_COUNT) - { - Log::fatal("[KartProperties]", - "Incorrect engine-power specifications for kart '%s'", - getIdent().c_str()); - } - engine_node->get("max-speed", &m_max_speed); - if(m_max_speed.size()!=RaceManager::DIFFICULTY_COUNT) - { - Log::fatal("[KartProperties]", - "Incorrect max-speed specifications for kart '%s'", - getIdent().c_str()); - } - } // if getNode("engine") - - if(const XMLNode *gear_node = root->getNode("gear")) - { - gear_node->get("switch-ratio", &m_gear_switch_ratio ); - gear_node->get("power-increase", &m_gear_power_increase); - } - - if(const XMLNode *mass_node = root->getNode("mass")) - mass_node->get("value", &m_mass); - - if(const XMLNode *plunger_node= root->getNode("plunger")) - { - plunger_node->get("band-max-length", &m_rubber_band_max_length ); - plunger_node->get("band-force", &m_rubber_band_force ); - plunger_node->get("band-duration", &m_rubber_band_duration ); - plunger_node->get("band-speed-increase",&m_rubber_band_speed_increase); - plunger_node->get("band-fade-out-time", &m_rubber_band_fade_out_time ); - plunger_node->get("in-face-time", &m_plunger_in_face_duration); - if(m_plunger_in_face_duration.size()!=RaceManager::DIFFICULTY_COUNT) - { - Log::fatal("KartProperties", - "Invalid plunger in-face-time specification."); - } - } - - if(const XMLNode *zipper_node= root->getNode("zipper")) - { - zipper_node->get("time", &m_zipper_time ); - zipper_node->get("fade-out-time", &m_zipper_fade_out_time ); - zipper_node->get("force", &m_zipper_force ); - zipper_node->get("speed-gain", &m_zipper_speed_gain ); - zipper_node->get("max-speed-increase", &m_zipper_max_speed_increase); - } - - if(const XMLNode *swatter_node= root->getNode("swatter")) - { - swatter_node->get("duration", &m_swatter_duration ); - swatter_node->get("squash-duration", &m_squash_duration ); - swatter_node->get("squash-slowdown", &m_squash_slowdown ); - if(swatter_node->get("distance", &m_swatter_distance2) ) - { - // Avoid squaring if distance is not defined, so that - // distance2 remains UNDEFINED (which is a negative value) - m_swatter_distance2 *= m_swatter_distance2; - } - } - - if(const XMLNode *lean_node= root->getNode("lean")) - { - lean_node->get("max", &m_max_lean ); - lean_node->get("speed", &m_lean_speed); - m_max_lean *= DEGREE_TO_RAD; - m_lean_speed *= DEGREE_TO_RAD; - } - - if(const XMLNode *startup_node= root->getNode("startup")) - { - startup_node->get("time", &m_startup_times); - startup_node->get("boost", &m_startup_boost); - } + if(const XMLNode *startup_node= root->getNode("startup")) + { + startup_node->get("time", &m_startup_times); + startup_node->get("boost", &m_startup_boost); + } if(m_kart_model) m_kart_model->loadInfo(*root); diff --git a/src/karts/kart_properties.hpp b/src/karts/kart_properties.hpp index d90dec561..c97b9d322 100644 --- a/src/karts/kart_properties.hpp +++ b/src/karts/kart_properties.hpp @@ -211,7 +211,7 @@ private: float m_nitro_small_container; /** Nitro amount for big bittle. */ float m_nitro_big_container; - /* How much the speed of a kart might exceed its maximum speed (in m/s). */ + /** How much the speed of a kart might exceed its maximum speed (in m/s). */ float m_nitro_max_speed_increase; /** Additional engine force to affect the kart. */ float m_nitro_engine_force; @@ -250,7 +250,7 @@ private: /** The speed with which the roll (when leaning in a curve) changes * (in radians/second). */ float m_lean_speed; - + /** How long a jump must be in order to trigger the jump animation. */ float m_jump_animation_time; @@ -547,7 +547,7 @@ public: { return m_speed_weighted_object_properties; } - + // ------------------------------------------------------------------------ /** Returns the wheel base (distance front to rear axis). */ float getWheelBase () const {return m_wheel_base; } From 02f2488502827cdda4157da903afb591638d7785 Mon Sep 17 00:00:00 2001 From: konstin Date: Tue, 15 Jul 2014 15:46:17 +0200 Subject: [PATCH 02/35] add default_number_of_laps --- src/race/grand_prix_data.cpp | 2 +- src/tracks/track.cpp | 2 ++ src/tracks/track.hpp | 12 ++++++++---- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/race/grand_prix_data.cpp b/src/race/grand_prix_data.cpp index 1405e01c8..fb99ff6bb 100644 --- a/src/race/grand_prix_data.cpp +++ b/src/race/grand_prix_data.cpp @@ -98,7 +98,7 @@ void GrandPrixData::changeTrackNumber(const unsigned int number_of_tracks, continue; m_tracks.push_back(id); - m_laps.push_back(3); // TODO: Take the default number from the track + m_laps.push_back(track_manager->getTrack(index)->getDefaultNumberOfLaps()); m_reversed.push_back(false); // This will be changed later } } diff --git a/src/tracks/track.cpp b/src/tracks/track.cpp index 0b03e0bed..1226daf6f 100644 --- a/src/tracks/track.cpp +++ b/src/tracks/track.cpp @@ -135,6 +135,7 @@ Track::Track(const std::string &filename) m_ident=="overworld"; m_minimap_x_scale = 1.0f; m_minimap_y_scale = 1.0f; + m_default_number_of_laps= 3; m_all_nodes.clear(); m_all_physics_only_nodes.clear(); m_all_cached_meshes.clear(); @@ -483,6 +484,7 @@ void Track::loadTrackInfo() root->get("caustics-speed", &m_caustics_speed); root->get("color-level-in", &m_color_inlevel); root->get("color-level-out", &m_color_outlevel); + root->get("default-number-of-laps",&m_default_number_of_laps); // Make the default for auto-rescue in battle mode and soccer mode to be false if(m_is_arena || m_is_soccer) diff --git a/src/tracks/track.hpp b/src/tracks/track.hpp index 1d7073569..92273860a 100644 --- a/src/tracks/track.hpp +++ b/src/tracks/track.hpp @@ -206,7 +206,7 @@ private: /** True if this track (textures and track data) should be cached. Used * for the overworld. */ bool m_cache_track; - + #ifdef DEBUG /** A list of textures that were cached before the track is loaded. @@ -388,7 +388,7 @@ private: float m_displacement_speed; float m_caustics_speed; - + /** The levels for color correction * m_color_inlevel(black, gamma, white) * m_color_outlevel(black, white)*/ @@ -398,6 +398,9 @@ private: /** List of all bezier curves in the track - for e.g. camera, ... */ std::vector m_all_curves; + /** The number of laps the track will be raced if no other value is given.*/ + int m_default_number_of_laps; + void loadTrackInfo(); void loadQuadGraph(unsigned int mode_id, const bool reverse); void convertTrackToBullet(scene::ISceneNode *node); @@ -602,7 +605,7 @@ public: bool getBloom() const { return m_bloom; } float getBloomThreshold() const { return m_bloom_threshold; } - + /** Return the color levels for color correction shader */ core::vector3df getColorLevelIn() const { return m_color_inlevel; } core::vector2df getColorLevelOut() const { return m_color_outlevel; } @@ -610,11 +613,12 @@ public: bool hasLensFlare() const { return m_lensflare; } bool hasGodRays() const { return m_godrays; } bool hasShadows() const { return m_shadows; } - + void addNode(scene::ISceneNode* node) { m_all_nodes.push_back(node); } float getDisplacementSpeed() const { return m_displacement_speed; } float getCausticsSpeed() const { return m_caustics_speed; } + const int getDefaultNumberOfLaps() const { return m_default_number_of_laps;} bool operator<(const Track &other) const; }; // class Track From a7c6eb385350e43e2d3a106c8215aa0565a525d1 Mon Sep 17 00:00:00 2001 From: konstin Date: Tue, 15 Jul 2014 15:57:33 +0200 Subject: [PATCH 03/35] close #1263 --- src/race/grand_prix_data.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/race/grand_prix_data.cpp b/src/race/grand_prix_data.cpp index fb99ff6bb..ca605cdba 100644 --- a/src/race/grand_prix_data.cpp +++ b/src/race/grand_prix_data.cpp @@ -99,7 +99,7 @@ void GrandPrixData::changeTrackNumber(const unsigned int number_of_tracks, m_tracks.push_back(id); m_laps.push_back(track_manager->getTrack(index)->getDefaultNumberOfLaps()); - m_reversed.push_back(false); // This will be changed later + m_reversed.push_back(false); // This will be changed later in the code } } else if (m_tracks.size() > number_of_tracks) From 0df72779a9b9b374c588585894ad0ffaf9a9eaf7 Mon Sep 17 00:00:00 2001 From: konstin Date: Tue, 15 Jul 2014 17:10:37 +0200 Subject: [PATCH 04/35] Use default laps for track info dialog --- .../dialogs/track_info_dialog.cpp | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/src/states_screens/dialogs/track_info_dialog.cpp b/src/states_screens/dialogs/track_info_dialog.cpp index 706fc619b..5231808e0 100644 --- a/src/states_screens/dialogs/track_info_dialog.cpp +++ b/src/states_screens/dialogs/track_info_dialog.cpp @@ -88,9 +88,7 @@ TrackInfoDialog::TrackInfoDialog(const std::string& ribbonItem, const std::strin screenshotWidget->add(); if (screenshot != NULL) - { screenshotWidget->setImage(screenshot); - } m_widgets.push_back(screenshotWidget); @@ -98,21 +96,11 @@ TrackInfoDialog::TrackInfoDialog(const std::string& ribbonItem, const std::strin if (has_laps) { m_spinner = getWidget("lapcountspinner"); - - m_spinner->m_properties[PROP_ID] = "lapcountspinner"; if (UserConfigParams::m_artist_debug_mode) - { m_spinner->setMin(0); - } - //I18N: In the track setup screen (number of laps choice, where %i is the number) - //m_spinner->setText( _("%i laps") ); - m_spinner->setValue( UserConfigParams::m_num_laps ); - //m_spinner->getIrrlichtElement()->setTabStop(true); - //m_spinner->getIrrlichtElement()->setTabGroup(false); - - const int num_laps = m_spinner->getValue(); - race_manager->setNumLaps(num_laps); + m_spinner->setValue(track->getDefaultNumberOfLaps()); + race_manager->setNumLaps(m_spinner->getValue()); } else { @@ -149,7 +137,6 @@ TrackInfoDialog::TrackInfoDialog(const std::string& ribbonItem, const std::strin m_highscore_entries[2] = getWidget("highscore3"); updateHighScores(); - } else { From ad641eff67e7122426bc2d2c23d839bfbf9f3ac5 Mon Sep 17 00:00:00 2001 From: konstin Date: Tue, 15 Jul 2014 17:15:42 +0200 Subject: [PATCH 05/35] unify separators --- src/achievements/achievement.hpp | 2 +- src/achievements/achievement_info.hpp | 2 +- src/achievements/achievements_manager.hpp | 2 +- src/addons/news_manager.cpp | 4 +-- src/animations/ipo.cpp | 2 +- src/config/player_manager.cpp | 2 +- src/config/saved_grand_prix.cpp | 2 +- src/config/saved_grand_prix.hpp | 2 +- src/config/user_config.cpp | 26 +++++++++---------- src/config/user_config.hpp | 20 +++++++------- src/graphics/camera.cpp | 2 +- src/graphics/irr_driver.cpp | 2 +- src/graphics/particle_emitter.cpp | 10 +++---- src/guiengine/message_queue.cpp | 6 ++--- src/guiengine/skin.cpp | 2 +- src/guiengine/skin.hpp | 4 +-- src/input/input_device.cpp | 2 +- src/input/wiimote_manager.cpp | 2 +- src/io/file_manager.cpp | 10 +++---- src/items/item_manager.cpp | 2 +- src/items/item_manager.hpp | 2 +- src/items/rubber_ball.cpp | 4 +-- src/items/rubber_band.cpp | 4 +-- src/karts/abstract_kart.hpp | 10 +++---- src/karts/kart.hpp | 2 +- src/main.cpp | 20 +++++++------- src/modes/world.hpp | 8 +++--- src/online/online_player_profile.cpp | 2 +- src/online/online_player_profile.hpp | 2 +- src/online/online_profile.cpp | 2 +- src/online/online_profile.hpp | 4 +-- src/online/request.cpp | 2 +- src/online/request.hpp | 2 +- src/online/servers_manager.cpp | 24 ++++++++--------- src/physics/btKart.cpp | 2 +- src/physics/btKartRaycast.cpp | 4 +-- src/physics/physical_object.cpp | 2 +- src/physics/physics.cpp | 10 +++---- src/physics/physics.hpp | 4 +-- src/race/race_manager.cpp | 8 +++--- src/states_screens/dialogs/addons_loading.cpp | 4 +-- src/states_screens/feature_unlocked.cpp | 4 +-- src/states_screens/kart_selection.cpp | 10 +++---- src/states_screens/race_result_gui.cpp | 6 ++--- src/states_screens/state_manager.cpp | 4 +-- src/states_screens/state_manager.hpp | 2 +- src/states_screens/user_screen.cpp | 2 +- src/states_screens/user_screen.hpp | 4 +-- src/utils/leak_check.cpp | 2 +- src/utils/leak_check.hpp | 2 +- 50 files changed, 132 insertions(+), 132 deletions(-) diff --git a/src/achievements/achievement.hpp b/src/achievements/achievement.hpp index b127af293..05dbb9891 100644 --- a/src/achievements/achievement.hpp +++ b/src/achievements/achievement.hpp @@ -29,7 +29,7 @@ class UTFWriter; class XMLNode; -// ============================================================================ +// ---------------------------------------------------------------------------- /** This is the base class for any achievement. It allows achievement status * to be saved, and detects when an achievement is fulfilled. It provides * storage for state information by a generic key-value mapping. The values diff --git a/src/achievements/achievement_info.hpp b/src/achievements/achievement_info.hpp index 648671794..0902f929f 100644 --- a/src/achievements/achievement_info.hpp +++ b/src/achievements/achievement_info.hpp @@ -29,7 +29,7 @@ #include #include -// ============================================================================ +// ---------------------------------------------------------------------------- class Achievement; diff --git a/src/achievements/achievements_manager.hpp b/src/achievements/achievements_manager.hpp index a9c8ab90a..7560ae08c 100644 --- a/src/achievements/achievements_manager.hpp +++ b/src/achievements/achievements_manager.hpp @@ -69,7 +69,7 @@ public: delete m_achievements_manager; m_achievements_manager = NULL; } // destroy - // ======================================================================== + // ------------------------------------------------------------------------ AchievementInfo* getAchievementInfo(uint32_t id) const; AchievementsStatus* createAchievementsStatus(const XMLNode *node=NULL); diff --git a/src/addons/news_manager.cpp b/src/addons/news_manager.cpp index 4c6d964c4..93087e630 100644 --- a/src/addons/news_manager.cpp +++ b/src/addons/news_manager.cpp @@ -407,7 +407,7 @@ bool NewsManager::conditionFulfilled(const std::string &cond) continue; } // Check for stkversion comparisons - // ================================ + // -------------------------------- if(cond[0]=="stkversion") { int news_version = StringUtils::versionToInt(cond[2]); @@ -431,7 +431,7 @@ bool NewsManager::conditionFulfilled(const std::string &cond) "assumed true.", cond_list[i].c_str()); } // Check for addons not installed - // ============================== + // ------------------------------ else if(cond[1]=="not" && cond[2]=="installed") { // The addons_manager can not be access, since it's diff --git a/src/animations/ipo.cpp b/src/animations/ipo.cpp index 8e4331893..7c6eccf7a 100644 --- a/src/animations/ipo.cpp +++ b/src/animations/ipo.cpp @@ -363,7 +363,7 @@ float Ipo::IpoData::getCubicBezier(float t, float p0, float p1, return ((a*t+b)*t+c)*t+p0; } // bezier -// ============================================================================ +// ---------------------------------------------------------------------------- /** The Ipo constructor. Ipos can share the actual data to interpolate, which * is stored in a separate IpoData object, see Ipo(const Ipo *ipo) * constructor. This is used for cannons: the actual check line stores the diff --git a/src/config/player_manager.cpp b/src/config/player_manager.cpp index af4e0bc63..56d541f43 100644 --- a/src/config/player_manager.cpp +++ b/src/config/player_manager.cpp @@ -152,7 +152,7 @@ Online::OnlineProfile* PlayerManager::getCurrentOnlineProfile() return getCurrentPlayer()->getProfile(); } // getCurrentOnlineProfile -// ============================================================================ +// ---------------------------------------------------------------------------- /** Constructor. */ PlayerManager::PlayerManager() diff --git a/src/config/saved_grand_prix.cpp b/src/config/saved_grand_prix.cpp index 3805457da..b16d25e41 100644 --- a/src/config/saved_grand_prix.cpp +++ b/src/config/saved_grand_prix.cpp @@ -62,7 +62,7 @@ SavedGrandPrix::SavedGPKart::SavedGPKart(GroupUserConfigParam * group, m_overall_time.findYourDataInAnAttributeOf(node); } // SavedGPKart -// ============================================================================ +// ---------------------------------------------------------------------------- SavedGrandPrix::SavedGrandPrix(unsigned int player_id, const std::string &gp_id, RaceManager::Difficulty difficulty, diff --git a/src/config/saved_grand_prix.hpp b/src/config/saved_grand_prix.hpp index e8aa32217..2984645e9 100644 --- a/src/config/saved_grand_prix.hpp +++ b/src/config/saved_grand_prix.hpp @@ -26,7 +26,7 @@ class RaceManager; -// ============================================================================ +// ---------------------------------------------------------------------------- /** * \brief Class for managing saved Grand-Prix's diff --git a/src/config/user_config.cpp b/src/config/user_config.cpp index 3cf9171cb..ff815c691 100644 --- a/src/config/user_config.cpp +++ b/src/config/user_config.cpp @@ -69,7 +69,7 @@ void UserConfigParam::writeInner(std::ofstream& stream, int level) const << toString().c_str() << "\"\n"; } // writeInner -// ============================================================================ +// ---------------------------------------------------------------------------- GroupUserConfigParam::GroupUserConfigParam(const char* group_name, const char* comment) { @@ -78,7 +78,7 @@ GroupUserConfigParam::GroupUserConfigParam(const char* group_name, if(comment != NULL) m_comment = comment; } // GroupUserConfigParam -// ============================================================================ +// ---------------------------------------------------------------------------- GroupUserConfigParam::GroupUserConfigParam(const char* group_name, GroupUserConfigParam* group, const char* comment) @@ -184,7 +184,7 @@ void GroupUserConfigParam::addChild(UserConfigParam* child) } // addChild -// ============================================================================ +// ---------------------------------------------------------------------------- template ListUserConfigParam::ListUserConfigParam(const char* param_name, const char* comment) @@ -194,7 +194,7 @@ ListUserConfigParam::ListUserConfigParam(const char* param_name, if(comment != NULL) m_comment = comment; } // ListUserConfigParam -// ============================================================================ +// ---------------------------------------------------------------------------- template ListUserConfigParam::ListUserConfigParam(const char* param_name, const char* comment, @@ -213,7 +213,7 @@ ListUserConfigParam::ListUserConfigParam(const char* param_name, va_end ( arguments ); // Cleans up the list } // ListUserConfigParam -// ============================================================================ +// ---------------------------------------------------------------------------- template ListUserConfigParam::ListUserConfigParam(const char* param_name, GroupUserConfigParam* group, @@ -224,7 +224,7 @@ ListUserConfigParam::ListUserConfigParam(const char* param_name, if(comment != NULL) m_comment = comment; } // ListUserConfigParam -// ============================================================================ +// ---------------------------------------------------------------------------- template ListUserConfigParam::ListUserConfigParam(const char* param_name, GroupUserConfigParam* group, @@ -326,7 +326,7 @@ core::stringc ListUserConfigParam::toString() const -// ============================================================================ +// ---------------------------------------------------------------------------- IntUserConfigParam::IntUserConfigParam(int default_value, const char* param_name, const char* comment) @@ -389,7 +389,7 @@ void IntUserConfigParam::findYourDataInAnAttributeOf(const XMLNode* node) node->get( m_param_name, &m_value ); } // findYourDataInAnAttributeOf -// ============================================================================ +// ---------------------------------------------------------------------------- TimeUserConfigParam::TimeUserConfigParam(StkTime::TimeType default_value, const char* param_name, const char* comment) @@ -460,7 +460,7 @@ void TimeUserConfigParam::findYourDataInAnAttributeOf(const XMLNode* node) m_value = tmp; } // findYourDataInAnAttributeOf -// ============================================================================ +// ---------------------------------------------------------------------------- StringUserConfigParam::StringUserConfigParam(const char* default_value, const char* param_name, const char* comment) @@ -509,7 +509,7 @@ void StringUserConfigParam::findYourDataInAnAttributeOf(const XMLNode* node) node->get( m_param_name, &m_value ); } // findYourDataInAnAttributeOf -// ============================================================================ +// ---------------------------------------------------------------------------- BoolUserConfigParam::BoolUserConfigParam(bool default_value, const char* param_name, const char* comment) @@ -597,7 +597,7 @@ irr::core::stringc BoolUserConfigParam::toString() const return (m_value ? "true" : "false" ); } // toString -// ============================================================================ +// ---------------------------------------------------------------------------- FloatUserConfigParam::FloatUserConfigParam(float default_value, const char* param_name, const char* comment) @@ -656,8 +656,8 @@ core::stringc FloatUserConfigParam::toString() const return tmp; } // toString -// ===================================================================================== -// ===================================================================================== +// ------------------------------------------------------------------------------------- +// ------------------------------------------------------------------------------------- #if 0 #pragma mark - diff --git a/src/config/user_config.hpp b/src/config/user_config.hpp index bf65f4633..c8970291e 100644 --- a/src/config/user_config.hpp +++ b/src/config/user_config.hpp @@ -75,7 +75,7 @@ public: virtual irr::core::stringc toString() const = 0; }; // UserConfigParam -// ============================================================================ +// ---------------------------------------------------------------------------- class GroupUserConfigParam : public UserConfigParam { std::vector m_attributes; @@ -97,7 +97,7 @@ public: irr::core::stringc toString() const; }; // GroupUserConfigParam -// ============================================================================ +// ---------------------------------------------------------------------------- template class ListUserConfigParam : public UserConfigParam { @@ -136,7 +136,7 @@ public: }; // ListUserConfigParam typedef ListUserConfigParam StringListUserConfigParam; -// ============================================================================ +// ---------------------------------------------------------------------------- class IntUserConfigParam : public UserConfigParam { int m_value; @@ -164,7 +164,7 @@ public: { m_value = (int)v; return m_value; } }; // IntUserConfigParam -// ============================================================================ +// ---------------------------------------------------------------------------- class TimeUserConfigParam : public UserConfigParam { StkTime::TimeType m_value; @@ -190,7 +190,7 @@ public: { m_value = (int)v; return m_value; } }; // TimeUserConfigParam -// ============================================================================ +// ---------------------------------------------------------------------------- class StringUserConfigParam : public UserConfigParam { std::string m_value; @@ -223,7 +223,7 @@ public: const char* c_str() const { return m_value.c_str(); } }; // StringUserConfigParam -// ============================================================================ +// ---------------------------------------------------------------------------- class BoolUserConfigParam : public UserConfigParam { bool m_value; @@ -248,7 +248,7 @@ public: { m_value = (bool)v; return m_value; } }; // BoolUserConfigParam -// ============================================================================ +// ---------------------------------------------------------------------------- class FloatUserConfigParam : public UserConfigParam { float m_value; @@ -274,7 +274,7 @@ public: { m_value = (float)v; return m_value; } }; // FloatUserConfigParam -// ============================================================================ +// ---------------------------------------------------------------------------- enum AnimType {ANIMS_NONE = 0, ANIMS_PLAYERS_ONLY = 1, ANIMS_ALL = 2 }; @@ -294,7 +294,7 @@ enum AnimType {ANIMS_NONE = 0, #define PARAM_DEFAULT(X) #endif -// ============================================================================ +// ---------------------------------------------------------------------------- /** \brief Contains all parameters that are stored in the user's config file * \ingroup config */ @@ -773,7 +773,7 @@ namespace UserConfigParams #undef PARAM_PREFIX #undef PARAM_SUFFIX -// ============================================================================ +// ---------------------------------------------------------------------------- /** * \brief Class for managing general STK user configuration data. * \ingroup config diff --git a/src/graphics/camera.cpp b/src/graphics/camera.cpp index 70a57c36f..d84df0a12 100644 --- a/src/graphics/camera.cpp +++ b/src/graphics/camera.cpp @@ -45,7 +45,7 @@ AlignedArray Camera::m_end_cameras; std::vector Camera::m_all_cameras; -// ============================================================================ +// ---------------------------------------------------------------------------- Camera::Camera(int camera_index, AbstractKart* kart) : m_kart(NULL) { m_mode = CM_NORMAL; diff --git a/src/graphics/irr_driver.cpp b/src/graphics/irr_driver.cpp index b2418fa0e..695a97a0c 100644 --- a/src/graphics/irr_driver.cpp +++ b/src/graphics/irr_driver.cpp @@ -1928,7 +1928,7 @@ void IrrDriver::doScreenShot() void IrrDriver::update(float dt) { // User aborted (e.g. closed window) - // ================================= + // --------------------------------- if (!m_device->run()) { GUIEngine::cleanUp(); diff --git a/src/graphics/particle_emitter.cpp b/src/graphics/particle_emitter.cpp index bfc66d6b3..219d70626 100644 --- a/src/graphics/particle_emitter.cpp +++ b/src/graphics/particle_emitter.cpp @@ -100,7 +100,7 @@ public: }; // FadeAwayAffector -// ============================================================================ +// ---------------------------------------------------------------------------- class HeightMapCollisionAffector : public scene::IParticleAffector { @@ -178,7 +178,7 @@ public: } }; -// ============================================================================ +// ---------------------------------------------------------------------------- class WindAffector : public scene::IParticleAffector { @@ -218,7 +218,7 @@ public: }; // WindAffector -// ============================================================================ +// ---------------------------------------------------------------------------- class ScaleAffector : public scene::IParticleAffector { @@ -248,7 +248,7 @@ protected: core::vector2df ScaleFactor; }; -// ============================================================================ +// ---------------------------------------------------------------------------- class ColorAffector : public scene::IParticleAffector { @@ -283,7 +283,7 @@ public: -// ============================================================================ +// ---------------------------------------------------------------------------- ParticleEmitter::ParticleEmitter(const ParticleKind* type, const Vec3 &position, diff --git a/src/guiengine/message_queue.cpp b/src/guiengine/message_queue.cpp index 8d43ff227..f7a93033e 100755 --- a/src/guiengine/message_queue.cpp +++ b/src/guiengine/message_queue.cpp @@ -70,7 +70,7 @@ public: } }; // class Message -// ============================================================================ +// ---------------------------------------------------------------------------- /** A function class to compare messages, required for priority_queue. */ class CompareMessages { @@ -85,7 +85,7 @@ public: }; // operator() -// ============================================================================ +// ---------------------------------------------------------------------------- /** List of all messages. */ std::priority_queue, CompareMessages> g_all_messages; @@ -101,7 +101,7 @@ float g_max_display_time = -1.0f; SkinWidgetContainer *g_container = NULL; core::recti g_area; -// ============================================================================ +// ---------------------------------------------------------------------------- void createLabel(const Message *message) { diff --git a/src/guiengine/skin.cpp b/src/guiengine/skin.cpp index 018323d81..36e22e344 100644 --- a/src/guiengine/skin.cpp +++ b/src/guiengine/skin.cpp @@ -183,7 +183,7 @@ namespace SkinConfig } // loadFromFile }; // SkinConfig -// ============================================================================ +// ---------------------------------------------------------------------------- #if 0 #pragma mark - #endif diff --git a/src/guiengine/skin.hpp b/src/guiengine/skin.hpp index efa26f23d..ea167d8ba 100644 --- a/src/guiengine/skin.hpp +++ b/src/guiengine/skin.hpp @@ -190,7 +190,7 @@ namespace GUIEngine } // SkinWidgetContainer }; // class SkinWidgetContainer - // ======================================================================== + // ------------------------------------------------------------------------ class Widget; /** @@ -256,7 +256,7 @@ namespace GUIEngine video::ITexture* getImage() { return m_image; } }; // BoxRenderParams - // ======================================================================== + // ------------------------------------------------------------------------ /** * \brief Object used to render the GUI widgets * see \ref skin for more information about skinning in STK diff --git a/src/input/input_device.cpp b/src/input/input_device.cpp index 70278fdfe..d1d05d4a0 100644 --- a/src/input/input_device.cpp +++ b/src/input/input_device.cpp @@ -83,7 +83,7 @@ bool KeyboardDevice::processAndMapInput(const int id, } } // processAndMapInput -// ============================================================================ +// ---------------------------------------------------------------------------- #if 0 #pragma mark - diff --git a/src/input/wiimote_manager.cpp b/src/input/wiimote_manager.cpp index 01687ef7d..9e05345b3 100644 --- a/src/input/wiimote_manager.cpp +++ b/src/input/wiimote_manager.cpp @@ -396,7 +396,7 @@ int WiimoteManager::askUserToConnectWiimotes() return getNumberOfWiimotes(); } // askUserToConnectWiimotes -// ============================================================================ +// ---------------------------------------------------------------------------- /** Calles when the user clicks on OK, i.e. all wiimotes are in discovery * mode. */ diff --git a/src/io/file_manager.cpp b/src/io/file_manager.cpp index b5d203ef9..fd4f39776 100644 --- a/src/io/file_manager.cpp +++ b/src/io/file_manager.cpp @@ -95,7 +95,7 @@ bool macSetBundlePathIfRelevant(std::string& data_dir) } #endif -// ============================================================================ +// ---------------------------------------------------------------------------- FileManager* file_manager = 0; /** With irrlicht the constructor creates a NULL device. This is necessary to @@ -139,7 +139,7 @@ FileManager::FileManager() irr::io::path exe_path; // Search for the root directory - // ============================= + // ----------------------------- // Also check for data dirs relative to the path of the executable. // This is esp. useful for Visual Studio, since it's not necessary @@ -212,7 +212,7 @@ FileManager::FileManager() m_gp_dir.c_str()); /** Now search for the path to all needed subdirectories. */ - // ========================================================== + // ---------------------------------------------------------- // This must be done here since otherwise translations will not be found. std::vector dir_found; dir_found.resize(ASSET_COUNT, false); @@ -296,7 +296,7 @@ void FileManager::reInit() FileManager::~FileManager() { // Clean up left-over files in addons/tmp that are older than 24h - // ============================================================== + // -------------------------------------------------------------- // (The 24h delay is useful when debugging a problem with a zip file) std::set allfiles; std::string tmp=getAddonsFile("tmp"); @@ -341,7 +341,7 @@ FileManager::~FileManager() } // for i in all files in tmp // Clean up rest of file manager - // ============================= + // ----------------------------- popMusicSearchPath(); popModelSearchPath(); popTextureSearchPath(); diff --git a/src/items/item_manager.cpp b/src/items/item_manager.cpp index fb0c9e287..60e2cf7ae 100644 --- a/src/items/item_manager.cpp +++ b/src/items/item_manager.cpp @@ -139,7 +139,7 @@ void ItemManager::removeTextures() } // removeTextures -// ============================================================================ +// ---------------------------------------------------------------------------- /** Creates a new instance of the item manager. This is done at startup * of each race. */ ItemManager::ItemManager() diff --git a/src/items/item_manager.hpp b/src/items/item_manager.hpp index 66c986829..faf322554 100644 --- a/src/items/item_manager.hpp +++ b/src/items/item_manager.hpp @@ -71,7 +71,7 @@ public: return m_item_manager; } // get - // ======================================================================== + // ------------------------------------------------------------------------ private: /** The vector of all items of the current track. */ typedef std::vector AllItemTypes; diff --git a/src/items/rubber_ball.cpp b/src/items/rubber_ball.cpp index cc6f268e8..191bebcfb 100644 --- a/src/items/rubber_ball.cpp +++ b/src/items/rubber_ball.cpp @@ -384,7 +384,7 @@ bool RubberBall::updateAndDelete(float dt) TrackSector::update(next_xyz); // Ball squashing: - // =============== + // --------------- if(height<1.5f*m_extend.getY()) m_node->setScale(core::vector3df(1.0f, height/m_extend.getY(),1.0f)); else @@ -574,7 +574,7 @@ float RubberBall::updateHeight() // Determine the height of the ball - // ================================ + // -------------------------------- // Consider f(x) = s * x*(x-m_intervall), which is a parabolic function // with f(0) = 0, f(m_intervall)=0. We then scale this function to // fulfill: f(m_intervall/2) = max_height, or: diff --git a/src/items/rubber_band.cpp b/src/items/rubber_band.cpp index d978c3926..44a279a73 100644 --- a/src/items/rubber_band.cpp +++ b/src/items/rubber_band.cpp @@ -236,7 +236,7 @@ void RubberBand::hit(AbstractKart *kart_hit, const Vec3 *track_xyz) // A kart was hit - // ============== + // -------------- if(kart_hit) { if(kart_hit->isShielded()) @@ -253,7 +253,7 @@ void RubberBand::hit(AbstractKart *kart_hit, const Vec3 *track_xyz) } // The track was hit - // ================= + // ----------------- m_hit_position = *track_xyz; m_attached_state = RB_TO_TRACK; } // hit diff --git a/src/karts/abstract_kart.hpp b/src/karts/abstract_kart.hpp index af67b278b..3fb219938 100644 --- a/src/karts/abstract_kart.hpp +++ b/src/karts/abstract_kart.hpp @@ -85,7 +85,7 @@ public: virtual core::stringw getName() const; virtual void reset(); virtual void init(RaceManager::KartType type) = 0; - // ======================================================================== + // ------------------------------------------------------------------------ // Functions related to controlling the kart // ------------------------------------------------------------------------ /** Returns the current steering value for this kart. */ @@ -100,7 +100,7 @@ public: /** Sets the kart controls. Used e.g. by replaying history. */ void setControls(const KartControl &c) { m_controls = c; } - // ======================================================================== + // ------------------------------------------------------------------------ // Access to the kart properties. // ------------------------------------------------------------------------ /** Returns the kart properties of this kart. */ @@ -124,7 +124,7 @@ public: */ virtual float getTimeFullSteer(float steer) const = 0; - // ======================================================================== + // ------------------------------------------------------------------------ // Attachment related functions. // ------------------------------------------------------------------------ /** Returns the current attachment. */ @@ -133,7 +133,7 @@ public: /** Returns the current attachment, non-const version. */ Attachment* getAttachment() {return m_attachment; } - // ======================================================================== + // ------------------------------------------------------------------------ // Access to the graphical kart model. // ------------------------------------------------------------------------ /** Returns this kart's kart model. */ @@ -163,7 +163,7 @@ public: const Vec3& getWheelGraphicsPosition(int i) const {assert(i>=0 && i<4); return m_wheel_graphics_position[i];} - // ======================================================================== + // ------------------------------------------------------------------------ // Emergency animation related functions. // ------------------------------------------------------------------------ /** Returns a kart animation (if any), or NULL if currently no kart diff --git a/src/karts/kart.hpp b/src/karts/kart.hpp index 8ce5ea519..392faa854 100644 --- a/src/karts/kart.hpp +++ b/src/karts/kart.hpp @@ -268,7 +268,7 @@ public: virtual bool playCustomSFX (unsigned int type); virtual void setController(Controller *controller); - // ======================================================================== + // ------------------------------------------------------------------------ // Powerup related functions. // ------------------------------------------------------------------------ /** Sets a new powerup. */ diff --git a/src/main.cpp b/src/main.cpp index 8bc70861a..c7f25a05e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -205,9 +205,9 @@ static void cleanSuperTuxKart(); static void cleanUserConfig(); -// ============================================================================ +// ---------------------------------------------------------------------------- // gamepad visualisation screen -// ============================================================================ +// ---------------------------------------------------------------------------- void gamepadVisualisation() { @@ -360,7 +360,7 @@ void gamepadVisualisation() } } // gamepadVisualisation -// ============================================================================ +// ---------------------------------------------------------------------------- /** Sets the hat mesh name depending on the current christmas mode * m_xmas_mode (0: use current date, 1: always on, 2: always off). */ @@ -385,7 +385,7 @@ void handleXmasMode() if(xmas) kart_properties_manager->setHatMeshName("christmas_hat.b3d"); } // handleXmasMode -// ============================================================================ +// ---------------------------------------------------------------------------- /** This function sets up all data structure for an immediate race start. * It is used when the -N or -R command line options are used. */ @@ -642,7 +642,7 @@ int handleCmdLinePreliminary() return 0; } // handleCmdLinePreliminary -// ============================================================================ +// ---------------------------------------------------------------------------- /** Handles command line options. * \param argc Number of command line options */ @@ -1331,7 +1331,7 @@ int main(int argc, char *argv[] ) // Replay a race - // ============= + // ------------- if(history->replayHistory()) { // This will setup the race manager etc. @@ -1346,13 +1346,13 @@ int main(int argc, char *argv[] ) } // Not replaying - // ============= + // ------------- if(!ProfileWorld::isProfileMode()) { if(UserConfigParams::m_no_start_screen) { // Quickstart (-N) - // =============== + // --------------- // all defaults are set in InitTuxkart() race_manager->setupPlayerKartInfo(); race_manager->startNew(false); @@ -1361,7 +1361,7 @@ int main(int argc, char *argv[] ) else // profile { // Profiling - // ========= + // --------- race_manager->setMajorMode (RaceManager::MAJOR_MODE_SINGLE); race_manager->setupPlayerKartInfo(); race_manager->startNew(false); @@ -1410,7 +1410,7 @@ int main(int argc, char *argv[] ) return 0 ; } // main -// ============================================================================ +// ---------------------------------------------------------------------------- #ifdef WIN32 //routine for running under windows int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, diff --git a/src/modes/world.hpp b/src/modes/world.hpp index 462258477..df86557fb 100644 --- a/src/modes/world.hpp +++ b/src/modes/world.hpp @@ -185,7 +185,7 @@ public: World(); virtual ~World(); // Static functions to access world: - // ================================= + // --------------------------------- // ------------------------------------------------------------------------ /** Returns a pointer to the (singleton) world object. */ static World* getWorld() { return m_world; } @@ -201,7 +201,7 @@ public: // ------------------------------------------------------------------------ // Pure virtual functions - // ====================== + // ---------------------- /** Each game mode should have a unique identifier. Override * this method in child classes to provide it. */ @@ -237,7 +237,7 @@ public: // ------------------------------------------------------------------------ // Virtual functions - // ================= + // ----------------- virtual void init(); virtual void terminateRace() OVERRIDE; virtual void reset(); @@ -269,7 +269,7 @@ public: virtual void onMouseClick(int x, int y) {}; // Other functions - // =============== + // --------------- Highscores *getHighscores() const; void schedulePause(Phase phase); void scheduleUnpause(); diff --git a/src/online/online_player_profile.cpp b/src/online/online_player_profile.cpp index 389805754..d88eb111c 100644 --- a/src/online/online_player_profile.cpp +++ b/src/online/online_player_profile.cpp @@ -68,7 +68,7 @@ namespace Online request->addParameter("action", action); } // setUserDetails - // ======================================================================== + // ------------------------------------------------------------------------ OnlinePlayerProfile::OnlinePlayerProfile(const XMLNode *player) : PlayerProfile(player) { diff --git a/src/online/online_player_profile.hpp b/src/online/online_player_profile.hpp index 58c8353f2..cd635887b 100644 --- a/src/online/online_player_profile.hpp +++ b/src/online/online_player_profile.hpp @@ -40,7 +40,7 @@ namespace Online class OnlineProfile; - // ============================================================================ + // ---------------------------------------------------------------------------- /** * \brief Class that represents an online registered user diff --git a/src/online/online_profile.cpp b/src/online/online_profile.cpp index d3213d57c..7cecfb395 100644 --- a/src/online/online_profile.cpp +++ b/src/online/online_profile.cpp @@ -53,7 +53,7 @@ void OnlineProfile::RelationInfo::setOnline(bool online) m_is_pending = false; } -// ============================================================================ +// ---------------------------------------------------------------------------- /** Constructor for a new profile. It does only store the ID, a name, and * if it is the current user. */ diff --git a/src/online/online_profile.hpp b/src/online/online_profile.hpp index 01bcb975d..b59ca836f 100644 --- a/src/online/online_profile.hpp +++ b/src/online/online_profile.hpp @@ -46,7 +46,7 @@ public: C_RELATION_INFO }; - // ======================================================================== + // ------------------------------------------------------------------------ class RelationInfo { private: @@ -67,7 +67,7 @@ public: // -------------------------------------------------------------------- bool isOnline() const { return m_is_online; } }; // class RelationInfo - // ======================================================================== + // ------------------------------------------------------------------------ typedef std::vector IDList; private: diff --git a/src/online/request.cpp b/src/online/request.cpp index 8fc8672ed..433bfbf0b 100644 --- a/src/online/request.cpp +++ b/src/online/request.cpp @@ -29,7 +29,7 @@ namespace Online { - // ======================================================================== + // ------------------------------------------------------------------------ /** * Creates a request that can be handled by the RequestManager * \param manage_memory whether or not the RequestManager should take care of diff --git a/src/online/request.hpp b/src/online/request.hpp index 743126abd..1d4a549af 100644 --- a/src/online/request.hpp +++ b/src/online/request.hpp @@ -211,7 +211,7 @@ namespace Online * members to a valid value. */ virtual bool isAllowedToAdd() const { return isPreparing(); } - // ==================================================================== + // -------------------------------------------------------------------- /** This class is used by the priority queue to sort requests by * priority. */ diff --git a/src/online/servers_manager.cpp b/src/online/servers_manager.cpp index 9f47739f4..d9a1c2948 100644 --- a/src/online/servers_manager.cpp +++ b/src/online/servers_manager.cpp @@ -45,7 +45,7 @@ namespace Online{ manager_singleton = NULL; } // deallocate - // ============================================================================ + // ---------------------------------------------------------------------------- ServersManager::ServersManager(){ m_last_load_time.setAtomic(0.0f); m_joined_server.setAtomic(NULL); @@ -57,7 +57,7 @@ namespace Online{ delete m_joined_server.getData(); } - // ============================================================================ + // ---------------------------------------------------------------------------- void ServersManager::cleanUpServers() { m_sorted_servers.lock(); @@ -68,7 +68,7 @@ namespace Online{ m_mapped_servers.unlock(); } - // ============================================================================ + // ---------------------------------------------------------------------------- ServersManager::RefreshRequest * ServersManager::refreshRequest(bool request_now) const { RefreshRequest * request = NULL; @@ -103,7 +103,7 @@ namespace Online{ ServersManager::get()->refresh(isSuccess(), getXMLData()); } - // ============================================================================ + // ---------------------------------------------------------------------------- const Server * ServersManager::getQuickPlay() const { if(m_sorted_servers.getData().size() > 0) @@ -112,7 +112,7 @@ namespace Online{ return NULL; } - // ============================================================================ + // ---------------------------------------------------------------------------- void ServersManager::setJoinedServer(uint32_t id) { MutexLocker(m_joined_server); @@ -121,7 +121,7 @@ namespace Online{ m_joined_server.getData() = new Server(*getServerByID(id)); } - // ============================================================================ + // ---------------------------------------------------------------------------- void ServersManager::unsetJoinedServer() { MutexLocker(m_joined_server); @@ -129,7 +129,7 @@ namespace Online{ m_joined_server.getData() = NULL; } - // ============================================================================ + // ---------------------------------------------------------------------------- void ServersManager::addServer(Server * server) { m_sorted_servers.lock(); @@ -140,34 +140,34 @@ namespace Online{ m_mapped_servers.unlock(); } - // ============================================================================ + // ---------------------------------------------------------------------------- int ServersManager::getNumServers () const { MutexLocker(m_sorted_servers); return m_sorted_servers.getData().size(); } - // ============================================================================ + // ---------------------------------------------------------------------------- const Server * ServersManager::getServerBySort (int index) const { MutexLocker(m_sorted_servers); return m_sorted_servers.getData().get(index); } - // ============================================================================ + // ---------------------------------------------------------------------------- const Server * ServersManager::getServerByID (uint32_t id) const { MutexLocker(m_mapped_servers); return m_mapped_servers.getData().at(id); } - // ============================================================================ + // ---------------------------------------------------------------------------- Server * ServersManager::getJoinedServer() const { return m_joined_server.getAtomic(); } - // ============================================================================ + // ---------------------------------------------------------------------------- void ServersManager::sort(bool sort_desc){ MutexLocker(m_sorted_servers); m_sorted_servers.getData().insertionSort(0, sort_desc); diff --git a/src/physics/btKart.cpp b/src/physics/btKart.cpp index bdb8f556c..3f15d7248 100644 --- a/src/physics/btKart.cpp +++ b/src/physics/btKart.cpp @@ -35,7 +35,7 @@ btRigidBody& btKart::getFixedBody() return s_fixed; } -// ============================================================================ +// ---------------------------------------------------------------------------- btKart::btKart(btRigidBody* chassis, btVehicleRaycaster* raycaster, Kart *kart) : m_vehicleRaycaster(raycaster) diff --git a/src/physics/btKartRaycast.cpp b/src/physics/btKartRaycast.cpp index 13b310f76..3cec30c87 100644 --- a/src/physics/btKartRaycast.cpp +++ b/src/physics/btKartRaycast.cpp @@ -22,7 +22,7 @@ void* btKartRaycaster::castRay(const btVector3& from, const btVector3& to, btVehicleRaycasterResult& result) { - // ======================================================================== + // ------------------------------------------------------------------------ class ClosestWithNormal : public btCollisionWorld::ClosestRayResultCallback { private: @@ -55,7 +55,7 @@ void* btKartRaycaster::castRay(const btVector3& from, const btVector3& to, int getTriangleIndex() const { return m_triangle_index; } }; // CloestWithNormal - // ======================================================================== + // ------------------------------------------------------------------------ ClosestWithNormal rayCallback(from,to); diff --git a/src/physics/physical_object.cpp b/src/physics/physical_object.cpp index f6a612336..12d4557a8 100644 --- a/src/physics/physical_object.cpp +++ b/src/physics/physical_object.cpp @@ -98,7 +98,7 @@ void PhysicalObject::Settings::init() m_flatten_kart = false; } // Settings -// ============================================================================ +// ---------------------------------------------------------------------------- PhysicalObject* PhysicalObject::fromXML(bool is_dynamic, const XMLNode &xml_node, TrackObject* object) diff --git a/src/physics/physics.cpp b/src/physics/physics.cpp index b1d9c2c71..ed252bd66 100644 --- a/src/physics/physics.cpp +++ b/src/physics/physics.cpp @@ -224,7 +224,7 @@ void Physics::update(float dt) } // now the first object must be a projectile - // ========================================= + // ----------------------------------------- if(p->getUserPointer(1)->is(UserPointer::UP_TRACK)) { // Projectile hits track @@ -487,7 +487,7 @@ btScalar Physics::solveGroup(btCollisionObject** bodies, int numBodies, if(!upA || !upB) continue; // 1) object A is a track - // ======================= + // ----------------------- if(upA->is(UserPointer::UP_TRACK)) { if(upB->is(UserPointer::UP_FLYABLE)) // 1.1 projectile hits track @@ -520,7 +520,7 @@ btScalar Physics::solveGroup(btCollisionObject** bodies, int numBodies, } } // 2) object a is a kart - // ===================== + // --------------------- else if(upA->is(UserPointer::UP_KART)) { if(upB->is(UserPointer::UP_TRACK)) @@ -555,7 +555,7 @@ btScalar Physics::solveGroup(btCollisionObject** bodies, int numBodies, upA, contact_manifold->getContactPoint(0).m_localPointA); } // 3) object is a projectile - // ========================= + // ------------------------- else if(upA->is(UserPointer::UP_FLYABLE)) { // 3.1) projectile hits track @@ -573,7 +573,7 @@ btScalar Physics::solveGroup(btCollisionObject** bodies, int numBodies, } } // Object is a physical object - // =========================== + // --------------------------- else if(upA->is(UserPointer::UP_PHYSICAL_OBJECT)) { if(upB->is(UserPointer::UP_FLYABLE)) diff --git a/src/physics/physics.hpp b/src/physics/physics.hpp index 96f5fc1b6..4f351b3dc 100644 --- a/src/physics/physics.hpp +++ b/src/physics/physics.hpp @@ -100,7 +100,7 @@ private: } // getContactPointCS }; // CollisionPair - // ======================================================================== + // ------------------------------------------------------------------------ // This class is the list of collision objects, where each collision // pair is stored as most once. class CollisionList : public std::vector @@ -121,7 +121,7 @@ private: push_back(CollisionPair(a, contact_point_a, b, contact_point_b)); } }; // CollisionList - // ======================================================================== + // ------------------------------------------------------------------------ /** This flag is set while bullets time step processing is taking * place. It is used to avoid altering data structures that might diff --git a/src/race/race_manager.cpp b/src/race/race_manager.cpp index 2626530b4..f7ecc3bf3 100644 --- a/src/race/race_manager.cpp +++ b/src/race/race_manager.cpp @@ -295,7 +295,7 @@ void RaceManager::startNew(bool from_overworld) m_num_karts = (int)m_player_karts.size(); // Create the kart status data structure to keep track of scores, times, ... - // ========================================================================== + // -------------------------------------------------------------------------- m_kart_status.clear(); Log::verbose("RaceManager", "Nb of karts=%u, ai:%lu players:%lu\n", (unsigned int)m_num_karts, m_ai_kart_list.size(), m_player_karts.size()); @@ -344,7 +344,7 @@ void RaceManager::startNew(bool from_overworld) !NetworkWorld::getInstance()->isRunning()) // offline mode only { //We look if Player 1 has a saved version of this GP. - // ================================================= + // ------------------------------------------------- SavedGrandPrix* gp = SavedGrandPrix::getSavedGP( StateManager::get() ->getActivePlayerProfile(0) ->getUniqueID(), @@ -354,7 +354,7 @@ void RaceManager::startNew(bool from_overworld) m_player_karts.size()); // Start the race with the appropriate track - // ========================================= + // ----------------------------------------- if(gp != NULL) { if (m_continue_saved_gp) @@ -392,7 +392,7 @@ void RaceManager::startNextRace() m_num_finished_players = 0; // if subsequent race, sort kart status structure - // ============================================== + // ---------------------------------------------- if (m_track_number > 0) { // In follow the leader mode do not change the first kart, diff --git a/src/states_screens/dialogs/addons_loading.cpp b/src/states_screens/dialogs/addons_loading.cpp index 2d6f1ef2d..8166a4531 100644 --- a/src/states_screens/dialogs/addons_loading.cpp +++ b/src/states_screens/dialogs/addons_loading.cpp @@ -111,7 +111,7 @@ void AddonsLoading::beforeAddingWidgets() rating->setStarNumber(3); // Display flags for this addon - // ============================ + // ---------------------------- std::vector l; if(UserConfigParams::m_artist_debug_mode) { @@ -154,7 +154,7 @@ void AddonsLoading::beforeAddingWidgets() } // Display the size - // ================ + // ---------------- int n = m_addon.getSize(); core::stringw unit=""; if(n>1024*1024) diff --git a/src/states_screens/feature_unlocked.cpp b/src/states_screens/feature_unlocked.cpp index 32510f341..15b1ec803 100644 --- a/src/states_screens/feature_unlocked.cpp +++ b/src/states_screens/feature_unlocked.cpp @@ -58,7 +58,7 @@ const int GIFT_EXIT_TO = GIFT_EXIT_FROM + 7; DEFINE_SCREEN_SINGLETON( FeatureUnlockedCutScene ); -// ============================================================================ +// ---------------------------------------------------------------------------- #if 0 #pragma mark FeatureUnlockedCutScene::UnlockedThing @@ -124,7 +124,7 @@ FeatureUnlockedCutScene::UnlockedThing::~UnlockedThing() m_root_gift_node = NULL; } // UnlockedThing::~UnlockedThing -// ============================================================================ +// ---------------------------------------------------------------------------- #if 0 #pragma mark - diff --git a/src/states_screens/kart_selection.cpp b/src/states_screens/kart_selection.cpp index 0195ee189..9496a68aa 100644 --- a/src/states_screens/kart_selection.cpp +++ b/src/states_screens/kart_selection.cpp @@ -121,7 +121,7 @@ void FocusDispatcher::add() static FocusDispatcher* g_dispatcher = NULL; -// ============================================================================ +// ---------------------------------------------------------------------------- /** A small extension to the spinner widget to add features like player ID * management or badging */ @@ -176,7 +176,7 @@ void PlayerNameSpinner::markAsCorrect() m_incorrect = false; } } // markAsCorrect -// ============================================================================ +// ---------------------------------------------------------------------------- #if 0 #pragma mark - @@ -871,7 +871,7 @@ bool sameKart(const PlayerKartWidget& player1, const PlayerKartWidget& player2) #pragma mark - #pragma mark KartHoverListener #endif -// ============================================================================ +// ---------------------------------------------------------------------------- KartHoverListener::KartHoverListener(KartSelectionScreen* parent) { @@ -921,7 +921,7 @@ void KartHoverListener::onSelectionChanged(DynamicRibbonWidget* theWidget, #pragma mark KartSelectionScreen #endif -// ============================================================================ +// ---------------------------------------------------------------------------- KartSelectionScreen::KartSelectionScreen(const char* filename) : Screen(filename) { @@ -931,7 +931,7 @@ KartSelectionScreen::KartSelectionScreen(const char* filename) : Screen(filename m_go_to_overworld_next = false; } // KartSelectionScreen -// ============================================================================ +// ---------------------------------------------------------------------------- KartSelectionScreen* KartSelectionScreen::getRunningInstance() { diff --git a/src/states_screens/race_result_gui.cpp b/src/states_screens/race_result_gui.cpp index 9b5803421..ae1377014 100644 --- a/src/states_screens/race_result_gui.cpp +++ b/src/states_screens/race_result_gui.cpp @@ -635,7 +635,7 @@ void RaceResultGUI::renderGlobal(float dt) unsigned int num_karts = m_all_row_infos.size(); // First: Update the finite state machine - // ====================================== + // -------------------------------------- switch(m_animation_state) { case RR_INIT: @@ -733,7 +733,7 @@ void RaceResultGUI::renderGlobal(float dt) } // switch // Second phase: update X and Y positions for the various animations - // ================================================================= + // ----------------------------------------------------------------- float v = 0.9f*UserConfigParams::m_width/m_time_single_scroll; if(!isSoccerWorld) { @@ -902,7 +902,7 @@ void RaceResultGUI::displayOneEntry(unsigned int x, unsigned int y, } // Only display points in GP mode and when the GP results are displayed. - // ===================================================================== + // --------------------------------------------------------------------- if (race_manager->getMajorMode() == RaceManager::MAJOR_MODE_GRAND_PRIX && m_animation_state != RR_RACE_RESULT) { diff --git a/src/states_screens/state_manager.cpp b/src/states_screens/state_manager.cpp index def056fc1..9074adfa3 100644 --- a/src/states_screens/state_manager.cpp +++ b/src/states_screens/state_manager.cpp @@ -51,7 +51,7 @@ void StateManager::deallocate() } // deallocate -// ============================================================================ +// ---------------------------------------------------------------------------- #if 0 #pragma mark - @@ -245,7 +245,7 @@ void StateManager::onStackEmptied() main_loop->abort(); } // onStackEmptied -// ============================================================================ +// ---------------------------------------------------------------------------- #if 0 #pragma mark - diff --git a/src/states_screens/state_manager.hpp b/src/states_screens/state_manager.hpp index cfda60c06..5eb5fb23c 100644 --- a/src/states_screens/state_manager.hpp +++ b/src/states_screens/state_manager.hpp @@ -172,7 +172,7 @@ public: }; // ActivePlayer - // ======================================================================== + // ------------------------------------------------------------------------ const PtrVector& getActivePlayers() { return m_active_players; } ActivePlayer* getActivePlayer(const int id); diff --git a/src/states_screens/user_screen.cpp b/src/states_screens/user_screen.cpp index de5b1fa72..84cf2e464 100644 --- a/src/states_screens/user_screen.cpp +++ b/src/states_screens/user_screen.cpp @@ -549,7 +549,7 @@ void BaseUserScreen::unloaded() -// ============================================================================ +// ---------------------------------------------------------------------------- /** In the tab version, make sure the right tab is selected. */ void TabbedUserScreen::init() diff --git a/src/states_screens/user_screen.hpp b/src/states_screens/user_screen.hpp index b3294881d..b5c4ddfee 100644 --- a/src/states_screens/user_screen.hpp +++ b/src/states_screens/user_screen.hpp @@ -114,7 +114,7 @@ public: void logoutError(const irr::core::stringw &error_message); }; // class BaseUserScreen -// ============================================================================ +// ---------------------------------------------------------------------------- class UserScreen : public BaseUserScreen, public GUIEngine::ScreenSingleton { @@ -125,7 +125,7 @@ public: friend class GUIEngine::ScreenSingleton; }; // class UserScreenTabed -// ============================================================================ +// ---------------------------------------------------------------------------- class TabbedUserScreen : public BaseUserScreen, public GUIEngine::ScreenSingleton { diff --git a/src/utils/leak_check.cpp b/src/utils/leak_check.cpp index 5f199c6ab..e4c2d204a 100644 --- a/src/utils/leak_check.cpp +++ b/src/utils/leak_check.cpp @@ -99,7 +99,7 @@ namespace MemoryLeaks } // print - // ======================================================================== + // ------------------------------------------------------------------------ /** Adds an object to the sets of all allocated objects. */ void addObject(AllocatedObject* obj) { diff --git a/src/utils/leak_check.hpp b/src/utils/leak_check.hpp index 6d461ed78..0b212a60c 100644 --- a/src/utils/leak_check.hpp +++ b/src/utils/leak_check.hpp @@ -52,7 +52,7 @@ namespace MemoryLeaks virtual void print() const; }; // AllocatedObjects - // ======================================================================== + // ------------------------------------------------------------------------ void checkForLeaks(); void addObject(AllocatedObject* obj); From 797dcf845e343e49faa0b285577006afbe53fca3 Mon Sep 17 00:00:00 2001 From: Marianne Gagnon Date: Tue, 15 Jul 2014 19:48:34 -0400 Subject: [PATCH 06/35] Test converting code to home-brew Tuple so that STK compiles again on my mac, where clang does not include tuple --- src/graphics/render_geometry.cpp | 46 ++++++++-------- src/graphics/stkanimatedmesh.cpp | 25 ++++----- src/graphics/stkmesh.cpp | 36 ++++++------- src/graphics/stkmesh.hpp | 39 +++++++------- src/graphics/stkmeshscenenode.cpp | 39 +++++++------- src/main.cpp | 7 +++ src/utils/tuple.hpp | 87 +++++++++++++++++++++++++++++++ 7 files changed, 189 insertions(+), 90 deletions(-) create mode 100644 src/utils/tuple.hpp diff --git a/src/graphics/render_geometry.cpp b/src/graphics/render_geometry.cpp index 44a7e81af..e33aad4ff 100644 --- a/src/graphics/render_geometry.cpp +++ b/src/graphics/render_geometry.cpp @@ -28,6 +28,7 @@ #include "utils/helpers.hpp" #include "utils/log.hpp" #include "utils/profiler.hpp" +#include "utils/tuple.hpp" #include @@ -36,9 +37,9 @@ template struct unroll_args_instance { template - static void exec(const T *Shader, const std::tuple &t, Args... args) + static void exec(const T *Shader, const STK::Tuple &t, Args... args) { - unroll_args_instance::template exec(Shader, t, std::get(t), args...); + unroll_args_instance::template exec(Shader, t, STK::tuple_get(t), args...); } }; @@ -46,26 +47,27 @@ template<> struct unroll_args_instance<0> { template - static void exec(const T *Shader, const std::tuple &t, Args... args) + static void exec(const T *Shader, const STK::Tuple &t, Args... args) { draw(Shader, args...); } }; template -void apply_instance(const T *Shader, const std::tuple &arg) +void apply_instance(const T *Shader, const STK::Tuple &arg) { - unroll_args_instance >::value >::template exec(Shader, arg); + unroll_args_instance::template exec(Shader, arg); + //unroll_args_instance >::value >::template exec(Shader, arg); } template -void renderMeshes1stPass(const std::vector &TexUnits, std::vector > &meshes) +void renderMeshes1stPass(const std::vector &TexUnits, std::vector > &meshes) { glUseProgram(Shader::getInstance()->Program); glBindVertexArray(getVAO(VertexType)); for (unsigned i = 0; i < meshes.size(); i++) { - GLMesh &mesh = *(std::get<0>(meshes[i])); + GLMesh &mesh = *(STK::tuple_get<0>(meshes[i])); for (unsigned j = 0; j < TexUnits.size(); j++) { if (!mesh.textures[j]) @@ -118,13 +120,13 @@ void IrrDriver::renderSolidFirstPass() } template -void renderMeshes2ndPass(const T *Shader, const std::vector &TexUnits, std::vector > &meshes) +void renderMeshes2ndPass(const T *Shader, const std::vector &TexUnits, std::vector > &meshes) { glUseProgram(Shader->Program); glBindVertexArray(getVAO(VertexType)); for (unsigned i = 0; i < meshes.size(); i++) { - GLMesh &mesh = *(std::get<0>(meshes[i])); + GLMesh &mesh = *(STK::tuple_get<0>(meshes[i])); for (unsigned j = 0; j < TexUnits.size(); j++) { if (!mesh.textures[j]) @@ -266,8 +268,8 @@ void IrrDriver::renderTransparent() irr_driver->getFBO(FBO_TMP1_WITH_DS).Bind(); for (unsigned i = 0; i < ListDisplacement::Arguments.size(); i++) { - const GLMesh &mesh = *(std::get<0>(ListDisplacement::Arguments[i])); - const core::matrix4 &AbsoluteTransformation = std::get<1>(ListDisplacement::Arguments[i]); + const GLMesh &mesh = *(STK::tuple_get<0>(ListDisplacement::Arguments[i])); + const core::matrix4 &AbsoluteTransformation = STK::tuple_get<1>(ListDisplacement::Arguments[i]); if (mesh.VAOType != video::EVT_2TCOORDS) { #ifdef DEBUG @@ -290,8 +292,8 @@ void IrrDriver::renderTransparent() displaceTex = irr_driver->getTexture(FileManager::TEXTURE, "displace.png"); for (unsigned i = 0; i < ListDisplacement::Arguments.size(); i++) { - const GLMesh &mesh = *(std::get<0>(ListDisplacement::Arguments[i])); - const core::matrix4 &AbsoluteTransformation = std::get<1>(ListDisplacement::Arguments[i]); + const GLMesh &mesh = *(STK::tuple_get<0>(ListDisplacement::Arguments[i])); + const core::matrix4 &AbsoluteTransformation = STK::tuple_get<1>(ListDisplacement::Arguments[i]); if (mesh.VAOType != video::EVT_2TCOORDS) continue; @@ -319,13 +321,13 @@ void IrrDriver::renderTransparent() } template -void drawShadow(const T *Shader, const std::vector TextureUnits, const std::vector >&t) +void drawShadow(const T *Shader, const std::vector TextureUnits, const std::vector >&t) { glUseProgram(Shader->Program); glBindVertexArray(getVAO(VertexType)); for (unsigned i = 0; i < t.size(); i++) { - const GLMesh *mesh = std::get<0>(t[i]); + const GLMesh *mesh = STK::tuple_get<0>(t[i]); irr_driver->IncreaseObjectCount(); GLenum ptype = mesh->PrimitiveType; GLenum itype = mesh->IndexType; @@ -336,18 +338,18 @@ void drawShadow(const T *Shader, const std::vector TextureUnits, const s setTexture(TextureUnits[j], getTextureGLuint(mesh->textures[j]), GL_LINEAR, GL_LINEAR_MIPMAP_LINEAR, true); } - Shader->setUniforms(std::get<1>(t[i])); + Shader->setUniforms(STK::tuple_get<1>(t[i])); glDrawElementsInstancedBaseVertex(ptype, count, itype, (GLvoid *)mesh->vaoOffset, 4, mesh->vaoBaseVertex); } } -static void drawShadowGrass(const std::vector TextureUnits, const std::vector > &t) +static void drawShadowGrass(const std::vector TextureUnits, const std::vector > &t) { glUseProgram(MeshShader::GrassShadowShaderInstance->Program); glBindVertexArray(getVAO(EVT_STANDARD)); for (unsigned i = 0; i < t.size(); i++) { - const GLMesh *mesh = std::get<0>(t[i]); + const GLMesh *mesh = STK::tuple_get<0>(t[i]); irr_driver->IncreaseObjectCount(); GLenum ptype = mesh->PrimitiveType; GLenum itype = mesh->IndexType; @@ -358,25 +360,25 @@ static void drawShadowGrass(const std::vector TextureUnits, const std::v setTexture(TextureUnits[j], getTextureGLuint(mesh->textures[j]), GL_LINEAR, GL_LINEAR_MIPMAP_LINEAR, true); } - MeshShader::GrassShadowShaderInstance->setUniforms(std::get<1>(t[i]), std::get<3>(t[i])); + MeshShader::GrassShadowShaderInstance->setUniforms(STK::tuple_get<1>(t[i]), STK::tuple_get<3>(t[i])); glDrawElementsInstancedBaseVertex(ptype, count, itype, (GLvoid *)mesh->vaoOffset, 4, mesh->vaoBaseVertex); } } template -void drawRSM(const core::matrix4 & rsm_matrix, const std::vector TextureUnits, const std::vector >&t) +void drawRSM(const core::matrix4 & rsm_matrix, const std::vector TextureUnits, const std::vector >&t) { glUseProgram(MeshShader::RSMShader::Program); glBindVertexArray(getVAO(VertexType)); for (unsigned i = 0; i < t.size(); i++) { - const GLMesh *mesh = std::get<0>(t[i]); + const GLMesh *mesh = STK::tuple_get<0>(t[i]); for (unsigned j = 0; j < TextureUnits.size(); j++) { compressTexture(mesh->textures[j], true); setTexture(TextureUnits[j], getTextureGLuint(mesh->textures[j]), GL_LINEAR, GL_LINEAR_MIPMAP_LINEAR, true); } - draw(mesh, rsm_matrix, std::get<1>(t[i])); + draw(mesh, rsm_matrix, STK::tuple_get<1>(t[i])); } } diff --git a/src/graphics/stkanimatedmesh.cpp b/src/graphics/stkanimatedmesh.cpp index cb36955f9..ae33bcb0e 100644 --- a/src/graphics/stkanimatedmesh.cpp +++ b/src/graphics/stkanimatedmesh.cpp @@ -8,6 +8,7 @@ #include "tracks/track.hpp" #include "graphics/camera.hpp" #include "utils/profiler.hpp" +#include "utils/tuple.hpp" using namespace irr; @@ -145,13 +146,13 @@ void STKAnimatedMesh::render() GLMesh* mesh; for_in(mesh, GeometricMesh[FPSM_DEFAULT_STANDARD]) - ListDefaultStandardG::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, invmodel)); + ListDefaultStandardG::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, invmodel)); for_in(mesh, GeometricMesh[FPSM_DEFAULT_2TCOORD]) - ListDefault2TCoordG::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, invmodel)); + ListDefault2TCoordG::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, invmodel)); for_in(mesh, GeometricMesh[FPSM_ALPHA_REF_TEXTURE]) - ListAlphaRefG::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, invmodel, mesh->TextureMatrix)); + ListAlphaRefG::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, invmodel, mesh->TextureMatrix)); return; } @@ -163,19 +164,19 @@ void STKAnimatedMesh::render() GLMesh* mesh; for_in(mesh, ShadedMesh[SM_DEFAULT_STANDARD]) - ListDefaultStandardSM::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, irr_driver->getSceneManager()->getAmbientLight())); + ListDefaultStandardSM::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, irr_driver->getSceneManager()->getAmbientLight())); for_in(mesh, ShadedMesh[SM_DEFAULT_TANGENT]) - ListDefaultTangentSM::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, irr_driver->getSceneManager()->getAmbientLight())); + ListDefaultTangentSM::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, irr_driver->getSceneManager()->getAmbientLight())); for_in(mesh, ShadedMesh[SM_ALPHA_REF_TEXTURE]) - ListAlphaRefSM::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, irr_driver->getSceneManager()->getAmbientLight())); + ListAlphaRefSM::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, irr_driver->getSceneManager()->getAmbientLight())); for_in (mesh, ShadedMesh[SM_UNLIT]) - ListUnlitSM::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation)); + ListUnlitSM::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation)); for_in(mesh, ShadedMesh[SM_DETAILS]) - ListDetailSM::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, irr_driver->getSceneManager()->getAmbientLight())); + ListDetailSM::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, irr_driver->getSceneManager()->getAmbientLight())); return; } @@ -206,20 +207,20 @@ void STKAnimatedMesh::render() for_in(mesh, TransparentMesh[TM_DEFAULT]) ListBlendTransparentFog::Arguments.push_back( - std::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, + STK::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, fogmax, startH, endH, start, end, col)); for_in(mesh, TransparentMesh[TM_ADDITIVE]) ListAdditiveTransparentFog::Arguments.push_back( - std::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, + STK::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, fogmax, startH, endH, start, end, col)); } else { for_in(mesh, TransparentMesh[TM_DEFAULT]) - ListBlendTransparent::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix)); + ListBlendTransparent::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix)); for_in(mesh, TransparentMesh[TM_ADDITIVE]) - ListAdditiveTransparent::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix)); + ListAdditiveTransparent::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix)); } return; } diff --git a/src/graphics/stkmesh.cpp b/src/graphics/stkmesh.cpp index d7bde2d5f..0d3abd974 100644 --- a/src/graphics/stkmesh.cpp +++ b/src/graphics/stkmesh.cpp @@ -307,22 +307,22 @@ bool isObject(video::E_MATERIAL_TYPE type) return false; } -std::vector > ListDefaultStandardG::Arguments; -std::vector > ListDefault2TCoordG::Arguments; -std::vector > ListAlphaRefG::Arguments; -std::vector > ListNormalG::Arguments; -std::vector > ListGrassG::Arguments; +std::vector > ListDefaultStandardG::Arguments; +std::vector > ListDefault2TCoordG::Arguments; +std::vector > ListAlphaRefG::Arguments; +std::vector > ListNormalG::Arguments; +std::vector > ListGrassG::Arguments; -std::vector > ListDefaultStandardSM::Arguments; -std::vector > ListDefaultTangentSM::Arguments; -std::vector > ListAlphaRefSM::Arguments; -std::vector > ListSplattingSM::Arguments; -std::vector > ListSphereMapSM::Arguments; -std::vector > ListUnlitSM::Arguments; -std::vector > ListDetailSM::Arguments; -std::vector > ListBlendTransparent::Arguments; -std::vector > ListAdditiveTransparent::Arguments; -std::vector > ListDisplacement::Arguments; -std::vector > ListBlendTransparentFog::Arguments; -std::vector > ListAdditiveTransparentFog::Arguments; -std::vector > ListGrassSM::Arguments; +std::vector > ListDefaultStandardSM::Arguments; +std::vector > ListDefaultTangentSM::Arguments; +std::vector > ListAlphaRefSM::Arguments; +std::vector > ListSplattingSM::Arguments; +std::vector > ListSphereMapSM::Arguments; +std::vector > ListUnlitSM::Arguments; +std::vector > ListDetailSM::Arguments; +std::vector > ListBlendTransparent::Arguments; +std::vector > ListAdditiveTransparent::Arguments; +std::vector > ListDisplacement::Arguments; +std::vector > ListBlendTransparentFog::Arguments; +std::vector > ListAdditiveTransparentFog::Arguments; +std::vector > ListGrassSM::Arguments; diff --git a/src/graphics/stkmesh.hpp b/src/graphics/stkmesh.hpp index 5c184e663..08d235633 100644 --- a/src/graphics/stkmesh.hpp +++ b/src/graphics/stkmesh.hpp @@ -3,12 +3,13 @@ #include "graphics/glwrap.hpp" #include "graphics/irr_driver.hpp" +#include "utils/tuple.hpp" #include #include #include "../lib/irrlicht/source/Irrlicht/CMeshSceneNode.h" -#include +//#include #include enum GeometricMaterial @@ -72,31 +73,31 @@ core::vector3df getWind(); class ListDefaultStandardG { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListDefault2TCoordG { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListAlphaRefG { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListNormalG { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListGrassG { public: - static std::vector > Arguments; + static std::vector > Arguments; }; template @@ -128,79 +129,79 @@ void draw(const T *Shader, const GLMesh *mesh, uniforms... Args) class ListDefaultStandardSM { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListDefaultTangentSM { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListAlphaRefSM { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListSphereMapSM { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListSplattingSM { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListUnlitSM { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListDetailSM { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListGrassSM { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListBlendTransparent { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListAdditiveTransparent { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListBlendTransparentFog { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListAdditiveTransparentFog { public: - static std::vector > Arguments; + static std::vector > Arguments; }; class ListDisplacement { public: - static std::vector > Arguments; + static std::vector > Arguments; }; // Forward pass (for transparents meshes) diff --git a/src/graphics/stkmeshscenenode.cpp b/src/graphics/stkmeshscenenode.cpp index 96ee82d1b..a1c74761c 100644 --- a/src/graphics/stkmeshscenenode.cpp +++ b/src/graphics/stkmeshscenenode.cpp @@ -6,9 +6,10 @@ #include #include "config/user_config.hpp" #include "graphics/callbacks.hpp" -#include "utils/helpers.hpp" #include "graphics/camera.hpp" #include "modes/world.hpp" +#include "utils/helpers.hpp" +#include "utils/tuple.hpp" STKMeshSceneNode::STKMeshSceneNode(irr::scene::IMesh* mesh, ISceneNode* parent, irr::scene::ISceneManager* mgr, irr::s32 id, const irr::core::vector3df& position, @@ -248,20 +249,20 @@ void STKMeshSceneNode::render() GLMesh* mesh; for_in(mesh, GeometricMesh[FPSM_DEFAULT_STANDARD]) - ListDefaultStandardG::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, invmodel)); + ListDefaultStandardG::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, invmodel)); for_in(mesh, GeometricMesh[FPSM_DEFAULT_2TCOORD]) - ListDefault2TCoordG::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, invmodel)); + ListDefault2TCoordG::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, invmodel)); for_in(mesh, GeometricMesh[FPSM_ALPHA_REF_TEXTURE]) - ListAlphaRefG::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, invmodel, mesh->TextureMatrix)); + ListAlphaRefG::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, invmodel, mesh->TextureMatrix)); for_in(mesh, GeometricMesh[FPSM_NORMAL_MAP]) - ListNormalG::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, invmodel)); + ListNormalG::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, invmodel)); windDir = getWind(); for_in(mesh, GeometricMesh[FPSM_GRASS]) - ListGrassG::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, invmodel, windDir)); + ListGrassG::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, invmodel, windDir)); return; } @@ -299,28 +300,28 @@ void STKMeshSceneNode::render() GLMesh* mesh; for_in(mesh, ShadedMesh[SM_DEFAULT_STANDARD]) - ListDefaultStandardSM::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, irr_driver->getSceneManager()->getAmbientLight())); + ListDefaultStandardSM::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, irr_driver->getSceneManager()->getAmbientLight())); for_in(mesh, ShadedMesh[SM_DEFAULT_TANGENT]) - ListDefaultTangentSM::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, irr_driver->getSceneManager()->getAmbientLight())); + ListDefaultTangentSM::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, irr_driver->getSceneManager()->getAmbientLight())); for_in(mesh, ShadedMesh[SM_ALPHA_REF_TEXTURE]) - ListAlphaRefSM::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, irr_driver->getSceneManager()->getAmbientLight())); + ListAlphaRefSM::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, irr_driver->getSceneManager()->getAmbientLight())); for_in(mesh, ShadedMesh[SM_SPHEREMAP]) - ListSphereMapSM::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, invmodel, irr_driver->getSceneManager()->getAmbientLight())); + ListSphereMapSM::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, invmodel, irr_driver->getSceneManager()->getAmbientLight())); for_in(mesh, ShadedMesh[SM_SPLATTING]) - ListSplattingSM::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, irr_driver->getSceneManager()->getAmbientLight())); + ListSplattingSM::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, irr_driver->getSceneManager()->getAmbientLight())); for_in(mesh, ShadedMesh[SM_UNLIT]) - ListUnlitSM::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation)); + ListUnlitSM::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation)); for_in(mesh, ShadedMesh[SM_DETAILS]) - ListDetailSM::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, irr_driver->getSceneManager()->getAmbientLight())); + ListDetailSM::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, irr_driver->getSceneManager()->getAmbientLight())); for_in(mesh, ShadedMesh[SM_GRASS]) - ListGrassSM::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, windDir, irr_driver->getSceneManager()->getAmbientLight())); + ListGrassSM::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, windDir, irr_driver->getSceneManager()->getAmbientLight())); return; } @@ -427,24 +428,24 @@ void STKMeshSceneNode::render() for_in(mesh, TransparentMesh[TM_DEFAULT]) ListBlendTransparentFog::Arguments.push_back( - std::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, + STK::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, fogmax, startH, endH, start, end, col)); for_in(mesh, TransparentMesh[TM_ADDITIVE]) ListAdditiveTransparentFog::Arguments.push_back( - std::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, + STK::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix, fogmax, startH, endH, start, end, col)); } else { for_in(mesh, TransparentMesh[TM_DEFAULT]) - ListBlendTransparent::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix)); + ListBlendTransparent::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix)); for_in(mesh, TransparentMesh[TM_ADDITIVE]) - ListAdditiveTransparent::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix)); + ListAdditiveTransparent::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation, mesh->TextureMatrix)); } for_in(mesh, TransparentMesh[TM_DISPLACEMENT]) - ListDisplacement::Arguments.push_back(std::make_tuple(mesh, AbsoluteTransformation)); + ListDisplacement::Arguments.push_back(STK::make_tuple(mesh, AbsoluteTransformation)); if (!TransparentMesh[TM_BUBBLE].empty()) glUseProgram(MeshShader::BubbleShader::Program); diff --git a/src/main.cpp b/src/main.cpp index 8bc70861a..d057a1daa 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -201,6 +201,7 @@ #include "utils/leak_check.hpp" #include "utils/log.hpp" #include "utils/translation.hpp" +#include "utils/tuple.hpp" static void cleanSuperTuxKart(); static void cleanUserConfig(); @@ -1162,6 +1163,12 @@ void askForInternetPermission() // ---------------------------------------------------------------------------- int main(int argc, char *argv[] ) { + STK::Tuple tup(1, 3.14f, "Hello"); + auto tup2 = STK::make_tuple(1, 3.14f, "Hello"); + + Log::info("TEST", "Tuple 1 : %i %f %s", STK::tuple_get<0>(tup), STK::tuple_get<1>(tup), STK::tuple_get<2>(tup).c_str()); + Log::info("TEST", "Tuple 2 : %i %f %s", STK::tuple_get<0>(tup2), STK::tuple_get<1>(tup2), STK::tuple_get<2>(tup2)); + CommandLine::init(argc, argv); CrashReporting::installHandlers(); diff --git a/src/utils/tuple.hpp b/src/utils/tuple.hpp new file mode 100644 index 000000000..3583da478 --- /dev/null +++ b/src/utils/tuple.hpp @@ -0,0 +1,87 @@ +#ifndef __STK_TUPLE_HPP__ +#define __STK_TUPLE_HPP__ + +namespace STK { + + + // tuple + template class Tuple; + + // empty tuple + template<> class Tuple<> {}; + + // recursive tuple definition + template + class Tuple<_This, _Rest...> : private Tuple<_Rest...> + { + public: + _This _Elem; + + Tuple() + { + } + + Tuple(_This val, _Rest... rest) : Tuple<_Rest...>(rest...) + { + _Elem = val; + } + }; + + // tuple_element + template struct tuple_element; + + // select first element + template + struct tuple_element<0, Tuple<_This, _Rest...>> + { + typedef _This& type; + typedef Tuple<_This, _Rest...> _Ttype; + }; + + // recursive tuple_element definition + template + struct tuple_element<_Index, Tuple<_This, _Rest...>> + : public tuple_element<_Index - 1, Tuple<_Rest...> > + { + }; + + template inline + typename tuple_element<_Index, Tuple<_Types...>>::type + tuple_get(Tuple<_Types...>& _Tuple) + { + typedef typename tuple_element<_Index, Tuple<_Types...>>::_Ttype _Ttype; + return (((_Ttype&)_Tuple)._Elem); + } + + template inline + typename const tuple_element<_Index, Tuple<_Types...>>::type + tuple_get(const Tuple<_Types...>& _Tuple) + { + typedef typename tuple_element<_Index, Tuple<_Types...>>::_Ttype _Ttype; + return (((_Ttype&)_Tuple)._Elem); + } + + template inline + Tuple make_tuple(T... values) + { + return Tuple(values...); + } + + //template + //int tuple_size(Tuple tuple) + //{ + // return sizeof...(T); + //} + + template + struct TupleSize + { + int value; + TupleSize() + { + value = sizeof...(T); + } + }; +} + +#endif From ec73fcb2b72929c1833f08274ad224ba1db959f9 Mon Sep 17 00:00:00 2001 From: konstin Date: Wed, 16 Jul 2014 15:40:27 +0200 Subject: [PATCH 07/35] minor stuff --- src/states_screens/dialogs/random_gp_dialog.cpp | 10 +++------- src/tracks/track.cpp | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/states_screens/dialogs/random_gp_dialog.cpp b/src/states_screens/dialogs/random_gp_dialog.cpp index b63330712..1b79fa955 100644 --- a/src/states_screens/dialogs/random_gp_dialog.cpp +++ b/src/states_screens/dialogs/random_gp_dialog.cpp @@ -78,13 +78,9 @@ void RandomGPInfoDialog::addSpinners() const std::vector& groups = track_manager->getAllTrackGroups(); for (unsigned int i = 0; i < groups.size(); i++) { - // FIXME: The NULL check is necessary until #1348 on github is fixed - if (groups[i].c_str() != NULL) - { - spinner->addLabel(stringw(groups[i].c_str())); - if(groups[i] == "standard") - index_standard = i+1; - } + spinner->addLabel(stringw(groups[i].c_str())); + if(groups[i] == "standard") + index_standard = i+1; } // The value can only be set here because SpinnerWidget resets the value // every time a label is added diff --git a/src/tracks/track.cpp b/src/tracks/track.cpp index 455a2bf87..7242d5419 100644 --- a/src/tracks/track.cpp +++ b/src/tracks/track.cpp @@ -135,7 +135,7 @@ Track::Track(const std::string &filename) m_ident=="overworld"; m_minimap_x_scale = 1.0f; m_minimap_y_scale = 1.0f; - m_default_number_of_laps= 3; + m_default_number_of_laps= UserConfigParams::m_num_laps; m_all_nodes.clear(); m_all_physics_only_nodes.clear(); m_all_cached_meshes.clear(); From ea56f66d83f773ece292fa003cce1f51044431f9 Mon Sep 17 00:00:00 2001 From: konstin Date: Wed, 16 Jul 2014 15:46:52 +0200 Subject: [PATCH 08/35] Revert "unify separators" This reverts commit ad641eff67e7122426bc2d2c23d839bfbf9f3ac5. --- src/achievements/achievement.hpp | 2 +- src/achievements/achievement_info.hpp | 2 +- src/achievements/achievements_manager.hpp | 2 +- src/addons/news_manager.cpp | 4 +-- src/animations/ipo.cpp | 2 +- src/config/player_manager.cpp | 2 +- src/config/saved_grand_prix.cpp | 2 +- src/config/saved_grand_prix.hpp | 2 +- src/config/user_config.cpp | 26 +++++++++---------- src/config/user_config.hpp | 20 +++++++------- src/graphics/camera.cpp | 2 +- src/graphics/irr_driver.cpp | 2 +- src/graphics/particle_emitter.cpp | 10 +++---- src/guiengine/message_queue.cpp | 6 ++--- src/guiengine/skin.cpp | 2 +- src/guiengine/skin.hpp | 4 +-- src/input/input_device.cpp | 2 +- src/input/wiimote_manager.cpp | 2 +- src/io/file_manager.cpp | 10 +++---- src/items/item_manager.cpp | 2 +- src/items/item_manager.hpp | 2 +- src/items/rubber_ball.cpp | 4 +-- src/items/rubber_band.cpp | 4 +-- src/karts/abstract_kart.hpp | 10 +++---- src/karts/kart.hpp | 2 +- src/main.cpp | 20 +++++++------- src/modes/world.hpp | 8 +++--- src/online/online_player_profile.cpp | 2 +- src/online/online_player_profile.hpp | 2 +- src/online/online_profile.cpp | 2 +- src/online/online_profile.hpp | 4 +-- src/online/request.cpp | 2 +- src/online/request.hpp | 2 +- src/online/servers_manager.cpp | 24 ++++++++--------- src/physics/btKart.cpp | 2 +- src/physics/btKartRaycast.cpp | 4 +-- src/physics/physical_object.cpp | 2 +- src/physics/physics.cpp | 10 +++---- src/physics/physics.hpp | 4 +-- src/race/race_manager.cpp | 8 +++--- src/states_screens/dialogs/addons_loading.cpp | 4 +-- src/states_screens/feature_unlocked.cpp | 4 +-- src/states_screens/kart_selection.cpp | 10 +++---- src/states_screens/race_result_gui.cpp | 6 ++--- src/states_screens/state_manager.cpp | 4 +-- src/states_screens/state_manager.hpp | 2 +- src/states_screens/user_screen.cpp | 2 +- src/states_screens/user_screen.hpp | 4 +-- src/utils/leak_check.cpp | 2 +- src/utils/leak_check.hpp | 2 +- 50 files changed, 132 insertions(+), 132 deletions(-) diff --git a/src/achievements/achievement.hpp b/src/achievements/achievement.hpp index 05dbb9891..b127af293 100644 --- a/src/achievements/achievement.hpp +++ b/src/achievements/achievement.hpp @@ -29,7 +29,7 @@ class UTFWriter; class XMLNode; -// ---------------------------------------------------------------------------- +// ============================================================================ /** This is the base class for any achievement. It allows achievement status * to be saved, and detects when an achievement is fulfilled. It provides * storage for state information by a generic key-value mapping. The values diff --git a/src/achievements/achievement_info.hpp b/src/achievements/achievement_info.hpp index 0902f929f..648671794 100644 --- a/src/achievements/achievement_info.hpp +++ b/src/achievements/achievement_info.hpp @@ -29,7 +29,7 @@ #include #include -// ---------------------------------------------------------------------------- +// ============================================================================ class Achievement; diff --git a/src/achievements/achievements_manager.hpp b/src/achievements/achievements_manager.hpp index 7560ae08c..a9c8ab90a 100644 --- a/src/achievements/achievements_manager.hpp +++ b/src/achievements/achievements_manager.hpp @@ -69,7 +69,7 @@ public: delete m_achievements_manager; m_achievements_manager = NULL; } // destroy - // ------------------------------------------------------------------------ + // ======================================================================== AchievementInfo* getAchievementInfo(uint32_t id) const; AchievementsStatus* createAchievementsStatus(const XMLNode *node=NULL); diff --git a/src/addons/news_manager.cpp b/src/addons/news_manager.cpp index 93087e630..4c6d964c4 100644 --- a/src/addons/news_manager.cpp +++ b/src/addons/news_manager.cpp @@ -407,7 +407,7 @@ bool NewsManager::conditionFulfilled(const std::string &cond) continue; } // Check for stkversion comparisons - // -------------------------------- + // ================================ if(cond[0]=="stkversion") { int news_version = StringUtils::versionToInt(cond[2]); @@ -431,7 +431,7 @@ bool NewsManager::conditionFulfilled(const std::string &cond) "assumed true.", cond_list[i].c_str()); } // Check for addons not installed - // ------------------------------ + // ============================== else if(cond[1]=="not" && cond[2]=="installed") { // The addons_manager can not be access, since it's diff --git a/src/animations/ipo.cpp b/src/animations/ipo.cpp index 7c6eccf7a..8e4331893 100644 --- a/src/animations/ipo.cpp +++ b/src/animations/ipo.cpp @@ -363,7 +363,7 @@ float Ipo::IpoData::getCubicBezier(float t, float p0, float p1, return ((a*t+b)*t+c)*t+p0; } // bezier -// ---------------------------------------------------------------------------- +// ============================================================================ /** The Ipo constructor. Ipos can share the actual data to interpolate, which * is stored in a separate IpoData object, see Ipo(const Ipo *ipo) * constructor. This is used for cannons: the actual check line stores the diff --git a/src/config/player_manager.cpp b/src/config/player_manager.cpp index 56d541f43..af4e0bc63 100644 --- a/src/config/player_manager.cpp +++ b/src/config/player_manager.cpp @@ -152,7 +152,7 @@ Online::OnlineProfile* PlayerManager::getCurrentOnlineProfile() return getCurrentPlayer()->getProfile(); } // getCurrentOnlineProfile -// ---------------------------------------------------------------------------- +// ============================================================================ /** Constructor. */ PlayerManager::PlayerManager() diff --git a/src/config/saved_grand_prix.cpp b/src/config/saved_grand_prix.cpp index b16d25e41..3805457da 100644 --- a/src/config/saved_grand_prix.cpp +++ b/src/config/saved_grand_prix.cpp @@ -62,7 +62,7 @@ SavedGrandPrix::SavedGPKart::SavedGPKart(GroupUserConfigParam * group, m_overall_time.findYourDataInAnAttributeOf(node); } // SavedGPKart -// ---------------------------------------------------------------------------- +// ============================================================================ SavedGrandPrix::SavedGrandPrix(unsigned int player_id, const std::string &gp_id, RaceManager::Difficulty difficulty, diff --git a/src/config/saved_grand_prix.hpp b/src/config/saved_grand_prix.hpp index 2984645e9..e8aa32217 100644 --- a/src/config/saved_grand_prix.hpp +++ b/src/config/saved_grand_prix.hpp @@ -26,7 +26,7 @@ class RaceManager; -// ---------------------------------------------------------------------------- +// ============================================================================ /** * \brief Class for managing saved Grand-Prix's diff --git a/src/config/user_config.cpp b/src/config/user_config.cpp index ff815c691..3cf9171cb 100644 --- a/src/config/user_config.cpp +++ b/src/config/user_config.cpp @@ -69,7 +69,7 @@ void UserConfigParam::writeInner(std::ofstream& stream, int level) const << toString().c_str() << "\"\n"; } // writeInner -// ---------------------------------------------------------------------------- +// ============================================================================ GroupUserConfigParam::GroupUserConfigParam(const char* group_name, const char* comment) { @@ -78,7 +78,7 @@ GroupUserConfigParam::GroupUserConfigParam(const char* group_name, if(comment != NULL) m_comment = comment; } // GroupUserConfigParam -// ---------------------------------------------------------------------------- +// ============================================================================ GroupUserConfigParam::GroupUserConfigParam(const char* group_name, GroupUserConfigParam* group, const char* comment) @@ -184,7 +184,7 @@ void GroupUserConfigParam::addChild(UserConfigParam* child) } // addChild -// ---------------------------------------------------------------------------- +// ============================================================================ template ListUserConfigParam::ListUserConfigParam(const char* param_name, const char* comment) @@ -194,7 +194,7 @@ ListUserConfigParam::ListUserConfigParam(const char* param_name, if(comment != NULL) m_comment = comment; } // ListUserConfigParam -// ---------------------------------------------------------------------------- +// ============================================================================ template ListUserConfigParam::ListUserConfigParam(const char* param_name, const char* comment, @@ -213,7 +213,7 @@ ListUserConfigParam::ListUserConfigParam(const char* param_name, va_end ( arguments ); // Cleans up the list } // ListUserConfigParam -// ---------------------------------------------------------------------------- +// ============================================================================ template ListUserConfigParam::ListUserConfigParam(const char* param_name, GroupUserConfigParam* group, @@ -224,7 +224,7 @@ ListUserConfigParam::ListUserConfigParam(const char* param_name, if(comment != NULL) m_comment = comment; } // ListUserConfigParam -// ---------------------------------------------------------------------------- +// ============================================================================ template ListUserConfigParam::ListUserConfigParam(const char* param_name, GroupUserConfigParam* group, @@ -326,7 +326,7 @@ core::stringc ListUserConfigParam::toString() const -// ---------------------------------------------------------------------------- +// ============================================================================ IntUserConfigParam::IntUserConfigParam(int default_value, const char* param_name, const char* comment) @@ -389,7 +389,7 @@ void IntUserConfigParam::findYourDataInAnAttributeOf(const XMLNode* node) node->get( m_param_name, &m_value ); } // findYourDataInAnAttributeOf -// ---------------------------------------------------------------------------- +// ============================================================================ TimeUserConfigParam::TimeUserConfigParam(StkTime::TimeType default_value, const char* param_name, const char* comment) @@ -460,7 +460,7 @@ void TimeUserConfigParam::findYourDataInAnAttributeOf(const XMLNode* node) m_value = tmp; } // findYourDataInAnAttributeOf -// ---------------------------------------------------------------------------- +// ============================================================================ StringUserConfigParam::StringUserConfigParam(const char* default_value, const char* param_name, const char* comment) @@ -509,7 +509,7 @@ void StringUserConfigParam::findYourDataInAnAttributeOf(const XMLNode* node) node->get( m_param_name, &m_value ); } // findYourDataInAnAttributeOf -// ---------------------------------------------------------------------------- +// ============================================================================ BoolUserConfigParam::BoolUserConfigParam(bool default_value, const char* param_name, const char* comment) @@ -597,7 +597,7 @@ irr::core::stringc BoolUserConfigParam::toString() const return (m_value ? "true" : "false" ); } // toString -// ---------------------------------------------------------------------------- +// ============================================================================ FloatUserConfigParam::FloatUserConfigParam(float default_value, const char* param_name, const char* comment) @@ -656,8 +656,8 @@ core::stringc FloatUserConfigParam::toString() const return tmp; } // toString -// ------------------------------------------------------------------------------------- -// ------------------------------------------------------------------------------------- +// ===================================================================================== +// ===================================================================================== #if 0 #pragma mark - diff --git a/src/config/user_config.hpp b/src/config/user_config.hpp index c8970291e..bf65f4633 100644 --- a/src/config/user_config.hpp +++ b/src/config/user_config.hpp @@ -75,7 +75,7 @@ public: virtual irr::core::stringc toString() const = 0; }; // UserConfigParam -// ---------------------------------------------------------------------------- +// ============================================================================ class GroupUserConfigParam : public UserConfigParam { std::vector m_attributes; @@ -97,7 +97,7 @@ public: irr::core::stringc toString() const; }; // GroupUserConfigParam -// ---------------------------------------------------------------------------- +// ============================================================================ template class ListUserConfigParam : public UserConfigParam { @@ -136,7 +136,7 @@ public: }; // ListUserConfigParam typedef ListUserConfigParam StringListUserConfigParam; -// ---------------------------------------------------------------------------- +// ============================================================================ class IntUserConfigParam : public UserConfigParam { int m_value; @@ -164,7 +164,7 @@ public: { m_value = (int)v; return m_value; } }; // IntUserConfigParam -// ---------------------------------------------------------------------------- +// ============================================================================ class TimeUserConfigParam : public UserConfigParam { StkTime::TimeType m_value; @@ -190,7 +190,7 @@ public: { m_value = (int)v; return m_value; } }; // TimeUserConfigParam -// ---------------------------------------------------------------------------- +// ============================================================================ class StringUserConfigParam : public UserConfigParam { std::string m_value; @@ -223,7 +223,7 @@ public: const char* c_str() const { return m_value.c_str(); } }; // StringUserConfigParam -// ---------------------------------------------------------------------------- +// ============================================================================ class BoolUserConfigParam : public UserConfigParam { bool m_value; @@ -248,7 +248,7 @@ public: { m_value = (bool)v; return m_value; } }; // BoolUserConfigParam -// ---------------------------------------------------------------------------- +// ============================================================================ class FloatUserConfigParam : public UserConfigParam { float m_value; @@ -274,7 +274,7 @@ public: { m_value = (float)v; return m_value; } }; // FloatUserConfigParam -// ---------------------------------------------------------------------------- +// ============================================================================ enum AnimType {ANIMS_NONE = 0, ANIMS_PLAYERS_ONLY = 1, ANIMS_ALL = 2 }; @@ -294,7 +294,7 @@ enum AnimType {ANIMS_NONE = 0, #define PARAM_DEFAULT(X) #endif -// ---------------------------------------------------------------------------- +// ============================================================================ /** \brief Contains all parameters that are stored in the user's config file * \ingroup config */ @@ -773,7 +773,7 @@ namespace UserConfigParams #undef PARAM_PREFIX #undef PARAM_SUFFIX -// ---------------------------------------------------------------------------- +// ============================================================================ /** * \brief Class for managing general STK user configuration data. * \ingroup config diff --git a/src/graphics/camera.cpp b/src/graphics/camera.cpp index d84df0a12..70a57c36f 100644 --- a/src/graphics/camera.cpp +++ b/src/graphics/camera.cpp @@ -45,7 +45,7 @@ AlignedArray Camera::m_end_cameras; std::vector Camera::m_all_cameras; -// ---------------------------------------------------------------------------- +// ============================================================================ Camera::Camera(int camera_index, AbstractKart* kart) : m_kart(NULL) { m_mode = CM_NORMAL; diff --git a/src/graphics/irr_driver.cpp b/src/graphics/irr_driver.cpp index 695a97a0c..b2418fa0e 100644 --- a/src/graphics/irr_driver.cpp +++ b/src/graphics/irr_driver.cpp @@ -1928,7 +1928,7 @@ void IrrDriver::doScreenShot() void IrrDriver::update(float dt) { // User aborted (e.g. closed window) - // --------------------------------- + // ================================= if (!m_device->run()) { GUIEngine::cleanUp(); diff --git a/src/graphics/particle_emitter.cpp b/src/graphics/particle_emitter.cpp index 219d70626..bfc66d6b3 100644 --- a/src/graphics/particle_emitter.cpp +++ b/src/graphics/particle_emitter.cpp @@ -100,7 +100,7 @@ public: }; // FadeAwayAffector -// ---------------------------------------------------------------------------- +// ============================================================================ class HeightMapCollisionAffector : public scene::IParticleAffector { @@ -178,7 +178,7 @@ public: } }; -// ---------------------------------------------------------------------------- +// ============================================================================ class WindAffector : public scene::IParticleAffector { @@ -218,7 +218,7 @@ public: }; // WindAffector -// ---------------------------------------------------------------------------- +// ============================================================================ class ScaleAffector : public scene::IParticleAffector { @@ -248,7 +248,7 @@ protected: core::vector2df ScaleFactor; }; -// ---------------------------------------------------------------------------- +// ============================================================================ class ColorAffector : public scene::IParticleAffector { @@ -283,7 +283,7 @@ public: -// ---------------------------------------------------------------------------- +// ============================================================================ ParticleEmitter::ParticleEmitter(const ParticleKind* type, const Vec3 &position, diff --git a/src/guiengine/message_queue.cpp b/src/guiengine/message_queue.cpp index f7a93033e..8d43ff227 100755 --- a/src/guiengine/message_queue.cpp +++ b/src/guiengine/message_queue.cpp @@ -70,7 +70,7 @@ public: } }; // class Message -// ---------------------------------------------------------------------------- +// ============================================================================ /** A function class to compare messages, required for priority_queue. */ class CompareMessages { @@ -85,7 +85,7 @@ public: }; // operator() -// ---------------------------------------------------------------------------- +// ============================================================================ /** List of all messages. */ std::priority_queue, CompareMessages> g_all_messages; @@ -101,7 +101,7 @@ float g_max_display_time = -1.0f; SkinWidgetContainer *g_container = NULL; core::recti g_area; -// ---------------------------------------------------------------------------- +// ============================================================================ void createLabel(const Message *message) { diff --git a/src/guiengine/skin.cpp b/src/guiengine/skin.cpp index 36e22e344..018323d81 100644 --- a/src/guiengine/skin.cpp +++ b/src/guiengine/skin.cpp @@ -183,7 +183,7 @@ namespace SkinConfig } // loadFromFile }; // SkinConfig -// ---------------------------------------------------------------------------- +// ============================================================================ #if 0 #pragma mark - #endif diff --git a/src/guiengine/skin.hpp b/src/guiengine/skin.hpp index ea167d8ba..efa26f23d 100644 --- a/src/guiengine/skin.hpp +++ b/src/guiengine/skin.hpp @@ -190,7 +190,7 @@ namespace GUIEngine } // SkinWidgetContainer }; // class SkinWidgetContainer - // ------------------------------------------------------------------------ + // ======================================================================== class Widget; /** @@ -256,7 +256,7 @@ namespace GUIEngine video::ITexture* getImage() { return m_image; } }; // BoxRenderParams - // ------------------------------------------------------------------------ + // ======================================================================== /** * \brief Object used to render the GUI widgets * see \ref skin for more information about skinning in STK diff --git a/src/input/input_device.cpp b/src/input/input_device.cpp index d1d05d4a0..70278fdfe 100644 --- a/src/input/input_device.cpp +++ b/src/input/input_device.cpp @@ -83,7 +83,7 @@ bool KeyboardDevice::processAndMapInput(const int id, } } // processAndMapInput -// ---------------------------------------------------------------------------- +// ============================================================================ #if 0 #pragma mark - diff --git a/src/input/wiimote_manager.cpp b/src/input/wiimote_manager.cpp index 9e05345b3..01687ef7d 100644 --- a/src/input/wiimote_manager.cpp +++ b/src/input/wiimote_manager.cpp @@ -396,7 +396,7 @@ int WiimoteManager::askUserToConnectWiimotes() return getNumberOfWiimotes(); } // askUserToConnectWiimotes -// ---------------------------------------------------------------------------- +// ============================================================================ /** Calles when the user clicks on OK, i.e. all wiimotes are in discovery * mode. */ diff --git a/src/io/file_manager.cpp b/src/io/file_manager.cpp index fd4f39776..b5d203ef9 100644 --- a/src/io/file_manager.cpp +++ b/src/io/file_manager.cpp @@ -95,7 +95,7 @@ bool macSetBundlePathIfRelevant(std::string& data_dir) } #endif -// ---------------------------------------------------------------------------- +// ============================================================================ FileManager* file_manager = 0; /** With irrlicht the constructor creates a NULL device. This is necessary to @@ -139,7 +139,7 @@ FileManager::FileManager() irr::io::path exe_path; // Search for the root directory - // ----------------------------- + // ============================= // Also check for data dirs relative to the path of the executable. // This is esp. useful for Visual Studio, since it's not necessary @@ -212,7 +212,7 @@ FileManager::FileManager() m_gp_dir.c_str()); /** Now search for the path to all needed subdirectories. */ - // ---------------------------------------------------------- + // ========================================================== // This must be done here since otherwise translations will not be found. std::vector dir_found; dir_found.resize(ASSET_COUNT, false); @@ -296,7 +296,7 @@ void FileManager::reInit() FileManager::~FileManager() { // Clean up left-over files in addons/tmp that are older than 24h - // -------------------------------------------------------------- + // ============================================================== // (The 24h delay is useful when debugging a problem with a zip file) std::set allfiles; std::string tmp=getAddonsFile("tmp"); @@ -341,7 +341,7 @@ FileManager::~FileManager() } // for i in all files in tmp // Clean up rest of file manager - // ----------------------------- + // ============================= popMusicSearchPath(); popModelSearchPath(); popTextureSearchPath(); diff --git a/src/items/item_manager.cpp b/src/items/item_manager.cpp index 60e2cf7ae..fb0c9e287 100644 --- a/src/items/item_manager.cpp +++ b/src/items/item_manager.cpp @@ -139,7 +139,7 @@ void ItemManager::removeTextures() } // removeTextures -// ---------------------------------------------------------------------------- +// ============================================================================ /** Creates a new instance of the item manager. This is done at startup * of each race. */ ItemManager::ItemManager() diff --git a/src/items/item_manager.hpp b/src/items/item_manager.hpp index faf322554..66c986829 100644 --- a/src/items/item_manager.hpp +++ b/src/items/item_manager.hpp @@ -71,7 +71,7 @@ public: return m_item_manager; } // get - // ------------------------------------------------------------------------ + // ======================================================================== private: /** The vector of all items of the current track. */ typedef std::vector AllItemTypes; diff --git a/src/items/rubber_ball.cpp b/src/items/rubber_ball.cpp index 191bebcfb..cc6f268e8 100644 --- a/src/items/rubber_ball.cpp +++ b/src/items/rubber_ball.cpp @@ -384,7 +384,7 @@ bool RubberBall::updateAndDelete(float dt) TrackSector::update(next_xyz); // Ball squashing: - // --------------- + // =============== if(height<1.5f*m_extend.getY()) m_node->setScale(core::vector3df(1.0f, height/m_extend.getY(),1.0f)); else @@ -574,7 +574,7 @@ float RubberBall::updateHeight() // Determine the height of the ball - // -------------------------------- + // ================================ // Consider f(x) = s * x*(x-m_intervall), which is a parabolic function // with f(0) = 0, f(m_intervall)=0. We then scale this function to // fulfill: f(m_intervall/2) = max_height, or: diff --git a/src/items/rubber_band.cpp b/src/items/rubber_band.cpp index 44a279a73..d978c3926 100644 --- a/src/items/rubber_band.cpp +++ b/src/items/rubber_band.cpp @@ -236,7 +236,7 @@ void RubberBand::hit(AbstractKart *kart_hit, const Vec3 *track_xyz) // A kart was hit - // -------------- + // ============== if(kart_hit) { if(kart_hit->isShielded()) @@ -253,7 +253,7 @@ void RubberBand::hit(AbstractKart *kart_hit, const Vec3 *track_xyz) } // The track was hit - // ----------------- + // ================= m_hit_position = *track_xyz; m_attached_state = RB_TO_TRACK; } // hit diff --git a/src/karts/abstract_kart.hpp b/src/karts/abstract_kart.hpp index 3fb219938..af67b278b 100644 --- a/src/karts/abstract_kart.hpp +++ b/src/karts/abstract_kart.hpp @@ -85,7 +85,7 @@ public: virtual core::stringw getName() const; virtual void reset(); virtual void init(RaceManager::KartType type) = 0; - // ------------------------------------------------------------------------ + // ======================================================================== // Functions related to controlling the kart // ------------------------------------------------------------------------ /** Returns the current steering value for this kart. */ @@ -100,7 +100,7 @@ public: /** Sets the kart controls. Used e.g. by replaying history. */ void setControls(const KartControl &c) { m_controls = c; } - // ------------------------------------------------------------------------ + // ======================================================================== // Access to the kart properties. // ------------------------------------------------------------------------ /** Returns the kart properties of this kart. */ @@ -124,7 +124,7 @@ public: */ virtual float getTimeFullSteer(float steer) const = 0; - // ------------------------------------------------------------------------ + // ======================================================================== // Attachment related functions. // ------------------------------------------------------------------------ /** Returns the current attachment. */ @@ -133,7 +133,7 @@ public: /** Returns the current attachment, non-const version. */ Attachment* getAttachment() {return m_attachment; } - // ------------------------------------------------------------------------ + // ======================================================================== // Access to the graphical kart model. // ------------------------------------------------------------------------ /** Returns this kart's kart model. */ @@ -163,7 +163,7 @@ public: const Vec3& getWheelGraphicsPosition(int i) const {assert(i>=0 && i<4); return m_wheel_graphics_position[i];} - // ------------------------------------------------------------------------ + // ======================================================================== // Emergency animation related functions. // ------------------------------------------------------------------------ /** Returns a kart animation (if any), or NULL if currently no kart diff --git a/src/karts/kart.hpp b/src/karts/kart.hpp index 392faa854..8ce5ea519 100644 --- a/src/karts/kart.hpp +++ b/src/karts/kart.hpp @@ -268,7 +268,7 @@ public: virtual bool playCustomSFX (unsigned int type); virtual void setController(Controller *controller); - // ------------------------------------------------------------------------ + // ======================================================================== // Powerup related functions. // ------------------------------------------------------------------------ /** Sets a new powerup. */ diff --git a/src/main.cpp b/src/main.cpp index c7f25a05e..8bc70861a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -205,9 +205,9 @@ static void cleanSuperTuxKart(); static void cleanUserConfig(); -// ---------------------------------------------------------------------------- +// ============================================================================ // gamepad visualisation screen -// ---------------------------------------------------------------------------- +// ============================================================================ void gamepadVisualisation() { @@ -360,7 +360,7 @@ void gamepadVisualisation() } } // gamepadVisualisation -// ---------------------------------------------------------------------------- +// ============================================================================ /** Sets the hat mesh name depending on the current christmas mode * m_xmas_mode (0: use current date, 1: always on, 2: always off). */ @@ -385,7 +385,7 @@ void handleXmasMode() if(xmas) kart_properties_manager->setHatMeshName("christmas_hat.b3d"); } // handleXmasMode -// ---------------------------------------------------------------------------- +// ============================================================================ /** This function sets up all data structure for an immediate race start. * It is used when the -N or -R command line options are used. */ @@ -642,7 +642,7 @@ int handleCmdLinePreliminary() return 0; } // handleCmdLinePreliminary -// ---------------------------------------------------------------------------- +// ============================================================================ /** Handles command line options. * \param argc Number of command line options */ @@ -1331,7 +1331,7 @@ int main(int argc, char *argv[] ) // Replay a race - // ------------- + // ============= if(history->replayHistory()) { // This will setup the race manager etc. @@ -1346,13 +1346,13 @@ int main(int argc, char *argv[] ) } // Not replaying - // ------------- + // ============= if(!ProfileWorld::isProfileMode()) { if(UserConfigParams::m_no_start_screen) { // Quickstart (-N) - // --------------- + // =============== // all defaults are set in InitTuxkart() race_manager->setupPlayerKartInfo(); race_manager->startNew(false); @@ -1361,7 +1361,7 @@ int main(int argc, char *argv[] ) else // profile { // Profiling - // --------- + // ========= race_manager->setMajorMode (RaceManager::MAJOR_MODE_SINGLE); race_manager->setupPlayerKartInfo(); race_manager->startNew(false); @@ -1410,7 +1410,7 @@ int main(int argc, char *argv[] ) return 0 ; } // main -// ---------------------------------------------------------------------------- +// ============================================================================ #ifdef WIN32 //routine for running under windows int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, diff --git a/src/modes/world.hpp b/src/modes/world.hpp index df86557fb..462258477 100644 --- a/src/modes/world.hpp +++ b/src/modes/world.hpp @@ -185,7 +185,7 @@ public: World(); virtual ~World(); // Static functions to access world: - // --------------------------------- + // ================================= // ------------------------------------------------------------------------ /** Returns a pointer to the (singleton) world object. */ static World* getWorld() { return m_world; } @@ -201,7 +201,7 @@ public: // ------------------------------------------------------------------------ // Pure virtual functions - // ---------------------- + // ====================== /** Each game mode should have a unique identifier. Override * this method in child classes to provide it. */ @@ -237,7 +237,7 @@ public: // ------------------------------------------------------------------------ // Virtual functions - // ----------------- + // ================= virtual void init(); virtual void terminateRace() OVERRIDE; virtual void reset(); @@ -269,7 +269,7 @@ public: virtual void onMouseClick(int x, int y) {}; // Other functions - // --------------- + // =============== Highscores *getHighscores() const; void schedulePause(Phase phase); void scheduleUnpause(); diff --git a/src/online/online_player_profile.cpp b/src/online/online_player_profile.cpp index d88eb111c..389805754 100644 --- a/src/online/online_player_profile.cpp +++ b/src/online/online_player_profile.cpp @@ -68,7 +68,7 @@ namespace Online request->addParameter("action", action); } // setUserDetails - // ------------------------------------------------------------------------ + // ======================================================================== OnlinePlayerProfile::OnlinePlayerProfile(const XMLNode *player) : PlayerProfile(player) { diff --git a/src/online/online_player_profile.hpp b/src/online/online_player_profile.hpp index cd635887b..58c8353f2 100644 --- a/src/online/online_player_profile.hpp +++ b/src/online/online_player_profile.hpp @@ -40,7 +40,7 @@ namespace Online class OnlineProfile; - // ---------------------------------------------------------------------------- + // ============================================================================ /** * \brief Class that represents an online registered user diff --git a/src/online/online_profile.cpp b/src/online/online_profile.cpp index 7cecfb395..d3213d57c 100644 --- a/src/online/online_profile.cpp +++ b/src/online/online_profile.cpp @@ -53,7 +53,7 @@ void OnlineProfile::RelationInfo::setOnline(bool online) m_is_pending = false; } -// ---------------------------------------------------------------------------- +// ============================================================================ /** Constructor for a new profile. It does only store the ID, a name, and * if it is the current user. */ diff --git a/src/online/online_profile.hpp b/src/online/online_profile.hpp index b59ca836f..01bcb975d 100644 --- a/src/online/online_profile.hpp +++ b/src/online/online_profile.hpp @@ -46,7 +46,7 @@ public: C_RELATION_INFO }; - // ------------------------------------------------------------------------ + // ======================================================================== class RelationInfo { private: @@ -67,7 +67,7 @@ public: // -------------------------------------------------------------------- bool isOnline() const { return m_is_online; } }; // class RelationInfo - // ------------------------------------------------------------------------ + // ======================================================================== typedef std::vector IDList; private: diff --git a/src/online/request.cpp b/src/online/request.cpp index 433bfbf0b..8fc8672ed 100644 --- a/src/online/request.cpp +++ b/src/online/request.cpp @@ -29,7 +29,7 @@ namespace Online { - // ------------------------------------------------------------------------ + // ======================================================================== /** * Creates a request that can be handled by the RequestManager * \param manage_memory whether or not the RequestManager should take care of diff --git a/src/online/request.hpp b/src/online/request.hpp index 1d4a549af..743126abd 100644 --- a/src/online/request.hpp +++ b/src/online/request.hpp @@ -211,7 +211,7 @@ namespace Online * members to a valid value. */ virtual bool isAllowedToAdd() const { return isPreparing(); } - // -------------------------------------------------------------------- + // ==================================================================== /** This class is used by the priority queue to sort requests by * priority. */ diff --git a/src/online/servers_manager.cpp b/src/online/servers_manager.cpp index d9a1c2948..9f47739f4 100644 --- a/src/online/servers_manager.cpp +++ b/src/online/servers_manager.cpp @@ -45,7 +45,7 @@ namespace Online{ manager_singleton = NULL; } // deallocate - // ---------------------------------------------------------------------------- + // ============================================================================ ServersManager::ServersManager(){ m_last_load_time.setAtomic(0.0f); m_joined_server.setAtomic(NULL); @@ -57,7 +57,7 @@ namespace Online{ delete m_joined_server.getData(); } - // ---------------------------------------------------------------------------- + // ============================================================================ void ServersManager::cleanUpServers() { m_sorted_servers.lock(); @@ -68,7 +68,7 @@ namespace Online{ m_mapped_servers.unlock(); } - // ---------------------------------------------------------------------------- + // ============================================================================ ServersManager::RefreshRequest * ServersManager::refreshRequest(bool request_now) const { RefreshRequest * request = NULL; @@ -103,7 +103,7 @@ namespace Online{ ServersManager::get()->refresh(isSuccess(), getXMLData()); } - // ---------------------------------------------------------------------------- + // ============================================================================ const Server * ServersManager::getQuickPlay() const { if(m_sorted_servers.getData().size() > 0) @@ -112,7 +112,7 @@ namespace Online{ return NULL; } - // ---------------------------------------------------------------------------- + // ============================================================================ void ServersManager::setJoinedServer(uint32_t id) { MutexLocker(m_joined_server); @@ -121,7 +121,7 @@ namespace Online{ m_joined_server.getData() = new Server(*getServerByID(id)); } - // ---------------------------------------------------------------------------- + // ============================================================================ void ServersManager::unsetJoinedServer() { MutexLocker(m_joined_server); @@ -129,7 +129,7 @@ namespace Online{ m_joined_server.getData() = NULL; } - // ---------------------------------------------------------------------------- + // ============================================================================ void ServersManager::addServer(Server * server) { m_sorted_servers.lock(); @@ -140,34 +140,34 @@ namespace Online{ m_mapped_servers.unlock(); } - // ---------------------------------------------------------------------------- + // ============================================================================ int ServersManager::getNumServers () const { MutexLocker(m_sorted_servers); return m_sorted_servers.getData().size(); } - // ---------------------------------------------------------------------------- + // ============================================================================ const Server * ServersManager::getServerBySort (int index) const { MutexLocker(m_sorted_servers); return m_sorted_servers.getData().get(index); } - // ---------------------------------------------------------------------------- + // ============================================================================ const Server * ServersManager::getServerByID (uint32_t id) const { MutexLocker(m_mapped_servers); return m_mapped_servers.getData().at(id); } - // ---------------------------------------------------------------------------- + // ============================================================================ Server * ServersManager::getJoinedServer() const { return m_joined_server.getAtomic(); } - // ---------------------------------------------------------------------------- + // ============================================================================ void ServersManager::sort(bool sort_desc){ MutexLocker(m_sorted_servers); m_sorted_servers.getData().insertionSort(0, sort_desc); diff --git a/src/physics/btKart.cpp b/src/physics/btKart.cpp index 3f15d7248..bdb8f556c 100644 --- a/src/physics/btKart.cpp +++ b/src/physics/btKart.cpp @@ -35,7 +35,7 @@ btRigidBody& btKart::getFixedBody() return s_fixed; } -// ---------------------------------------------------------------------------- +// ============================================================================ btKart::btKart(btRigidBody* chassis, btVehicleRaycaster* raycaster, Kart *kart) : m_vehicleRaycaster(raycaster) diff --git a/src/physics/btKartRaycast.cpp b/src/physics/btKartRaycast.cpp index 3cec30c87..13b310f76 100644 --- a/src/physics/btKartRaycast.cpp +++ b/src/physics/btKartRaycast.cpp @@ -22,7 +22,7 @@ void* btKartRaycaster::castRay(const btVector3& from, const btVector3& to, btVehicleRaycasterResult& result) { - // ------------------------------------------------------------------------ + // ======================================================================== class ClosestWithNormal : public btCollisionWorld::ClosestRayResultCallback { private: @@ -55,7 +55,7 @@ void* btKartRaycaster::castRay(const btVector3& from, const btVector3& to, int getTriangleIndex() const { return m_triangle_index; } }; // CloestWithNormal - // ------------------------------------------------------------------------ + // ======================================================================== ClosestWithNormal rayCallback(from,to); diff --git a/src/physics/physical_object.cpp b/src/physics/physical_object.cpp index 12d4557a8..f6a612336 100644 --- a/src/physics/physical_object.cpp +++ b/src/physics/physical_object.cpp @@ -98,7 +98,7 @@ void PhysicalObject::Settings::init() m_flatten_kart = false; } // Settings -// ---------------------------------------------------------------------------- +// ============================================================================ PhysicalObject* PhysicalObject::fromXML(bool is_dynamic, const XMLNode &xml_node, TrackObject* object) diff --git a/src/physics/physics.cpp b/src/physics/physics.cpp index ed252bd66..b1d9c2c71 100644 --- a/src/physics/physics.cpp +++ b/src/physics/physics.cpp @@ -224,7 +224,7 @@ void Physics::update(float dt) } // now the first object must be a projectile - // ----------------------------------------- + // ========================================= if(p->getUserPointer(1)->is(UserPointer::UP_TRACK)) { // Projectile hits track @@ -487,7 +487,7 @@ btScalar Physics::solveGroup(btCollisionObject** bodies, int numBodies, if(!upA || !upB) continue; // 1) object A is a track - // ----------------------- + // ======================= if(upA->is(UserPointer::UP_TRACK)) { if(upB->is(UserPointer::UP_FLYABLE)) // 1.1 projectile hits track @@ -520,7 +520,7 @@ btScalar Physics::solveGroup(btCollisionObject** bodies, int numBodies, } } // 2) object a is a kart - // --------------------- + // ===================== else if(upA->is(UserPointer::UP_KART)) { if(upB->is(UserPointer::UP_TRACK)) @@ -555,7 +555,7 @@ btScalar Physics::solveGroup(btCollisionObject** bodies, int numBodies, upA, contact_manifold->getContactPoint(0).m_localPointA); } // 3) object is a projectile - // ------------------------- + // ========================= else if(upA->is(UserPointer::UP_FLYABLE)) { // 3.1) projectile hits track @@ -573,7 +573,7 @@ btScalar Physics::solveGroup(btCollisionObject** bodies, int numBodies, } } // Object is a physical object - // --------------------------- + // =========================== else if(upA->is(UserPointer::UP_PHYSICAL_OBJECT)) { if(upB->is(UserPointer::UP_FLYABLE)) diff --git a/src/physics/physics.hpp b/src/physics/physics.hpp index 4f351b3dc..96f5fc1b6 100644 --- a/src/physics/physics.hpp +++ b/src/physics/physics.hpp @@ -100,7 +100,7 @@ private: } // getContactPointCS }; // CollisionPair - // ------------------------------------------------------------------------ + // ======================================================================== // This class is the list of collision objects, where each collision // pair is stored as most once. class CollisionList : public std::vector @@ -121,7 +121,7 @@ private: push_back(CollisionPair(a, contact_point_a, b, contact_point_b)); } }; // CollisionList - // ------------------------------------------------------------------------ + // ======================================================================== /** This flag is set while bullets time step processing is taking * place. It is used to avoid altering data structures that might diff --git a/src/race/race_manager.cpp b/src/race/race_manager.cpp index f7ecc3bf3..2626530b4 100644 --- a/src/race/race_manager.cpp +++ b/src/race/race_manager.cpp @@ -295,7 +295,7 @@ void RaceManager::startNew(bool from_overworld) m_num_karts = (int)m_player_karts.size(); // Create the kart status data structure to keep track of scores, times, ... - // -------------------------------------------------------------------------- + // ========================================================================== m_kart_status.clear(); Log::verbose("RaceManager", "Nb of karts=%u, ai:%lu players:%lu\n", (unsigned int)m_num_karts, m_ai_kart_list.size(), m_player_karts.size()); @@ -344,7 +344,7 @@ void RaceManager::startNew(bool from_overworld) !NetworkWorld::getInstance()->isRunning()) // offline mode only { //We look if Player 1 has a saved version of this GP. - // ------------------------------------------------- + // ================================================= SavedGrandPrix* gp = SavedGrandPrix::getSavedGP( StateManager::get() ->getActivePlayerProfile(0) ->getUniqueID(), @@ -354,7 +354,7 @@ void RaceManager::startNew(bool from_overworld) m_player_karts.size()); // Start the race with the appropriate track - // ----------------------------------------- + // ========================================= if(gp != NULL) { if (m_continue_saved_gp) @@ -392,7 +392,7 @@ void RaceManager::startNextRace() m_num_finished_players = 0; // if subsequent race, sort kart status structure - // ---------------------------------------------- + // ============================================== if (m_track_number > 0) { // In follow the leader mode do not change the first kart, diff --git a/src/states_screens/dialogs/addons_loading.cpp b/src/states_screens/dialogs/addons_loading.cpp index 8166a4531..2d6f1ef2d 100644 --- a/src/states_screens/dialogs/addons_loading.cpp +++ b/src/states_screens/dialogs/addons_loading.cpp @@ -111,7 +111,7 @@ void AddonsLoading::beforeAddingWidgets() rating->setStarNumber(3); // Display flags for this addon - // ---------------------------- + // ============================ std::vector l; if(UserConfigParams::m_artist_debug_mode) { @@ -154,7 +154,7 @@ void AddonsLoading::beforeAddingWidgets() } // Display the size - // ---------------- + // ================ int n = m_addon.getSize(); core::stringw unit=""; if(n>1024*1024) diff --git a/src/states_screens/feature_unlocked.cpp b/src/states_screens/feature_unlocked.cpp index 15b1ec803..32510f341 100644 --- a/src/states_screens/feature_unlocked.cpp +++ b/src/states_screens/feature_unlocked.cpp @@ -58,7 +58,7 @@ const int GIFT_EXIT_TO = GIFT_EXIT_FROM + 7; DEFINE_SCREEN_SINGLETON( FeatureUnlockedCutScene ); -// ---------------------------------------------------------------------------- +// ============================================================================ #if 0 #pragma mark FeatureUnlockedCutScene::UnlockedThing @@ -124,7 +124,7 @@ FeatureUnlockedCutScene::UnlockedThing::~UnlockedThing() m_root_gift_node = NULL; } // UnlockedThing::~UnlockedThing -// ---------------------------------------------------------------------------- +// ============================================================================ #if 0 #pragma mark - diff --git a/src/states_screens/kart_selection.cpp b/src/states_screens/kart_selection.cpp index 9496a68aa..0195ee189 100644 --- a/src/states_screens/kart_selection.cpp +++ b/src/states_screens/kart_selection.cpp @@ -121,7 +121,7 @@ void FocusDispatcher::add() static FocusDispatcher* g_dispatcher = NULL; -// ---------------------------------------------------------------------------- +// ============================================================================ /** A small extension to the spinner widget to add features like player ID * management or badging */ @@ -176,7 +176,7 @@ void PlayerNameSpinner::markAsCorrect() m_incorrect = false; } } // markAsCorrect -// ---------------------------------------------------------------------------- +// ============================================================================ #if 0 #pragma mark - @@ -871,7 +871,7 @@ bool sameKart(const PlayerKartWidget& player1, const PlayerKartWidget& player2) #pragma mark - #pragma mark KartHoverListener #endif -// ---------------------------------------------------------------------------- +// ============================================================================ KartHoverListener::KartHoverListener(KartSelectionScreen* parent) { @@ -921,7 +921,7 @@ void KartHoverListener::onSelectionChanged(DynamicRibbonWidget* theWidget, #pragma mark KartSelectionScreen #endif -// ---------------------------------------------------------------------------- +// ============================================================================ KartSelectionScreen::KartSelectionScreen(const char* filename) : Screen(filename) { @@ -931,7 +931,7 @@ KartSelectionScreen::KartSelectionScreen(const char* filename) : Screen(filename m_go_to_overworld_next = false; } // KartSelectionScreen -// ---------------------------------------------------------------------------- +// ============================================================================ KartSelectionScreen* KartSelectionScreen::getRunningInstance() { diff --git a/src/states_screens/race_result_gui.cpp b/src/states_screens/race_result_gui.cpp index ae1377014..9b5803421 100644 --- a/src/states_screens/race_result_gui.cpp +++ b/src/states_screens/race_result_gui.cpp @@ -635,7 +635,7 @@ void RaceResultGUI::renderGlobal(float dt) unsigned int num_karts = m_all_row_infos.size(); // First: Update the finite state machine - // -------------------------------------- + // ====================================== switch(m_animation_state) { case RR_INIT: @@ -733,7 +733,7 @@ void RaceResultGUI::renderGlobal(float dt) } // switch // Second phase: update X and Y positions for the various animations - // ----------------------------------------------------------------- + // ================================================================= float v = 0.9f*UserConfigParams::m_width/m_time_single_scroll; if(!isSoccerWorld) { @@ -902,7 +902,7 @@ void RaceResultGUI::displayOneEntry(unsigned int x, unsigned int y, } // Only display points in GP mode and when the GP results are displayed. - // --------------------------------------------------------------------- + // ===================================================================== if (race_manager->getMajorMode() == RaceManager::MAJOR_MODE_GRAND_PRIX && m_animation_state != RR_RACE_RESULT) { diff --git a/src/states_screens/state_manager.cpp b/src/states_screens/state_manager.cpp index 9074adfa3..def056fc1 100644 --- a/src/states_screens/state_manager.cpp +++ b/src/states_screens/state_manager.cpp @@ -51,7 +51,7 @@ void StateManager::deallocate() } // deallocate -// ---------------------------------------------------------------------------- +// ============================================================================ #if 0 #pragma mark - @@ -245,7 +245,7 @@ void StateManager::onStackEmptied() main_loop->abort(); } // onStackEmptied -// ---------------------------------------------------------------------------- +// ============================================================================ #if 0 #pragma mark - diff --git a/src/states_screens/state_manager.hpp b/src/states_screens/state_manager.hpp index 5eb5fb23c..cfda60c06 100644 --- a/src/states_screens/state_manager.hpp +++ b/src/states_screens/state_manager.hpp @@ -172,7 +172,7 @@ public: }; // ActivePlayer - // ------------------------------------------------------------------------ + // ======================================================================== const PtrVector& getActivePlayers() { return m_active_players; } ActivePlayer* getActivePlayer(const int id); diff --git a/src/states_screens/user_screen.cpp b/src/states_screens/user_screen.cpp index 84cf2e464..de5b1fa72 100644 --- a/src/states_screens/user_screen.cpp +++ b/src/states_screens/user_screen.cpp @@ -549,7 +549,7 @@ void BaseUserScreen::unloaded() -// ---------------------------------------------------------------------------- +// ============================================================================ /** In the tab version, make sure the right tab is selected. */ void TabbedUserScreen::init() diff --git a/src/states_screens/user_screen.hpp b/src/states_screens/user_screen.hpp index b5c4ddfee..b3294881d 100644 --- a/src/states_screens/user_screen.hpp +++ b/src/states_screens/user_screen.hpp @@ -114,7 +114,7 @@ public: void logoutError(const irr::core::stringw &error_message); }; // class BaseUserScreen -// ---------------------------------------------------------------------------- +// ============================================================================ class UserScreen : public BaseUserScreen, public GUIEngine::ScreenSingleton { @@ -125,7 +125,7 @@ public: friend class GUIEngine::ScreenSingleton; }; // class UserScreenTabed -// ---------------------------------------------------------------------------- +// ============================================================================ class TabbedUserScreen : public BaseUserScreen, public GUIEngine::ScreenSingleton { diff --git a/src/utils/leak_check.cpp b/src/utils/leak_check.cpp index e4c2d204a..5f199c6ab 100644 --- a/src/utils/leak_check.cpp +++ b/src/utils/leak_check.cpp @@ -99,7 +99,7 @@ namespace MemoryLeaks } // print - // ------------------------------------------------------------------------ + // ======================================================================== /** Adds an object to the sets of all allocated objects. */ void addObject(AllocatedObject* obj) { diff --git a/src/utils/leak_check.hpp b/src/utils/leak_check.hpp index 0b212a60c..6d461ed78 100644 --- a/src/utils/leak_check.hpp +++ b/src/utils/leak_check.hpp @@ -52,7 +52,7 @@ namespace MemoryLeaks virtual void print() const; }; // AllocatedObjects - // ------------------------------------------------------------------------ + // ======================================================================== void checkForLeaks(); void addObject(AllocatedObject* obj); From b0f3a48d80d7d863e23fb9151f858bd8b4bc6664 Mon Sep 17 00:00:00 2001 From: konstin Date: Wed, 16 Jul 2014 16:02:36 +0200 Subject: [PATCH 09/35] close #1397 --- src/states_screens/dialogs/random_gp_dialog.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/states_screens/dialogs/random_gp_dialog.cpp b/src/states_screens/dialogs/random_gp_dialog.cpp index 1b79fa955..74d219875 100644 --- a/src/states_screens/dialogs/random_gp_dialog.cpp +++ b/src/states_screens/dialogs/random_gp_dialog.cpp @@ -33,7 +33,6 @@ using irr::gui::IGUIStaticText; typedef GUIEngine::SpinnerWidget Spinner; RandomGPInfoDialog::RandomGPInfoDialog() - { // Defaults - loading selection from last time frrom a file would be better m_number_of_tracks = 2; // We can assume that there are at least 2 standard tracks From 44bce402e37d10d293f57c31a4ab64b3ef8ad8c8 Mon Sep 17 00:00:00 2001 From: Marianne Gagnon Date: Wed, 16 Jul 2014 18:34:59 -0400 Subject: [PATCH 10/35] clang fixes --- src/graphics/render_geometry.cpp | 39 ++++++++++++++++++++------------ src/utils/tuple.hpp | 11 ++++++--- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/src/graphics/render_geometry.cpp b/src/graphics/render_geometry.cpp index e33aad4ff..f61cb2efb 100644 --- a/src/graphics/render_geometry.cpp +++ b/src/graphics/render_geometry.cpp @@ -63,7 +63,7 @@ void apply_instance(const T *Shader, const STK::Tuple &arg) template void renderMeshes1stPass(const std::vector &TexUnits, std::vector > &meshes) { - glUseProgram(Shader::getInstance()->Program); + glUseProgram(Shader::getInstance()->Program); glBindVertexArray(getVAO(VertexType)); for (unsigned i = 0; i < meshes.size(); i++) { @@ -82,7 +82,7 @@ void renderMeshes1stPass(const std::vector &TexUnits, std::vector(), meshes[i]); + apply_instance(Shader::getInstance(), meshes[i]); } } @@ -111,11 +111,12 @@ void IrrDriver::renderSolidFirstPass() { ScopedGPUTimer Timer(getGPUTimer(Q_SOLID_PASS1)); - renderMeshes1stPass({ MeshShader::ObjectPass1Shader::getInstance()->TU_tex }, ListDefaultStandardG::Arguments); - renderMeshes1stPass({ MeshShader::ObjectPass1Shader::getInstance()->TU_tex }, ListDefault2TCoordG::Arguments); - renderMeshes1stPass({ MeshShader::ObjectRefPass1Shader::getInstance()->TU_tex }, ListAlphaRefG::Arguments); - renderMeshes1stPass({ MeshShader::NormalMapShader::getInstance()->TU_glossy, MeshShader::NormalMapShader::getInstance()->TU_normalmap }, ListNormalG::Arguments); - renderMeshes1stPass({ MeshShader::GrassPass1Shader::getInstance()->TU_tex }, ListGrassG::Arguments); + renderMeshes1stPass(std::vector({ MeshShader::ObjectPass1Shader::getInstance()->TU_tex }), ListDefaultStandardG::Arguments); + renderMeshes1stPass(std::vector({ MeshShader::ObjectPass1Shader::getInstance()->TU_tex }), ListDefault2TCoordG::Arguments); + renderMeshes1stPass(std::vector({ MeshShader::ObjectRefPass1Shader::getInstance()->TU_tex }), ListAlphaRefG::Arguments); + renderMeshes1stPass(std::vector({ MeshShader::NormalMapShader::getInstance()->TU_glossy, + MeshShader::NormalMapShader::getInstance()->TU_normalmap }), ListNormalG::Arguments); + renderMeshes1stPass(std::vector({ MeshShader::GrassPass1Shader::getInstance()->TU_tex }), ListGrassG::Arguments); } } @@ -195,14 +196,22 @@ void IrrDriver::renderSolidSecondPass() m_scene_manager->drawAll(scene::ESNRP_SOLID); - renderMeshes2ndPass(MeshShader::ObjectPass2ShaderInstance, { MeshShader::ObjectPass2ShaderInstance->TU_Albedo }, ListDefaultStandardSM::Arguments); - renderMeshes2ndPass(MeshShader::ObjectPass2ShaderInstance, { MeshShader::ObjectPass2ShaderInstance->TU_Albedo }, ListDefaultTangentSM::Arguments); - renderMeshes2ndPass(MeshShader::ObjectRefPass2ShaderInstance, { MeshShader::ObjectRefPass2ShaderInstance->TU_Albedo }, ListAlphaRefSM::Arguments); - renderMeshes2ndPass(MeshShader::SphereMapShaderInstance, { MeshShader::SphereMapShaderInstance->TU_tex }, ListSphereMapSM::Arguments); - renderMeshes2ndPass(MeshShader::ObjectUnlitShaderInstance, { MeshShader::ObjectUnlitShaderInstance->TU_tex }, ListUnlitSM::Arguments); - renderMeshes2ndPass(MeshShader::DetailledObjectPass2ShaderInstance, { MeshShader::DetailledObjectPass2ShaderInstance->TU_Albedo, MeshShader::DetailledObjectPass2ShaderInstance->TU_detail }, ListDetailSM::Arguments); - renderMeshes2ndPass(MeshShader::SplattingShaderInstance, { 8, MeshShader::SplattingShaderInstance->TU_tex_layout, MeshShader::SplattingShaderInstance->TU_tex_detail0, MeshShader::SplattingShaderInstance->TU_tex_detail1, MeshShader::SplattingShaderInstance->TU_tex_detail2, MeshShader::SplattingShaderInstance->TU_tex_detail3 }, ListSplattingSM::Arguments); - renderMeshes2ndPass(MeshShader::GrassPass2ShaderInstance, { MeshShader::GrassPass2ShaderInstance->TU_Albedo }, ListGrassSM::Arguments); + renderMeshes2ndPass(MeshShader::ObjectPass2ShaderInstance, std::vector({ MeshShader::ObjectPass2ShaderInstance->TU_Albedo }), ListDefaultStandardSM::Arguments); + renderMeshes2ndPass(MeshShader::ObjectPass2ShaderInstance, std::vector({ MeshShader::ObjectPass2ShaderInstance->TU_Albedo }), ListDefaultTangentSM::Arguments); + renderMeshes2ndPass(MeshShader::ObjectRefPass2ShaderInstance, std::vector({ (GLuint)MeshShader::ObjectRefPass2ShaderInstance->TU_Albedo }, ListAlphaRefSM::Arguments); + renderMeshes2ndPass(MeshShader::SphereMapShaderInstance, std::vector({ MeshShader::SphereMapShaderInstance->TU_tex }), ListSphereMapSM::Arguments); + renderMeshes2ndPass(MeshShader::ObjectUnlitShaderInstance, std::vector({ MeshShader::ObjectUnlitShaderInstance->TU_tex }), ListUnlitSM::Arguments); + renderMeshes2ndPass(MeshShader::DetailledObjectPass2ShaderInstance, std::vector({ MeshShader::DetailledObjectPass2ShaderInstance->TU_Albedo, MeshShader::DetailledObjectPass2ShaderInstance->TU_detail }), ListDetailSM::Arguments); + renderMeshes2ndPass(MeshShader::SplattingShaderInstance, + std::vector({ + (GLuint)8, + (GLuint)MeshShader::SplattingShaderInstance->TU_tex_layout, + (GLuint)MeshShader::SplattingShaderInstance->TU_tex_detail0, + (GLuint)MeshShader::SplattingShaderInstance->TU_tex_detail1, + (GLuint)MeshShader::SplattingShaderInstance->TU_tex_detail2, + (GLuint)MeshShader::SplattingShaderInstance->TU_tex_detail3 }), + ListSplattingSM::Arguments); + renderMeshes2ndPass(MeshShader::GrassPass2ShaderInstance, std::vector({ MeshShader::GrassPass2ShaderInstance->TU_Albedo }), ListGrassSM::Arguments); } } diff --git a/src/utils/tuple.hpp b/src/utils/tuple.hpp index 3583da478..007bebbee 100644 --- a/src/utils/tuple.hpp +++ b/src/utils/tuple.hpp @@ -54,13 +54,18 @@ namespace STK { } template inline - typename const tuple_element<_Index, Tuple<_Types...>>::type - tuple_get(const Tuple<_Types...>& _Tuple) + typename tuple_element<_Index, Tuple<_Types...>>::type tuple_get(const Tuple<_Types...>& _Tuple) { typedef typename tuple_element<_Index, Tuple<_Types...>>::_Ttype _Ttype; return (((_Ttype&)_Tuple)._Elem); } - + + template inline + Tuple make_tuple(T... values) + { + return Tuple(values...); + } + template inline Tuple make_tuple(T... values) { From 8483613a4e3369b0b611f2a7845d88ad2d7cf5ed Mon Sep 17 00:00:00 2001 From: Marianne Gagnon Date: Wed, 16 Jul 2014 19:51:24 -0400 Subject: [PATCH 11/35] clang fixes --- src/graphics/render_geometry.cpp | 40 ++--- src/graphics/shaders.cpp | 259 +++++++++++++++++++++++++------ 2 files changed, 230 insertions(+), 69 deletions(-) diff --git a/src/graphics/render_geometry.cpp b/src/graphics/render_geometry.cpp index f61cb2efb..ee678ba71 100644 --- a/src/graphics/render_geometry.cpp +++ b/src/graphics/render_geometry.cpp @@ -198,18 +198,18 @@ void IrrDriver::renderSolidSecondPass() renderMeshes2ndPass(MeshShader::ObjectPass2ShaderInstance, std::vector({ MeshShader::ObjectPass2ShaderInstance->TU_Albedo }), ListDefaultStandardSM::Arguments); renderMeshes2ndPass(MeshShader::ObjectPass2ShaderInstance, std::vector({ MeshShader::ObjectPass2ShaderInstance->TU_Albedo }), ListDefaultTangentSM::Arguments); - renderMeshes2ndPass(MeshShader::ObjectRefPass2ShaderInstance, std::vector({ (GLuint)MeshShader::ObjectRefPass2ShaderInstance->TU_Albedo }, ListAlphaRefSM::Arguments); + renderMeshes2ndPass(MeshShader::ObjectRefPass2ShaderInstance, std::vector({ MeshShader::ObjectRefPass2ShaderInstance->TU_Albedo }), ListAlphaRefSM::Arguments); renderMeshes2ndPass(MeshShader::SphereMapShaderInstance, std::vector({ MeshShader::SphereMapShaderInstance->TU_tex }), ListSphereMapSM::Arguments); renderMeshes2ndPass(MeshShader::ObjectUnlitShaderInstance, std::vector({ MeshShader::ObjectUnlitShaderInstance->TU_tex }), ListUnlitSM::Arguments); renderMeshes2ndPass(MeshShader::DetailledObjectPass2ShaderInstance, std::vector({ MeshShader::DetailledObjectPass2ShaderInstance->TU_Albedo, MeshShader::DetailledObjectPass2ShaderInstance->TU_detail }), ListDetailSM::Arguments); - renderMeshes2ndPass(MeshShader::SplattingShaderInstance, - std::vector({ - (GLuint)8, - (GLuint)MeshShader::SplattingShaderInstance->TU_tex_layout, - (GLuint)MeshShader::SplattingShaderInstance->TU_tex_detail0, - (GLuint)MeshShader::SplattingShaderInstance->TU_tex_detail1, - (GLuint)MeshShader::SplattingShaderInstance->TU_tex_detail2, - (GLuint)MeshShader::SplattingShaderInstance->TU_tex_detail3 }), + std::vector v; + v.push_back(8); + v.push_back(MeshShader::SplattingShaderInstance->TU_tex_layout); + v.push_back(MeshShader::SplattingShaderInstance->TU_tex_detail0); + v.push_back(MeshShader::SplattingShaderInstance->TU_tex_detail1); + v.push_back(MeshShader::SplattingShaderInstance->TU_tex_detail2); + v.push_back(MeshShader::SplattingShaderInstance->TU_tex_detail3); + renderMeshes2ndPass(MeshShader::SplattingShaderInstance, v, ListSplattingSM::Arguments); renderMeshes2ndPass(MeshShader::GrassPass2ShaderInstance, std::vector({ MeshShader::GrassPass2ShaderInstance->TU_Albedo }), ListGrassSM::Arguments); } @@ -238,16 +238,16 @@ void IrrDriver::renderTransparent() if (World::getWorld() && World::getWorld()->isFogEnabled()) { glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); - renderMeshes2ndPass(MeshShader::TransparentFogShaderInstance, { MeshShader::TransparentFogShaderInstance->TU_tex }, ListBlendTransparentFog::Arguments); + renderMeshes2ndPass(MeshShader::TransparentFogShaderInstance, std::vector({ MeshShader::TransparentFogShaderInstance->TU_tex }), ListBlendTransparentFog::Arguments); glBlendFunc(GL_ONE, GL_ONE); - renderMeshes2ndPass(MeshShader::TransparentFogShaderInstance, { MeshShader::TransparentFogShaderInstance->TU_tex }, ListAdditiveTransparentFog::Arguments); + renderMeshes2ndPass(MeshShader::TransparentFogShaderInstance, std::vector({ MeshShader::TransparentFogShaderInstance->TU_tex }), ListAdditiveTransparentFog::Arguments); } else { glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); - renderMeshes2ndPass(MeshShader::TransparentShaderInstance, { MeshShader::TransparentShaderInstance->TU_tex }, ListBlendTransparent::Arguments); + renderMeshes2ndPass(MeshShader::TransparentShaderInstance, std::vector({ MeshShader::TransparentShaderInstance->TU_tex }), ListBlendTransparent::Arguments); glBlendFunc(GL_ONE, GL_ONE); - renderMeshes2ndPass(MeshShader::TransparentShaderInstance, { MeshShader::TransparentShaderInstance->TU_tex }, ListAdditiveTransparent::Arguments); + renderMeshes2ndPass(MeshShader::TransparentShaderInstance, std::vector({ MeshShader::TransparentShaderInstance->TU_tex }), ListAdditiveTransparent::Arguments); } if (!UserConfigParams::m_dynamic_lights) @@ -405,11 +405,11 @@ void IrrDriver::renderShadows() m_scene_manager->drawAll(scene::ESNRP_SOLID); - drawShadow(MeshShader::ShadowShaderInstance, {}, ListDefaultStandardG::Arguments); - drawShadow(MeshShader::ShadowShaderInstance, {}, ListDefault2TCoordG::Arguments); - drawShadow(MeshShader::ShadowShaderInstance, {}, ListNormalG::Arguments); - drawShadow(MeshShader::RefShadowShaderInstance, { MeshShader::RefShadowShaderInstance->TU_tex }, ListAlphaRefG::Arguments); - drawShadowGrass({ MeshShader::GrassShadowShaderInstance->TU_tex }, ListGrassG::Arguments); + drawShadow(MeshShader::ShadowShaderInstance, std::vector(), ListDefaultStandardG::Arguments); + drawShadow(MeshShader::ShadowShaderInstance, std::vector(), ListDefault2TCoordG::Arguments); + drawShadow(MeshShader::ShadowShaderInstance, std::vector(), ListNormalG::Arguments); + drawShadow(MeshShader::RefShadowShaderInstance, std::vector({ MeshShader::RefShadowShaderInstance->TU_tex }), ListAlphaRefG::Arguments); + drawShadowGrass(std::vector({ MeshShader::GrassShadowShaderInstance->TU_tex }), ListGrassG::Arguments); glDisable(GL_POLYGON_OFFSET_FILL); @@ -419,6 +419,6 @@ void IrrDriver::renderShadows() m_rtts->getRSM().Bind(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - drawRSM(rsm_matrix, { MeshShader::RSMShader::TU_tex }, ListDefaultStandardG::Arguments); - drawRSM(rsm_matrix, { MeshShader::RSMShader::TU_tex }, ListDefault2TCoordG::Arguments); + drawRSM(rsm_matrix, std::vector({ MeshShader::RSMShader::TU_tex }), ListDefaultStandardG::Arguments); + drawRSM(rsm_matrix, std::vector({ MeshShader::RSMShader::TU_tex }), ListDefault2TCoordG::Arguments); } \ No newline at end of file diff --git a/src/graphics/shaders.cpp b/src/graphics/shaders.cpp index 466b706a3..dd22deb46 100644 --- a/src/graphics/shaders.cpp +++ b/src/graphics/shaders.cpp @@ -483,6 +483,166 @@ void glUniform1fWrapper(GLuint a, float b) namespace MeshShader { + std::vector > TexUnit(GLuint tex, const char* n) + { + std::vector > v; + v.push_back(std::pair(tex, n)); + return v; + } + std::vector > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2) + { + std::vector > v; + v.push_back(std::pair(tex, n)); + v.push_back(std::pair(tex2, n2)); + return v; + } + std::vector > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2, + GLuint tex3, const char* n3) + { + std::vector > v; + v.push_back(std::pair(tex, n)); + v.push_back(std::pair(tex2, n2)); + v.push_back(std::pair(tex3, n3)); + return v; + } + std::vector > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2, + GLuint tex3, const char* n3, GLuint tex4, const char* n4) + { + std::vector > v; + v.push_back(std::pair(tex, n)); + v.push_back(std::pair(tex2, n2)); + v.push_back(std::pair(tex3, n3)); + v.push_back(std::pair(tex4, n4)); + return v; + } + std::vector > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2, + GLuint tex3, const char* n3, GLuint tex4, const char* n4, GLuint tex5, const char* n5) + { + std::vector > v; + v.push_back(std::pair(tex, n)); + v.push_back(std::pair(tex2, n2)); + v.push_back(std::pair(tex3, n3)); + v.push_back(std::pair(tex4, n4)); + v.push_back(std::pair(tex5, n5)); + return v; + } + std::vector > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2, + GLuint tex3, const char* n3, GLuint tex4, const char* n4, GLuint tex5, const char* n5, + GLuint tex6, const char* n6) + { + std::vector > v; + v.push_back(std::pair(tex, n)); + v.push_back(std::pair(tex2, n2)); + v.push_back(std::pair(tex3, n3)); + v.push_back(std::pair(tex4, n4)); + v.push_back(std::pair(tex5, n5)); + v.push_back(std::pair(tex6, n6)); + return v; + } + std::vector > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2, + GLuint tex3, const char* n3, GLuint tex4, const char* n4, GLuint tex5, const char* n5, + GLuint tex6, const char* n6, GLuint tex7, const char* n7) + { + std::vector > v; + v.push_back(std::pair(tex, n)); + v.push_back(std::pair(tex2, n2)); + v.push_back(std::pair(tex3, n3)); + v.push_back(std::pair(tex4, n4)); + v.push_back(std::pair(tex5, n5)); + v.push_back(std::pair(tex6, n6)); + v.push_back(std::pair(tex7, n7)); + return v; + } + std::vector > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2, + GLuint tex3, const char* n3, GLuint tex4, const char* n4, GLuint tex5, const char* n5, + GLuint tex6, const char* n6, GLuint tex7, const char* n7, GLuint tex8, const char* n8) + { + std::vector > v; + v.push_back(std::pair(tex, n)); + v.push_back(std::pair(tex2, n2)); + v.push_back(std::pair(tex3, n3)); + v.push_back(std::pair(tex4, n4)); + v.push_back(std::pair(tex5, n5)); + v.push_back(std::pair(tex6, n6)); + v.push_back(std::pair(tex8, n8)); + return v; + } + std::vector Uniforms(const char* c1) + { + std::vector v; + v.push_back(c1); + return v; + } + std::vector Uniforms(const char* c1, const char* c2) + { + std::vector v; + v.push_back(c1); + v.push_back(c2); + return v; + } + std::vector Uniforms(const char* c1, const char* c2, const char* c3) + { + std::vector v; + v.push_back(c1); + v.push_back(c2); + v.push_back(c3); + return v; + } + std::vector Uniforms(const char* c1, const char* c2, const char* c3, const char* c4) + { + std::vector v; + v.push_back(c1); + v.push_back(c2); + v.push_back(c3); + v.push_back(c4); + return v; + } + std::vector Uniforms(const char* c1, const char* c2, const char* c3, const char* c4, const char* c5) + { + std::vector v; + v.push_back(c1); + v.push_back(c2); + v.push_back(c3); + v.push_back(c4); + v.push_back(c5); + return v; + } + std::vector Uniforms(const char* c1, const char* c2, const char* c3, const char* c4, const char* c5, const char* c6) + { + std::vector v; + v.push_back(c1); + v.push_back(c2); + v.push_back(c3); + v.push_back(c4); + v.push_back(c5); + v.push_back(c6); + return v; + } + std::vector Uniforms(const char* c1, const char* c2, const char* c3, const char* c4, const char* c5, const char* c6, const char* c7) + { + std::vector v; + v.push_back(c1); + v.push_back(c2); + v.push_back(c3); + v.push_back(c4); + v.push_back(c5); + v.push_back(c6); + v.push_back(c7); + return v; + } + std::vector Uniforms(const char* c1, const char* c2, const char* c3, const char* c4, const char* c5, const char* c6, const char* c7, const char* c8) + { + std::vector v; + v.push_back(c1); + v.push_back(c2); + v.push_back(c3); + v.push_back(c4); + v.push_back(c5); + v.push_back(c6); + v.push_back(c7); + v.push_back(c8); + return v; + } // Solid Normal and depth pass shaders ObjectPass1Shader::ObjectPass1Shader() @@ -491,14 +651,14 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_pass1.frag").c_str()); - AssignUniforms(Program, uniforms, {"ModelMatrix", "InverseModelMatrix"}); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } TU_tex = 0; - AssignTextureUnit(Program, { { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit( TU_tex, "tex" )); } ObjectRefPass1Shader::ObjectRefPass1Shader() @@ -507,14 +667,14 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str()); - AssignUniforms(Program, uniforms, { "ModelMatrix", "InverseModelMatrix", "TextureMatrix" }); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix", "TextureMatrix")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } TU_tex = 0; - AssignTextureUnit(Program, { { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); } GrassPass1Shader::GrassPass1Shader() @@ -523,9 +683,9 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/grass_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str()); - AssignUniforms(Program, uniforms, { "ModelMatrix", "InverseModelMatrix", "windDir" }); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix", "windDir")); TU_tex = 0; - AssignTextureUnit(Program, { { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); } NormalMapShader::NormalMapShader() @@ -534,7 +694,7 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/normalmap.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/normalmap.frag").c_str()); - AssignUniforms(Program, uniforms, {"ModelMatrix", "InverseModelMatrix"}); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -542,7 +702,7 @@ namespace MeshShader } TU_normalmap = 1; TU_glossy = 0; - AssignTextureUnit(Program, { { TU_normalmap, "normalMap" }, { TU_glossy, "DiffuseForAlpha" } }); + AssignTextureUnit(Program, TexUnit(TU_normalmap, "normalMap", TU_glossy, "DiffuseForAlpha")); } InstancedObjectPass1Shader::InstancedObjectPass1Shader() @@ -553,7 +713,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_pass1.frag").c_str()); TU_tex = 0; - AssignTextureUnit(Program, { { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -571,7 +731,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str()); TU_tex = 0; - AssignTextureUnit(Program, { { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -588,9 +748,9 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/instanced_grass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str()); - AssignUniforms(Program, uniforms, { "windDir" }); + AssignUniforms(Program, uniforms, Uniforms("windDir")); TU_tex = 0; - AssignTextureUnit(Program, { { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -607,7 +767,7 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_pass2.frag").c_str()); - AssignUniforms(Program, uniforms, { "ModelMatrix", "TextureMatrix", "ambient" }); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "TextureMatrix", "ambient")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -615,7 +775,7 @@ namespace MeshShader } TU_Albedo = 3; - AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_Albedo, "Albedo" } }); + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo")); } ObjectPass2Shader *ObjectPass2ShaderInstance; @@ -627,10 +787,10 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/instanced_object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_pass2.frag").c_str()); - AssignUniforms(Program, uniforms, { "ambient" }); + AssignUniforms(Program, uniforms, Uniforms("ambient")); TU_Albedo = 3; - AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_Albedo, "Albedo" } }); + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo")); if (!UserConfigParams::m_ubo_disabled) { @@ -648,10 +808,10 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/instanced_object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass2.frag").c_str()); - AssignUniforms(Program, uniforms, { "ambient" }); + AssignUniforms(Program, uniforms, Uniforms("ambient")); TU_Albedo = 3; - AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_Albedo, "Albedo" } }); + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo")); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); @@ -665,13 +825,13 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/detailledobject_pass2.frag").c_str()); - AssignUniforms(Program, uniforms, { "ModelMatrix", "ambient" }); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "ambient")); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); TU_Albedo = 3; TU_detail = 4; - AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_Albedo, "Albedo" }, { TU_detail, "Detail" } }); + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo", TU_detail, "Detail")); } DetailledObjectPass2Shader *DetailledObjectPass2ShaderInstance; @@ -681,7 +841,7 @@ namespace MeshShader Program = LoadProgram( GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str()); - AssignUniforms(Program, uniforms, { "ModelMatrix" }); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -689,7 +849,7 @@ namespace MeshShader } TU_tex = 3; - AssignTextureUnit(Program, { { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); } ObjectUnlitShader *ObjectUnlitShaderInstance; @@ -700,7 +860,7 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass2.frag").c_str()); - AssignUniforms(Program, uniforms, { "ModelMatrix", "TextureMatrix", "ambient" }); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "TextureMatrix", "ambient")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -708,7 +868,7 @@ namespace MeshShader } TU_Albedo = 3; - AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_Albedo, "Albedo" } }); + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo")); } ObjectRefPass2Shader *ObjectRefPass2ShaderInstance; @@ -719,10 +879,10 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/grass_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/grass_pass2.frag").c_str()); - AssignUniforms(Program, uniforms, { "ModelMatrix", "windDir", "ambient" }); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "windDir", "ambient")); TU_Albedo = 3; - AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_Albedo, "Albedo" } }); + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo")); } GrassPass2Shader *GrassPass2ShaderInstance; @@ -734,11 +894,11 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/instanced_grass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/grass_pass2.frag").c_str()); - AssignUniforms(Program, uniforms, { "windDir", "SunDir", "ambient" }); + AssignUniforms(Program, uniforms, Uniforms("windDir", "SunDir", "ambient")); TU_Albedo = 3; TU_dtex = 4; - AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_Albedo, "Albedo" }, { TU_dtex, "dtex" } }); + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo", TU_dtex, "dtex")); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); @@ -753,7 +913,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getPosFromUVDepth.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectpass_spheremap.frag").c_str()); - AssignUniforms(Program, uniforms, { "ModelMatrix", "InverseModelMatrix", "ambient" }); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix", "ambient")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -761,7 +921,7 @@ namespace MeshShader } TU_tex = 3; - AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_tex, "tex")); } SphereMapShader *SphereMapShaderInstance; @@ -771,15 +931,15 @@ namespace MeshShader Program = LoadProgram( GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/splatting.frag").c_str()); - AssignUniforms(Program, uniforms, {"ModelMatrix", "ambient"}); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "ambient")); TU_tex_layout = 3; TU_tex_detail0 = 4; TU_tex_detail1 = 5; TU_tex_detail2 = 6; TU_tex_detail3 = 7; - AssignTextureUnit(Program, { { 0, "DiffuseMap" }, { 1, "SpecularMap" }, { 2, "SSAO" }, { TU_tex_layout, "tex_layout" }, - { TU_tex_detail0, "tex_detail0" }, { TU_tex_detail1, "tex_detail1" }, { TU_tex_detail2, "tex_detail2" }, { TU_tex_detail3, "tex_detail3" } }); + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_tex_layout, "tex_layout", + TU_tex_detail0, "tex_detail0", TU_tex_detail1, "tex_detail1", TU_tex_detail2, "tex_detail2", TU_tex_detail3, "tex_detail3")); } SplattingShader *SplattingShaderInstance; @@ -813,7 +973,7 @@ namespace MeshShader Program = LoadProgram( GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/transparent.frag").c_str()); - AssignUniforms(Program, uniforms, {"ModelMatrix", "TextureMatrix" }); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "TextureMatrix")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -821,7 +981,7 @@ namespace MeshShader } TU_tex = 0; - AssignTextureUnit(Program, { { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); } TransparentShader *TransparentShaderInstance; @@ -831,7 +991,7 @@ namespace MeshShader Program = LoadProgram( GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/transparentfog.frag").c_str()); - AssignUniforms(Program, uniforms, { "ModelMatrix", "TextureMatrix", "fogmax", "startH", "endH", "start", "end", "col" }); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "TextureMatrix", "fogmax", "startH", "endH", "start", "end", "col")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -839,7 +999,7 @@ namespace MeshShader } TU_tex = 0; - AssignTextureUnit(Program, { { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); } TransparentFogShader *TransparentFogShaderInstance; @@ -924,7 +1084,7 @@ namespace MeshShader GL_GEOMETRY_SHADER, file_manager->getAsset("shaders/shadow.geom").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/white.frag").c_str()); } - AssignUniforms(Program, uniforms, { "ModelMatrix" }); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix")); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } @@ -945,7 +1105,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/rsm.frag").c_str()); uniform_MM = glGetUniformLocation(Program, "ModelMatrix"); uniform_RSMMatrix = glGetUniformLocation(Program, "RSMMatrix"); - AssignTextureUnit(Program, { { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); } void RSMShader::setUniforms(const core::matrix4 &RSMMatrix, const core::matrix4 &ModelMatrix) @@ -998,12 +1158,12 @@ namespace MeshShader GL_GEOMETRY_SHADER, file_manager->getAsset("shaders/shadow.geom").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str()); } - AssignUniforms(Program, uniforms, { "ModelMatrix" }); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix")); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); TU_tex = 0; - AssignTextureUnit(Program, { { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); } RefShadowShader *RefShadowShaderInstance; @@ -1029,7 +1189,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str()); } TU_tex = 0; - AssignTextureUnit(Program, { { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } @@ -1054,12 +1214,12 @@ namespace MeshShader GL_GEOMETRY_SHADER, file_manager->getAsset("shaders/shadow.geom").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str()); } - AssignUniforms(Program, uniforms, { "ModelMatrix", "windDir" }); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "windDir")); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); TU_tex = 0; - AssignTextureUnit(Program, { { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); } GrassShadowShader *GrassShadowShaderInstance; @@ -1085,9 +1245,9 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str()); } TU_tex = 0; - AssignTextureUnit(Program, { { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); - AssignUniforms(Program, uniforms, { "windDir" }); + AssignUniforms(Program, uniforms, Uniforms("windDir")); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } @@ -1099,7 +1259,7 @@ namespace MeshShader Program = LoadProgram( GL_VERTEX_SHADER, file_manager->getAsset("shaders/displace.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/white.frag").c_str()); - AssignUniforms(Program, uniforms, { "ModelMatrix"}); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -1115,12 +1275,13 @@ namespace MeshShader Program = LoadProgram( GL_VERTEX_SHADER, file_manager->getAsset("shaders/displace.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/displace.frag").c_str()); - AssignUniforms(Program, uniforms, { "ModelMatrix", "dir", "dir2" }); + AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "dir", "dir2" )); TU_displacement_tex = 0; TU_color_tex = 1; TU_mask_tex = 2; TU_tex = 3; - AssignTextureUnit(Program, { { TU_displacement_tex, "displacement_tex" }, { TU_color_tex, "color_tex" }, { TU_mask_tex, "mask_tex" }, { TU_tex, "tex" } }); + AssignTextureUnit(Program, TexUnit(TU_displacement_tex, "displacement_tex", TU_color_tex, "color_tex", + TU_mask_tex, "mask_tex", TU_tex, "tex")); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } From e6fd365685db75cbce8f6e433e20914fdee95128 Mon Sep 17 00:00:00 2001 From: Marianne Gagnon Date: Wed, 16 Jul 2014 20:02:52 -0400 Subject: [PATCH 12/35] Re-fix clang fixes so that it works on other compilers too --- src/graphics/render_geometry.cpp | 42 ++++++++++++++++---------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/graphics/render_geometry.cpp b/src/graphics/render_geometry.cpp index ee678ba71..3d83b0e14 100644 --- a/src/graphics/render_geometry.cpp +++ b/src/graphics/render_geometry.cpp @@ -111,12 +111,12 @@ void IrrDriver::renderSolidFirstPass() { ScopedGPUTimer Timer(getGPUTimer(Q_SOLID_PASS1)); - renderMeshes1stPass(std::vector({ MeshShader::ObjectPass1Shader::getInstance()->TU_tex }), ListDefaultStandardG::Arguments); - renderMeshes1stPass(std::vector({ MeshShader::ObjectPass1Shader::getInstance()->TU_tex }), ListDefault2TCoordG::Arguments); - renderMeshes1stPass(std::vector({ MeshShader::ObjectRefPass1Shader::getInstance()->TU_tex }), ListAlphaRefG::Arguments); - renderMeshes1stPass(std::vector({ MeshShader::NormalMapShader::getInstance()->TU_glossy, - MeshShader::NormalMapShader::getInstance()->TU_normalmap }), ListNormalG::Arguments); - renderMeshes1stPass(std::vector({ MeshShader::GrassPass1Shader::getInstance()->TU_tex }), ListGrassG::Arguments); + renderMeshes1stPass(std::vector{ MeshShader::ObjectPass1Shader::getInstance()->TU_tex }, ListDefaultStandardG::Arguments); + renderMeshes1stPass(std::vector{ MeshShader::ObjectPass1Shader::getInstance()->TU_tex }, ListDefault2TCoordG::Arguments); + renderMeshes1stPass(std::vector{ MeshShader::ObjectRefPass1Shader::getInstance()->TU_tex }, ListAlphaRefG::Arguments); + renderMeshes1stPass(std::vector{ MeshShader::NormalMapShader::getInstance()->TU_glossy, + MeshShader::NormalMapShader::getInstance()->TU_normalmap }, ListNormalG::Arguments); + renderMeshes1stPass(std::vector{ MeshShader::GrassPass1Shader::getInstance()->TU_tex }, ListGrassG::Arguments); } } @@ -196,12 +196,12 @@ void IrrDriver::renderSolidSecondPass() m_scene_manager->drawAll(scene::ESNRP_SOLID); - renderMeshes2ndPass(MeshShader::ObjectPass2ShaderInstance, std::vector({ MeshShader::ObjectPass2ShaderInstance->TU_Albedo }), ListDefaultStandardSM::Arguments); - renderMeshes2ndPass(MeshShader::ObjectPass2ShaderInstance, std::vector({ MeshShader::ObjectPass2ShaderInstance->TU_Albedo }), ListDefaultTangentSM::Arguments); - renderMeshes2ndPass(MeshShader::ObjectRefPass2ShaderInstance, std::vector({ MeshShader::ObjectRefPass2ShaderInstance->TU_Albedo }), ListAlphaRefSM::Arguments); - renderMeshes2ndPass(MeshShader::SphereMapShaderInstance, std::vector({ MeshShader::SphereMapShaderInstance->TU_tex }), ListSphereMapSM::Arguments); - renderMeshes2ndPass(MeshShader::ObjectUnlitShaderInstance, std::vector({ MeshShader::ObjectUnlitShaderInstance->TU_tex }), ListUnlitSM::Arguments); - renderMeshes2ndPass(MeshShader::DetailledObjectPass2ShaderInstance, std::vector({ MeshShader::DetailledObjectPass2ShaderInstance->TU_Albedo, MeshShader::DetailledObjectPass2ShaderInstance->TU_detail }), ListDetailSM::Arguments); + renderMeshes2ndPass(MeshShader::ObjectPass2ShaderInstance, std::vector{ MeshShader::ObjectPass2ShaderInstance->TU_Albedo }, ListDefaultStandardSM::Arguments); + renderMeshes2ndPass(MeshShader::ObjectPass2ShaderInstance, std::vector{ MeshShader::ObjectPass2ShaderInstance->TU_Albedo }, ListDefaultTangentSM::Arguments); + renderMeshes2ndPass(MeshShader::ObjectRefPass2ShaderInstance, std::vector{ MeshShader::ObjectRefPass2ShaderInstance->TU_Albedo }, ListAlphaRefSM::Arguments); + renderMeshes2ndPass(MeshShader::SphereMapShaderInstance, std::vector{ MeshShader::SphereMapShaderInstance->TU_tex }, ListSphereMapSM::Arguments); + renderMeshes2ndPass(MeshShader::ObjectUnlitShaderInstance, std::vector{ MeshShader::ObjectUnlitShaderInstance->TU_tex }, ListUnlitSM::Arguments); + renderMeshes2ndPass(MeshShader::DetailledObjectPass2ShaderInstance, std::vector{ MeshShader::DetailledObjectPass2ShaderInstance->TU_Albedo, MeshShader::DetailledObjectPass2ShaderInstance->TU_detail }, ListDetailSM::Arguments); std::vector v; v.push_back(8); v.push_back(MeshShader::SplattingShaderInstance->TU_tex_layout); @@ -211,7 +211,7 @@ void IrrDriver::renderSolidSecondPass() v.push_back(MeshShader::SplattingShaderInstance->TU_tex_detail3); renderMeshes2ndPass(MeshShader::SplattingShaderInstance, v, ListSplattingSM::Arguments); - renderMeshes2ndPass(MeshShader::GrassPass2ShaderInstance, std::vector({ MeshShader::GrassPass2ShaderInstance->TU_Albedo }), ListGrassSM::Arguments); + renderMeshes2ndPass(MeshShader::GrassPass2ShaderInstance, std::vector{ MeshShader::GrassPass2ShaderInstance->TU_Albedo }, ListGrassSM::Arguments); } } @@ -238,16 +238,16 @@ void IrrDriver::renderTransparent() if (World::getWorld() && World::getWorld()->isFogEnabled()) { glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); - renderMeshes2ndPass(MeshShader::TransparentFogShaderInstance, std::vector({ MeshShader::TransparentFogShaderInstance->TU_tex }), ListBlendTransparentFog::Arguments); + renderMeshes2ndPass(MeshShader::TransparentFogShaderInstance, std::vector{ MeshShader::TransparentFogShaderInstance->TU_tex }, ListBlendTransparentFog::Arguments); glBlendFunc(GL_ONE, GL_ONE); - renderMeshes2ndPass(MeshShader::TransparentFogShaderInstance, std::vector({ MeshShader::TransparentFogShaderInstance->TU_tex }), ListAdditiveTransparentFog::Arguments); + renderMeshes2ndPass(MeshShader::TransparentFogShaderInstance, std::vector{ MeshShader::TransparentFogShaderInstance->TU_tex }, ListAdditiveTransparentFog::Arguments); } else { glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); - renderMeshes2ndPass(MeshShader::TransparentShaderInstance, std::vector({ MeshShader::TransparentShaderInstance->TU_tex }), ListBlendTransparent::Arguments); + renderMeshes2ndPass(MeshShader::TransparentShaderInstance, std::vector{ MeshShader::TransparentShaderInstance->TU_tex }, ListBlendTransparent::Arguments); glBlendFunc(GL_ONE, GL_ONE); - renderMeshes2ndPass(MeshShader::TransparentShaderInstance, std::vector({ MeshShader::TransparentShaderInstance->TU_tex }), ListAdditiveTransparent::Arguments); + renderMeshes2ndPass(MeshShader::TransparentShaderInstance, std::vector{ MeshShader::TransparentShaderInstance->TU_tex }, ListAdditiveTransparent::Arguments); } if (!UserConfigParams::m_dynamic_lights) @@ -408,8 +408,8 @@ void IrrDriver::renderShadows() drawShadow(MeshShader::ShadowShaderInstance, std::vector(), ListDefaultStandardG::Arguments); drawShadow(MeshShader::ShadowShaderInstance, std::vector(), ListDefault2TCoordG::Arguments); drawShadow(MeshShader::ShadowShaderInstance, std::vector(), ListNormalG::Arguments); - drawShadow(MeshShader::RefShadowShaderInstance, std::vector({ MeshShader::RefShadowShaderInstance->TU_tex }), ListAlphaRefG::Arguments); - drawShadowGrass(std::vector({ MeshShader::GrassShadowShaderInstance->TU_tex }), ListGrassG::Arguments); + drawShadow(MeshShader::RefShadowShaderInstance, std::vector{ MeshShader::RefShadowShaderInstance->TU_tex }, ListAlphaRefG::Arguments); + drawShadowGrass(std::vector{ MeshShader::GrassShadowShaderInstance->TU_tex }, ListGrassG::Arguments); glDisable(GL_POLYGON_OFFSET_FILL); @@ -419,6 +419,6 @@ void IrrDriver::renderShadows() m_rtts->getRSM().Bind(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - drawRSM(rsm_matrix, std::vector({ MeshShader::RSMShader::TU_tex }), ListDefaultStandardG::Arguments); - drawRSM(rsm_matrix, std::vector({ MeshShader::RSMShader::TU_tex }), ListDefault2TCoordG::Arguments); + drawRSM(rsm_matrix, std::vector{ MeshShader::RSMShader::TU_tex }, ListDefaultStandardG::Arguments); + drawRSM(rsm_matrix, std::vector{ MeshShader::RSMShader::TU_tex }, ListDefault2TCoordG::Arguments); } \ No newline at end of file From 40851516ace9ca0046053648e2f8dcd181f9cda5 Mon Sep 17 00:00:00 2001 From: Marianne Gagnon Date: Fri, 18 Jul 2014 19:22:20 -0400 Subject: [PATCH 13/35] continuing work --- src/graphics/shaders.cpp | 210 ++++++++++++++++++--------------------- 1 file changed, 96 insertions(+), 114 deletions(-) diff --git a/src/graphics/shaders.cpp b/src/graphics/shaders.cpp index 85977e61a..b747c905d 100644 --- a/src/graphics/shaders.cpp +++ b/src/graphics/shaders.cpp @@ -431,14 +431,26 @@ namespace UtilShader } } +struct TexUnit +{ + GLuint m_index; + const char* m_uniform; + + TexUnit(GLuint index, const char* uniform) + { + m_index = index; + m_uniform = uniform; + } +}; + static void -AssignTextureUnit(GLuint Program, const std::vector > assoc) +AssignTextureUnit(GLuint Program, const std::vector assoc) { glUseProgram(Program); for (unsigned i = 0; i < assoc.size(); i++) { - GLuint uniform = glGetUniformLocation(Program, assoc[i].second); - glUniform1i(uniform, assoc[i].first); + GLuint uniform = glGetUniformLocation(Program, assoc[i].m_uniform); + glUniform1i(uniform, assoc[i].m_index); } glUseProgram(0); } @@ -474,90 +486,6 @@ void glUniform1fWrapper(GLuint a, float b) namespace MeshShader { - std::vector > TexUnit(GLuint tex, const char* n) - { - std::vector > v; - v.push_back(std::pair(tex, n)); - return v; - } - std::vector > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2) - { - std::vector > v; - v.push_back(std::pair(tex, n)); - v.push_back(std::pair(tex2, n2)); - return v; - } - std::vector > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2, - GLuint tex3, const char* n3) - { - std::vector > v; - v.push_back(std::pair(tex, n)); - v.push_back(std::pair(tex2, n2)); - v.push_back(std::pair(tex3, n3)); - return v; - } - std::vector > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2, - GLuint tex3, const char* n3, GLuint tex4, const char* n4) - { - std::vector > v; - v.push_back(std::pair(tex, n)); - v.push_back(std::pair(tex2, n2)); - v.push_back(std::pair(tex3, n3)); - v.push_back(std::pair(tex4, n4)); - return v; - } - std::vector > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2, - GLuint tex3, const char* n3, GLuint tex4, const char* n4, GLuint tex5, const char* n5) - { - std::vector > v; - v.push_back(std::pair(tex, n)); - v.push_back(std::pair(tex2, n2)); - v.push_back(std::pair(tex3, n3)); - v.push_back(std::pair(tex4, n4)); - v.push_back(std::pair(tex5, n5)); - return v; - } - std::vector > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2, - GLuint tex3, const char* n3, GLuint tex4, const char* n4, GLuint tex5, const char* n5, - GLuint tex6, const char* n6) - { - std::vector > v; - v.push_back(std::pair(tex, n)); - v.push_back(std::pair(tex2, n2)); - v.push_back(std::pair(tex3, n3)); - v.push_back(std::pair(tex4, n4)); - v.push_back(std::pair(tex5, n5)); - v.push_back(std::pair(tex6, n6)); - return v; - } - std::vector > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2, - GLuint tex3, const char* n3, GLuint tex4, const char* n4, GLuint tex5, const char* n5, - GLuint tex6, const char* n6, GLuint tex7, const char* n7) - { - std::vector > v; - v.push_back(std::pair(tex, n)); - v.push_back(std::pair(tex2, n2)); - v.push_back(std::pair(tex3, n3)); - v.push_back(std::pair(tex4, n4)); - v.push_back(std::pair(tex5, n5)); - v.push_back(std::pair(tex6, n6)); - v.push_back(std::pair(tex7, n7)); - return v; - } - std::vector > TexUnit(GLuint tex, const char* n, GLuint tex2, const char* n2, - GLuint tex3, const char* n3, GLuint tex4, const char* n4, GLuint tex5, const char* n5, - GLuint tex6, const char* n6, GLuint tex7, const char* n7, GLuint tex8, const char* n8) - { - std::vector > v; - v.push_back(std::pair(tex, n)); - v.push_back(std::pair(tex2, n2)); - v.push_back(std::pair(tex3, n3)); - v.push_back(std::pair(tex4, n4)); - v.push_back(std::pair(tex5, n5)); - v.push_back(std::pair(tex6, n6)); - v.push_back(std::pair(tex8, n8)); - return v; - } std::vector Uniforms(const char* c1) { std::vector v; @@ -649,7 +577,7 @@ namespace MeshShader glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } TU_tex = 0; - AssignTextureUnit(Program, TexUnit( TU_tex, "tex" )); + AssignTextureUnit(Program, { TexUnit(TU_tex, "tex" ) }); } ObjectRefPass1Shader::ObjectRefPass1Shader() @@ -665,7 +593,7 @@ namespace MeshShader glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } TU_tex = 0; - AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); + AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); } GrassPass1Shader::GrassPass1Shader() @@ -676,7 +604,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str()); AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix", "windDir")); TU_tex = 0; - AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); + AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); } NormalMapShader::NormalMapShader() @@ -693,7 +621,7 @@ namespace MeshShader } TU_normalmap = 1; TU_glossy = 0; - AssignTextureUnit(Program, TexUnit(TU_normalmap, "normalMap", TU_glossy, "DiffuseForAlpha")); + AssignTextureUnit(Program, { TexUnit(TU_normalmap, "normalMap"), TexUnit(TU_glossy, "DiffuseForAlpha") }); } InstancedObjectPass1Shader::InstancedObjectPass1Shader() @@ -704,7 +632,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_pass1.frag").c_str()); TU_tex = 0; - AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); + AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -722,7 +650,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str()); TU_tex = 0; - AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); + AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -741,7 +669,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str()); AssignUniforms(Program, uniforms, Uniforms("windDir")); TU_tex = 0; - AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); + AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -766,7 +694,12 @@ namespace MeshShader } TU_Albedo = 3; - AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo")); + AssignTextureUnit(Program, { + TexUnit(0, "DiffuseMap"), + TexUnit(1, "SpecularMap"), + TexUnit(2, "SSAO"), + TexUnit(TU_Albedo, "Albedo") + }); } ObjectPass2Shader *ObjectPass2ShaderInstance; @@ -781,7 +714,12 @@ namespace MeshShader AssignUniforms(Program, uniforms, Uniforms("ambient")); TU_Albedo = 3; - AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo")); + AssignTextureUnit(Program, { + TexUnit(0, "DiffuseMap"), + TexUnit(1, "SpecularMap"), + TexUnit(2, "SSAO"), + TexUnit(TU_Albedo, "Albedo") + }); if (!UserConfigParams::m_ubo_disabled) { @@ -802,7 +740,12 @@ namespace MeshShader AssignUniforms(Program, uniforms, Uniforms("ambient")); TU_Albedo = 3; - AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo")); + AssignTextureUnit(Program, { + TexUnit(0, "DiffuseMap"), + TexUnit(1, "SpecularMap"), + TexUnit(2, "SSAO"), + TexUnit(TU_Albedo, "Albedo") + }); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); @@ -822,7 +765,13 @@ namespace MeshShader TU_Albedo = 3; TU_detail = 4; - AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo", TU_detail, "Detail")); + AssignTextureUnit(Program, { + TexUnit(0, "DiffuseMap"), + TexUnit(1, "SpecularMap"), + TexUnit(2, "SSAO"), + TexUnit(TU_Albedo, "Albedo"), + TexUnit(TU_detail, "Detail") + }); } DetailledObjectPass2Shader *DetailledObjectPass2ShaderInstance; @@ -840,7 +789,7 @@ namespace MeshShader } TU_tex = 3; - AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); + AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); } ObjectUnlitShader *ObjectUnlitShaderInstance; @@ -859,7 +808,12 @@ namespace MeshShader } TU_Albedo = 3; - AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo")); + AssignTextureUnit(Program, { + TexUnit(0, "DiffuseMap"), + TexUnit(1, "SpecularMap"), + TexUnit(2, "SSAO"), + TexUnit(TU_Albedo, "Albedo") + }); } ObjectRefPass2Shader *ObjectRefPass2ShaderInstance; @@ -873,7 +827,12 @@ namespace MeshShader AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "windDir", "ambient")); TU_Albedo = 3; - AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo")); + AssignTextureUnit(Program, { + TexUnit(0, "DiffuseMap"), + TexUnit(1, "SpecularMap"), + TexUnit(2, "SSAO"), + TexUnit(TU_Albedo, "Albedo") + }); } GrassPass2Shader *GrassPass2ShaderInstance; @@ -889,7 +848,13 @@ namespace MeshShader TU_Albedo = 3; TU_dtex = 4; - AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_Albedo, "Albedo", TU_dtex, "dtex")); + AssignTextureUnit(Program, { + TexUnit(0, "DiffuseMap"), + TexUnit(1, "SpecularMap"), + TexUnit(2, "SSAO"), + TexUnit(TU_Albedo, "Albedo"), + TexUnit(TU_dtex, "dtex") + }); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); @@ -912,7 +877,12 @@ namespace MeshShader } TU_tex = 3; - AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_tex, "tex")); + AssignTextureUnit(Program, { + TexUnit(0, "DiffuseMap"), + TexUnit(1, "SpecularMap"), + TexUnit(2, "SSAO"), + TexUnit(TU_tex, "tex") + }); } SphereMapShader *SphereMapShaderInstance; @@ -929,8 +899,16 @@ namespace MeshShader TU_tex_detail2 = 6; TU_tex_detail3 = 7; - AssignTextureUnit(Program, TexUnit(0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", TU_tex_layout, "tex_layout", - TU_tex_detail0, "tex_detail0", TU_tex_detail1, "tex_detail1", TU_tex_detail2, "tex_detail2", TU_tex_detail3, "tex_detail3")); + AssignTextureUnit(Program, { + TexUnit(0, "DiffuseMap"), + TexUnit(1, "SpecularMap"), + TexUnit(2, "SSAO"), + TexUnit(TU_tex_layout, "tex_layout"), + TexUnit(TU_tex_detail0, "tex_detail0"), + TexUnit(TU_tex_detail1, "tex_detail1"), + TexUnit(TU_tex_detail2, "tex_detail2"), + TexUnit(TU_tex_detail3, "tex_detail3") + }); } SplattingShader *SplattingShaderInstance; @@ -972,7 +950,7 @@ namespace MeshShader } TU_tex = 0; - AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); + AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); } TransparentShader *TransparentShaderInstance; @@ -990,7 +968,7 @@ namespace MeshShader } TU_tex = 0; - AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); + AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); } TransparentFogShader *TransparentFogShaderInstance; @@ -1096,7 +1074,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/rsm.frag").c_str()); uniform_MM = glGetUniformLocation(Program, "ModelMatrix"); uniform_RSMMatrix = glGetUniformLocation(Program, "RSMMatrix"); - AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); + AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); } void RSMShader::setUniforms(const core::matrix4 &RSMMatrix, const core::matrix4 &ModelMatrix) @@ -1154,7 +1132,7 @@ namespace MeshShader glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); TU_tex = 0; - AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); + AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); } RefShadowShader *RefShadowShaderInstance; @@ -1180,7 +1158,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str()); } TU_tex = 0; - AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); + AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } @@ -1210,7 +1188,7 @@ namespace MeshShader glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); TU_tex = 0; - AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); + AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); } GrassShadowShader *GrassShadowShaderInstance; @@ -1236,7 +1214,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str()); } TU_tex = 0; - AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); + AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); AssignUniforms(Program, uniforms, Uniforms("windDir")); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -1271,8 +1249,12 @@ namespace MeshShader TU_color_tex = 1; TU_mask_tex = 2; TU_tex = 3; - AssignTextureUnit(Program, TexUnit(TU_displacement_tex, "displacement_tex", TU_color_tex, "color_tex", - TU_mask_tex, "mask_tex", TU_tex, "tex")); + AssignTextureUnit(Program, { + TexUnit(TU_displacement_tex, "displacement_tex"), + TexUnit(TU_color_tex, "color_tex"), + TexUnit(TU_mask_tex, "mask_tex"), + TexUnit(TU_tex, "tex") + }); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } From 071270cb5edfced74f4d70c2a5531552d6c1124a Mon Sep 17 00:00:00 2001 From: Marianne Gagnon Date: Fri, 18 Jul 2014 20:02:10 -0400 Subject: [PATCH 14/35] more work --- src/graphics/render_geometry.cpp | 60 +++++-- src/graphics/shaders.cpp | 272 +++++++++++++------------------ src/graphics/shaders.hpp | 26 +++ 3 files changed, 190 insertions(+), 168 deletions(-) diff --git a/src/graphics/render_geometry.cpp b/src/graphics/render_geometry.cpp index bbb73a4b8..28766c20b 100644 --- a/src/graphics/render_geometry.cpp +++ b/src/graphics/render_geometry.cpp @@ -32,17 +32,51 @@ #include -struct TexUnit +namespace RenderGeometry { - GLuint m_id; - bool m_premul_alpha; - - TexUnit(GLuint id, bool premul_alpha) + struct TexUnit { - m_id = id; - m_premul_alpha = premul_alpha; + GLuint m_id; + bool m_premul_alpha; + + TexUnit(GLuint id, bool premul_alpha) + { + m_id = id; + m_premul_alpha = premul_alpha; + } + }; + + template + std::vector TexUnits(T curr) // required on older clang versions + { + std::vector v; + v.push_back(curr); + return v; } -}; + + template + std::vector TexUnits(T curr, R... rest) // required on older clang versions + { + std::vector v; + v.push_back(curr); + VTexUnits(v, rest...); + return v; + } + + template + void VTexUnits(std::vector& v, T curr, R... rest) // required on older clang versions + { + v.push_back(curr); + VTexUnits(v, rest...); + } + + template + void VTexUnits(std::vector& v, T curr) + { + v.push_back(curr); + } +} +using namespace RenderGeometry; template void draw(const GLMesh *mesh, uniforms... Args) @@ -175,18 +209,18 @@ void IrrDriver::renderSolidFirstPass() { ScopedGPUTimer Timer(getGPUTimer(Q_SOLID_PASS1)); - std::vector object_pass1_texunits{ TexUnit(MeshShader::ObjectPass1Shader::getInstance()->TU_tex, true) }; + std::vector object_pass1_texunits = TexUnits(TexUnit(MeshShader::ObjectPass1Shader::getInstance()->TU_tex, true) ); renderMeshes1stPass(object_pass1_texunits, ListMatDefault::Arguments); renderMeshes1stPass(object_pass1_texunits, ListMatSphereMap::Arguments); renderMeshes1stPass(object_pass1_texunits, ListMatUnlit::Arguments); renderMeshes1stPass(object_pass1_texunits, ListMatDetails::Arguments); renderMeshes1stPass(object_pass1_texunits, ListMatSplatting::Arguments); - renderMeshes1stPass(std::vector{ TexUnit(MeshShader::ObjectRefPass1Shader::getInstance()->TU_tex, true) }, ListMatAlphaRef::Arguments); - renderMeshes1stPass(std::vector{ TexUnit(MeshShader::GrassPass1Shader::getInstance()->TU_tex, true) }, ListMatGrass::Arguments); - renderMeshes1stPass(std::vector{ + renderMeshes1stPass(TexUnits(TexUnit(MeshShader::ObjectRefPass1Shader::getInstance()->TU_tex, true)), ListMatAlphaRef::Arguments); + renderMeshes1stPass(TexUnits(TexUnit(MeshShader::GrassPass1Shader::getInstance()->TU_tex, true)), ListMatGrass::Arguments); + renderMeshes1stPass(TexUnits( TexUnit(MeshShader::NormalMapShader::getInstance()->TU_glossy, true), TexUnit(MeshShader::NormalMapShader::getInstance()->TU_normalmap, false) - }, ListMatNormalMap::Arguments); + ), ListMatNormalMap::Arguments); } } diff --git a/src/graphics/shaders.cpp b/src/graphics/shaders.cpp index b747c905d..e1a27476e 100644 --- a/src/graphics/shaders.cpp +++ b/src/graphics/shaders.cpp @@ -429,40 +429,79 @@ namespace UtilShader glUniform4i(uniform_color, col.getRed(), col.getGreen(), col.getBlue(), col.getAlpha()); glUniformMatrix4fv(glGetUniformLocation(Program, "ModelMatrix"), 1, GL_FALSE, core::IdentityMatrix.pointer()); } -} -struct TexUnit -{ - GLuint m_index; - const char* m_uniform; - - TexUnit(GLuint index, const char* uniform) + struct TexUnit { - m_index = index; - m_uniform = uniform; + GLuint m_index; + const char* m_uniform; + + TexUnit(GLuint index, const char* uniform) + { + m_index = index; + m_uniform = uniform; + } + }; + + template + std::vector TexUnits(T curr) // required on older clang versions + { + std::vector v; + v.push_back(curr); + return v; } -}; -static void -AssignTextureUnit(GLuint Program, const std::vector assoc) -{ - glUseProgram(Program); - for (unsigned i = 0; i < assoc.size(); i++) + template + std::vector TexUnits(T curr, R... rest) // required on older clang versions { - GLuint uniform = glGetUniformLocation(Program, assoc[i].m_uniform); - glUniform1i(uniform, assoc[i].m_index); + std::vector v; + v.push_back(curr); + VTexUnits(v, rest...); + return v; } - glUseProgram(0); -} -static void -AssignUniforms(GLuint Program, std::vector &uniforms, const std::vector &name) -{ - for (unsigned i = 0; i < name.size(); i++) + template + void VTexUnits(std::vector& v, T curr, R... rest) // required on older clang versions { - uniforms.push_back(glGetUniformLocation(Program, name[i])); + v.push_back(curr); + VTexUnits(v, rest...); + } + + template + void VTexUnits(std::vector& v, T curr) + { + v.push_back(curr); + } + + static void + AssignTextureUnit(GLuint Program, TexUnit texUnit) + { + glUseProgram(Program); + GLuint uniform = glGetUniformLocation(Program, texUnit.m_uniform); + glUniform1i(uniform, texUnit.m_index); + glUseProgram(0); + } + + template + static void AssignTextureUnit(GLuint Program, TexUnit texUnit, T... rest) + { + glUseProgram(Program); + GLuint uniform = glGetUniformLocation(Program, texUnit.m_uniform); + glUniform1i(uniform, texUnit.m_index); + AssignTextureUnit_Sub(Program, rest...); + glUseProgram(0); + } + + static void AssignTextureUnit_Sub(GLuint Program) {} + + template + static void AssignTextureUnit_Sub(GLuint Program, TexUnit texUnit, T... rest) + { + GLuint uniform = glGetUniformLocation(Program, texUnit.m_uniform); + glUniform1i(uniform, texUnit.m_index); + AssignTextureUnit_Sub(Program, rest...); } } +using namespace UtilShader; void glUniformMatrix4fvWraper(GLuint a, size_t b, unsigned c, const float *d) { @@ -486,83 +525,6 @@ void glUniform1fWrapper(GLuint a, float b) namespace MeshShader { - std::vector Uniforms(const char* c1) - { - std::vector v; - v.push_back(c1); - return v; - } - std::vector Uniforms(const char* c1, const char* c2) - { - std::vector v; - v.push_back(c1); - v.push_back(c2); - return v; - } - std::vector Uniforms(const char* c1, const char* c2, const char* c3) - { - std::vector v; - v.push_back(c1); - v.push_back(c2); - v.push_back(c3); - return v; - } - std::vector Uniforms(const char* c1, const char* c2, const char* c3, const char* c4) - { - std::vector v; - v.push_back(c1); - v.push_back(c2); - v.push_back(c3); - v.push_back(c4); - return v; - } - std::vector Uniforms(const char* c1, const char* c2, const char* c3, const char* c4, const char* c5) - { - std::vector v; - v.push_back(c1); - v.push_back(c2); - v.push_back(c3); - v.push_back(c4); - v.push_back(c5); - return v; - } - std::vector Uniforms(const char* c1, const char* c2, const char* c3, const char* c4, const char* c5, const char* c6) - { - std::vector v; - v.push_back(c1); - v.push_back(c2); - v.push_back(c3); - v.push_back(c4); - v.push_back(c5); - v.push_back(c6); - return v; - } - std::vector Uniforms(const char* c1, const char* c2, const char* c3, const char* c4, const char* c5, const char* c6, const char* c7) - { - std::vector v; - v.push_back(c1); - v.push_back(c2); - v.push_back(c3); - v.push_back(c4); - v.push_back(c5); - v.push_back(c6); - v.push_back(c7); - return v; - } - std::vector Uniforms(const char* c1, const char* c2, const char* c3, const char* c4, const char* c5, const char* c6, const char* c7, const char* c8) - { - std::vector v; - v.push_back(c1); - v.push_back(c2); - v.push_back(c3); - v.push_back(c4); - v.push_back(c5); - v.push_back(c6); - v.push_back(c7); - v.push_back(c8); - return v; - } - // Solid Normal and depth pass shaders ObjectPass1Shader::ObjectPass1Shader() { @@ -570,14 +532,14 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_pass1.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix")); + AssignUniforms("ModelMatrix", "InverseModelMatrix"); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } TU_tex = 0; - AssignTextureUnit(Program, { TexUnit(TU_tex, "tex" ) }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); } ObjectRefPass1Shader::ObjectRefPass1Shader() @@ -586,14 +548,14 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix", "TextureMatrix")); + AssignUniforms("ModelMatrix", "InverseModelMatrix", "TextureMatrix"); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } TU_tex = 0; - AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); } GrassPass1Shader::GrassPass1Shader() @@ -602,9 +564,9 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/grass_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix", "windDir")); + AssignUniforms("ModelMatrix", "InverseModelMatrix", "windDir"); TU_tex = 0; - AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); } NormalMapShader::NormalMapShader() @@ -613,7 +575,7 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/normalmap.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/normalmap.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix")); + AssignUniforms("ModelMatrix", "InverseModelMatrix"); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -621,7 +583,7 @@ namespace MeshShader } TU_normalmap = 1; TU_glossy = 0; - AssignTextureUnit(Program, { TexUnit(TU_normalmap, "normalMap"), TexUnit(TU_glossy, "DiffuseForAlpha") }); + AssignTextureUnit(Program, TexUnit(TU_normalmap, "normalMap"), TexUnit(TU_glossy, "DiffuseForAlpha")); } InstancedObjectPass1Shader::InstancedObjectPass1Shader() @@ -632,7 +594,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_pass1.frag").c_str()); TU_tex = 0; - AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -650,7 +612,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str()); TU_tex = 0; - AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -667,9 +629,9 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/instanced_grass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/encode_normal.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass1.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("windDir")); + AssignUniforms("windDir"); TU_tex = 0; - AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -686,7 +648,7 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_pass2.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "TextureMatrix", "ambient")); + AssignUniforms("ModelMatrix", "TextureMatrix", "ambient"); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -694,12 +656,12 @@ namespace MeshShader } TU_Albedo = 3; - AssignTextureUnit(Program, { + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap"), TexUnit(1, "SpecularMap"), TexUnit(2, "SSAO"), TexUnit(TU_Albedo, "Albedo") - }); + ); } ObjectPass2Shader *ObjectPass2ShaderInstance; @@ -711,15 +673,15 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/instanced_object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_pass2.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ambient")); + AssignUniforms("ambient"); TU_Albedo = 3; - AssignTextureUnit(Program, { + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap"), TexUnit(1, "SpecularMap"), TexUnit(2, "SSAO"), TexUnit(TU_Albedo, "Albedo") - }); + ); if (!UserConfigParams::m_ubo_disabled) { @@ -737,15 +699,15 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/instanced_object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass2.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ambient")); + AssignUniforms("ambient"); TU_Albedo = 3; - AssignTextureUnit(Program, { + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap"), TexUnit(1, "SpecularMap"), TexUnit(2, "SSAO"), TexUnit(TU_Albedo, "Albedo") - }); + ); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); @@ -759,19 +721,19 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/detailledobject_pass2.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "ambient")); + AssignUniforms("ModelMatrix", "ambient"); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); TU_Albedo = 3; TU_detail = 4; - AssignTextureUnit(Program, { + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap"), TexUnit(1, "SpecularMap"), TexUnit(2, "SSAO"), TexUnit(TU_Albedo, "Albedo"), TexUnit(TU_detail, "Detail") - }); + ); } DetailledObjectPass2Shader *DetailledObjectPass2ShaderInstance; @@ -781,7 +743,7 @@ namespace MeshShader Program = LoadProgram( GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix")); + AssignUniforms("ModelMatrix"); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -789,7 +751,7 @@ namespace MeshShader } TU_tex = 3; - AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); } ObjectUnlitShader *ObjectUnlitShaderInstance; @@ -800,7 +762,7 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectref_pass2.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "TextureMatrix", "ambient")); + AssignUniforms("ModelMatrix", "TextureMatrix", "ambient"); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -808,12 +770,12 @@ namespace MeshShader } TU_Albedo = 3; - AssignTextureUnit(Program, { + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap"), TexUnit(1, "SpecularMap"), TexUnit(2, "SSAO"), TexUnit(TU_Albedo, "Albedo") - }); + ); } ObjectRefPass2Shader *ObjectRefPass2ShaderInstance; @@ -824,15 +786,15 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/grass_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/grass_pass2.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "windDir", "ambient")); + AssignUniforms("ModelMatrix", "windDir", "ambient"); TU_Albedo = 3; - AssignTextureUnit(Program, { + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap"), TexUnit(1, "SpecularMap"), TexUnit(2, "SSAO"), TexUnit(TU_Albedo, "Albedo") - }); + ); } GrassPass2Shader *GrassPass2ShaderInstance; @@ -844,17 +806,17 @@ namespace MeshShader GL_VERTEX_SHADER, file_manager->getAsset("shaders/instanced_grass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/grass_pass2.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("windDir", "SunDir", "ambient")); + AssignUniforms("windDir", "SunDir", "ambient"); TU_Albedo = 3; TU_dtex = 4; - AssignTextureUnit(Program, { + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap"), TexUnit(1, "SpecularMap"), TexUnit(2, "SSAO"), TexUnit(TU_Albedo, "Albedo"), TexUnit(TU_dtex, "dtex") - }); + ); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); @@ -869,7 +831,7 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getPosFromUVDepth.frag").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/objectpass_spheremap.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "InverseModelMatrix", "ambient")); + AssignUniforms("ModelMatrix", "InverseModelMatrix", "ambient"); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -877,12 +839,12 @@ namespace MeshShader } TU_tex = 3; - AssignTextureUnit(Program, { + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap"), TexUnit(1, "SpecularMap"), TexUnit(2, "SSAO"), TexUnit(TU_tex, "tex") - }); + ); } SphereMapShader *SphereMapShaderInstance; @@ -892,14 +854,14 @@ namespace MeshShader Program = LoadProgram( GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/splatting.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "ambient")); + AssignUniforms("ModelMatrix", "ambient"); TU_tex_layout = 3; TU_tex_detail0 = 4; TU_tex_detail1 = 5; TU_tex_detail2 = 6; TU_tex_detail3 = 7; - AssignTextureUnit(Program, { + AssignTextureUnit(Program, TexUnit(0, "DiffuseMap"), TexUnit(1, "SpecularMap"), TexUnit(2, "SSAO"), @@ -908,7 +870,7 @@ namespace MeshShader TexUnit(TU_tex_detail1, "tex_detail1"), TexUnit(TU_tex_detail2, "tex_detail2"), TexUnit(TU_tex_detail3, "tex_detail3") - }); + ); } SplattingShader *SplattingShaderInstance; @@ -942,7 +904,7 @@ namespace MeshShader Program = LoadProgram( GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/transparent.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "TextureMatrix")); + AssignUniforms("ModelMatrix", "TextureMatrix"); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -950,7 +912,7 @@ namespace MeshShader } TU_tex = 0; - AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); } TransparentShader *TransparentShaderInstance; @@ -960,7 +922,7 @@ namespace MeshShader Program = LoadProgram( GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/transparentfog.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "TextureMatrix", "fogmax", "startH", "endH", "start", "end", "col")); + AssignUniforms("ModelMatrix", "TextureMatrix", "fogmax", "startH", "endH", "start", "end", "col"); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -968,7 +930,7 @@ namespace MeshShader } TU_tex = 0; - AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); } TransparentFogShader *TransparentFogShaderInstance; @@ -1053,7 +1015,7 @@ namespace MeshShader GL_GEOMETRY_SHADER, file_manager->getAsset("shaders/shadow.geom").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/white.frag").c_str()); } - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix")); + AssignUniforms("ModelMatrix"); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } @@ -1127,7 +1089,7 @@ namespace MeshShader GL_GEOMETRY_SHADER, file_manager->getAsset("shaders/shadow.geom").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str()); } - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix")); + AssignUniforms("ModelMatrix"); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); TU_tex = 0; @@ -1183,7 +1145,7 @@ namespace MeshShader GL_GEOMETRY_SHADER, file_manager->getAsset("shaders/shadow.geom").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str()); } - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "windDir")); + AssignUniforms("ModelMatrix", "windDir"); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); TU_tex = 0; @@ -1214,9 +1176,9 @@ namespace MeshShader GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/object_unlit.frag").c_str()); } TU_tex = 0; - AssignTextureUnit(Program, { TexUnit(TU_tex, "tex") }); + AssignTextureUnit(Program, TexUnit(TU_tex, "tex")); - AssignUniforms(Program, uniforms, Uniforms("windDir")); + AssignUniforms("windDir"); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } @@ -1228,7 +1190,7 @@ namespace MeshShader Program = LoadProgram( GL_VERTEX_SHADER, file_manager->getAsset("shaders/displace.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/white.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix")); + AssignUniforms("ModelMatrix"); if (!UserConfigParams::m_ubo_disabled) { GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); @@ -1244,17 +1206,17 @@ namespace MeshShader Program = LoadProgram( GL_VERTEX_SHADER, file_manager->getAsset("shaders/displace.vert").c_str(), GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/displace.frag").c_str()); - AssignUniforms(Program, uniforms, Uniforms("ModelMatrix", "dir", "dir2" )); + AssignUniforms("ModelMatrix", "dir", "dir2"); TU_displacement_tex = 0; TU_color_tex = 1; TU_mask_tex = 2; TU_tex = 3; - AssignTextureUnit(Program, { + AssignTextureUnit(Program, TexUnit(TU_displacement_tex, "displacement_tex"), TexUnit(TU_color_tex, "color_tex"), TexUnit(TU_mask_tex, "mask_tex"), TexUnit(TU_tex, "tex") - }); + ); GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); } diff --git a/src/graphics/shaders.hpp b/src/graphics/shaders.hpp index e5d0eecd2..baf16361c 100644 --- a/src/graphics/shaders.hpp +++ b/src/graphics/shaders.hpp @@ -109,6 +109,19 @@ class ShaderHelper { protected: std::vector uniforms; + + void AssignUniforms(const char* name) + { + uniforms.push_back(glGetUniformLocation(Program, name)); + } + + template + void AssignUniforms(const char* name, T... rest) + { + uniforms.push_back(glGetUniformLocation(Program, name)); + AssignUniforms(rest...); + } + public: GLuint Program; @@ -125,6 +138,19 @@ class ShaderHelperSingleton : public Singleton { protected: std::vector uniforms; + + void AssignUniforms(const char* name) + { + uniforms.push_back(glGetUniformLocation(Program, name)); + } + + template + void AssignUniforms(const char* name, T... rest) + { + uniforms.push_back(glGetUniformLocation(Program, name)); + AssignUniforms(rest...); + } + public: friend class Singleton; GLuint Program; From 7e8fb6bc16a71e0c9c5ea7a61b7d6d2266f822c3 Mon Sep 17 00:00:00 2001 From: Marianne Gagnon Date: Fri, 18 Jul 2014 20:11:40 -0400 Subject: [PATCH 15/35] Fix duplicated paramter name --- src/graphics/shaders.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/graphics/shaders.hpp b/src/graphics/shaders.hpp index baf16361c..33b6be226 100644 --- a/src/graphics/shaders.hpp +++ b/src/graphics/shaders.hpp @@ -144,8 +144,8 @@ protected: uniforms.push_back(glGetUniformLocation(Program, name)); } - template - void AssignUniforms(const char* name, T... rest) + template + void AssignUniforms(const char* name, U... rest) { uniforms.push_back(glGetUniformLocation(Program, name)); AssignUniforms(rest...); From 01ed87ec1b7b9a683597af7a407c245868b915b1 Mon Sep 17 00:00:00 2001 From: Marianne Gagnon Date: Fri, 18 Jul 2014 20:30:35 -0400 Subject: [PATCH 16/35] continue --- src/graphics/render_geometry.cpp | 45 ++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/src/graphics/render_geometry.cpp b/src/graphics/render_geometry.cpp index 28766c20b..9f5b8ba86 100644 --- a/src/graphics/render_geometry.cpp +++ b/src/graphics/render_geometry.cpp @@ -292,14 +292,43 @@ void IrrDriver::renderSolidSecondPass() m_scene_manager->drawAll(scene::ESNRP_SOLID); - renderMeshes2ndPass({ { MeshShader::ObjectPass2Shader::getInstance()->TU_Albedo, true } }, ListMatDefault::Arguments); - renderMeshes2ndPass({ { MeshShader::ObjectRefPass2Shader::getInstance()->TU_Albedo, true } }, ListMatAlphaRef::Arguments); - renderMeshes2ndPass({ { MeshShader::SphereMapShader::getInstance()->TU_tex, true } }, ListMatSphereMap::Arguments); - renderMeshes2ndPass({ { MeshShader::DetailledObjectPass2Shader::getInstance()->TU_Albedo, true }, { MeshShader::DetailledObjectPass2Shader::getInstance()->TU_detail, true } }, ListMatDetails::Arguments); - renderMeshes2ndPass({ { MeshShader::GrassPass2Shader::getInstance()->TU_Albedo, true } }, ListMatGrass::Arguments); - renderMeshes2ndPass({ { MeshShader::ObjectUnlitShader::getInstance()->TU_tex, true } }, ListMatUnlit::Arguments); - renderMeshes2ndPass({ { 8, true }, { MeshShader::SplattingShader::getInstance()->TU_tex_layout, false }, { MeshShader::SplattingShader::getInstance()->TU_tex_detail0, true }, { MeshShader::SplattingShader::getInstance()->TU_tex_detail1, true }, { MeshShader::SplattingShader::getInstance()->TU_tex_detail2, true }, { MeshShader::SplattingShader::getInstance()->TU_tex_detail3, true } }, ListMatSplatting::Arguments); - renderMeshes2ndPass({ { MeshShader::ObjectPass2Shader::getInstance()->TU_Albedo, true } }, ListMatNormalMap::Arguments); + renderMeshes2ndPass(TexUnits( + TexUnit(MeshShader::ObjectPass2Shader::getInstance()->TU_Albedo, true) + ), ListMatDefault::Arguments); + + renderMeshes2ndPass(TexUnits( + TexUnit(MeshShader::ObjectRefPass2Shader::getInstance()->TU_Albedo, true) + ), ListMatAlphaRef::Arguments); + + renderMeshes2ndPass(TexUnits( + TexUnit(MeshShader::SphereMapShader::getInstance()->TU_tex, true) + ), ListMatSphereMap::Arguments); + + renderMeshes2ndPass(TexUnits( + TexUnit(MeshShader::DetailledObjectPass2Shader::getInstance()->TU_Albedo, true), + TexUnit(MeshShader::DetailledObjectPass2Shader::getInstance()->TU_detail, true) + ), ListMatDetails::Arguments); + + renderMeshes2ndPass(TexUnits( + TexUnit(MeshShader::GrassPass2Shader::getInstance()->TU_Albedo, true) + ), ListMatGrass::Arguments); + + renderMeshes2ndPass(TexUnits( + TexUnit(MeshShader::ObjectUnlitShader::getInstance()->TU_tex, true) + ), ListMatUnlit::Arguments); + + renderMeshes2ndPass(TexUnits( + TexUnit(8, true), + TexUnit(MeshShader::SplattingShader::getInstance()->TU_tex_layout, false), + TexUnit(MeshShader::SplattingShader::getInstance()->TU_tex_detail0, true), + TexUnit(MeshShader::SplattingShader::getInstance()->TU_tex_detail1, true), + TexUnit(MeshShader::SplattingShader::getInstance()->TU_tex_detail2, true), + TexUnit(MeshShader::SplattingShader::getInstance()->TU_tex_detail3, true) + ), ListMatSplatting::Arguments); + + renderMeshes2ndPass(TexUnits( + TexUnit(MeshShader::ObjectPass2Shader::getInstance()->TU_Albedo, true) + ), ListMatNormalMap::Arguments); } } From 476d6eda029e4db5b81e4a3d3573d23765d8b8c0 Mon Sep 17 00:00:00 2001 From: Marianne Gagnon Date: Sun, 20 Jul 2014 18:10:48 -0400 Subject: [PATCH 17/35] almost there --- src/graphics/render_geometry.cpp | 43 +++++++++++++++++++------------- src/graphics/shaders.cpp | 5 ++++ src/graphics/shaders.hpp | 10 +++++--- 3 files changed, 37 insertions(+), 21 deletions(-) diff --git a/src/graphics/render_geometry.cpp b/src/graphics/render_geometry.cpp index 9f5b8ba86..7349b46cc 100644 --- a/src/graphics/render_geometry.cpp +++ b/src/graphics/render_geometry.cpp @@ -355,16 +355,24 @@ void IrrDriver::renderTransparent() if (World::getWorld() && World::getWorld()->isFogEnabled()) { glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); - renderMeshes2ndPass({ { MeshShader::TransparentFogShader::getInstance()->TU_tex, true } }, ListBlendTransparentFog::Arguments); + renderMeshes2ndPass(TexUnits( + TexUnit(MeshShader::TransparentFogShader::getInstance()->TU_tex, true) + ), ListBlendTransparentFog::Arguments); glBlendFunc(GL_ONE, GL_ONE); - renderMeshes2ndPass({ { MeshShader::TransparentFogShader::getInstance()->TU_tex, true } }, ListAdditiveTransparentFog::Arguments); + renderMeshes2ndPass(TexUnits( + TexUnit(MeshShader::TransparentFogShader::getInstance()->TU_tex, true) + ), ListAdditiveTransparentFog::Arguments); } else { glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); - renderMeshes2ndPass({ { MeshShader::TransparentShader::getInstance()->TU_tex, true } }, ListBlendTransparent::Arguments); + renderMeshes2ndPass(TexUnits( + TexUnit(MeshShader::TransparentShader::getInstance()->TU_tex, true) + ), ListBlendTransparent::Arguments); glBlendFunc(GL_ONE, GL_ONE); - renderMeshes2ndPass({ { MeshShader::TransparentShader::getInstance()->TU_tex, true } }, ListAdditiveTransparent::Arguments); + renderMeshes2ndPass(TexUnits( + TexUnit(MeshShader::TransparentShader::getInstance()->TU_tex, true) + ), ListAdditiveTransparent::Arguments); } if (!UserConfigParams::m_dynamic_lights) @@ -542,14 +550,15 @@ void IrrDriver::renderShadows() ListMatSplatting::Arguments.clear(); m_scene_manager->drawAll(scene::ESNRP_SOLID); - renderShadow(MeshShader::ShadowShaderInstance, {}, ListMatDefault::Arguments); - renderShadow(MeshShader::ShadowShaderInstance, {}, ListMatSphereMap::Arguments); - renderShadow(MeshShader::ShadowShaderInstance, {}, ListMatUnlit::Arguments); - renderShadow(MeshShader::ShadowShaderInstance, {}, ListMatDetails::Arguments); - renderShadow(MeshShader::ShadowShaderInstance, {}, ListMatSplatting::Arguments); - renderShadow(MeshShader::ShadowShaderInstance, {}, ListMatNormalMap::Arguments); - renderShadow(MeshShader::RefShadowShaderInstance, { MeshShader::RefShadowShaderInstance->TU_tex }, ListMatAlphaRef::Arguments); - renderShadow(MeshShader::GrassShadowShaderInstance, { MeshShader::GrassShadowShaderInstance->TU_tex }, ListMatGrass::Arguments); + std::vector noTexUnits; + renderShadow(MeshShader::ShadowShaderInstance, noTexUnits, ListMatDefault::Arguments); + renderShadow(MeshShader::ShadowShaderInstance, noTexUnits, ListMatSphereMap::Arguments); + renderShadow(MeshShader::ShadowShaderInstance, noTexUnits, ListMatUnlit::Arguments); + renderShadow(MeshShader::ShadowShaderInstance, noTexUnits, ListMatDetails::Arguments); + renderShadow(MeshShader::ShadowShaderInstance, noTexUnits, ListMatSplatting::Arguments); + renderShadow(MeshShader::ShadowShaderInstance, noTexUnits, ListMatNormalMap::Arguments); + renderShadow(MeshShader::RefShadowShaderInstance, std::vector{ MeshShader::RefShadowShaderInstance->TU_tex }, ListMatAlphaRef::Arguments); + renderShadow(MeshShader::GrassShadowShaderInstance, std::vector{ MeshShader::GrassShadowShaderInstance->TU_tex }, ListMatGrass::Arguments); glDisable(GL_POLYGON_OFFSET_FILL); @@ -559,9 +568,9 @@ void IrrDriver::renderShadows() m_rtts->getRSM().Bind(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - drawRSM(rsm_matrix, { MeshShader::RSMShader::TU_tex }, ListMatDefault::Arguments); - drawRSM(rsm_matrix, { MeshShader::RSMShader::TU_tex }, ListMatSphereMap::Arguments); - drawRSM(rsm_matrix, { MeshShader::RSMShader::TU_tex }, ListMatUnlit::Arguments); - drawRSM(rsm_matrix, { MeshShader::RSMShader::TU_tex }, ListMatDetails::Arguments); - drawRSM(rsm_matrix, { MeshShader::RSMShader::TU_tex }, ListMatSplatting::Arguments); + drawRSM(rsm_matrix, std::vector{ MeshShader::RSMShader::TU_tex }, ListMatDefault::Arguments); + drawRSM(rsm_matrix, std::vector{ MeshShader::RSMShader::TU_tex }, ListMatSphereMap::Arguments); + drawRSM(rsm_matrix, std::vector{ MeshShader::RSMShader::TU_tex }, ListMatUnlit::Arguments); + drawRSM(rsm_matrix, std::vector{ MeshShader::RSMShader::TU_tex }, ListMatDetails::Arguments); + drawRSM(rsm_matrix, std::vector{ MeshShader::RSMShader::TU_tex }, ListMatSplatting::Arguments); } diff --git a/src/graphics/shaders.cpp b/src/graphics/shaders.cpp index e1a27476e..782cf0163 100644 --- a/src/graphics/shaders.cpp +++ b/src/graphics/shaders.cpp @@ -28,6 +28,11 @@ using namespace video; +GLuint UniformHelper::getUniformLocation(GLuint program, const char* name) +{ + return glGetUniformLocation(program, name); +} + Shaders::Shaders() { // Callbacks diff --git a/src/graphics/shaders.hpp b/src/graphics/shaders.hpp index 33b6be226..f7246e2bf 100644 --- a/src/graphics/shaders.hpp +++ b/src/graphics/shaders.hpp @@ -56,6 +56,8 @@ void glUniform1fWrapper(GLuint, float); struct UniformHelper { + GLuint getUniformLocation(GLuint program, const char* name); + template static void setUniformsHelper(const std::vector &uniforms) { @@ -112,13 +114,13 @@ protected: void AssignUniforms(const char* name) { - uniforms.push_back(glGetUniformLocation(Program, name)); + uniforms.push_back(UniformHelper::getUniformLocation(Program, name)); } template void AssignUniforms(const char* name, T... rest) { - uniforms.push_back(glGetUniformLocation(Program, name)); + uniforms.push_back(UniformHelper::getUniformLocation(Program, name)); AssignUniforms(rest...); } @@ -141,13 +143,13 @@ protected: void AssignUniforms(const char* name) { - uniforms.push_back(glGetUniformLocation(Program, name)); + uniforms.push_back(UniformHelper::getUniformLocation(Program, name)); } template void AssignUniforms(const char* name, U... rest) { - uniforms.push_back(glGetUniformLocation(Program, name)); + uniforms.push_back(UniformHelper::getUniformLocation(Program, name)); AssignUniforms(rest...); } From 14080e602ad02605c97f8db71164b5c7aee8623c Mon Sep 17 00:00:00 2001 From: Marianne Gagnon Date: Sun, 20 Jul 2014 18:18:35 -0400 Subject: [PATCH 18/35] Code in previous commit was incorrect, no idea why it even compiled for me --- src/graphics/shaders.cpp | 2 +- src/graphics/shaders.hpp | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/graphics/shaders.cpp b/src/graphics/shaders.cpp index 782cf0163..b160b3d6b 100644 --- a/src/graphics/shaders.cpp +++ b/src/graphics/shaders.cpp @@ -28,7 +28,7 @@ using namespace video; -GLuint UniformHelper::getUniformLocation(GLuint program, const char* name) +GLuint getUniformLocation(GLuint program, const char* name) { return glGetUniformLocation(program, name); } diff --git a/src/graphics/shaders.hpp b/src/graphics/shaders.hpp index f7246e2bf..407643328 100644 --- a/src/graphics/shaders.hpp +++ b/src/graphics/shaders.hpp @@ -56,8 +56,6 @@ void glUniform1fWrapper(GLuint, float); struct UniformHelper { - GLuint getUniformLocation(GLuint program, const char* name); - template static void setUniformsHelper(const std::vector &uniforms) { @@ -105,6 +103,7 @@ struct UniformHelper }; void bypassUBO(GLuint Program); +GLuint getUniformLocation(GLuint program, const char* name); template class ShaderHelper @@ -114,13 +113,13 @@ protected: void AssignUniforms(const char* name) { - uniforms.push_back(UniformHelper::getUniformLocation(Program, name)); + uniforms.push_back(getUniformLocation(Program, name)); } template void AssignUniforms(const char* name, T... rest) { - uniforms.push_back(UniformHelper::getUniformLocation(Program, name)); + uniforms.push_back(getUniformLocation(Program, name)); AssignUniforms(rest...); } @@ -143,13 +142,13 @@ protected: void AssignUniforms(const char* name) { - uniforms.push_back(UniformHelper::getUniformLocation(Program, name)); + uniforms.push_back(getUniformLocation(Program, name)); } template void AssignUniforms(const char* name, U... rest) { - uniforms.push_back(UniformHelper::getUniformLocation(Program, name)); + uniforms.push_back(getUniformLocation(Program, name)); AssignUniforms(rest...); } From 277aab1a0e5e298de914a1df4dcbb86323a1347a Mon Sep 17 00:00:00 2001 From: Flakebi Date: Wed, 23 Jul 2014 21:40:46 +0200 Subject: [PATCH 19/35] Fix compiling issues without debug mode in my log code --- src/graphics/camera.hpp | 1 + src/graphics/particle_kind.cpp | 1 + src/guiengine/abstract_top_level_container.hpp | 1 + src/tracks/graph_node.cpp | 1 + 4 files changed, 4 insertions(+) diff --git a/src/graphics/camera.hpp b/src/graphics/camera.hpp index 125bc439f..1113ebc60 100644 --- a/src/graphics/camera.hpp +++ b/src/graphics/camera.hpp @@ -25,6 +25,7 @@ #include "utils/no_copy.hpp" #include "utils/aligned_array.hpp" #include "utils/leak_check.hpp" +#include "utils/log.hpp" #include "utils/vec3.hpp" #include "SColor.h" diff --git a/src/graphics/particle_kind.cpp b/src/graphics/particle_kind.cpp index d332ceacf..b87703f7f 100644 --- a/src/graphics/particle_kind.cpp +++ b/src/graphics/particle_kind.cpp @@ -23,6 +23,7 @@ #include "io/file_manager.hpp" #include "io/xml_node.hpp" #include "utils/constants.hpp" +#include "utils/log.hpp" #include diff --git a/src/guiengine/abstract_top_level_container.hpp b/src/guiengine/abstract_top_level_container.hpp index 3387f51aa..15a278528 100644 --- a/src/guiengine/abstract_top_level_container.hpp +++ b/src/guiengine/abstract_top_level_container.hpp @@ -21,6 +21,7 @@ #include "guiengine/widget.hpp" +#include "utils/log.hpp" #include "utils/ptr_vector.hpp" #include // for NULL diff --git a/src/tracks/graph_node.cpp b/src/tracks/graph_node.cpp index ac5967de5..a48559830 100644 --- a/src/tracks/graph_node.cpp +++ b/src/tracks/graph_node.cpp @@ -22,6 +22,7 @@ #include "io/xml_node.hpp" #include "tracks/quad_graph.hpp" #include "tracks/quad_set.hpp" +#include "utils/log.hpp" // ---------------------------------------------------------------------------- /** Constructor. Saves the quad index which belongs to this graph node. From 7f56bf6946d166a6ac9c278f182d04cd783e2391 Mon Sep 17 00:00:00 2001 From: Marianne Gagnon Date: Wed, 23 Jul 2014 18:43:12 -0400 Subject: [PATCH 20/35] Invalid defaut value for sortable was used in list widget --- src/guiengine/widgets/list_widget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/guiengine/widgets/list_widget.cpp b/src/guiengine/widgets/list_widget.cpp index 8f920dd13..f9900302d 100644 --- a/src/guiengine/widgets/list_widget.cpp +++ b/src/guiengine/widgets/list_widget.cpp @@ -43,7 +43,7 @@ ListWidget::ListWidget() : Widget(WTYPE_LIST) m_sort_desc = false; m_sort_default = true; m_sort_col = 0; - m_sortable = false; + m_sortable = true; } // ----------------------------------------------------------------------------- From 2896b47233a5c3f8f03ee5784b1b7701825c87c4 Mon Sep 17 00:00:00 2001 From: hiker Date: Thu, 24 Jul 2014 09:26:27 +1000 Subject: [PATCH 21/35] Try to let yavis compile both debug and release mode. --- .travis.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 06ef93281..db55853be 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,11 +22,18 @@ before_install: - sudo apt-get update -qq - sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev script: - # Build commands - - mkdir build - - cd build + # First a debug build: + - mkdir build-debug + - cd build-debug - cmake .. -DCMAKE_BUILD_TYPE=Debug -DCHECK_ASSETS=off - make VERBOSE=1 -j 4 + + # Then a release build: + - mkdir ../build-release + - cd build-release + - cmake .. -DCMAKE_BUILD_TYPE=Release -DCHECK_ASSETS=off + - make VERBOSE=1 -j 4 + notifications: irc: channels: From 12259c6c48ede5e09d4a0d8013be246ca96bbf61 Mon Sep 17 00:00:00 2001 From: hiker Date: Thu, 24 Jul 2014 09:52:29 +1000 Subject: [PATCH 22/35] Try to fix travis building debug and release (cd failed before, causing travis to fail). --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index db55853be..a6bd4732b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,8 @@ script: - make VERBOSE=1 -j 4 # Then a release build: - - mkdir ../build-release + - cd .. + - mkdir build-release - cd build-release - cmake .. -DCMAKE_BUILD_TYPE=Release -DCHECK_ASSETS=off - make VERBOSE=1 -j 4 From fbf5bf41665c48cf3c2148ad71adf5c26c545355 Mon Sep 17 00:00:00 2001 From: hiker Date: Thu, 24 Jul 2014 17:43:11 +1000 Subject: [PATCH 23/35] Changed default number of laps to be 3 (and not the number of laps used last time), which seems to be a better default. Some minor cosmetic changes. --- src/race/grand_prix_data.cpp | 5 +++-- src/tracks/track.cpp | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/race/grand_prix_data.cpp b/src/race/grand_prix_data.cpp index 96de89ba8..ff7cb8380 100644 --- a/src/race/grand_prix_data.cpp +++ b/src/race/grand_prix_data.cpp @@ -111,13 +111,14 @@ void GrandPrixData::changeTrackNumber(const unsigned int number_of_tracks, rand() % available_tracks : track_indices[rand() % available_tracks]; - std::string id = track_manager->getTrack(index)->getIdent(); + const Track *track = track_manager->getTrack(index); + std::string id = track->getIdent(); // Avoid duplicate tracks if (std::find(m_tracks.begin(), m_tracks.end(), id) != m_tracks.end()) continue; m_tracks.push_back(id); - m_laps.push_back(track_manager->getTrack(index)->getDefaultNumberOfLaps()); + m_laps.push_back(track->getDefaultNumberOfLaps()); m_reversed.push_back(false); // This will be changed later in the code } } diff --git a/src/tracks/track.cpp b/src/tracks/track.cpp index 7242d5419..90e7f74f1 100644 --- a/src/tracks/track.cpp +++ b/src/tracks/track.cpp @@ -135,7 +135,7 @@ Track::Track(const std::string &filename) m_ident=="overworld"; m_minimap_x_scale = 1.0f; m_minimap_y_scale = 1.0f; - m_default_number_of_laps= UserConfigParams::m_num_laps; + m_default_number_of_laps= 3; m_all_nodes.clear(); m_all_physics_only_nodes.clear(); m_all_cached_meshes.clear(); @@ -472,6 +472,7 @@ void Track::loadTrackInfo() root->get("groups", &m_groups); root->get("internal", &m_internal); root->get("reverse", &m_reverse_available); + root->get("default-number-of-laps",&m_default_number_of_laps); root->get("push-back", &m_enable_push_back); root->get("clouds", &m_clouds); root->get("bloom", &m_bloom); @@ -483,7 +484,6 @@ void Track::loadTrackInfo() root->get("caustics-speed", &m_caustics_speed); root->get("color-level-in", &m_color_inlevel); root->get("color-level-out", &m_color_outlevel); - root->get("default-number-of-laps",&m_default_number_of_laps); // Make the default for auto-rescue in battle mode and soccer mode to be false if(m_is_arena || m_is_soccer) From f3746c068c4e17c12f1a30fc49c623c010775849 Mon Sep 17 00:00:00 2001 From: deve Date: Fri, 25 Jul 2014 13:00:01 +0200 Subject: [PATCH 24/35] Some minor fixes for MinGW compiler --- src/io/file_manager.cpp | 2 +- src/utils/aligned_array.hpp | 2 +- src/utils/vs.hpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/io/file_manager.cpp b/src/io/file_manager.cpp index b5d203ef9..e4d0ff499 100644 --- a/src/io/file_manager.cpp +++ b/src/io/file_manager.cpp @@ -723,7 +723,7 @@ void FileManager::checkAndCreateConfigDir() if(!checkAndCreateDirectory(m_user_config_dir)) { Log::error("[FileManager]", "Can't create config dir '%s" - ", falling back to '.'.", m_user_config_dir); + ", falling back to '.'.", m_user_config_dir.c_str()); m_user_config_dir = "."; } } diff --git a/src/utils/aligned_array.hpp b/src/utils/aligned_array.hpp index 3f90608b8..a97e37ba3 100644 --- a/src/utils/aligned_array.hpp +++ b/src/utils/aligned_array.hpp @@ -24,7 +24,7 @@ // btAlignedObjectArray to enable bullet SSE optimisations. // On the other hand, std::vector gives much better debugging features. // So SSE is disabled in bullet on windows debug -#if !defined(DEBUG) && (WIN32) +#if !defined(DEBUG) && defined(WIN32) # undef USE_ALIGNED #else # undef USE_ALIGNED diff --git a/src/utils/vs.hpp b/src/utils/vs.hpp index 5937202c1..ffc47ba16 100644 --- a/src/utils/vs.hpp +++ b/src/utils/vs.hpp @@ -3,7 +3,7 @@ * so we define the work arounds only for compiler versions before 18.00 */ -#if defined(WIN32) && _MSC_VER < 1800 +#if defined(WIN32) && defined(_MSC_VER) && _MSC_VER < 1800 # include # define isnan _isnan From b9eb981fccfb7db9856afc014d81001aff83b708 Mon Sep 17 00:00:00 2001 From: Deve Date: Fri, 25 Jul 2014 19:23:32 +0200 Subject: [PATCH 25/35] Some cleanup with USE_XRANDR flag --- CMakeLists.txt | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 966c5efe6..23d20b86a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,6 @@ option(CHECK_ASSETS "Check if assets are installed in ../stk-assets" ON) if(UNIX) option(USE_CPP2011 "Activate C++ 2011 mode (GCC only)" OFF) - option(USE_XRANDR "Use xrandr instead of vidmode" OFF) endif() if(MSVC) # Normally hide the option to build wiiuse on VS, since it depends @@ -29,6 +28,10 @@ else() set(WIIUSE_BUILD ON) endif() +if(UNIX AND NOT APPLE) + option(USE_XRANDR "Use xrandr instead of vidmode" OFF) +endif() + set(STK_SOURCE_DIR "src") set(STK_DATA_DIR "${PROJECT_SOURCE_DIR}/data") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin") @@ -118,10 +121,6 @@ if(USE_FRIBIDI) endif() endif() -# Xrandr -if(UNIX AND USE_XRANDR) - find_package(Xrandr REQUIRED) -endif() if(UNIX) # if(USE_CPP2011) @@ -134,13 +133,14 @@ find_package(OpenGL REQUIRED) include_directories(${OPENGL_INCLUDE_DIR}) if(UNIX AND NOT APPLE) - find_library(IRRLICHT_XF86VM_LIBRARY Xxf86vm) - mark_as_advanced(IRRLICHT_XF86VM_LIBRARY) -else() - set(IRRLICHT_XF86VM_LIBRARY "") + if(USE_XRANDR) + find_package(Xrandr REQUIRED) + else() + find_library(IRRLICHT_XF86VM_LIBRARY Xxf86vm) + mark_as_advanced(IRRLICHT_XF86VM_LIBRARY) + endif() endif() - # Set some compiler options if(UNIX) @@ -153,12 +153,12 @@ if(WIN32) # And shut up about unsafe stuff add_definitions(-D_CRT_SECURE_NO_WARNINGS) - # VS will automatically add NDEBUG for release mode, but only _DEBUG in debug mode. - # Since STK uses DEBUG, this is added for debug compilation only: + # VS will automatically add NDEBUG for release mode, but only _DEBUG in debug mode. + # Since STK uses DEBUG, this is added for debug compilation only: set_property(DIRECTORY PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG) else() # All non VS generators used create only a single compile mode, so - # compile flags can be simplye be added + # compile flags can be simplye be added if(CMAKE_BUILD_TYPE MATCHES Debug) add_definitions(-DDEBUG) else() @@ -245,10 +245,16 @@ target_link_libraries(supertuxkart stkirrlicht ${CURL_LIBRARIES} ${OGGVORBIS_LIBRARIES} - ${IRRLICHT_XF86VM_LIBRARY} ${OPENAL_LIBRARY} ${OPENGL_LIBRARIES}) - + +if(UNIX AND NOT APPLE) + if(USE_XRANDR) + target_link_libraries(supertuxkart ${XRANDR_LIBRARIES}) + else() + target_link_libraries(supertuxkart ${IRRLICHT_XF86VM_LIBRARY}) + endif() +endif() if(APPLE) # In theory it would be cleaner to let CMake detect the right dependencies. In practice, this means that if a OSX user has @@ -284,11 +290,6 @@ if(USE_WIIUSE) endif() -# Xrandr -if(UNIX AND USE_XRANDR) - target_link_libraries(supertuxkart ${XRANDR_LIBRARIES}) -endif() - if(MSVC) target_link_libraries(supertuxkart iphlpapi.lib) add_custom_command(TARGET supertuxkart POST_BUILD From f87b4045617b58f2a60a1b0bcdcf18136a82e400 Mon Sep 17 00:00:00 2001 From: Vincent Lejeune Date: Sat, 26 Jul 2014 23:54:57 +0200 Subject: [PATCH 26/35] Add some doxygen on shader creation/usage --- src/graphics/shaders.cpp | 59 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/src/graphics/shaders.cpp b/src/graphics/shaders.cpp index b160b3d6b..95dbe2bb0 100644 --- a/src/graphics/shaders.cpp +++ b/src/graphics/shaders.cpp @@ -14,6 +14,65 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +/** +\page shaders_overview Shaders Overview + + \section shader_declaration Shader declaration + You need to create a class for each shader in shaders.cpp + This class should inherit from the template ShaderHelper<>. + The template first parameter is the shader class being declared and the following ones are the types + of every uniform (except samplers) required by the shaders. + + The template inheritance will provide the shader with a setUniforms() variadic function which calls + the glUniform*() that pass uniforms value to the shader according to the type given as parameter + to the template. + + The class constructor is used to + \li \ref shader_declaration_compile + \li \ref shader_declaration_uniform_names + \li \ref shader_declaration_bind_texture_unit + + Of course it's possible to use the constructor to declare others things if needed. + + \subsection shader_declaration_compile Compile the shader + + The LoadProgram() function is provided to ease shader compilation and link. + + \subsection shader_declaration_uniform_names Declare uniforms + + \subsection shader_declaration_bind_texture_unit Bind texture unit and name + + \section shader_usage + + Shader's class are singleton that can be retrieved using ShaderClassName::getInstance() which automatically + creates an instance the first time it is called. + + As the program id of a shader instance is public it can be used to bind a program : + \code + glUseProgram(MyShaderClass::getInstance()->Program); + \endcode + + To set uniforms use the automatically generated function setUniforms: + + \code + MyShaderClass::getInstance()->setUniforms(Args...) + \endcode + + A Vertex Array must be bound (VAO creation process is currently left to the reader) : + + \code + glBindVertexAttrib(vao); + \endcode + + To actually perform the rendering you also need to call a glDraw* function (left to the reader as well) : + + \code + glDrawElements(GL_TRIANGLES, count, GL_UNSIGNED_SHORT); + \endcode + +*/ + #define SHADER_NAMES #include "graphics/callbacks.hpp" From 85dd8d11a9b838f49aefe13d7ecc3d7a1665aee3 Mon Sep 17 00:00:00 2001 From: Deve Date: Sun, 27 Jul 2014 00:47:21 +0200 Subject: [PATCH 27/35] Add experimental support for multi-monitor on linux using xrandr. Now you can play STK on one screen and watch TV on the second ;-) Currently I use first (main) screen. We can detect from which screen STK was executed using xinerama. Will be improved. --- .../source/Irrlicht/CIrrDeviceLinux.cpp | 167 ++++++++++++++---- .../source/Irrlicht/CIrrDeviceLinux.h | 4 +- 2 files changed, 134 insertions(+), 37 deletions(-) diff --git a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp index b9cd2505c..5b13418a9 100644 --- a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp +++ b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp @@ -234,7 +234,7 @@ bool CIrrDeviceLinux::switchToFullscreen(bool reset) return true; if (reset) { -#ifdef _IRR_LINUX_X11_VIDMODE_ + #ifdef _IRR_LINUX_X11_VIDMODE_ if (UseXVidMode && CreationParams.Fullscreen) { XF86VidModeSwitchToMode(display, screennr, &oldVideoMode); @@ -244,9 +244,19 @@ bool CIrrDeviceLinux::switchToFullscreen(bool reset) #ifdef _IRR_LINUX_X11_RANDR_ if (UseXRandR && CreationParams.Fullscreen) { - XRRScreenConfiguration *config=XRRGetScreenInfo(display,DefaultRootWindow(display)); - XRRSetScreenConfig(display,config,DefaultRootWindow(display),oldRandrMode,oldRandrRotation,CurrentTime); - XRRFreeScreenConfigInfo(config); + XRRScreenResources* res = XRRGetScreenResources (display, DefaultRootWindow(display)); + XRROutputInfo* output_info = XRRGetOutputInfo(display, res, res->outputs[xrandr_output]); + XRRCrtcInfo* crtc = XRRGetCrtcInfo(display, res, output_info->crtc); + + Status s = XRRSetCrtcConfig(display, res, output_info->crtc, CurrentTime, + crtc->x, crtc->y, old_mode, + crtc->rotation, &res->outputs[xrandr_output], 1); + + if (s != Success) + { + printf("XRRSetCrtcConfig failed\n"); + return 0; + } } #endif return true; @@ -318,31 +328,54 @@ bool CIrrDeviceLinux::switchToFullscreen(bool reset) #endif #ifdef _IRR_LINUX_X11_RANDR_ if (XRRQueryExtension(display, &eventbase, &errorbase)) - { - s32 modeCount; - XRRScreenConfiguration *config=XRRGetScreenInfo(display,DefaultRootWindow(display)); - XRRScreenSize *modes=XRRConfigSizes(config,&modeCount); - for (s32 i = 0; inoutput %i \n", res->noutput); + printf("res->nmode %i \n", res->nmode); + + XRROutputInfo* output_info = XRRGetOutputInfo(display, res, res->outputs[xrandr_output]); + XRRCrtcInfo* crtc = XRRGetCrtcInfo(display, res, output_info->crtc); + + if (!res) { - if (bestMode==-1 && (u32)modes[i].width >= Width && (u32)modes[i].height >= Height) - bestMode = i; - else if (bestMode!=-1 && - (u32)modes[i].width >= Width && - (u32)modes[i].height >= Height && - modes[i].width <= modes[bestMode].width && - modes[i].height <= modes[bestMode].height) - bestMode = i; + printf("Couldn't get XRandR screen resources\n"); + return 0; } - if (bestMode != -1) - { - os::Printer::log("Starting randr fullscreen mode...", ELL_INFORMATION); - os::Printer::log("width: ", core::stringc(modes[bestMode].width).c_str(), ELL_INFORMATION); - os::Printer::log("height: ", core::stringc(modes[bestMode].height).c_str(), ELL_INFORMATION); - XRRSetScreenConfig(display,config,DefaultRootWindow(display),bestMode,oldRandrRotation,CurrentTime); - UseXRandR=true; + printf("wanted width: %i, wanted height: %i\n", Width, Height); + + for (int i = 0; i < res->nmode; i++) + { + const XRRModeInfo *info = &res->modes[i]; + printf("mode %i, width: %i, height: %i\n", i, info->width, info->height); + + if (bestMode == -1 && info->width == Width && info->height == Height) + { + printf("found info->width %i, info->height %i\n", info->width, info->height); + printf("output_info->nmode, %i\n", output_info->nmode); + + for (int j = 0; j < output_info->nmode; j++) + { + if (res->modes[i].id == output_info->modes[j]) + { + bestMode = i; + printf("Found best mode: %i, width: %i, height: %i\n", bestMode, info->width, info->height); + } + } + } } - XRRFreeScreenConfigInfo(config); + + Status s = XRRSetCrtcConfig(display, res, output_info->crtc, CurrentTime, + crtc->x, crtc->y, res->modes[bestMode].id, + crtc->rotation, &res->outputs[xrandr_output], 1); + + if (s != Success) + { + printf("XRRSetCrtcConfig failed\n"); + return 0; + } + + UseXRandR=true; } else #endif @@ -351,6 +384,7 @@ bool CIrrDeviceLinux::switchToFullscreen(bool reset) "to switch to fullscreen mode. Running in windowed mode instead.", ELL_WARNING); CreationParams.Fullscreen = false; } + return CreationParams.Fullscreen; } @@ -1497,18 +1531,81 @@ video::IVideoModeList* CIrrDeviceLinux::getVideoModeList() #ifdef _IRR_LINUX_X11_RANDR_ if (XRRQueryExtension(display, &eventbase, &errorbase)) { - int modeCount; - XRRScreenConfiguration *config=XRRGetScreenInfo(display,DefaultRootWindow(display)); - oldRandrMode=XRRConfigCurrentConfiguration(config,&oldRandrRotation); - XRRScreenSize *modes=XRRConfigSizes(config,&modeCount); - VideoModeList.setDesktop(defaultDepth, core::dimension2d( - modes[oldRandrMode].width, modes[oldRandrMode].height)); - for (int i = 0; inoutput %i \n", res->noutput); + printf("res->nmode %i \n", res->nmode); + + if (!res) { - VideoModeList.addMode(core::dimension2d( - modes[i].width, modes[i].height), defaultDepth); + printf("Couldn't get XRandR screen resources\n"); + return 0; } - XRRFreeScreenConfigInfo(config); + + for (int output = 0; output < res->noutput; output++) + { + output_info = XRRGetOutputInfo(display, res, res->outputs[output]); + + if (!output_info || !output_info->crtc || output_info->connection == RR_Disconnected) + { + XRRFreeOutputInfo(output_info); + printf("disconnected\n"); + continue; + } + + crtc = XRRGetCrtcInfo(display, res, output_info->crtc); + printf("crtc->x %i\n", crtc->x); + printf("crtc->y %i\n", crtc->y); + + if (!crtc || crtc->x != 0 || crtc->y != 0) + { + XRRFreeOutputInfo(output_info); + XRRFreeCrtcInfo(crtc); + printf("not crtc\n"); + continue; + } + + xrandr_output = output; + printf("found\n"); + break; + } + + if (output_info == NULL) + { + printf("error. output_info is null\n"); + return 0; + } + + printf("wanted width: %i, wanted height: %i\n", Width, Height); + + for (int i = 0; i < res->nmode; i++) + { + const XRRModeInfo *info = &res->modes[i]; + printf("mode %i, width: %i, height: %i\n", i, info->width, info->height); + + for (int j = 0; j < output_info->nmode; j++) + { + if (res->modes[i].id == output_info->modes[j]) + { + VideoModeList.addMode(core::dimension2d( + info->width, info->height), defaultDepth); + + printf("Found best mode: %i, width: %i, height: %i\n", i, info->width, info->height); + } + + if (res->modes[i].id == crtc->mode) + { + old_mode = crtc->mode; + + VideoModeList.setDesktop(defaultDepth, core::dimension2d(info->width, info->height)); + printf("current resolution, width: %i, height: %i\n", info->width, info->height); + } + } + } + + XRRFreeCrtcInfo(crtc); + XRRFreeOutputInfo(output_info); } else #endif diff --git a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.h b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.h index bc4a99a6d..ac8951b1e 100644 --- a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.h +++ b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.h @@ -394,8 +394,8 @@ namespace irr XF86VidModeModeInfo oldVideoMode; #endif #ifdef _IRR_LINUX_X11_RANDR_ - SizeID oldRandrMode; - Rotation oldRandrRotation; + int xrandr_output; + RRMode old_mode; #endif #ifdef _IRR_COMPILE_WITH_OPENGL_ GLXWindow glxWin; From 068b88cb4b2a2d2f6c1677a060de5e80ae4d7b3c Mon Sep 17 00:00:00 2001 From: Deve Date: Sun, 27 Jul 2014 19:32:12 +0200 Subject: [PATCH 28/35] Rename some variables, free memory etc. --- .../source/Irrlicht/CIrrDeviceLinux.cpp | 137 ++++++++++-------- .../source/Irrlicht/CIrrDeviceLinux.h | 4 +- 2 files changed, 79 insertions(+), 62 deletions(-) diff --git a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp index 5b13418a9..ea59bdb86 100644 --- a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp +++ b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp @@ -1,4 +1,5 @@ // Copyright (C) 2002-2012 Nikolaus Gebhardt +// Copyright (C) 2014 Dawid Gan // This file is part of the "Irrlicht Engine". // For conditions of distribution and use, see copyright notice in irrlicht.h @@ -245,17 +246,21 @@ bool CIrrDeviceLinux::switchToFullscreen(bool reset) if (UseXRandR && CreationParams.Fullscreen) { XRRScreenResources* res = XRRGetScreenResources (display, DefaultRootWindow(display)); - XRROutputInfo* output_info = XRRGetOutputInfo(display, res, res->outputs[xrandr_output]); - XRRCrtcInfo* crtc = XRRGetCrtcInfo(display, res, output_info->crtc); + XRROutputInfo* output = XRRGetOutputInfo(display, res, res->outputs[output_id]); + XRRCrtcInfo* crtc = XRRGetCrtcInfo(display, res, output->crtc); - Status s = XRRSetCrtcConfig(display, res, output_info->crtc, CurrentTime, - crtc->x, crtc->y, old_mode, - crtc->rotation, &res->outputs[xrandr_output], 1); + Status s = XRRSetCrtcConfig(display, res, output->crtc, CurrentTime, + crtc->x, crtc->y, res->modes[old_mode].id, + crtc->rotation, &res->outputs[output_id], 1); + + XRRFreeOutputInfo(output); + XRRFreeCrtcInfo(crtc); + XRRFreeScreenResources(res); if (s != Success) { printf("XRRSetCrtcConfig failed\n"); - return 0; + return false; } } #endif @@ -329,53 +334,62 @@ bool CIrrDeviceLinux::switchToFullscreen(bool reset) #ifdef _IRR_LINUX_X11_RANDR_ if (XRRQueryExtension(display, &eventbase, &errorbase)) { - XRRScreenResources* res = XRRGetScreenResources (display, DefaultRootWindow(display)); - printf("res->noutput %i \n", res->noutput); - printf("res->nmode %i \n", res->nmode); - - XRROutputInfo* output_info = XRRGetOutputInfo(display, res, res->outputs[xrandr_output]); - XRRCrtcInfo* crtc = XRRGetCrtcInfo(display, res, output_info->crtc); - + XRRScreenResources* res = XRRGetScreenResources(display, DefaultRootWindow(display)); + if (!res) { printf("Couldn't get XRandR screen resources\n"); - return 0; + return false; } + + printf("res->noutput %i \n", res->noutput); + printf("res->nmode %i \n", res->nmode); + + XRROutputInfo* output = XRRGetOutputInfo(display, res, res->outputs[output_id]); + XRRCrtcInfo* crtc = XRRGetCrtcInfo(display, res, output->crtc); printf("wanted width: %i, wanted height: %i\n", Width, Height); for (int i = 0; i < res->nmode; i++) { - const XRRModeInfo *info = &res->modes[i]; + const XRRModeInfo* info = &res->modes[i]; printf("mode %i, width: %i, height: %i\n", i, info->width, info->height); if (bestMode == -1 && info->width == Width && info->height == Height) { printf("found info->width %i, info->height %i\n", info->width, info->height); - printf("output_info->nmode, %i\n", output_info->nmode); + printf("output->nmode, %i\n", output->nmode); - for (int j = 0; j < output_info->nmode; j++) + for (int j = 0; j < output->nmode; j++) { - if (res->modes[i].id == output_info->modes[j]) - { - bestMode = i; - printf("Found best mode: %i, width: %i, height: %i\n", bestMode, info->width, info->height); - } + if (res->modes[i].id != output->modes[j]) + continue; + + bestMode = i; + printf("Found best mode: %i, width: %i, height: %i\n", bestMode, info->width, info->height); + break; } } } - Status s = XRRSetCrtcConfig(display, res, output_info->crtc, CurrentTime, - crtc->x, crtc->y, res->modes[bestMode].id, - crtc->rotation, &res->outputs[xrandr_output], 1); - - if (s != Success) + if (bestMode != -1) { - printf("XRRSetCrtcConfig failed\n"); - return 0; + Status s = XRRSetCrtcConfig(display, res, output->crtc, CurrentTime, + crtc->x, crtc->y, res->modes[bestMode].id, + crtc->rotation, &res->outputs[output_id], 1); + + XRRFreeCrtcInfo(crtc); + XRRFreeOutputInfo(output); + XRRFreeScreenResources(res); + + if (s != Success) + { + printf("XRRSetCrtcConfig failed\n"); + return false; + } + + UseXRandR=true; } - - UseXRandR=true; } else #endif @@ -1531,81 +1545,84 @@ video::IVideoModeList* CIrrDeviceLinux::getVideoModeList() #ifdef _IRR_LINUX_X11_RANDR_ if (XRRQueryExtension(display, &eventbase, &errorbase)) { - XRRScreenResources* res = XRRGetScreenResources (display, DefaultRootWindow(display)); - XRROutputInfo *output_info = NULL; - XRRCrtcInfo* crtc = NULL; - printf("res->noutput %i \n", res->noutput); - printf("res->nmode %i \n", res->nmode); + XRRScreenResources* res = XRRGetScreenResources(display, DefaultRootWindow(display)); if (!res) { printf("Couldn't get XRandR screen resources\n"); - return 0; + return NULL; } + + XRROutputInfo *output = NULL; + XRRCrtcInfo* crtc = NULL; + printf("res->noutput %i \n", res->noutput); + printf("res->nmode %i \n", res->nmode); - for (int output = 0; output < res->noutput; output++) + for (int i = 0; i < res->noutput; i++) { - output_info = XRRGetOutputInfo(display, res, res->outputs[output]); + output = XRRGetOutputInfo(display, res, res->outputs[i]); - if (!output_info || !output_info->crtc || output_info->connection == RR_Disconnected) + if (!output || !output->crtc || output->connection == RR_Disconnected) { - XRRFreeOutputInfo(output_info); + XRRFreeOutputInfo(output); printf("disconnected\n"); continue; } - crtc = XRRGetCrtcInfo(display, res, output_info->crtc); + crtc = XRRGetCrtcInfo(display, res, output->crtc); printf("crtc->x %i\n", crtc->x); printf("crtc->y %i\n", crtc->y); if (!crtc || crtc->x != 0 || crtc->y != 0) { - XRRFreeOutputInfo(output_info); XRRFreeCrtcInfo(crtc); + XRRFreeOutputInfo(output); printf("not crtc\n"); continue; } - xrandr_output = output; + output_id = i; printf("found\n"); break; } - if (output_info == NULL) + if (crtc == NULL) { - printf("error. output_info is null\n"); - return 0; + printf("error. crtc not found\n"); + XRRFreeCrtcInfo(crtc); + XRRFreeOutputInfo(output); + XRRFreeScreenResources(res); + return NULL; } - - printf("wanted width: %i, wanted height: %i\n", Width, Height); - + for (int i = 0; i < res->nmode; i++) { - const XRRModeInfo *info = &res->modes[i]; - printf("mode %i, width: %i, height: %i\n", i, info->width, info->height); + const XRRModeInfo *mode = &res->modes[i]; + printf("mode %i, width: %i, height: %i\n", i, mode->width, mode->height); - for (int j = 0; j < output_info->nmode; j++) + for (int j = 0; j < output->nmode; j++) { - if (res->modes[i].id == output_info->modes[j]) + if (res->modes[i].id == output->modes[j]) { VideoModeList.addMode(core::dimension2d( - info->width, info->height), defaultDepth); + mode->width, mode->height), defaultDepth); - printf("Found best mode: %i, width: %i, height: %i\n", i, info->width, info->height); + printf("Found mode: %i, width: %i, height: %i\n", i, mode->width, mode->height); } if (res->modes[i].id == crtc->mode) { - old_mode = crtc->mode; + old_mode = i; - VideoModeList.setDesktop(defaultDepth, core::dimension2d(info->width, info->height)); - printf("current resolution, width: %i, height: %i\n", info->width, info->height); + VideoModeList.setDesktop(defaultDepth, core::dimension2d(mode->width, mode->height)); + printf("current resolution, width: %i, height: %i\n", mode->width, mode->height); } } } XRRFreeCrtcInfo(crtc); - XRRFreeOutputInfo(output_info); + XRRFreeOutputInfo(output); + XRRFreeScreenResources(res); } else #endif diff --git a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.h b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.h index ac8951b1e..364efd382 100644 --- a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.h +++ b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.h @@ -394,8 +394,8 @@ namespace irr XF86VidModeModeInfo oldVideoMode; #endif #ifdef _IRR_LINUX_X11_RANDR_ - int xrandr_output; - RRMode old_mode; + int output_id; + int old_mode; #endif #ifdef _IRR_COMPILE_WITH_OPENGL_ GLXWindow glxWin; From 0409a84fa0b3486a87990632154123032588ab60 Mon Sep 17 00:00:00 2001 From: Deve Date: Sun, 27 Jul 2014 19:36:40 +0200 Subject: [PATCH 29/35] Remove debug output --- .../source/Irrlicht/CIrrDeviceLinux.cpp | 31 ++----------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp index ea59bdb86..9b6f6efc2 100644 --- a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp +++ b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp @@ -259,7 +259,6 @@ bool CIrrDeviceLinux::switchToFullscreen(bool reset) if (s != Success) { - printf("XRRSetCrtcConfig failed\n"); return false; } } @@ -338,35 +337,24 @@ bool CIrrDeviceLinux::switchToFullscreen(bool reset) if (!res) { - printf("Couldn't get XRandR screen resources\n"); return false; } - - printf("res->noutput %i \n", res->noutput); - printf("res->nmode %i \n", res->nmode); - + XRROutputInfo* output = XRRGetOutputInfo(display, res, res->outputs[output_id]); XRRCrtcInfo* crtc = XRRGetCrtcInfo(display, res, output->crtc); - printf("wanted width: %i, wanted height: %i\n", Width, Height); - for (int i = 0; i < res->nmode; i++) { const XRRModeInfo* info = &res->modes[i]; - printf("mode %i, width: %i, height: %i\n", i, info->width, info->height); if (bestMode == -1 && info->width == Width && info->height == Height) { - printf("found info->width %i, info->height %i\n", info->width, info->height); - printf("output->nmode, %i\n", output->nmode); - for (int j = 0; j < output->nmode; j++) { if (res->modes[i].id != output->modes[j]) continue; bestMode = i; - printf("Found best mode: %i, width: %i, height: %i\n", bestMode, info->width, info->height); break; } } @@ -384,7 +372,6 @@ bool CIrrDeviceLinux::switchToFullscreen(bool reset) if (s != Success) { - printf("XRRSetCrtcConfig failed\n"); return false; } @@ -1549,14 +1536,11 @@ video::IVideoModeList* CIrrDeviceLinux::getVideoModeList() if (!res) { - printf("Couldn't get XRandR screen resources\n"); return NULL; } XRROutputInfo *output = NULL; XRRCrtcInfo* crtc = NULL; - printf("res->noutput %i \n", res->noutput); - printf("res->nmode %i \n", res->nmode); for (int i = 0; i < res->noutput; i++) { @@ -1565,30 +1549,24 @@ video::IVideoModeList* CIrrDeviceLinux::getVideoModeList() if (!output || !output->crtc || output->connection == RR_Disconnected) { XRRFreeOutputInfo(output); - printf("disconnected\n"); continue; } crtc = XRRGetCrtcInfo(display, res, output->crtc); - printf("crtc->x %i\n", crtc->x); - printf("crtc->y %i\n", crtc->y); if (!crtc || crtc->x != 0 || crtc->y != 0) { XRRFreeCrtcInfo(crtc); XRRFreeOutputInfo(output); - printf("not crtc\n"); continue; } output_id = i; - printf("found\n"); break; } if (crtc == NULL) { - printf("error. crtc not found\n"); XRRFreeCrtcInfo(crtc); XRRFreeOutputInfo(output); XRRFreeScreenResources(res); @@ -1598,24 +1576,19 @@ video::IVideoModeList* CIrrDeviceLinux::getVideoModeList() for (int i = 0; i < res->nmode; i++) { const XRRModeInfo *mode = &res->modes[i]; - printf("mode %i, width: %i, height: %i\n", i, mode->width, mode->height); for (int j = 0; j < output->nmode; j++) { if (res->modes[i].id == output->modes[j]) { VideoModeList.addMode(core::dimension2d( - mode->width, mode->height), defaultDepth); - - printf("Found mode: %i, width: %i, height: %i\n", i, mode->width, mode->height); + mode->width, mode->height), defaultDepth); } if (res->modes[i].id == crtc->mode) { old_mode = i; - VideoModeList.setDesktop(defaultDepth, core::dimension2d(mode->width, mode->height)); - printf("current resolution, width: %i, height: %i\n", mode->width, mode->height); } } } From 992c97258f8f411b10468e1036691de29f30ab97 Mon Sep 17 00:00:00 2001 From: Deve Date: Sun, 27 Jul 2014 20:00:04 +0200 Subject: [PATCH 30/35] Few more checks --- lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp index 9b6f6efc2..26c847f01 100644 --- a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp +++ b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp @@ -245,6 +245,9 @@ bool CIrrDeviceLinux::switchToFullscreen(bool reset) #ifdef _IRR_LINUX_X11_RANDR_ if (UseXRandR && CreationParams.Fullscreen) { + if (old_mode == -1 || output_id == -1) + return false; + XRRScreenResources* res = XRRGetScreenResources (display, DefaultRootWindow(display)); XRROutputInfo* output = XRRGetOutputInfo(display, res, res->outputs[output_id]); XRRCrtcInfo* crtc = XRRGetCrtcInfo(display, res, output->crtc); @@ -332,7 +335,10 @@ bool CIrrDeviceLinux::switchToFullscreen(bool reset) #endif #ifdef _IRR_LINUX_X11_RANDR_ if (XRRQueryExtension(display, &eventbase, &errorbase)) - { + { + if (output_id == -1) + return false; + XRRScreenResources* res = XRRGetScreenResources(display, DefaultRootWindow(display)); if (!res) @@ -1532,6 +1538,9 @@ video::IVideoModeList* CIrrDeviceLinux::getVideoModeList() #ifdef _IRR_LINUX_X11_RANDR_ if (XRRQueryExtension(display, &eventbase, &errorbase)) { + old_mode = -1; + output_id = -1; + XRRScreenResources* res = XRRGetScreenResources(display, DefaultRootWindow(display)); if (!res) From 425675bdacba9c64afda49bbed78766807d8d195 Mon Sep 17 00:00:00 2001 From: hiker Date: Mon, 28 Jul 2014 09:52:44 +1000 Subject: [PATCH 31/35] Moved check_structure detection from center of kart to the front of the kart (which will work better for a photo finish). Hopefully no other side effect. --- src/karts/abstract_kart.hpp | 4 ++++ src/karts/kart.cpp | 5 +++++ src/karts/kart.hpp | 8 ++++++++ src/modes/linear_world.cpp | 2 +- src/tracks/check_structure.cpp | 2 +- 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/karts/abstract_kart.hpp b/src/karts/abstract_kart.hpp index af67b278b..7e681e418 100644 --- a/src/karts/abstract_kart.hpp +++ b/src/karts/abstract_kart.hpp @@ -157,6 +157,10 @@ public: /** Returns true if this kart has no wheels. */ bool isWheeless() const; // ------------------------------------------------------------------------ + /** Returns the coordinates of the front of the kart. This is used for + * determining when the lap line is crossed. */ + virtual const Vec3& getFrontXYZ() const = 0; + // ------------------------------------------------------------------------ /** Returns the position of a wheel relative to the kart. * \param i Index of the wheel: 0=front right, 1 = front left, 2 = rear * right, 3 = rear left. */ diff --git a/src/karts/kart.cpp b/src/karts/kart.cpp index 23f5dba20..5fad412f3 100644 --- a/src/karts/kart.cpp +++ b/src/karts/kart.cpp @@ -408,6 +408,8 @@ void Kart::reset() m_skidmarks->adjustFog(track->isFogEnabled() ); } + Vec3 front(0, 0, getKartLength()*0.5f); + m_xyz_front = getTrans()(front); m_terrain_info->update(getTrans()); @@ -1190,6 +1192,9 @@ void Kart::update(float dt) m_body->getBroadphaseHandle()->m_collisionFilterGroup = 0; } + Vec3 front(0, 0, getKartLength()*0.5f); + m_xyz_front = getTrans()(front); + m_terrain_info->update(getTrans(), epsilon); if(m_body->getBroadphaseHandle()) { diff --git a/src/karts/kart.hpp b/src/karts/kart.hpp index 8ce5ea519..35a145a36 100644 --- a/src/karts/kart.hpp +++ b/src/karts/kart.hpp @@ -102,6 +102,10 @@ private: /** Current race position (1-num_karts). */ int m_race_position; + /** The coordinates of the front of the kart, used to determine when a + * new lap is triggered. */ + Vec3 m_xyz_front; + /** True if the kart is eliminated. */ bool m_eliminated; @@ -292,6 +296,10 @@ public: /** Returns the current position of this kart in the race. */ virtual int getPosition () const { return m_race_position; } // ------------------------------------------------------------------------ + /** Returns the coordinates of the front of the kart. This is used for + * determining when the lap line is crossed. */ + virtual const Vec3& getFrontXYZ() const { return m_xyz_front; } + // ------------------------------------------------------------------------ /** Returns the initial position of this kart. */ virtual int getInitialPosition () const { return m_initial_position; } // ------------------------------------------------------------------------ diff --git a/src/modes/linear_world.cpp b/src/modes/linear_world.cpp index a7df70add..1883224b5 100644 --- a/src/modes/linear_world.cpp +++ b/src/modes/linear_world.cpp @@ -174,7 +174,7 @@ void LinearWorld::update(float dt) // rescued or eliminated if(kart->getKartAnimation()) continue; - kart_info.getTrackSector()->update(kart->getXYZ()); + kart_info.getTrackSector()->update(kart->getFrontXYZ()); kart_info.m_overall_distance = kart_info.m_race_lap * m_track->getTrackLength() + getDistanceDownTrackForKart(kart->getWorldKartId()); diff --git a/src/tracks/check_structure.cpp b/src/tracks/check_structure.cpp index a99b19ca9..6a905e7b3 100644 --- a/src/tracks/check_structure.cpp +++ b/src/tracks/check_structure.cpp @@ -100,7 +100,7 @@ void CheckStructure::update(float dt) World *world = World::getWorld(); for(unsigned int i=0; igetNumKarts(); i++) { - const Vec3 &xyz = world->getKart(i)->getXYZ(); + const Vec3 &xyz = world->getKart(i)->getFrontXYZ(); if(world->getKart(i)->getKartAnimation()) continue; // Only check active checklines. if(m_is_active[i] && isTriggered(m_previous_position[i], xyz, i)) From d3dbc4217442d23a4f0c1bdf47d5148f70a1b284 Mon Sep 17 00:00:00 2001 From: hiker Date: Mon, 28 Jul 2014 16:53:08 +1000 Subject: [PATCH 32/35] Fix #1429 (physical objects do not reset when restarting a race). --- src/tracks/track_object.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tracks/track_object.cpp b/src/tracks/track_object.cpp index f7cefd16e..8c5fd40af 100644 --- a/src/tracks/track_object.cpp +++ b/src/tracks/track_object.cpp @@ -243,9 +243,9 @@ TrackObject::~TrackObject() */ void TrackObject::reset() { - if (m_presentation != NULL) m_presentation->reset(); - - if (m_animator != NULL) m_animator->reset(); + if (m_presentation ) m_presentation->reset(); + if (m_animator ) m_animator->reset(); + if(m_physical_object) m_physical_object->reset(); } // reset // ---------------------------------------------------------------------------- From f6fcb9d8dad55462bf6011d375fa7434cd301fd7 Mon Sep 17 00:00:00 2001 From: hiker Date: Mon, 28 Jul 2014 21:07:03 +1000 Subject: [PATCH 33/35] Changed return type of getIconBasename() to be a reference. --- src/addons/addon.hpp | 2 +- src/addons/addons_manager.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/addons/addon.hpp b/src/addons/addon.hpp index 4afdf27e4..b834b6b4c 100644 --- a/src/addons/addon.hpp +++ b/src/addons/addon.hpp @@ -164,7 +164,7 @@ public: const std::string& getIconURL() const { return m_icon_url; } // ------------------------------------------------------------------------ /** Returns the name of the icon (i.e. the basename of the url). */ - const std::string getIconBasename() const { return m_icon_basename; } + const std::string& getIconBasename() const { return m_icon_basename; } // ------------------------------------------------------------------------ /** Returns the name of the addon. */ const core::stringw& getDescription() const { return m_description; } diff --git a/src/addons/addons_manager.cpp b/src/addons/addons_manager.cpp index 2c9249322..e4d24e11f 100644 --- a/src/addons/addons_manager.cpp +++ b/src/addons/addons_manager.cpp @@ -256,7 +256,7 @@ void AddonsManager::initAddons(const XMLNode *xml) Log::warn( "[AddonsManager] Removing '%s' which is not on the server anymore.\n", m_addons_list.getData()[i].getId().c_str() ); - std::string icon = m_addons_list.getData()[i].getIconBasename(); + const std::string &icon = m_addons_list.getData()[i].getIconBasename(); std::string icon_file =file_manager->getAddonsFile("icons/"+icon); if(file_manager->fileExists(icon_file)) { From dbe722316a82ba965c20b6afceff4ad751594511 Mon Sep 17 00:00:00 2001 From: hiker Date: Mon, 28 Jul 2014 21:07:39 +1000 Subject: [PATCH 34/35] If an addon icon can not be shown, delete the image file (which will trigger a re-download on the next start). --- src/addons/addon.cpp | 12 ++++++++++++ src/addons/addon.hpp | 2 ++ src/guiengine/widgets/icon_button_widget.hpp | 9 ++++++++- src/states_screens/dialogs/addons_loading.cpp | 7 +++++++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/addons/addon.cpp b/src/addons/addon.cpp index 96523a32b..052d532a1 100644 --- a/src/addons/addon.cpp +++ b/src/addons/addon.cpp @@ -216,3 +216,15 @@ bool Addon::filterByWords(const core::stringw words) const return false; } // filterByWords + +// ---------------------------------------------------------------------------- +/** Deletes the icon file of this addon, and marks it to be re-downloaded (next + * time AddonsManager::downloadIcons() is called. + */ +void Addon::deleteInvalidIconFile() +{ + m_icon_ready = false; + std::string icon = file_manager->getAddonsFile("icons/"+m_icon_basename); + file_manager->removeFile(icon); + m_installed = false; +} // redownloadIcon diff --git a/src/addons/addon.hpp b/src/addons/addon.hpp index b834b6b4c..4a8b166e8 100644 --- a/src/addons/addon.hpp +++ b/src/addons/addon.hpp @@ -130,6 +130,8 @@ public: Addon() {}; /** Initialises the object from an XML node. */ Addon(const XMLNode &xml); + + void deleteInvalidIconFile(); // ------------------------------------------------------------------------ /** Sets the sort order used in the comparison function. It is static, so * that each instance can access the sort order. */ diff --git a/src/guiengine/widgets/icon_button_widget.hpp b/src/guiengine/widgets/icon_button_widget.hpp index 6a429d105..b64375a34 100644 --- a/src/guiengine/widgets/icon_button_widget.hpp +++ b/src/guiengine/widgets/icon_button_widget.hpp @@ -109,7 +109,7 @@ namespace GUIEngine */ void setImage(const char* path_to_texture, IconPathType path_type=ICON_PATH_TYPE_NO_CHANGE); - + // -------------------------------------------------------------------- /** Convenience function taking std::string. */ void setImage(const std::string &path_to_texture, IconPathType path_type=ICON_PATH_TYPE_NO_CHANGE) @@ -117,6 +117,7 @@ namespace GUIEngine setImage(path_to_texture.c_str(), path_type); } + // -------------------------------------------------------------------- /** * Change the texture used for this icon. * \pre At the moment, the new texture must have the same aspct ratio @@ -126,16 +127,22 @@ namespace GUIEngine */ void setImage(irr::video::ITexture* texture); + // -------------------------------------------------------------------- void setHighlightedImage(irr::video::ITexture* texture) { m_highlight_texture = texture; } + // -------------------------------------------------------------------- /** \brief override from base class */ virtual EventPropagation focused(const int playerID); + // -------------------------------------------------------------------- /** \brief override from base class */ virtual void unfocused(const int playerID, Widget* new_focus); + // -------------------------------------------------------------------- + /** Returns the texture of this button. */ + const video::ITexture* getTexture() const { return m_texture; } }; } diff --git a/src/states_screens/dialogs/addons_loading.cpp b/src/states_screens/dialogs/addons_loading.cpp index 1d82e4b13..1ebf2f3ad 100644 --- a/src/states_screens/dialogs/addons_loading.cpp +++ b/src/states_screens/dialogs/addons_loading.cpp @@ -294,6 +294,13 @@ void AddonsLoading::onUpdate(float delta) const std::string icon = "icons/"+m_addon.getIconBasename(); m_icon->setImage( file_manager->getAddonsFile(icon).c_str(), IconButtonWidget::ICON_PATH_TYPE_ABSOLUTE ); + // Check if there was an error displaying the icon. If so, the icon + // file is (likely) corrupt, and the file needs to be downloaded again. + std::string s = m_icon->getTexture()->getName().getPath().c_str(); + if(StringUtils::getBasename(s)!=StringUtils::getBasename(icon)) + { + m_addon.deleteInvalidIconFile(); + } m_icon_shown = true; } } // onUpdate From 46f73e8ecc1429d3786ff4eb02e6799761f12a14 Mon Sep 17 00:00:00 2001 From: Deve Date: Mon, 28 Jul 2014 19:20:46 +0200 Subject: [PATCH 35/35] Some improvements for xrandr - choose best available refresh rate - if resolution doesn't exist, choose first available - other minor changes. Works fine with Gnome, but I notices some issues on Openbox and Unity. --- .../source/Irrlicht/CIrrDeviceLinux.cpp | 151 ++++++++++-------- .../source/Irrlicht/CIrrDeviceLinux.h | 4 +- 2 files changed, 84 insertions(+), 71 deletions(-) diff --git a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp index 26c847f01..44c1bb895 100644 --- a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp +++ b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.cpp @@ -245,25 +245,20 @@ bool CIrrDeviceLinux::switchToFullscreen(bool reset) #ifdef _IRR_LINUX_X11_RANDR_ if (UseXRandR && CreationParams.Fullscreen) { - if (old_mode == -1 || output_id == -1) - return false; + XRRScreenResources* res = XRRGetScreenResources(display, DefaultRootWindow(display)); + XRROutputInfo* output = XRRGetOutputInfo(display, res, output_id); + XRRCrtcInfo* crtc = XRRGetCrtcInfo(display, res, output->crtc); + + Status s = XRRSetCrtcConfig(display, res, output->crtc, CurrentTime, + crtc->x, crtc->y, old_mode, + crtc->rotation, &output_id, 1); - XRRScreenResources* res = XRRGetScreenResources (display, DefaultRootWindow(display)); - XRROutputInfo* output = XRRGetOutputInfo(display, res, res->outputs[output_id]); - XRRCrtcInfo* crtc = XRRGetCrtcInfo(display, res, output->crtc); - - Status s = XRRSetCrtcConfig(display, res, output->crtc, CurrentTime, - crtc->x, crtc->y, res->modes[old_mode].id, - crtc->rotation, &res->outputs[output_id], 1); - XRRFreeOutputInfo(output); XRRFreeCrtcInfo(crtc); XRRFreeScreenResources(res); - - if (s != Success) - { + + if (s != Success) return false; - } } #endif return true; @@ -336,53 +331,74 @@ bool CIrrDeviceLinux::switchToFullscreen(bool reset) #ifdef _IRR_LINUX_X11_RANDR_ if (XRRQueryExtension(display, &eventbase, &errorbase)) { - if (output_id == -1) - return false; - XRRScreenResources* res = XRRGetScreenResources(display, DefaultRootWindow(display)); - if (!res) + if (!res) { - return false; + CreationParams.Fullscreen = false; + return CreationParams.Fullscreen; } - XRROutputInfo* output = XRRGetOutputInfo(display, res, res->outputs[output_id]); + XRROutputInfo* output = XRRGetOutputInfo(display, res, output_id); XRRCrtcInfo* crtc = XRRGetCrtcInfo(display, res, output->crtc); + float refresh_rate, refresh_rate_new; - for (int i = 0; i < res->nmode; i++) + for (int i = 0; i < res->nmode; i++) { - const XRRModeInfo* info = &res->modes[i]; + const XRRModeInfo* mode = &res->modes[i]; - if (bestMode == -1 && info->width == Width && info->height == Height) + if (bestMode == -1 && mode->width == Width && mode->height == Height) { - for (int j = 0; j < output->nmode; j++) + for (int j = 0; j < output->nmode; j++) { - if (res->modes[i].id != output->modes[j]) - continue; - - bestMode = i; + if (mode->id == output->modes[j]) + { + bestMode = j; + refresh_rate = (mode->dotClock * 1000.0) / (mode->hTotal * mode->vTotal); + break; + } + } + } + else if (bestMode != -1 && mode->width == Width && mode->height == Height) + { + refresh_rate_new = (mode->dotClock * 1000.0) / (mode->hTotal * mode->vTotal); + + if (refresh_rate_new <= refresh_rate) break; + + for (int j = 0; j < output->nmode; j++) + { + if (mode->id == output->modes[j]) + { + bestMode = j; + refresh_rate = refresh_rate_new; + break; + } } } } - if (bestMode != -1) + // If video mode not found, try to use first available + if (bestMode == -1) { - Status s = XRRSetCrtcConfig(display, res, output->crtc, CurrentTime, - crtc->x, crtc->y, res->modes[bestMode].id, - crtc->rotation, &res->outputs[output_id], 1); - - XRRFreeCrtcInfo(crtc); - XRRFreeOutputInfo(output); - XRRFreeScreenResources(res); - - if (s != Success) - { - return false; - } - - UseXRandR=true; + bestMode = 0; } + + Status s = XRRSetCrtcConfig(display, res, output->crtc, CurrentTime, + crtc->x, crtc->y, output->modes[bestMode], + crtc->rotation, &output_id, 1); + + XRRFreeCrtcInfo(crtc); + XRRFreeOutputInfo(output); + XRRFreeScreenResources(res); + + if (s != Success) + { + CreationParams.Fullscreen = false; + return CreationParams.Fullscreen; + } + + UseXRandR=true; } else #endif @@ -1538,16 +1554,11 @@ video::IVideoModeList* CIrrDeviceLinux::getVideoModeList() #ifdef _IRR_LINUX_X11_RANDR_ if (XRRQueryExtension(display, &eventbase, &errorbase)) { - old_mode = -1; - output_id = -1; - XRRScreenResources* res = XRRGetScreenResources(display, DefaultRootWindow(display)); - - if (!res) - { + + if (!res) return NULL; - } - + XRROutputInfo *output = NULL; XRRCrtcInfo* crtc = NULL; @@ -1570,41 +1581,43 @@ video::IVideoModeList* CIrrDeviceLinux::getVideoModeList() continue; } - output_id = i; + output_id = res->outputs[i]; break; } - + if (crtc == NULL) { XRRFreeCrtcInfo(crtc); - XRRFreeOutputInfo(output); + XRRFreeOutputInfo(output); XRRFreeScreenResources(res); return NULL; } - for (int i = 0; i < res->nmode; i++) + for (int i = 0; i < res->nmode; i++) { - const XRRModeInfo *mode = &res->modes[i]; - - for (int j = 0; j < output->nmode; j++) + const XRRModeInfo* mode = &res->modes[i]; + + for (int j = 0; j < output->nmode; j++) { - if (res->modes[i].id == output->modes[j]) + if (mode->id == output->modes[j]) { VideoModeList.addMode(core::dimension2d( mode->width, mode->height), defaultDepth); - } - - if (res->modes[i].id == crtc->mode) - { - old_mode = i; - VideoModeList.setDesktop(defaultDepth, core::dimension2d(mode->width, mode->height)); + break; } } - } - + + if (mode->id == crtc->mode) + { + old_mode = crtc->mode; + VideoModeList.setDesktop(defaultDepth, + core::dimension2d(mode->width, mode->height)); + } + } + XRRFreeCrtcInfo(crtc); - XRRFreeOutputInfo(output); - XRRFreeScreenResources(res); + XRRFreeOutputInfo(output); + XRRFreeScreenResources(res); } else #endif diff --git a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.h b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.h index 364efd382..1ed59e72e 100644 --- a/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.h +++ b/lib/irrlicht/source/Irrlicht/CIrrDeviceLinux.h @@ -394,8 +394,8 @@ namespace irr XF86VidModeModeInfo oldVideoMode; #endif #ifdef _IRR_LINUX_X11_RANDR_ - int output_id; - int old_mode; + RROutput output_id; + RRMode old_mode; #endif #ifdef _IRR_COMPILE_WITH_OPENGL_ GLXWindow glxWin;