Merge branch 'master' of https://github.com/supertuxkart/stk-code
This commit is contained in:
commit
6c9050f47a
@ -3,6 +3,7 @@
|
||||
<card is="Intel(R) HD Graphics 3000" os="windows" disable="UniformBufferObject"/>
|
||||
<card is="Intel(R) HD Graphics 3000" os="windows" disable="AdvancedPipeline"/>
|
||||
<card is="Intel(R) HD Graphics 3000" os="windows" disable="FramebufferSRGBWorking"/>
|
||||
<card is="Intel(R) HD Graphics" os="windows" disable="ForceLegacyDevice"/>
|
||||
<card contains="Intel" os="osx" disable="GI"/>
|
||||
<card contains="Intel" os="linux" version="<11.2" disable="ComputeShader"/>
|
||||
<card contains="Intel" os="linux" version="<11.2" disable="GeometryShader"/>
|
||||
@ -27,5 +28,5 @@
|
||||
<card contains="Radeon" os="linux" version="<14.300" disable="DriverRecentEnough"/>
|
||||
<card contains="Radeon" os="windows" version="<14.300" disable="DriverRecentEnough"/>
|
||||
<card contains="ATI" os="windows" version="<14.300" disable="DriverRecentEnough"/>
|
||||
<card contains="ATI" os="windows" version="<=3.1.8787" disable="ForceLegacyDevice"/>
|
||||
</graphical-restrictions>
|
||||
|
||||
|
@ -33,5 +33,8 @@
|
||||
<box proportion="1" width="98%" align="center" layout="vertical-row" padding="6">
|
||||
<list id="list_addons" x="0" y="0" width="100%" height="100%"/>
|
||||
</box>
|
||||
|
||||
<bright width="97%" id="tips_label" text="" align="center"/>
|
||||
|
||||
</div>
|
||||
</stkgui>
|
||||
|
@ -1,15 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<stkgui>
|
||||
<div x="2%" y="10%" width="96%" height="80%" layout="vertical-row" >
|
||||
<label id="title" width="100%" text_align="center" word_wrap="true" proportion="1" />
|
||||
<label id="title" width="100%" text_align="top" word_wrap="true" proportion="1" />
|
||||
|
||||
<spacer height="25" width="10" />
|
||||
|
||||
<button id="confirm" I18N="In a 'are you sure?' dialog" text="Yes" align="center"/>
|
||||
<buttonbar id="buttons" height="30%" width="30%" align="center">
|
||||
|
||||
<spacer height="15" width="10" />
|
||||
<icon-button id="confirm" icon="gui/green_check.png" I18N="In a 'are you sure?' dialog"
|
||||
text="Yes" align="center"/>
|
||||
|
||||
<button id="cancel" I18N="In a 'are you sure?' dialog" text="Cancel" align="center"/>
|
||||
<icon-button id="cancel" icon="gui/remove.png" I18N="In a 'are you sure?' dialog"
|
||||
text="Cancel" align="center"/>
|
||||
|
||||
</buttonbar>
|
||||
|
||||
<spacer height="10" width="10" />
|
||||
</div>
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: supertuxkart\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-05-30 18:52-0400\n"
|
||||
"POT-Creation-Date: 2016-08-23 20:00-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -437,7 +437,7 @@ msgstr ""
|
||||
#. I18N: ./data/gui/user_screen_tab.stkgui
|
||||
#. I18N: In the user screen
|
||||
#: src/states_screens/dialogs/message_dialog.cpp:123
|
||||
#: src/states_screens/dialogs/message_dialog.cpp:136
|
||||
#: src/states_screens/dialogs/message_dialog.cpp:135
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
@ -825,7 +825,7 @@ msgstr ""
|
||||
|
||||
#. I18N: ./data/gui/main_menu.stkgui
|
||||
#. I18N: In the main screen
|
||||
#: src/states_screens/race_gui_overworld.cpp:462
|
||||
#: src/states_screens/race_gui_overworld.cpp:465
|
||||
msgid "Tutorial"
|
||||
msgstr ""
|
||||
|
||||
@ -996,7 +996,8 @@ msgstr ""
|
||||
|
||||
#. I18N: ./data/gui/online/guest_login.stkgui
|
||||
#. I18N: ./data/gui/user_screen.stkgui
|
||||
#: src/states_screens/main_menu_screen.cpp:79
|
||||
#. I18N: Used as a verb, appears on the main menu (login button)
|
||||
#: src/states_screens/main_menu_screen.cpp:80
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
|
||||
@ -1317,7 +1318,7 @@ msgstr ""
|
||||
#. I18N: Section in the settings menu
|
||||
#: src/states_screens/options_screen_device.cpp:86
|
||||
#: src/states_screens/options_screen_input.cpp:140
|
||||
#: src/states_screens/options_screen_ui.cpp:119
|
||||
#: src/states_screens/options_screen_ui.cpp:122
|
||||
#: src/states_screens/options_screen_video.cpp:172
|
||||
#: src/states_screens/user_screen.cpp:660
|
||||
msgid "Audio"
|
||||
@ -1351,7 +1352,7 @@ msgstr ""
|
||||
#. I18N: ./data/gui/options_input.stkgui
|
||||
#. I18N: Section in the settings menu
|
||||
#: src/states_screens/options_screen_audio.cpp:68
|
||||
#: src/states_screens/options_screen_ui.cpp:121
|
||||
#: src/states_screens/options_screen_ui.cpp:124
|
||||
#: src/states_screens/options_screen_video.cpp:175
|
||||
#: src/states_screens/user_screen.cpp:662
|
||||
msgid "Controls"
|
||||
@ -1393,7 +1394,7 @@ msgstr ""
|
||||
#: src/states_screens/options_screen_audio.cpp:67
|
||||
#: src/states_screens/options_screen_device.cpp:88
|
||||
#: src/states_screens/options_screen_input.cpp:142
|
||||
#: src/states_screens/options_screen_ui.cpp:120
|
||||
#: src/states_screens/options_screen_ui.cpp:123
|
||||
#: src/states_screens/options_screen_video.cpp:174
|
||||
#: src/states_screens/server_selection.cpp:103
|
||||
msgid "Players"
|
||||
@ -1405,7 +1406,7 @@ msgstr ""
|
||||
|
||||
#. I18N: ./data/gui/options_players.stkgui
|
||||
#. I18N: In the player configuration screen
|
||||
msgid "Press enter or double-click on a player to edit him/her"
|
||||
msgid "Press enter or double-click on a player to edit their settings"
|
||||
msgstr ""
|
||||
|
||||
#. I18N: ./data/gui/options_players.stkgui
|
||||
@ -1458,7 +1459,7 @@ msgstr ""
|
||||
#: src/states_screens/options_screen_audio.cpp:65
|
||||
#: src/states_screens/options_screen_device.cpp:85
|
||||
#: src/states_screens/options_screen_input.cpp:139
|
||||
#: src/states_screens/options_screen_ui.cpp:118
|
||||
#: src/states_screens/options_screen_ui.cpp:121
|
||||
#: src/states_screens/user_screen.cpp:659
|
||||
msgid "Graphics"
|
||||
msgstr ""
|
||||
@ -1871,46 +1872,47 @@ msgstr ""
|
||||
msgid "Completed achievement \"%s\"."
|
||||
msgstr ""
|
||||
|
||||
#: src/addons/addons_manager.cpp:97 src/addons/news_manager.cpp:317
|
||||
#: src/addons/addons_manager.cpp:104 src/addons/news_manager.cpp:325
|
||||
msgid "Can't access stkaddons server..."
|
||||
msgstr ""
|
||||
|
||||
#: src/addons/news_manager.cpp:174
|
||||
#: src/addons/news_manager.cpp:182
|
||||
#, c-format
|
||||
msgid "Error downloading news: '%s'."
|
||||
msgstr ""
|
||||
|
||||
#. I18N: number of laps to race in a challenge
|
||||
#: src/challenges/challenge_data.cpp:259
|
||||
#: src/challenges/challenge_data.cpp:266
|
||||
#: src/states_screens/race_result_gui.cpp:1422
|
||||
#, c-format
|
||||
msgid "Laps : %i"
|
||||
msgid "Laps: %i"
|
||||
msgstr ""
|
||||
|
||||
#: src/challenges/challenge_data.cpp:265
|
||||
#: src/challenges/challenge_data.cpp:272
|
||||
msgid "Follow the leader"
|
||||
msgstr ""
|
||||
|
||||
#: src/challenges/challenge_data.cpp:511
|
||||
#: src/challenges/challenge_data.cpp:518
|
||||
#, c-format
|
||||
msgid "New track '%s' now available"
|
||||
msgstr ""
|
||||
|
||||
#: src/challenges/challenge_data.cpp:516
|
||||
#: src/challenges/challenge_data.cpp:523
|
||||
#, c-format
|
||||
msgid "New game mode '%s' now available"
|
||||
msgstr ""
|
||||
|
||||
#: src/challenges/challenge_data.cpp:526
|
||||
#: src/challenges/challenge_data.cpp:533
|
||||
#, c-format
|
||||
msgid "New Grand Prix '%s' now available"
|
||||
msgstr ""
|
||||
|
||||
#: src/challenges/challenge_data.cpp:530
|
||||
#: src/challenges/challenge_data.cpp:537
|
||||
#, c-format
|
||||
msgid "New difficulty '%s' now available"
|
||||
msgstr ""
|
||||
|
||||
#: src/challenges/challenge_data.cpp:540
|
||||
#: src/challenges/challenge_data.cpp:547
|
||||
#, c-format
|
||||
msgid "New kart '%s' now available"
|
||||
msgstr ""
|
||||
@ -1942,17 +1944,17 @@ msgid ""
|
||||
"created."
|
||||
msgstr ""
|
||||
|
||||
#: src/graphics/irr_driver.cpp:1896
|
||||
#: src/graphics/irr_driver.cpp:1950
|
||||
#, c-format
|
||||
msgid "FPS: %d/%d/%d - PolyCount: %d Solid, %d Shadows - LightDist : %d"
|
||||
msgstr ""
|
||||
|
||||
#: src/graphics/irr_driver.cpp:1907
|
||||
#: src/graphics/irr_driver.cpp:1961
|
||||
#, c-format
|
||||
msgid "FPS: %d/%d/%d - %d KTris"
|
||||
msgstr ""
|
||||
|
||||
#: src/guiengine/engine.cpp:1346
|
||||
#: src/guiengine/engine.cpp:1289
|
||||
msgid "Loading"
|
||||
msgstr ""
|
||||
|
||||
@ -2467,11 +2469,11 @@ msgid "Mouse axis %d %s"
|
||||
msgstr ""
|
||||
|
||||
#. I18N: shown when config file is too old
|
||||
#: src/input/device_manager.cpp:500
|
||||
#: src/input/device_manager.cpp:501
|
||||
msgid "Please re-configure your key bindings."
|
||||
msgstr ""
|
||||
|
||||
#: src/input/device_manager.cpp:501
|
||||
#: src/input/device_manager.cpp:502
|
||||
msgid "Your input config file is not compatible with this version of STK."
|
||||
msgstr ""
|
||||
|
||||
@ -2586,25 +2588,25 @@ msgstr ""
|
||||
msgid "Left thumb up"
|
||||
msgstr ""
|
||||
|
||||
#: src/input/input_manager.cpp:776
|
||||
#: src/input/input_manager.cpp:768
|
||||
#, c-format
|
||||
msgid "Ignoring '%s'. You needed to join earlier to play!"
|
||||
msgstr ""
|
||||
|
||||
#: src/input/input_manager.cpp:806
|
||||
#: src/input/input_manager.cpp:798
|
||||
msgid "Only the Game Master may act at this point!"
|
||||
msgstr ""
|
||||
|
||||
#: src/input/wiimote_manager.cpp:389
|
||||
msgid ""
|
||||
"Connect your wiimote to the Bluetooth manager, then click on Ok.Detailed "
|
||||
"Connect your wiimote to the Bluetooth manager, then click on Ok. Detailed "
|
||||
"instructions at supertuxkart.net/Wiimote"
|
||||
msgstr ""
|
||||
|
||||
#: src/input/wiimote_manager.cpp:392
|
||||
msgid ""
|
||||
"Press the buttons 1+2 simultaneously on your wiimote to put it in discovery "
|
||||
"mode, then click on Ok.Detailed instructions at supertuxkart.net/Wiimote"
|
||||
"mode, then click on Ok. Detailed instructions at supertuxkart.net/Wiimote"
|
||||
msgstr ""
|
||||
|
||||
#: src/input/wiimote_manager.cpp:415
|
||||
@ -2618,23 +2620,23 @@ msgstr[1] ""
|
||||
msgid "Could not detect any wiimote :/"
|
||||
msgstr ""
|
||||
|
||||
#: src/karts/controller/local_player_controller.cpp:204
|
||||
#: src/karts/controller/local_player_controller.cpp:206
|
||||
msgid "Penalty time!!"
|
||||
msgstr ""
|
||||
|
||||
#: src/karts/controller/local_player_controller.cpp:206
|
||||
#: src/karts/controller/local_player_controller.cpp:208
|
||||
msgid "Don't accelerate before go"
|
||||
msgstr ""
|
||||
|
||||
#: src/karts/kart.cpp:867 src/karts/kart.cpp:872
|
||||
#: src/karts/kart.cpp:852 src/karts/kart.cpp:857
|
||||
msgid "You won the race!"
|
||||
msgstr ""
|
||||
|
||||
#: src/karts/kart.cpp:872
|
||||
#: src/karts/kart.cpp:857
|
||||
msgid "You finished the race!"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1296
|
||||
#: src/main.cpp:1413
|
||||
msgid ""
|
||||
"SuperTuxKart may connect to a server to download add-ons and notify you of "
|
||||
"updates. We also collect anonymous hardware statistics to help with the "
|
||||
@ -2644,15 +2646,16 @@ msgid ""
|
||||
"edit \"Connect to the Internet\" and \"Send anonymous HW statistics\")."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1446
|
||||
#: src/main.cpp:1563
|
||||
msgid ""
|
||||
"Your driver version is too old. Please install the latest video drivers."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.cpp:1458
|
||||
#: src/main.cpp:1580
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Your OpenGL version appears to be too old. Please verify if an update for "
|
||||
"your video driver is available. SuperTuxKart requires OpenGL 3.1 or better."
|
||||
"your video driver is available. SuperTuxKart requires %s or better."
|
||||
msgstr ""
|
||||
|
||||
#: src/modes/easter_egg_hunt.cpp:202
|
||||
@ -2660,7 +2663,7 @@ msgstr ""
|
||||
msgid "Eggs: %d / %d"
|
||||
msgstr ""
|
||||
|
||||
#: src/modes/follow_the_leader.cpp:61 src/modes/follow_the_leader.cpp:293
|
||||
#: src/modes/follow_the_leader.cpp:61 src/modes/follow_the_leader.cpp:284
|
||||
msgid "Leader"
|
||||
msgstr ""
|
||||
|
||||
@ -2687,11 +2690,11 @@ msgstr ""
|
||||
msgid "WRONG WAY!"
|
||||
msgstr ""
|
||||
|
||||
#: src/modes/world.cpp:1208
|
||||
#: src/modes/world.cpp:1207
|
||||
msgid "You have been eliminated!"
|
||||
msgstr ""
|
||||
|
||||
#: src/modes/world.cpp:1211
|
||||
#: src/modes/world.cpp:1210
|
||||
#, c-format
|
||||
msgid "'%s' has been eliminated."
|
||||
msgstr ""
|
||||
@ -2700,7 +2703,7 @@ msgstr ""
|
||||
msgid "Failed to register server"
|
||||
msgstr ""
|
||||
|
||||
#: src/network/servers_manager.cpp:195
|
||||
#: src/network/servers_manager.cpp:197
|
||||
msgid "No LAN server detected"
|
||||
msgstr ""
|
||||
|
||||
@ -2815,27 +2818,33 @@ msgstr ""
|
||||
msgid "2 years"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/addons_screen.cpp:110
|
||||
#: src/states_screens/addons_screen.cpp:115
|
||||
msgid "Add-on name"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/addons_screen.cpp:111
|
||||
#: src/states_screens/addons_screen.cpp:116
|
||||
msgid "Updated date"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/addons_screen.cpp:147
|
||||
msgid ""
|
||||
"Access to the Internet is disabled. (To enable it, go to options and select "
|
||||
"tab 'User Interface')"
|
||||
msgstr ""
|
||||
|
||||
#. I18N: as in: The Old Island by Johannes Sjolund
|
||||
#: src/states_screens/addons_screen.cpp:304
|
||||
#: src/states_screens/addons_screen.cpp:343
|
||||
#, c-format
|
||||
msgctxt "addons"
|
||||
msgid "%s by %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/addons_screen.cpp:435
|
||||
#: src/states_screens/addons_screen.cpp:474
|
||||
msgid "Please wait while addons are updated"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/addons_screen.cpp:512
|
||||
#: src/states_screens/main_menu_screen.cpp:553
|
||||
#: src/states_screens/addons_screen.cpp:551
|
||||
#: src/states_screens/main_menu_screen.cpp:554
|
||||
msgid ""
|
||||
"Sorry, an error occurred while contacting the add-ons website. Make sure you "
|
||||
"are connected to the Internet and that SuperTuxKart is not blocked by a "
|
||||
@ -3210,32 +3219,32 @@ msgstr ""
|
||||
msgid "Select a track"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/feature_unlocked.cpp:199
|
||||
#: src/states_screens/feature_unlocked.cpp:200
|
||||
#, c-format
|
||||
msgid "You completed the easy challenge! Points earned on this level: %i/%i"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/feature_unlocked.cpp:203
|
||||
#: src/states_screens/feature_unlocked.cpp:204
|
||||
#, c-format
|
||||
msgid ""
|
||||
"You completed the intermediate challenge! Points earned on this level: %i/%i"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/feature_unlocked.cpp:207
|
||||
#: src/states_screens/feature_unlocked.cpp:208
|
||||
#, c-format
|
||||
msgid ""
|
||||
"You completed the difficult challenge! Points earned on this level: %i/%i"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/feature_unlocked.cpp:492
|
||||
#: src/states_screens/feature_unlocked.cpp:493
|
||||
msgid "Challenge Completed"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/feature_unlocked.cpp:529
|
||||
#: src/states_screens/feature_unlocked.cpp:530
|
||||
msgid "You unlocked track %0"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/feature_unlocked.cpp:567
|
||||
#: src/states_screens/feature_unlocked.cpp:568
|
||||
msgid "You unlocked grand prix %0"
|
||||
msgstr ""
|
||||
|
||||
@ -3271,16 +3280,16 @@ msgid "User defined"
|
||||
msgstr ""
|
||||
|
||||
#. I18N: when failing a GP
|
||||
#: src/states_screens/grand_prix_lose.cpp:153
|
||||
#: src/states_screens/grand_prix_lose.cpp:154
|
||||
msgid "Better luck next time!"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/grand_prix_win.cpp:126
|
||||
#: src/states_screens/grand_prix_win.cpp:127
|
||||
#: src/states_screens/race_result_gui.cpp:194
|
||||
msgid "You completed a challenge!"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/grand_prix_win.cpp:283
|
||||
#: src/states_screens/grand_prix_win.cpp:284
|
||||
msgid "You completed the Grand Prix!"
|
||||
msgstr ""
|
||||
|
||||
@ -3299,25 +3308,25 @@ msgid ""
|
||||
"Press the 'Select' button to join the game"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/main_menu_screen.cpp:492
|
||||
#: src/states_screens/main_menu_screen.cpp:493
|
||||
msgid ""
|
||||
"You can not play online without internet access. If you want to play online, "
|
||||
"go to options, select tab 'User Interface', and edit \"Connect to the "
|
||||
"Internet\"."
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/main_menu_screen.cpp:516
|
||||
#: src/states_screens/main_menu_screen.cpp:517
|
||||
msgid ""
|
||||
"You can not download addons without internet access. If you want to download "
|
||||
"addons, go to options, select tab 'User Interface', and edit \"Connect to "
|
||||
"the Internet\"."
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/main_menu_screen.cpp:548
|
||||
#: src/states_screens/main_menu_screen.cpp:549
|
||||
msgid "The add-ons module is currently disabled in the Options screen"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/main_menu_screen.cpp:560
|
||||
#: src/states_screens/main_menu_screen.cpp:561
|
||||
msgid "Please wait while the add-ons are loading"
|
||||
msgstr ""
|
||||
|
||||
@ -3505,14 +3514,14 @@ msgstr ""
|
||||
msgid "Keyboard %i"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/options_screen_ui.cpp:155
|
||||
#: src/states_screens/options_screen_ui.cpp:158
|
||||
msgid ""
|
||||
"In multiplayer mode, players can select handicapped (more difficult) "
|
||||
"profiles on the kart selection screen"
|
||||
msgstr ""
|
||||
|
||||
#. I18N: in the language choice, to select the same language as the OS
|
||||
#: src/states_screens/options_screen_ui.cpp:187
|
||||
#: src/states_screens/options_screen_ui.cpp:190
|
||||
msgid "System Language"
|
||||
msgstr ""
|
||||
|
||||
@ -3642,20 +3651,20 @@ msgid "GOAL!"
|
||||
msgstr ""
|
||||
|
||||
#. I18N: string used to show the author of the music. (e.g. "Sunny Song" by "John Doe")
|
||||
#: src/states_screens/race_gui_base.cpp:504
|
||||
#: src/states_screens/race_gui_base.cpp:496
|
||||
msgid "by"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/race_gui_base.cpp:612
|
||||
#: src/states_screens/race_gui_base.cpp:604
|
||||
msgid "Collect nitro!"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/race_gui_base.cpp:614
|
||||
#: src/states_screens/race_gui_base.cpp:606
|
||||
msgid "Follow the leader!"
|
||||
msgstr ""
|
||||
|
||||
#. I18N: When some GlobalPlayerIcons are hidden, write "Top 10" to show it
|
||||
#: src/states_screens/race_gui_base.cpp:780
|
||||
#: src/states_screens/race_gui_base.cpp:772
|
||||
#, c-format
|
||||
msgid "Top %i"
|
||||
msgstr ""
|
||||
@ -3669,15 +3678,15 @@ msgstr ""
|
||||
msgid "Rank"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/race_gui_overworld.cpp:469
|
||||
#: src/states_screens/race_gui_overworld.cpp:472
|
||||
msgid "Press fire to play the tutorial"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/race_gui_overworld.cpp:508
|
||||
#: src/states_screens/race_gui_overworld.cpp:511
|
||||
msgid "Type: Grand Prix"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/race_gui_overworld.cpp:539
|
||||
#: src/states_screens/race_gui_overworld.cpp:548
|
||||
msgid "Press fire to start the challenge"
|
||||
msgstr ""
|
||||
|
||||
@ -3745,10 +3754,20 @@ msgstr ""
|
||||
msgid "Grand Prix progress:"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/race_result_gui.cpp:1341
|
||||
#: src/states_screens/race_result_gui.cpp:1344
|
||||
msgid "Highscores"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/race_result_gui.cpp:1430
|
||||
#, c-format
|
||||
msgid "Difficulty: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/race_result_gui.cpp:1438
|
||||
#, c-format
|
||||
msgid "Best lap time: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/race_setup_screen.cpp:87
|
||||
msgid "All blows allowed, so catch weapons and make clever use of them!"
|
||||
msgstr ""
|
||||
@ -3767,7 +3786,7 @@ msgid "Hit others with weapons until they lose all their lives."
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/race_setup_screen.cpp:119
|
||||
msgid "Push the ball to the opposite cage to score goals."
|
||||
msgid "Push the ball into the opposite cage to score goals."
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/race_setup_screen.cpp:129
|
||||
|
@ -123,13 +123,6 @@ namespace video
|
||||
EGL_NONE, 0
|
||||
#endif
|
||||
};
|
||||
EGLint contextAttrib[] =
|
||||
{
|
||||
#ifdef EGL_VERSION_1_3
|
||||
EGL_CONTEXT_CLIENT_VERSION, 2,
|
||||
#endif
|
||||
EGL_NONE, 0
|
||||
};
|
||||
|
||||
EGLConfig config;
|
||||
EGLint num_configs;
|
||||
@ -242,11 +235,41 @@ namespace video
|
||||
eglBindAPI(EGL_OPENGL_ES_API);
|
||||
#endif
|
||||
os::Printer::log("Creating EglContext...");
|
||||
EglContext = eglCreateContext(EglDisplay, config, EGL_NO_CONTEXT, contextAttrib);
|
||||
EglContext = EGL_NO_CONTEXT;
|
||||
|
||||
if (!Params.ForceLegacyDevice)
|
||||
{
|
||||
os::Printer::log("Trying to create Context for OpenGL-ES3.");
|
||||
|
||||
EGLint contextAttrib[] =
|
||||
{
|
||||
#ifdef EGL_VERSION_1_3
|
||||
EGL_CONTEXT_CLIENT_VERSION, 3,
|
||||
#endif
|
||||
EGL_NONE, 0
|
||||
};
|
||||
|
||||
EglContext = eglCreateContext(EglDisplay, config, EGL_NO_CONTEXT, contextAttrib);
|
||||
}
|
||||
|
||||
if (EGL_NO_CONTEXT == EglContext)
|
||||
{
|
||||
os::Printer::log("FAILED\n");
|
||||
os::Printer::log("Could not create Context for OpenGL-ES2 display.");
|
||||
os::Printer::log("Trying to create Context for OpenGL-ES2.");
|
||||
|
||||
EGLint contextAttrib[] =
|
||||
{
|
||||
#ifdef EGL_VERSION_1_3
|
||||
EGL_CONTEXT_CLIENT_VERSION, 2,
|
||||
#endif
|
||||
EGL_NONE, 0
|
||||
};
|
||||
|
||||
EglContext = eglCreateContext(EglDisplay, config, EGL_NO_CONTEXT, contextAttrib);
|
||||
if (EGL_NO_CONTEXT == EglContext)
|
||||
{
|
||||
os::Printer::log("FAILED\n");
|
||||
os::Printer::log("Could not create Context for OpenGL-ES2 display.");
|
||||
}
|
||||
}
|
||||
|
||||
eglMakeCurrent(EglDisplay, EglSurface, EglSurface, EglContext);
|
||||
|
@ -678,7 +678,7 @@ namespace UserConfigParams
|
||||
"Enable Screen Space Ambient Occlusion") );
|
||||
PARAM_PREFIX IntUserConfigParam m_shadows_resolution
|
||||
PARAM_DEFAULT( IntUserConfigParam(0,
|
||||
"shadows_resoltion", &m_graphics_quality,
|
||||
"shadows_resolution", &m_graphics_quality,
|
||||
"Shadow resolution (0 = disabled") );
|
||||
PARAM_PREFIX BoolUserConfigParam m_degraded_IBL
|
||||
PARAM_DEFAULT(BoolUserConfigParam(true,
|
||||
|
@ -63,6 +63,7 @@ namespace GraphicsRestrictions
|
||||
"FramebufferSRGBWorking",
|
||||
"FramebufferSRGBCapable",
|
||||
"GI",
|
||||
"ForceLegacyDevice"
|
||||
};
|
||||
} // namespace Private
|
||||
using namespace Private;
|
||||
|
@ -57,6 +57,7 @@ namespace GraphicsRestrictions
|
||||
GR_FRAMEBUFFER_SRGB_WORKING,
|
||||
GR_FRAMEBUFFER_SRGB_CAPABLE,
|
||||
GR_GI,
|
||||
GR_FORCE_LEGACY_DEVICE,
|
||||
GR_COUNT /** MUST be last entry. */
|
||||
} ;
|
||||
|
||||
|
@ -528,20 +528,40 @@ void IrrDriver::initDevice()
|
||||
}
|
||||
|
||||
CVS->init();
|
||||
|
||||
bool recreate_device = false;
|
||||
|
||||
// Some drivers are able to create OpenGL 3.1 context, but shader-based
|
||||
// pipeline doesn't work for them. For example some radeon drivers
|
||||
// support only GLSL 1.3 and it causes STK to crash. We should force to use
|
||||
// fixed pipeline in this case.
|
||||
if (GraphicsRestrictions::isDisabled(GraphicsRestrictions::GR_FORCE_LEGACY_DEVICE))
|
||||
{
|
||||
Log::warn("irr_driver", "Driver doesn't support shader-based pipeline. "
|
||||
"Re-creating device to workaround the issue.");
|
||||
|
||||
params.ForceLegacyDevice = true;
|
||||
recreate_device = true;
|
||||
}
|
||||
|
||||
// This is the ugly hack for intel driver on linux, which doesn't
|
||||
// use sRGB-capable visual, even if we request it. This causes
|
||||
// the screen to be darker than expected. It affects mesa 10.6 and newer.
|
||||
// Though we are able to force to use the proper format on mesa side by
|
||||
// setting WithAlphaChannel parameter.
|
||||
if (!ProfileWorld::isNoGraphics() && CVS->needsSRGBCapableVisualWorkaround())
|
||||
else if (CVS->needsSRGBCapableVisualWorkaround())
|
||||
{
|
||||
Log::warn("irr_driver", "Created visual is not sRGB-capable. "
|
||||
"Re-creating device to workaround the issue.");
|
||||
m_device->closeDevice();
|
||||
m_device->drop();
|
||||
|
||||
params.WithAlphaChannel = true;
|
||||
recreate_device = true;
|
||||
}
|
||||
|
||||
if (!ProfileWorld::isNoGraphics() && recreate_device)
|
||||
{
|
||||
m_device->closeDevice();
|
||||
m_device->drop();
|
||||
|
||||
m_device = createDeviceEx(params);
|
||||
|
||||
@ -549,6 +569,8 @@ void IrrDriver::initDevice()
|
||||
{
|
||||
Log::fatal("irr_driver", "Couldn't initialise irrlicht device. Quitting.\n");
|
||||
}
|
||||
|
||||
CVS->init();
|
||||
}
|
||||
|
||||
m_scene_manager = m_device->getSceneManager();
|
||||
|
@ -143,6 +143,7 @@ Material::Material(const XMLNode *node, bool deprecated)
|
||||
node->get("disable-z-write", &m_disable_z_write );
|
||||
node->get("colorizable", &m_colorizable );
|
||||
node->get("colorization-factor", &m_colorization_factor);
|
||||
node->get("hue-settings", &m_hue_settings );
|
||||
node->get("fog", &m_fog );
|
||||
|
||||
node->get("mask", &m_mask );
|
||||
|
@ -21,6 +21,7 @@
|
||||
#define HEADER_MATERIAL_HPP
|
||||
|
||||
#include "utils/no_copy.hpp"
|
||||
#include "utils/random_generator.hpp"
|
||||
|
||||
#include <assert.h>
|
||||
#include <map>
|
||||
@ -181,6 +182,12 @@ private:
|
||||
/** Minimum resulting saturation when colorized (from 0 to 1) */
|
||||
float m_colorization_factor;
|
||||
|
||||
/** List of hue pre-defined for colorization (from 0 to 1) */
|
||||
std::vector<float> m_hue_settings;
|
||||
|
||||
/** Random generator for getting pre-defined hue */
|
||||
RandomGenerator m_random_hue;
|
||||
|
||||
/** Some textures need to be pre-multiplied, some divided to give
|
||||
* the intended effect. */
|
||||
//enum {ADJ_NONE, ADJ_PREMUL, ADJ_DIV}
|
||||
@ -291,7 +298,7 @@ public:
|
||||
* is driving on it. */
|
||||
bool isDriveReset () const { return m_drive_reset; }
|
||||
// ------------------------------------------------------------------------
|
||||
/** Returns if this material can be colorized (like red/blue in team game).
|
||||
/** Returns if this material can be colorized.
|
||||
*/
|
||||
bool isColorizable () const { return m_colorizable; }
|
||||
// ------------------------------------------------------------------------
|
||||
@ -299,6 +306,17 @@ public:
|
||||
*/
|
||||
float getColorizationFactor () const { return m_colorization_factor; }
|
||||
// ------------------------------------------------------------------------
|
||||
/** Returns a random hue when colorized.
|
||||
*/
|
||||
float getRandomHue()
|
||||
{
|
||||
if (m_hue_settings.empty())
|
||||
return 0.0f;
|
||||
const unsigned int hue = m_random_hue.get(m_hue_settings.size());
|
||||
assert(hue < m_hue_settings.size());
|
||||
return m_hue_settings[hue];
|
||||
}
|
||||
// ------------------------------------------------------------------------
|
||||
/** Returns if this material should trigger a rescue if a kart
|
||||
* crashes against it. */
|
||||
CollisionReaction getCollisionReaction() const { return m_collision_reaction; }
|
||||
|
@ -26,6 +26,19 @@
|
||||
// ----------------------------------------------------------------------------
|
||||
RenderInfo::RenderInfo(float hue, bool transparent)
|
||||
{
|
||||
m_hue = hue;
|
||||
m_static_hue = hue;
|
||||
m_transparent = transparent;
|
||||
} // RenderInfo
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void RenderInfo::setDynamicHue(irr::scene::IMesh* mesh)
|
||||
{
|
||||
unsigned int n = mesh->getMeshBufferCount();
|
||||
for (unsigned int i = 0; i < n; i++)
|
||||
{
|
||||
scene::IMeshBuffer *mb = mesh->getMeshBuffer(i);
|
||||
Material* m = material_manager->getMaterialFor(mb
|
||||
->getMaterial().getTexture(0), mb);
|
||||
m_dynamic_hue.push_back(m->getRandomHue());
|
||||
}
|
||||
} // setDynamicHue
|
||||
|
@ -20,31 +20,36 @@
|
||||
#define HEADER_RENDER_INFO_HPP
|
||||
|
||||
#include "utils/leak_check.hpp"
|
||||
#include "utils/no_copy.hpp"
|
||||
|
||||
#include <assert.h>
|
||||
#include <vector>
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace scene { class IMesh; }
|
||||
}
|
||||
|
||||
enum KartRenderType: unsigned int
|
||||
{
|
||||
KRT_DEFAULT,
|
||||
KRT_RED,
|
||||
KRT_BLUE,
|
||||
KRT_TRANSPARENT,
|
||||
};
|
||||
|
||||
/**
|
||||
* \ingroup graphics
|
||||
*/
|
||||
class RenderInfo
|
||||
class RenderInfo : public NoCopy
|
||||
{
|
||||
public:
|
||||
enum KartRenderType
|
||||
{
|
||||
KRT_DEFAULT,
|
||||
KRT_RED,
|
||||
KRT_BLUE,
|
||||
KRT_TRANSPARENT,
|
||||
};
|
||||
|
||||
private:
|
||||
float m_hue;
|
||||
float m_static_hue;
|
||||
|
||||
bool m_transparent;
|
||||
|
||||
std::vector<float> m_dynamic_hue;
|
||||
|
||||
public:
|
||||
LEAK_CHECK();
|
||||
// ------------------------------------------------------------------------
|
||||
@ -52,23 +57,34 @@ public:
|
||||
// ------------------------------------------------------------------------
|
||||
~RenderInfo() {}
|
||||
// ------------------------------------------------------------------------
|
||||
void setHue(float hue) { m_hue = hue; }
|
||||
void setHue(float hue) { m_static_hue = hue; }
|
||||
// ------------------------------------------------------------------------
|
||||
void setTransparent(bool transparent) { m_transparent = transparent; }
|
||||
// ------------------------------------------------------------------------
|
||||
float getHue() const { return m_hue; }
|
||||
float getHue() const { return m_static_hue; }
|
||||
// ------------------------------------------------------------------------
|
||||
bool isTransparent() const { return m_transparent; }
|
||||
// ------------------------------------------------------------------------
|
||||
void setKartModelRenderInfo(KartRenderType krt)
|
||||
{
|
||||
setHue(krt == RenderInfo::KRT_BLUE ? 0.66f :
|
||||
krt == RenderInfo::KRT_RED ? 1.0f : 0.0f);
|
||||
|
||||
setTransparent(krt == RenderInfo::KRT_TRANSPARENT ? true : false);
|
||||
setHue(krt == KRT_BLUE ? 0.66f : krt == KRT_RED ? 1.0f : 0.0f);
|
||||
setTransparent(krt == KRT_TRANSPARENT ? true : false);
|
||||
}
|
||||
// ------------------------------------------------------------------------
|
||||
void setRenderInfo(const RenderInfo* other) { *this = *other; }
|
||||
/** Returns true if this render info is static. ie affect all material
|
||||
* using the same hue. (like the kart colorization in soccer game)
|
||||
*/
|
||||
bool isStatic() const { return m_dynamic_hue.empty(); }
|
||||
// ------------------------------------------------------------------------
|
||||
unsigned int getNumberOfHue() const { return m_dynamic_hue.size(); }
|
||||
// ------------------------------------------------------------------------
|
||||
float getDynamicHue(unsigned int hue) const
|
||||
{
|
||||
assert(hue < m_dynamic_hue.size());
|
||||
return m_dynamic_hue[hue];
|
||||
}
|
||||
// ------------------------------------------------------------------------
|
||||
void setDynamicHue(irr::scene::IMesh* mesh);
|
||||
|
||||
}; // RenderInfo
|
||||
|
||||
|
@ -244,7 +244,7 @@ RTT::RTT(size_t width, size_t height)
|
||||
somevector.clear();
|
||||
somevector.push_back(RSM_Color);
|
||||
somevector.push_back(RSM_Normal);
|
||||
m_RSM = new FrameBuffer(somevector, RSM_Depth, 1024, 1024, true);
|
||||
m_RSM = new FrameBuffer(somevector, RSM_Depth, shadowsize0.Width, shadowsize0.Height, true);
|
||||
|
||||
RH_Red = generateRTT3D(GL_TEXTURE_3D, 32, 16, 32, GL_RGBA16F, GL_RGBA, GL_FLOAT);
|
||||
RH_Green = generateRTT3D(GL_TEXTURE_3D, 32, 16, 32, GL_RGBA16F, GL_RGBA, GL_FLOAT);
|
||||
|
@ -100,22 +100,44 @@ void STKAnimatedMesh::updateNoGL()
|
||||
if (!isMaterialInitialized)
|
||||
{
|
||||
video::IVideoDriver* driver = SceneManager->getVideoDriver();
|
||||
for (u32 i = 0; i < m->getMeshBufferCount(); ++i)
|
||||
const u32 mb_count = m->getMeshBufferCount();
|
||||
for (u32 i = 0; i < mb_count; ++i)
|
||||
{
|
||||
scene::IMeshBuffer* mb = Mesh->getMeshBuffer(i);
|
||||
bool affected = false;
|
||||
if (!m_all_parts_colorized && mb && m_mesh_render_info)
|
||||
RenderInfo* cur_ri = m_mesh_render_info;
|
||||
if (!m_all_parts_colorized && mb && cur_ri)
|
||||
{
|
||||
// Test if material is affected by hue change
|
||||
Material* m = material_manager->getMaterialFor(mb
|
||||
->getMaterial().getTexture(0), mb);
|
||||
if (m->isColorizable())
|
||||
affected = true;
|
||||
if (m_mesh_render_info && !m_mesh_render_info->isStatic())
|
||||
{
|
||||
// Convert to static render info for each mesh buffer
|
||||
assert(m_mesh_render_info->getNumberOfHue() == mb_count);
|
||||
const float hue = m_mesh_render_info->getDynamicHue(i);
|
||||
if (hue > 0.0f)
|
||||
{
|
||||
cur_ri = new RenderInfo(hue);
|
||||
m_static_render_info.push_back(cur_ri);
|
||||
affected = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
cur_ri = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Test if material is affected by static hue change
|
||||
Material* m = material_manager->getMaterialFor(mb
|
||||
->getMaterial().getTexture(0), mb);
|
||||
if (m->isColorizable())
|
||||
affected = true;
|
||||
}
|
||||
}
|
||||
|
||||
assert(cur_ri ? cur_ri->isStatic() : true);
|
||||
GLmeshes.push_back(allocateMeshBuffer(mb, m_debug_name,
|
||||
affected || m_all_parts_colorized || (m_mesh_render_info
|
||||
&& m_mesh_render_info->isTransparent()) ? m_mesh_render_info : NULL));
|
||||
affected || m_all_parts_colorized || (cur_ri
|
||||
&& cur_ri->isTransparent()) ? cur_ri : NULL));
|
||||
}
|
||||
|
||||
for (u32 i = 0; i < m->getMeshBufferCount(); ++i)
|
||||
|
@ -32,6 +32,7 @@ class STKAnimatedMesh : public irr::scene::CAnimatedMeshSceneNode, public STKMes
|
||||
protected:
|
||||
bool isMaterialInitialized;
|
||||
bool isGLInitialized;
|
||||
PtrVector<RenderInfo> m_static_render_info;
|
||||
std::vector<GLMesh> GLmeshes;
|
||||
core::matrix4 ModelViewProjectionMatrix;
|
||||
void cleanGLMeshes();
|
||||
|
@ -77,22 +77,44 @@ void STKMeshSceneNode::setReloadEachFrame(bool val)
|
||||
|
||||
void STKMeshSceneNode::createGLMeshes(RenderInfo* render_info, bool all_parts_colorized)
|
||||
{
|
||||
for (u32 i = 0; i<Mesh->getMeshBufferCount(); ++i)
|
||||
const u32 mb_count = Mesh->getMeshBufferCount();
|
||||
for (u32 i = 0; i < mb_count; ++i)
|
||||
{
|
||||
scene::IMeshBuffer* mb = Mesh->getMeshBuffer(i);
|
||||
bool affected = false;
|
||||
RenderInfo* cur_ri = render_info;
|
||||
if (!all_parts_colorized && mb && render_info)
|
||||
{
|
||||
// Test if material is affected by hue change
|
||||
Material* m = material_manager->getMaterialFor(mb
|
||||
->getMaterial().getTexture(0), mb);
|
||||
if (m->isColorizable())
|
||||
affected = true;
|
||||
if (render_info && !render_info->isStatic())
|
||||
{
|
||||
// Convert to static render info for each mesh buffer
|
||||
assert(render_info->getNumberOfHue() == mb_count);
|
||||
const float hue = render_info->getDynamicHue(i);
|
||||
if (hue > 0.0f)
|
||||
{
|
||||
cur_ri = new RenderInfo(hue);
|
||||
m_static_render_info.push_back(cur_ri);
|
||||
affected = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
cur_ri = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Test if material is affected by static hue change
|
||||
Material* m = material_manager->getMaterialFor(mb
|
||||
->getMaterial().getTexture(0), mb);
|
||||
if (m->isColorizable())
|
||||
affected = true;
|
||||
}
|
||||
}
|
||||
|
||||
assert(cur_ri ? cur_ri->isStatic() : true);
|
||||
GLmeshes.push_back(allocateMeshBuffer(mb, m_debug_name,
|
||||
affected || all_parts_colorized || (render_info &&
|
||||
render_info->isTransparent()) ? render_info : NULL));
|
||||
affected || all_parts_colorized || (cur_ri &&
|
||||
cur_ri->isTransparent()) ? cur_ri : NULL));
|
||||
}
|
||||
isMaterialInitialized = false;
|
||||
isGLInitialized = false;
|
||||
|
@ -28,6 +28,7 @@ class RenderInfo;
|
||||
class STKMeshSceneNode : public irr::scene::CMeshSceneNode, public STKMeshCommon
|
||||
{
|
||||
protected:
|
||||
PtrVector<RenderInfo> m_static_render_info;
|
||||
std::vector<GLMesh> GLmeshes;
|
||||
core::matrix4 ModelViewProjectionMatrix;
|
||||
core::vector3df windDir;
|
||||
|
@ -654,10 +654,13 @@ PROFILER_POP_CPU_MARKER();
|
||||
PROFILER_PUSH_CPU_MARKER("- Sync Stall", 0xFF, 0x0, 0x0);
|
||||
GLenum reason = glClientWaitSync(m_sync, GL_SYNC_FLUSH_COMMANDS_BIT, 0);
|
||||
|
||||
while (reason != GL_ALREADY_SIGNALED)
|
||||
if (reason != GL_ALREADY_SIGNALED)
|
||||
{
|
||||
if (reason == GL_WAIT_FAILED) break;
|
||||
reason = glClientWaitSync(m_sync, GL_SYNC_FLUSH_COMMANDS_BIT, 1000000);
|
||||
do
|
||||
{
|
||||
reason = glClientWaitSync(m_sync, GL_SYNC_FLUSH_COMMANDS_BIT, 1000000);
|
||||
}
|
||||
while (reason == GL_TIMEOUT_EXPIRED);
|
||||
}
|
||||
glDeleteSync(m_sync);
|
||||
PROFILER_POP_CPU_MARKER();
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
#include "config/user_config.hpp"
|
||||
#include "graphics/central_settings.hpp"
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "guiengine/engine.hpp"
|
||||
#include "guiengine/widgets/model_view_widget.hpp"
|
||||
#include "graphics/irr_driver.hpp"
|
||||
@ -48,6 +49,7 @@ IconButtonWidget(IconButtonWidget::SCALE_MODE_KEEP_TEXTURE_ASPECT_RATIO, false,
|
||||
m_rtt_provider = NULL;
|
||||
m_old_rtt_provider = NULL;
|
||||
m_rotation_mode = ROTATE_OFF;
|
||||
m_render_info = new RenderInfo();
|
||||
|
||||
// so that the base class doesn't complain there is no icon defined
|
||||
m_properties[PROP_ICON]="gui/main_help.png";
|
||||
@ -65,6 +67,8 @@ ModelViewWidget::~ModelViewWidget()
|
||||
delete m_old_rtt_provider;
|
||||
m_old_rtt_provider = NULL;
|
||||
m_texture = NULL;
|
||||
|
||||
delete m_render_info;
|
||||
}
|
||||
// -----------------------------------------------------------------------------
|
||||
void ModelViewWidget::add()
|
||||
@ -228,7 +232,7 @@ void ModelViewWidget::setupRTTScene()
|
||||
if (m_model_frames[0] == -1)
|
||||
{
|
||||
scene::ISceneNode* node = irr_driver->addMesh(m_models.get(0), "rtt_mesh",
|
||||
NULL, &m_render_info, m_model_render_info_affected[0]);
|
||||
NULL, m_render_info, m_model_render_info_affected[0]);
|
||||
node->setPosition(m_model_location[0].toIrrVector());
|
||||
node->setScale(m_model_scale[0].toIrrVector());
|
||||
node->setMaterialFlag(video::EMF_FOG_ENABLE, false);
|
||||
@ -238,7 +242,7 @@ void ModelViewWidget::setupRTTScene()
|
||||
{
|
||||
scene::IAnimatedMeshSceneNode* node =
|
||||
irr_driver->addAnimatedMesh((scene::IAnimatedMesh*)m_models.get(0), "rtt_mesh",
|
||||
NULL, &m_render_info, m_model_render_info_affected[0]);
|
||||
NULL, m_render_info, m_model_render_info_affected[0]);
|
||||
node->setPosition(m_model_location[0].toIrrVector());
|
||||
node->setFrameLoop(m_model_frames[0], m_model_frames[0]);
|
||||
node->setAnimationSpeed(0);
|
||||
@ -260,7 +264,7 @@ void ModelViewWidget::setupRTTScene()
|
||||
{
|
||||
scene::ISceneNode* node =
|
||||
irr_driver->addMesh(m_models.get(n), "rtt_node", m_rtt_main_node,
|
||||
&m_render_info, m_model_render_info_affected[n]);
|
||||
m_render_info, m_model_render_info_affected[n]);
|
||||
node->setPosition(m_model_location[n].toIrrVector());
|
||||
node->updateAbsolutePosition();
|
||||
node->setScale(m_model_scale[n].toIrrVector());
|
||||
@ -269,7 +273,7 @@ void ModelViewWidget::setupRTTScene()
|
||||
{
|
||||
scene::IAnimatedMeshSceneNode* node =
|
||||
irr_driver->addAnimatedMesh((scene::IAnimatedMesh*)m_models.get(n),
|
||||
"modelviewrtt", m_rtt_main_node, &m_render_info,
|
||||
"modelviewrtt", m_rtt_main_node, m_render_info,
|
||||
m_model_render_info_affected[n]);
|
||||
node->setPosition(m_model_location[n].toIrrVector());
|
||||
node->setFrameLoop(m_model_frames[n], m_model_frames[n]);
|
||||
|
@ -23,12 +23,13 @@
|
||||
#include <IMesh.h>
|
||||
|
||||
#include "graphics/irr_driver.hpp"
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "guiengine/widgets/icon_button_widget.hpp"
|
||||
#include "utils/aligned_array.hpp"
|
||||
#include "utils/leak_check.hpp"
|
||||
#include "utils/ptr_vector.hpp"
|
||||
|
||||
class RenderInfo;
|
||||
|
||||
namespace GUIEngine
|
||||
{
|
||||
/** \brief A model view widget.
|
||||
@ -68,7 +69,7 @@ namespace GUIEngine
|
||||
FrameBuffer *m_frame_buffer;
|
||||
video::ITexture *m_texture;
|
||||
|
||||
RenderInfo m_render_info;
|
||||
RenderInfo *m_render_info;
|
||||
|
||||
public:
|
||||
|
||||
@ -107,7 +108,7 @@ namespace GUIEngine
|
||||
|
||||
FrameBuffer* getFrameBuffer() { return m_frame_buffer; }
|
||||
video::ITexture* getTexture() { return m_texture; }
|
||||
RenderInfo& getModelViewRenderInfo() { return m_render_info; }
|
||||
RenderInfo* getModelViewRenderInfo() { return m_render_info; }
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include "karts/abstract_kart.hpp"
|
||||
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "items/powerup.hpp"
|
||||
#include "karts/abstract_kart_animation.hpp"
|
||||
#include "karts/kart_properties.hpp"
|
||||
@ -34,8 +35,7 @@
|
||||
AbstractKart::AbstractKart(const std::string& ident,
|
||||
int world_kart_id, int position,
|
||||
const btTransform& init_transform,
|
||||
PerPlayerDifficulty difficulty,
|
||||
RenderInfo::KartRenderType krt)
|
||||
PerPlayerDifficulty difficulty, KartRenderType krt)
|
||||
: Moveable()
|
||||
{
|
||||
m_world_kart_id = world_kart_id;
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include <memory>
|
||||
|
||||
#include "items/powerup_manager.hpp"
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "karts/moveable.hpp"
|
||||
#include "karts/controller/kart_control.hpp"
|
||||
#include "race/race_manager.hpp"
|
||||
@ -50,6 +49,8 @@ class Skidding;
|
||||
class SlipStream;
|
||||
class TerrainInfo;
|
||||
|
||||
enum KartRenderType: unsigned int;
|
||||
|
||||
/** An abstract interface for the actual karts. Some functions are actually
|
||||
* implemented here in order to allow inlining.
|
||||
* \ingroup karts
|
||||
@ -100,7 +101,7 @@ public:
|
||||
int world_kart_id,
|
||||
int position, const btTransform& init_transform,
|
||||
PerPlayerDifficulty difficulty,
|
||||
RenderInfo::KartRenderType krt);
|
||||
KartRenderType krt);
|
||||
virtual ~AbstractKart();
|
||||
virtual core::stringw getName() const;
|
||||
virtual void reset();
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "karts/controller/ghost_controller.hpp"
|
||||
#include "karts/kart_gfx.hpp"
|
||||
#include "karts/kart_model.hpp"
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "modes/world.hpp"
|
||||
|
||||
#include "LinearMath/btQuaternion.h"
|
||||
@ -28,7 +29,7 @@ GhostKart::GhostKart(const std::string& ident, unsigned int world_kart_id,
|
||||
int position)
|
||||
: Kart(ident, world_kart_id,
|
||||
position, btTransform(btQuaternion(0, 0, 0, 1)),
|
||||
PLAYER_DIFFICULTY_NORMAL, RenderInfo::KRT_TRANSPARENT)
|
||||
PLAYER_DIFFICULTY_NORMAL, KRT_TRANSPARENT)
|
||||
{
|
||||
} // GhostKart
|
||||
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "graphics/particle_emitter.hpp"
|
||||
#include "graphics/particle_kind.hpp"
|
||||
#include "graphics/particle_kind_manager.hpp"
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "graphics/shadow.hpp"
|
||||
#include "graphics/skid_marks.hpp"
|
||||
#include "graphics/slip_stream.hpp"
|
||||
@ -91,8 +92,7 @@
|
||||
*/
|
||||
Kart::Kart (const std::string& ident, unsigned int world_kart_id,
|
||||
int position, const btTransform& init_transform,
|
||||
PerPlayerDifficulty difficulty,
|
||||
RenderInfo::KartRenderType krt)
|
||||
PerPlayerDifficulty difficulty, KartRenderType krt)
|
||||
: AbstractKart(ident, world_kart_id, position, init_transform,
|
||||
difficulty, krt)
|
||||
|
||||
|
@ -52,6 +52,8 @@ class SlipStream;
|
||||
class Stars;
|
||||
class TerrainInfo;
|
||||
|
||||
enum KartRenderType: unsigned int;
|
||||
|
||||
/** The main kart class. All type of karts are of this object, but with
|
||||
* different controllers. The controllers are what turn a kart into a
|
||||
* player kart (i.e. the controller handle input), or an AI kart (the
|
||||
@ -232,7 +234,7 @@ public:
|
||||
Kart(const std::string& ident, unsigned int world_kart_id,
|
||||
int position, const btTransform& init_transform,
|
||||
PerPlayerDifficulty difficulty,
|
||||
RenderInfo::KartRenderType krt = RenderInfo::KRT_DEFAULT);
|
||||
KartRenderType krt);
|
||||
virtual ~Kart();
|
||||
virtual void init(RaceManager::KartType type);
|
||||
virtual void kartIsInRestNow();
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "graphics/material.hpp"
|
||||
#include "graphics/material_manager.hpp"
|
||||
#include "graphics/mesh_tools.hpp"
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "io/file_manager.hpp"
|
||||
#include "io/xml_node.hpp"
|
||||
#include "karts/abstract_kart.hpp"
|
||||
@ -116,6 +117,7 @@ KartModel::KartModel(bool is_master)
|
||||
m_hat_name = "";
|
||||
m_hat_node = NULL;
|
||||
m_hat_offset = core::vector3df(0,0,0);
|
||||
m_render_info = NULL;
|
||||
|
||||
for(unsigned int i=0; i<4; i++)
|
||||
{
|
||||
@ -141,7 +143,7 @@ KartModel::KartModel(bool is_master)
|
||||
m_animation_speed = 25;
|
||||
m_current_animation = AF_DEFAULT;
|
||||
m_play_non_loop = false;
|
||||
m_krt = RenderInfo::KRT_DEFAULT;
|
||||
m_krt = KRT_DEFAULT;
|
||||
m_support_colorization = false;
|
||||
} // KartModel
|
||||
|
||||
@ -246,7 +248,7 @@ KartModel::~KartModel()
|
||||
assert(!m_is_master);
|
||||
|
||||
// Drop the cloned transparent model if created
|
||||
if (m_krt == RenderInfo::KRT_TRANSPARENT)
|
||||
if (m_krt == KRT_TRANSPARENT)
|
||||
{
|
||||
m_speed_weighted_objects[i].m_model->drop();
|
||||
}
|
||||
@ -275,6 +277,8 @@ KartModel::~KartModel()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
delete m_render_info;
|
||||
#ifdef DEBUG
|
||||
#if SKELETON_DEBUG
|
||||
irr_driver->clearDebugMeshes();
|
||||
@ -289,12 +293,13 @@ KartModel::~KartModel()
|
||||
* It is also marked not to be a master copy, so attachModel can be called
|
||||
* for this instance.
|
||||
*/
|
||||
KartModel* KartModel::makeCopy(RenderInfo::KartRenderType krt)
|
||||
KartModel* KartModel::makeCopy(KartRenderType krt)
|
||||
{
|
||||
// Make sure that we are copying from a master objects, and
|
||||
// that there is indeed no animated node defined here ...
|
||||
// just in case.
|
||||
assert(m_is_master);
|
||||
assert(m_render_info == NULL);
|
||||
assert(!m_animated_node);
|
||||
KartModel *km = new KartModel(/*is master*/ false);
|
||||
km->m_kart_width = m_kart_width;
|
||||
@ -311,6 +316,8 @@ KartModel* KartModel::makeCopy(RenderInfo::KartRenderType krt)
|
||||
km->m_hat_name = m_hat_name;
|
||||
km->m_krt = krt;
|
||||
km->m_support_colorization = m_support_colorization;
|
||||
km->m_render_info = new RenderInfo();
|
||||
km->m_render_info->setKartModelRenderInfo(krt);
|
||||
|
||||
km->m_nitro_emitter_position[0] = m_nitro_emitter_position[0];
|
||||
km->m_nitro_emitter_position[1] = m_nitro_emitter_position[1];
|
||||
@ -335,7 +342,7 @@ KartModel* KartModel::makeCopy(RenderInfo::KartRenderType krt)
|
||||
// Master should not have any speed weighted nodes.
|
||||
assert(!m_speed_weighted_objects[i].m_node);
|
||||
km->m_speed_weighted_objects[i] = m_speed_weighted_objects[i];
|
||||
if (krt == RenderInfo::KRT_TRANSPARENT)
|
||||
if (krt == KRT_TRANSPARENT)
|
||||
{
|
||||
// Only clone the mesh if transparent type is used, see #2445
|
||||
km->m_speed_weighted_objects[i].m_model = irr_driver
|
||||
@ -359,7 +366,6 @@ scene::ISceneNode* KartModel::attachModel(bool animated_models, bool always_anim
|
||||
assert(!m_is_master);
|
||||
|
||||
scene::ISceneNode* node = NULL;
|
||||
m_render_info.setKartModelRenderInfo(m_krt);
|
||||
|
||||
if (animated_models)
|
||||
{
|
||||
@ -1031,3 +1037,10 @@ void KartModel::attachHat()
|
||||
} // if bone
|
||||
} // if(m_hat_name)
|
||||
} // attachHat
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
RenderInfo* KartModel::getRenderInfo()
|
||||
{
|
||||
return m_support_colorization || m_krt == KRT_TRANSPARENT ?
|
||||
m_render_info : NULL;
|
||||
} // getRenderInfo
|
||||
|
@ -30,14 +30,16 @@ namespace irr
|
||||
}
|
||||
using namespace irr;
|
||||
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "utils/no_copy.hpp"
|
||||
#include "utils/vec3.hpp"
|
||||
|
||||
class AbstractKart;
|
||||
class KartProperties;
|
||||
class RenderInfo;
|
||||
class XMLNode;
|
||||
|
||||
enum KartRenderType: unsigned int;
|
||||
|
||||
/** A speed-weighted object is an object whose characteristics are influenced by the kart's speed */
|
||||
struct SpeedWeightedObject
|
||||
{
|
||||
@ -231,16 +233,16 @@ private:
|
||||
/** Pointer to the kart object belonging to this kart model. */
|
||||
AbstractKart* m_kart;
|
||||
|
||||
RenderInfo::KartRenderType m_krt;
|
||||
KartRenderType m_krt;
|
||||
|
||||
RenderInfo m_render_info;
|
||||
RenderInfo* m_render_info;
|
||||
|
||||
bool m_support_colorization;
|
||||
|
||||
public:
|
||||
KartModel(bool is_master);
|
||||
~KartModel();
|
||||
KartModel* makeCopy(RenderInfo::KartRenderType krt);
|
||||
KartModel* makeCopy(KartRenderType krt);
|
||||
void reset();
|
||||
void loadInfo(const XMLNode &node);
|
||||
bool loadModels(const KartProperties &kart_properties);
|
||||
@ -338,17 +340,7 @@ public:
|
||||
// ------------------------------------------------------------------------
|
||||
core::vector3df getHatOffset() { return m_hat_offset; }
|
||||
// ------------------------------------------------------------------------
|
||||
RenderInfo* getRenderInfo()
|
||||
{
|
||||
return m_support_colorization || m_krt == RenderInfo::KRT_TRANSPARENT ?
|
||||
&m_render_info : NULL;
|
||||
}
|
||||
// ------------------------------------------------------------------------
|
||||
const RenderInfo* getRenderInfo() const
|
||||
{
|
||||
return m_support_colorization || m_krt == RenderInfo::KRT_TRANSPARENT ?
|
||||
&m_render_info : NULL;
|
||||
}
|
||||
RenderInfo* getRenderInfo();
|
||||
// ------------------------------------------------------------------------
|
||||
bool supportColorization() const { return m_support_colorization; }
|
||||
|
||||
|
@ -45,6 +45,8 @@ class CombinedCharacteristic;
|
||||
class Material;
|
||||
class XMLNode;
|
||||
|
||||
enum KartRenderType: unsigned int;
|
||||
|
||||
/**
|
||||
* \brief This class stores the properties of a kart.
|
||||
* This includes size, name, identifier, physical properties etc.
|
||||
@ -242,9 +244,11 @@ public:
|
||||
video::ITexture *getMinimapIcon () const {return m_minimap_icon; }
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
/** Returns a pointer to the KartModel object. */
|
||||
KartModel* getKartModelCopy
|
||||
(RenderInfo::KartRenderType krt = RenderInfo::KRT_DEFAULT) const
|
||||
/** Returns a pointer to the KartModel object.
|
||||
* \param krt The KartRenderType, like default, red, blue or transparent.
|
||||
* see the RenderInfo include for details
|
||||
*/
|
||||
KartModel* getKartModelCopy(KartRenderType krt) const
|
||||
{return m_kart_model->makeCopy(krt); }
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#include "karts/kart_with_stats.hpp"
|
||||
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "karts/explosion_animation.hpp"
|
||||
#include "karts/rescue_animation.hpp"
|
||||
#include "items/item.hpp"
|
||||
@ -28,7 +29,7 @@ KartWithStats::KartWithStats(const std::string& ident,
|
||||
int position, const btTransform& init_transform,
|
||||
PerPlayerDifficulty difficulty)
|
||||
: Kart(ident, world_kart_id, position,
|
||||
init_transform, difficulty)
|
||||
init_transform, difficulty, KRT_DEFAULT)
|
||||
{
|
||||
} // KartWithStats
|
||||
|
||||
|
@ -396,8 +396,7 @@ AbstractKart *SoccerWorld::createKart(const std::string &kart_ident, int index,
|
||||
m_kart_position_map[index] = (unsigned)(pos_index - 1);
|
||||
|
||||
AbstractKart *new_kart = new Kart(kart_ident, index, position, init_pos,
|
||||
difficulty, team == SOCCER_TEAM_BLUE ?
|
||||
RenderInfo::KRT_BLUE : RenderInfo::KRT_RED);
|
||||
difficulty, team == SOCCER_TEAM_BLUE ? KRT_BLUE : KRT_RED);
|
||||
new_kart->init(race_manager->getKartType(index));
|
||||
Controller *controller = NULL;
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "config/user_config.hpp"
|
||||
#include "graphics/camera.hpp"
|
||||
#include "graphics/irr_driver.hpp"
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "io/file_manager.hpp"
|
||||
#include "input/device_manager.hpp"
|
||||
#include "input/keyboard_device.hpp"
|
||||
@ -334,7 +335,7 @@ AbstractKart *World::createKart(const std::string &kart_ident, int index,
|
||||
int position = index+1;
|
||||
btTransform init_pos = getStartTransform(index - gk);
|
||||
AbstractKart *new_kart = new Kart(kart_ident, index, position, init_pos,
|
||||
difficulty);
|
||||
difficulty, KRT_DEFAULT);
|
||||
new_kart->init(race_manager->getKartType(index));
|
||||
Controller *controller = NULL;
|
||||
switch(kart_type)
|
||||
|
@ -23,7 +23,6 @@
|
||||
#include "graphics/central_settings.hpp"
|
||||
#include "graphics/irr_driver.hpp"
|
||||
#include "guiengine/engine.hpp"
|
||||
#include "guiengine/scalable_font.hpp"
|
||||
#include "modes/world.hpp"
|
||||
#include "config/player_manager.hpp"
|
||||
#include "states_screens/dialogs/tutorial_message_dialog.hpp"
|
||||
|
@ -65,6 +65,7 @@ AddonsScreen::AddonsScreen() : Screen("addons_screen.stkgui")
|
||||
m_date_filters.push_back(filter_1y);
|
||||
m_date_filters.push_back(filter_2y);
|
||||
|
||||
m_show_tips = true;
|
||||
} // AddonsScreen
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -95,7 +96,11 @@ void AddonsScreen::loadedFromFile()
|
||||
GUIEngine::ListWidget* w_list =
|
||||
getWidget<GUIEngine::ListWidget>("list_addons");
|
||||
w_list->setColumnListener(this);
|
||||
|
||||
|
||||
GUIEngine::LabelWidget* w_tips =
|
||||
getWidget<GUIEngine::LabelWidget>("tips_label");
|
||||
w_tips->setScrollSpeed(15);
|
||||
|
||||
} // loadedFromFile
|
||||
|
||||
|
||||
@ -130,6 +135,26 @@ void AddonsScreen::beforeAddingWidget()
|
||||
{
|
||||
w_filter_rating->addLabel(StringUtils::toWString(n / 2.0));
|
||||
}
|
||||
|
||||
|
||||
GUIEngine::LabelWidget *w_tips =
|
||||
getWidget<GUIEngine::LabelWidget>("tips_label");
|
||||
bool ip = UserConfigParams::m_internet_status == RequestManager::IPERM_ALLOWED;
|
||||
if(!ip)
|
||||
{
|
||||
w_tips->setVisible(true);
|
||||
|
||||
w_tips->setText( _("Access to the Internet is disabled. "
|
||||
"(To enable it, go to options and "
|
||||
"select tab 'User Interface')"),
|
||||
false);
|
||||
|
||||
w_tips->m_properties[GUIEngine::PROP_HEIGHT] = "fit";
|
||||
calculateLayout();
|
||||
|
||||
m_show_tips = true;
|
||||
}
|
||||
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
@ -157,7 +182,21 @@ void AddonsScreen::init()
|
||||
w_list->setIcons(m_icon_bank, (int)(m_icon_height));
|
||||
|
||||
m_type = "kart";
|
||||
|
||||
bool ip = UserConfigParams::m_internet_status == RequestManager::IPERM_ALLOWED;
|
||||
if(ip)
|
||||
{
|
||||
// Nothing to show in the tips label, disable it.
|
||||
|
||||
GUIEngine::LabelWidget *w_tips =
|
||||
getWidget<GUIEngine::LabelWidget>("tips_label");
|
||||
|
||||
w_tips->setVisible(false);
|
||||
w_tips->m_properties[GUIEngine::PROP_HEIGHT] = "0";
|
||||
calculateLayout();
|
||||
m_show_tips = false;
|
||||
} // ip
|
||||
|
||||
getWidget<GUIEngine::IconButtonWidget>("reload")->setActive(ip);
|
||||
|
||||
// Reset filter.
|
||||
@ -525,4 +564,22 @@ void AddonsScreen::onUpdate(float dt)
|
||||
// Addons manager is still initialising/downloading.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(m_show_tips)
|
||||
{
|
||||
GUIEngine::LabelWidget *w_tips =
|
||||
getWidget<GUIEngine::LabelWidget>("tips_label");
|
||||
|
||||
w_tips->update(dt);
|
||||
if(w_tips->scrolledOff())
|
||||
{
|
||||
// Tips have been shown once. Disable tips_label.
|
||||
w_tips->setVisible(false);
|
||||
w_tips->m_properties[GUIEngine::PROP_HEIGHT] = "0";
|
||||
calculateLayout();
|
||||
m_show_tips = false;
|
||||
}
|
||||
}
|
||||
|
||||
} // onUpdate
|
||||
|
@ -84,6 +84,8 @@ private:
|
||||
/** List of date filters **/
|
||||
std::vector<DateFilter> m_date_filters;
|
||||
|
||||
bool m_show_tips;
|
||||
|
||||
public:
|
||||
|
||||
/** Load the addons into the main list.*/
|
||||
|
@ -17,10 +17,8 @@
|
||||
|
||||
#include "states_screens/dialogs/message_dialog.hpp"
|
||||
|
||||
#include "guiengine/engine.hpp"
|
||||
#include "guiengine/screen.hpp"
|
||||
#include "guiengine/widgets/button_widget.hpp"
|
||||
#include "guiengine/widgets/label_widget.hpp"
|
||||
#include "guiengine/widgets/ribbon_widget.hpp"
|
||||
#include "modes/world.hpp"
|
||||
#include "states_screens/state_manager.hpp"
|
||||
#include "utils/translation.hpp"
|
||||
@ -97,7 +95,7 @@ void MessageDialog::doInit(bool from_queue)
|
||||
|
||||
MessageDialog::~MessageDialog()
|
||||
{
|
||||
if (m_own_listener) delete m_listener;
|
||||
if (m_own_listener) delete m_listener;
|
||||
m_listener = NULL;
|
||||
|
||||
if (StateManager::get()->getGameState() == GUIEngine::GAME)
|
||||
@ -111,28 +109,29 @@ void MessageDialog::loadedFromFile()
|
||||
{
|
||||
LabelWidget* message = getWidget<LabelWidget>("title");
|
||||
message->setText( m_msg, false );
|
||||
RibbonWidget* ribbon = getWidget<RibbonWidget>("buttons");
|
||||
ribbon->setFocusForPlayer(PLAYER_ID_GAME_MASTER);
|
||||
|
||||
// If the dialog is a simple 'OK' dialog, then hide the "Yes" button and
|
||||
// change "Cancel" to "OK"
|
||||
if (m_type == MessageDialog::MESSAGE_DIALOG_OK)
|
||||
{
|
||||
ButtonWidget* yesbtn = getWidget<ButtonWidget>("confirm");
|
||||
IconButtonWidget* yesbtn = getWidget<IconButtonWidget>("cancel");
|
||||
yesbtn->setVisible(false);
|
||||
|
||||
ButtonWidget* cancelbtn = getWidget<ButtonWidget>("cancel");
|
||||
IconButtonWidget* cancelbtn = getWidget<IconButtonWidget>("confirm");
|
||||
cancelbtn->setText(_("OK"));
|
||||
cancelbtn->setFocusForPlayer(PLAYER_ID_GAME_MASTER);
|
||||
}
|
||||
else if (m_type == MessageDialog::MESSAGE_DIALOG_YESNO)
|
||||
{
|
||||
ButtonWidget* cancelbtn = getWidget<ButtonWidget>("cancel");
|
||||
IconButtonWidget* cancelbtn = getWidget<IconButtonWidget>("cancel");
|
||||
cancelbtn->setText(_("No"));
|
||||
|
||||
}
|
||||
else if (m_type == MessageDialog::MESSAGE_DIALOG_OK_CANCEL)
|
||||
{
|
||||
// In case of a OK_CANCEL dialog, change the text from 'Yes' to 'Ok'
|
||||
ButtonWidget* yesbtn = getWidget<ButtonWidget>("confirm");
|
||||
IconButtonWidget* yesbtn = getWidget<IconButtonWidget>("confirm");
|
||||
yesbtn->setText(_("OK"));
|
||||
}
|
||||
}
|
||||
@ -147,8 +146,9 @@ void MessageDialog::onEnterPressedInternal()
|
||||
|
||||
GUIEngine::EventPropagation MessageDialog::processEvent(const std::string& eventSource)
|
||||
{
|
||||
|
||||
if (eventSource == "cancel")
|
||||
RibbonWidget* ribbon = getWidget<RibbonWidget>(eventSource.c_str());
|
||||
|
||||
if (ribbon->getSelectionIDString(PLAYER_ID_GAME_MASTER) == "cancel")
|
||||
{
|
||||
if (m_listener == NULL)
|
||||
{
|
||||
@ -161,7 +161,7 @@ GUIEngine::EventPropagation MessageDialog::processEvent(const std::string& event
|
||||
|
||||
return GUIEngine::EVENT_BLOCK;
|
||||
}
|
||||
else if (eventSource == "confirm")
|
||||
else if (ribbon->getSelectionIDString(PLAYER_ID_GAME_MASTER) == "confirm")
|
||||
{
|
||||
if (m_listener == NULL)
|
||||
{
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "challenges/unlock_manager.hpp"
|
||||
#include "config/player_manager.hpp"
|
||||
#include "graphics/material_manager.hpp"
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "guiengine/engine.hpp"
|
||||
#include "guiengine/scalable_font.hpp"
|
||||
#include "io/file_manager.hpp"
|
||||
@ -295,7 +296,7 @@ void FeatureUnlockedCutScene::init()
|
||||
else if (m_unlocked_stuff[n].m_unlocked_kart != NULL)
|
||||
{
|
||||
KartModel *kart_model =
|
||||
m_unlocked_stuff[n].m_unlocked_kart->getKartModelCopy();
|
||||
m_unlocked_stuff[n].m_unlocked_kart->getKartModelCopy(KRT_DEFAULT);
|
||||
m_all_kart_models.push_back(kart_model);
|
||||
m_unlocked_stuff[n].m_root_gift_node = kart_model->attachModel(true, false);
|
||||
m_unlocked_stuff[n].m_scale = 5.0f;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "challenges/unlock_manager.hpp"
|
||||
#include "config/player_manager.hpp"
|
||||
#include "graphics/irr_driver.hpp"
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "guiengine/engine.hpp"
|
||||
#include "guiengine/scalable_font.hpp"
|
||||
#include "guiengine/widgets/button_widget.hpp"
|
||||
@ -181,7 +182,7 @@ void GrandPrixLose::setKarts(std::vector<std::string> ident_arg)
|
||||
const KartProperties* kart = kart_properties_manager->getKart(ident_arg[n]);
|
||||
if (kart != NULL)
|
||||
{
|
||||
KartModel* kart_model = kart->getKartModelCopy();
|
||||
KartModel* kart_model = kart->getKartModelCopy(KRT_DEFAULT);
|
||||
m_all_kart_models.push_back(kart_model);
|
||||
scene::ISceneNode* kart_main_node = kart_model->attachModel(false, false);
|
||||
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "challenges/unlock_manager.hpp"
|
||||
#include "config/player_manager.hpp"
|
||||
#include "graphics/irr_driver.hpp"
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "guiengine/engine.hpp"
|
||||
#include "guiengine/scalable_font.hpp"
|
||||
#include "guiengine/widgets/button_widget.hpp"
|
||||
@ -304,7 +305,7 @@ void GrandPrixWin::setKarts(const std::string idents_arg[3])
|
||||
const KartProperties* kp = kart_properties_manager->getKart(idents[i]);
|
||||
if (kp == NULL) continue;
|
||||
|
||||
KartModel* kart_model = kp->getKartModelCopy();
|
||||
KartModel* kart_model = kp->getKartModelCopy(KRT_DEFAULT);
|
||||
m_all_kart_models.push_back(kart_model);
|
||||
scene::ISceneNode* kart_main_node = kart_model->attachModel(false, false);
|
||||
|
||||
|
@ -76,6 +76,7 @@ bool MainMenuScreen::m_enable_online = false;
|
||||
MainMenuScreen::MainMenuScreen() : Screen("main_menu.stkgui")
|
||||
{
|
||||
m_online_string = _("Online");
|
||||
//I18N: Used as a verb, appears on the main menu (login button)
|
||||
m_login_string = _("Login");
|
||||
} // MainMenuScreen
|
||||
|
||||
|
@ -373,6 +373,7 @@ void RaceGUI::drawGlobalMiniMap()
|
||||
const Vec3& xyz = kart->getXYZ();
|
||||
Vec3 draw_at;
|
||||
world->getTrack()->mapPoint2MiniMap(xyz, &draw_at);
|
||||
draw_at *= UserConfigParams::m_scale_rtts_factor;
|
||||
|
||||
video::ITexture* icon = kart->getKartProperties()->getMinimapIcon();
|
||||
|
||||
@ -393,6 +394,7 @@ void RaceGUI::drawGlobalMiniMap()
|
||||
{
|
||||
Vec3 draw_at;
|
||||
world->getTrack()->mapPoint2MiniMap(sw->getBallPosition(), &draw_at);
|
||||
draw_at *= UserConfigParams::m_scale_rtts_factor;
|
||||
video::ITexture* icon =
|
||||
irr_driver->getTexture(FileManager::GUI, "soccer_ball_normal.png");
|
||||
|
||||
|
@ -362,6 +362,7 @@ void RaceGUIOverworld::drawGlobalMiniMap()
|
||||
kart_xyz= kart->getXYZ();
|
||||
Vec3 draw_at;
|
||||
track->mapPoint2MiniMap(kart_xyz, &draw_at);
|
||||
draw_at *= UserConfigParams::m_scale_rtts_factor;
|
||||
|
||||
video::ITexture* icon = kart->getKartProperties()->getMinimapIcon();
|
||||
core::rect<s32> source(core::position2di(0, 0), icon->getSize());
|
||||
@ -399,6 +400,7 @@ void RaceGUIOverworld::drawGlobalMiniMap()
|
||||
|
||||
Vec3 draw_at;
|
||||
track->mapPoint2MiniMap(challenges[n].m_position, &draw_at);
|
||||
draw_at *= UserConfigParams::m_scale_rtts_factor;
|
||||
|
||||
const ChallengeData* challenge = unlock_manager->getChallengeData(challenges[n].m_challenge_id);
|
||||
const unsigned int val = challenge->getNumTrophies();
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include "audio/sfx_manager.hpp"
|
||||
#include "config/user_config.hpp"
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "guiengine/widgets/bubble_widget.hpp"
|
||||
#include "guiengine/widgets/button_widget.hpp"
|
||||
#include "guiengine/widgets/spinner_widget.hpp"
|
||||
@ -149,9 +150,8 @@ void SoccerSetupScreen::beforeAddingWidget()
|
||||
info.support_colorization = kart_model.supportColorization();
|
||||
if (info.support_colorization)
|
||||
{
|
||||
kart_view->getModelViewRenderInfo().setKartModelRenderInfo
|
||||
(info.team == SOCCER_TEAM_BLUE ?
|
||||
RenderInfo::KRT_BLUE : RenderInfo::KRT_RED);
|
||||
kart_view->getModelViewRenderInfo()->setKartModelRenderInfo
|
||||
(info.team == SOCCER_TEAM_BLUE ? KRT_BLUE : KRT_RED);
|
||||
}
|
||||
|
||||
// Add the kart model (including wheels and speed weight objects)
|
||||
@ -295,7 +295,7 @@ GUIEngine::EventPropagation SoccerSetupScreen::filterActions(PlayerAction action
|
||||
if (m_kart_view_info[playerId].support_colorization)
|
||||
{
|
||||
m_kart_view_info[playerId].view->getModelViewRenderInfo()
|
||||
.setKartModelRenderInfo(RenderInfo::KRT_RED);
|
||||
->setKartModelRenderInfo(KRT_RED);
|
||||
}
|
||||
|
||||
for(int i=0 ; i < nb_players ; i++)
|
||||
@ -315,7 +315,7 @@ GUIEngine::EventPropagation SoccerSetupScreen::filterActions(PlayerAction action
|
||||
if (m_kart_view_info[playerId].support_colorization)
|
||||
{
|
||||
m_kart_view_info[playerId].view->getModelViewRenderInfo()
|
||||
.setKartModelRenderInfo(RenderInfo::KRT_BLUE);
|
||||
->setKartModelRenderInfo(KRT_BLUE);
|
||||
}
|
||||
|
||||
for(int i=0 ; i < nb_players ; i++)
|
||||
|
@ -18,7 +18,6 @@
|
||||
#ifndef HEADER_SOCCER_SETUP_SCREEN_HPP
|
||||
#define HEADER_SOCCER_SETUP_SCREEN_HPP
|
||||
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "guiengine/screen.hpp"
|
||||
#include "network/remote_kart_info.hpp"
|
||||
|
||||
@ -41,7 +40,6 @@ class SoccerSetupScreen : public GUIEngine::Screen,
|
||||
bool confirmed;
|
||||
bool support_colorization;
|
||||
SoccerTeam team;
|
||||
RenderInfo render_info;
|
||||
|
||||
KartViewInfo() : view(), confirmed(false), support_colorization(false),
|
||||
team(SOCCER_TEAM_NONE) {}
|
||||
|
@ -38,8 +38,6 @@
|
||||
#include "graphics/particle_emitter.hpp"
|
||||
#include "graphics/particle_kind.hpp"
|
||||
#include "graphics/particle_kind_manager.hpp"
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "guiengine/scalable_font.hpp"
|
||||
#include "io/file_manager.hpp"
|
||||
#include "io/xml_node.hpp"
|
||||
#include "items/item.hpp"
|
||||
@ -1739,7 +1737,7 @@ void Track::loadTrackModel(bool reverse_track, unsigned int mode_id)
|
||||
}
|
||||
}
|
||||
|
||||
loadObjects(root, path, model_def_loader, true, NULL, NULL, NULL);
|
||||
loadObjects(root, path, model_def_loader, true, NULL, NULL);
|
||||
|
||||
model_def_loader.cleanLibraryNodesAfterLoad();
|
||||
|
||||
@ -1929,7 +1927,7 @@ void Track::loadTrackModel(bool reverse_track, unsigned int mode_id)
|
||||
|
||||
void Track::loadObjects(const XMLNode* root, const std::string& path, ModelDefinitionLoader& model_def_loader,
|
||||
bool create_lod_definitions, scene::ISceneNode* parent,
|
||||
TrackObject* parent_library, RenderInfo* ri)
|
||||
TrackObject* parent_library)
|
||||
{
|
||||
unsigned int start_position_counter = 0;
|
||||
|
||||
@ -1943,7 +1941,7 @@ void Track::loadObjects(const XMLNode* root, const std::string& path, ModelDefin
|
||||
if (name == "track" || name == "default-start") continue;
|
||||
if (name == "object" || name == "library")
|
||||
{
|
||||
m_track_object_manager->add(*node, parent, model_def_loader, parent_library, ri);
|
||||
m_track_object_manager->add(*node, parent, model_def_loader, parent_library);
|
||||
}
|
||||
else if (name == "water")
|
||||
{
|
||||
@ -1987,7 +1985,7 @@ void Track::loadObjects(const XMLNode* root, const std::string& path, ModelDefin
|
||||
{
|
||||
if (UserConfigParams::m_graphical_effects)
|
||||
{
|
||||
m_track_object_manager->add(*node, parent, model_def_loader, parent_library, NULL);
|
||||
m_track_object_manager->add(*node, parent, model_def_loader, parent_library);
|
||||
}
|
||||
}
|
||||
else if (name == "sky-dome" || name == "sky-box" || name == "sky-color")
|
||||
@ -2000,7 +1998,7 @@ void Track::loadObjects(const XMLNode* root, const std::string& path, ModelDefin
|
||||
}
|
||||
else if (name == "light")
|
||||
{
|
||||
m_track_object_manager->add(*node, parent, model_def_loader, parent_library, NULL);
|
||||
m_track_object_manager->add(*node, parent, model_def_loader, parent_library);
|
||||
}
|
||||
else if (name == "weather")
|
||||
{
|
||||
|
@ -56,7 +56,6 @@ class MusicInformation;
|
||||
class ParticleEmitter;
|
||||
class ParticleKind;
|
||||
class PhysicalObject;
|
||||
class RenderInfo;
|
||||
class TrackObject;
|
||||
class TrackObjectManager;
|
||||
class TriangleMesh;
|
||||
@ -457,8 +456,7 @@ public:
|
||||
// ------------------------------------------------------------------------
|
||||
void loadObjects(const XMLNode* root, const std::string& path,
|
||||
ModelDefinitionLoader& lod_loader, bool create_lod_definitions,
|
||||
scene::ISceneNode* parent, TrackObject* parent_library,
|
||||
RenderInfo* ri);
|
||||
scene::ISceneNode* parent, TrackObject* parent_library);
|
||||
// ------------------------------------------------------------------------
|
||||
bool isSoccer () const { return m_is_soccer; }
|
||||
// ------------------------------------------------------------------------
|
||||
|
@ -20,6 +20,8 @@
|
||||
|
||||
#include "animations/three_d_animation.hpp"
|
||||
#include "graphics/irr_driver.hpp"
|
||||
#include "graphics/material.hpp"
|
||||
#include "graphics/material_manager.hpp"
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "io/file_manager.hpp"
|
||||
#include "io/xml_node.hpp"
|
||||
@ -43,9 +45,9 @@
|
||||
*/
|
||||
TrackObject::TrackObject(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||
ModelDefinitionLoader& model_def_loader,
|
||||
TrackObject* parent_library, RenderInfo* ri)
|
||||
TrackObject* parent_library)
|
||||
{
|
||||
init(xml_node, parent, model_def_loader, parent_library, ri);
|
||||
init(xml_node, parent, model_def_loader, parent_library);
|
||||
} // TrackObject
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -68,6 +70,7 @@ TrackObject::TrackObject(const core::vector3df& xyz, const core::vector3df& hpr,
|
||||
m_animator = NULL;
|
||||
m_physical_object = NULL;
|
||||
m_parent_library = NULL;
|
||||
m_render_info = NULL;
|
||||
m_interaction = interaction;
|
||||
m_presentation = presentation;
|
||||
m_is_driveable = false;
|
||||
@ -94,11 +97,12 @@ TrackObject::TrackObject(const core::vector3df& xyz, const core::vector3df& hpr,
|
||||
*/
|
||||
void TrackObject::init(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||
ModelDefinitionLoader& model_def_loader,
|
||||
TrackObject* parent_library, RenderInfo* ri)
|
||||
TrackObject* parent_library)
|
||||
{
|
||||
m_init_xyz = core::vector3df(0,0,0);
|
||||
m_init_hpr = core::vector3df(0,0,0);
|
||||
m_init_scale = core::vector3df(1,1,1);
|
||||
m_render_info = NULL;
|
||||
m_enabled = true;
|
||||
m_initially_visible = false;
|
||||
m_presentation = NULL;
|
||||
@ -178,13 +182,41 @@ void TrackObject::init(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||
}
|
||||
else
|
||||
{
|
||||
// Colorization settings
|
||||
std::string model_name;
|
||||
xml_node.get("model", &model_name);
|
||||
bool colorizable = false;
|
||||
scene::IMesh* mesh = NULL;
|
||||
if (model_name.size() > 0)
|
||||
{
|
||||
mesh = irr_driver->getMesh(model_name);
|
||||
if (mesh != NULL)
|
||||
{
|
||||
unsigned int n = mesh->getMeshBufferCount();
|
||||
for (unsigned int i = 0; i < n; i++)
|
||||
{
|
||||
scene::IMeshBuffer *mb = mesh->getMeshBuffer(i);
|
||||
Material* m = material_manager->getMaterialFor(mb
|
||||
->getMaterial().getTexture(0), mb);
|
||||
colorizable = colorizable || m->isColorizable();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If at least one material is colorizable, add RenderInfo for it
|
||||
if (colorizable)
|
||||
{
|
||||
m_render_info = new RenderInfo();
|
||||
m_render_info->setDynamicHue(mesh);
|
||||
}
|
||||
|
||||
scene::ISceneNode *glownode = NULL;
|
||||
bool is_movable = false;
|
||||
if (lod_instance)
|
||||
{
|
||||
m_type = "lod";
|
||||
TrackObjectPresentationLOD* lod_node =
|
||||
new TrackObjectPresentationLOD(xml_node, parent, model_def_loader, ri);
|
||||
new TrackObjectPresentationLOD(xml_node, parent, model_def_loader, m_render_info);
|
||||
m_presentation = lod_node;
|
||||
|
||||
LODNode* node = (LODNode*)lod_node->getNode();
|
||||
@ -209,7 +241,7 @@ void TrackObject::init(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||
m_presentation = new TrackObjectPresentationMesh(xml_node,
|
||||
m_enabled,
|
||||
parent,
|
||||
ri);
|
||||
m_render_info);
|
||||
scene::ISceneNode* node = ((TrackObjectPresentationMesh *)m_presentation)->getNode();
|
||||
if (type == "movable" && parent != NULL)
|
||||
{
|
||||
@ -356,6 +388,7 @@ TrackObject::~TrackObject()
|
||||
delete m_presentation;
|
||||
delete m_animator;
|
||||
delete m_physical_object;
|
||||
delete m_render_info;
|
||||
} // ~TrackObject
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@ -31,10 +31,10 @@
|
||||
#include <string>
|
||||
#include "animations/three_d_animation.hpp"
|
||||
|
||||
class XMLNode;
|
||||
class ThreeDAnimation;
|
||||
class ModelDefinitionLoader;
|
||||
class RenderInfo;
|
||||
class ThreeDAnimation;
|
||||
class XMLNode;
|
||||
|
||||
/**
|
||||
* \ingroup tracks
|
||||
@ -60,8 +60,9 @@ private:
|
||||
|
||||
std::string m_id;
|
||||
|
||||
protected:
|
||||
RenderInfo* m_render_info;
|
||||
|
||||
protected:
|
||||
|
||||
/** The initial XYZ position of the object. */
|
||||
core::vector3df m_init_xyz;
|
||||
@ -99,14 +100,13 @@ protected:
|
||||
|
||||
void init(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||
ModelDefinitionLoader& model_def_loader,
|
||||
TrackObject* parent_library, RenderInfo* ri);
|
||||
TrackObject* parent_library);
|
||||
|
||||
public:
|
||||
TrackObject(const XMLNode &xml_node,
|
||||
scene::ISceneNode* parent,
|
||||
ModelDefinitionLoader& model_def_loader,
|
||||
TrackObject* parent_library,
|
||||
RenderInfo* ri);
|
||||
TrackObject* parent_library);
|
||||
|
||||
TrackObject(const core::vector3df& xyz,
|
||||
const core::vector3df& hpr,
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include "animations/three_d_animation.hpp"
|
||||
#include "graphics/lod_node.hpp"
|
||||
#include "graphics/material_manager.hpp"
|
||||
#include "graphics/render_info.hpp"
|
||||
#include "io/xml_node.hpp"
|
||||
#include "physics/physical_object.hpp"
|
||||
#include "tracks/track_object.hpp"
|
||||
@ -46,11 +45,11 @@ TrackObjectManager::~TrackObjectManager()
|
||||
*/
|
||||
void TrackObjectManager::add(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||
ModelDefinitionLoader& model_def_loader,
|
||||
TrackObject* parent_library, RenderInfo* ri)
|
||||
TrackObject* parent_library)
|
||||
{
|
||||
try
|
||||
{
|
||||
TrackObject *obj = new TrackObject(xml_node, parent, model_def_loader, parent_library, ri);
|
||||
TrackObject *obj = new TrackObject(xml_node, parent, model_def_loader, parent_library);
|
||||
m_all_objects.push_back(obj);
|
||||
if(obj->isDriveable())
|
||||
m_driveable_objects.push_back(obj);
|
||||
|
@ -23,11 +23,10 @@
|
||||
#include "tracks/track_object.hpp"
|
||||
#include "utils/ptr_vector.hpp"
|
||||
|
||||
class LODNode;
|
||||
class RenderInfo;
|
||||
class Track;
|
||||
class Vec3;
|
||||
class XMLNode;
|
||||
class LODNode;
|
||||
|
||||
#include <map>
|
||||
#include <vector>
|
||||
@ -59,7 +58,7 @@ public:
|
||||
void init();
|
||||
void add(const XMLNode &xml_node, scene::ISceneNode* parent,
|
||||
ModelDefinitionLoader& model_def_loader,
|
||||
TrackObject* parent_library, RenderInfo* ri);
|
||||
TrackObject* parent_library);
|
||||
void update(float dt);
|
||||
void handleExplosion(const Vec3 &pos, const PhysicalObject *mp,
|
||||
bool secondary_hits=true);
|
||||
|
@ -177,13 +177,8 @@ TrackObjectPresentationLibraryNode::TrackObjectPresentationLibraryNode(
|
||||
ModelDefinitionLoader& model_def_loader)
|
||||
: TrackObjectPresentationSceneNode(xml_node)
|
||||
{
|
||||
m_render_info = NULL;
|
||||
std::string name;
|
||||
xml_node.get("name", &name);
|
||||
float custom_hue = 0.0f;
|
||||
xml_node.get("hue", &custom_hue);
|
||||
if (custom_hue > 0.0f)
|
||||
m_render_info = new RenderInfo(custom_hue, false);
|
||||
|
||||
m_node = irr_driver->getSceneManager()->addEmptySceneNode();
|
||||
#ifdef DEBUG
|
||||
@ -273,7 +268,7 @@ TrackObjectPresentationLibraryNode::TrackObjectPresentationLibraryNode(
|
||||
|
||||
assert(libroot != NULL);
|
||||
World::getWorld()->getTrack()->loadObjects(libroot, lib_path, model_def_loader,
|
||||
create_lod_definitions, m_node, parent, m_render_info);
|
||||
create_lod_definitions, m_node, parent);
|
||||
m_parent = parent;
|
||||
} // TrackObjectPresentationLibraryNode
|
||||
|
||||
@ -281,8 +276,6 @@ TrackObjectPresentationLibraryNode::TrackObjectPresentationLibraryNode(
|
||||
TrackObjectPresentationLibraryNode::~TrackObjectPresentationLibraryNode()
|
||||
{
|
||||
irr_driver->removeNode(m_node);
|
||||
delete m_render_info;
|
||||
m_render_info = NULL;
|
||||
} // TrackObjectPresentationLibraryNode
|
||||
// ----------------------------------------------------------------------------
|
||||
void TrackObjectPresentationLibraryNode::move(const core::vector3df& xyz, const core::vector3df& hpr,
|
||||
|
@ -185,7 +185,6 @@ public:
|
||||
class TrackObjectPresentationLibraryNode : public TrackObjectPresentationSceneNode
|
||||
{
|
||||
TrackObject* m_parent;
|
||||
RenderInfo* m_render_info;
|
||||
public:
|
||||
TrackObjectPresentationLibraryNode(TrackObject* parent,
|
||||
const XMLNode& xml_node,
|
||||
|
Loading…
x
Reference in New Issue
Block a user