Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
02517bc6d4 | ||
|
|
b0c7fc9106 | ||
|
|
bf0981879a | ||
|
|
53158cbe67 | ||
|
|
2fb00366ca | ||
|
|
87d0680b4d | ||
|
|
41e56ce9d6 | ||
|
|
afc5bb1c2a | ||
|
|
80796a7701 | ||
|
|
551a4e195f | ||
|
|
31313a4d01 | ||
|
|
47f1a3391f | ||
|
|
5a276eb928 | ||
|
|
dd5812a885 | ||
|
|
3ef9c40b65 | ||
|
|
81d5b368b9 | ||
|
|
0cece86e02 | ||
|
|
819ce5a821 | ||
|
|
5dc4d41edb | ||
|
|
ecf706cf8d | ||
|
|
79338bdd90 | ||
|
|
8323b302bc | ||
|
|
8c712863fb | ||
|
|
d4c7d0fa78 | ||
|
|
c0485d3c3a | ||
|
|
09bbcdc68d | ||
|
|
cc5c819e9a | ||
|
|
5b8f71acfb | ||
|
|
92627940dd | ||
|
|
aaf3f79721 | ||
|
|
601c624f9b | ||
|
|
98bb2c31a2 | ||
|
|
d367c22d46 | ||
|
|
b3b9fbd8d2 | ||
|
|
ad1bb0122b | ||
|
|
733e77b47f | ||
|
|
bde11535c2 | ||
|
|
4d337621e5 | ||
|
|
b6c2dc632a | ||
|
|
8066778620 | ||
|
|
ecc70b75dd | ||
|
|
83fcdc1dcf | ||
|
|
19b4840312 |
13
CHANGELOG.md
@@ -1,3 +1,16 @@
|
||||
## SupertTuxKart 0.9.1
|
||||
* Many bug fixes
|
||||
* Started to use scripting in tracks
|
||||
* Significant audio performance improvements
|
||||
* Smaller tweaks and improvements to several tracks including
|
||||
** Math class
|
||||
** XR591
|
||||
** Fort Magma
|
||||
** Gran Paradiso
|
||||
** Subsea
|
||||
* Tweak to challenges
|
||||
* Better support for driving tracks in reverse
|
||||
|
||||
## SupertTuxKart 0.9 (April 2015)
|
||||
* Fully shader-based rendering engine
|
||||
* New tracks Cocoa Temple and Gran Paradiso
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# root CMakeLists for the SuperTuxKart project
|
||||
project(SuperTuxKart)
|
||||
set(PROJECT_VERSION "0.8.1")
|
||||
set(PROJECT_VERSION "0.9.1")
|
||||
|
||||
cmake_minimum_required(VERSION 2.8.4)
|
||||
if(NOT (CMAKE_MAJOR_VERSION VERSION_LESS 3))
|
||||
|
||||
BIN
data/CREDITS
@@ -17,11 +17,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.8.1</string>
|
||||
<string>0.9.1</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>SPTK</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.8.1</string>
|
||||
<string>0.9.1</string>
|
||||
<key>CSResourcesFileMapped</key>
|
||||
<true/>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
|
||||
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 41 KiB |
@@ -4,25 +4,27 @@
|
||||
<spreading angle="10" />
|
||||
|
||||
<velocity x="0.0"
|
||||
y="0.002"
|
||||
y="0.003"
|
||||
z="0.0" />
|
||||
|
||||
<material file="smoke_black.png" />
|
||||
|
||||
<!-- Amount of particles emitted per second -->
|
||||
<rate min="25"
|
||||
max="50" />
|
||||
<rate min="7"
|
||||
max="12" />
|
||||
|
||||
<!-- Minimal and maximal lifetime of a particle, in milliseconds. -->
|
||||
<lifetime min="2500"
|
||||
max="5000" />
|
||||
|
||||
<!-- Size of the particles -->
|
||||
<size min="0.6"
|
||||
max="1.5" />
|
||||
<size min="1.6"
|
||||
max="2.5"
|
||||
x-increase-factor="2.6"
|
||||
y-increase-factor="2.6" />
|
||||
|
||||
<color min="255 255 255"
|
||||
max="255 255 255" />
|
||||
<color min="50 50 50"
|
||||
max="100 100 100" />
|
||||
|
||||
<!-- How much time in milliseconds before the particle is fully faded out -->
|
||||
<fadeout time="1000" />
|
||||
|
||||
35
data/gfx/confetti.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- For sky particles, the size of the box is ignored -->
|
||||
<particles emitter="box" randomize-initial-y="true" box_x="100.0" box_y="100" box_z="120.0">
|
||||
|
||||
<spreading angle="3" />
|
||||
|
||||
<velocity x="-0.00"
|
||||
y="-0.005"
|
||||
z="-0.00" />
|
||||
|
||||
<material file="confetti.png" clampu="Y" clampv="Y" />
|
||||
|
||||
<!-- Amount of particles emitted per second -->
|
||||
<rate min="500"
|
||||
max="1000" />
|
||||
|
||||
<!-- Minimal and maximal lifetime of a particle, in milliseconds. -->
|
||||
<lifetime min="8500"
|
||||
max="9500" />
|
||||
|
||||
<!-- Size of the particles -->
|
||||
<size min="0.10"
|
||||
max="0.30" />
|
||||
|
||||
<color min="40 40 255"
|
||||
max="255 255 255" />
|
||||
|
||||
<!-- How much time in milliseconds before the particle is fully faded out -->
|
||||
<fadeout time="100" />
|
||||
|
||||
<wind speed="0.16"
|
||||
flips="Y" />
|
||||
|
||||
</particles>
|
||||
35
data/gfx/confetti_bleu.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!-- For sky particles, the size of the box is ignored -->
|
||||
<particles emitter="box" randomize-initial-y="true" box_x="100.0" box_y="100" box_z="120.0">
|
||||
|
||||
<spreading angle="3" />
|
||||
|
||||
<velocity x="-0.00"
|
||||
y="-0.005"
|
||||
z="-0.00" />
|
||||
|
||||
<material file="snowflake.png" clampu="Y" clampv="Y" />
|
||||
|
||||
<!-- Amount of particles emitted per second -->
|
||||
<rate min="500"
|
||||
max="1000" />
|
||||
|
||||
<!-- Minimal and maximal lifetime of a particle, in milliseconds. -->
|
||||
<lifetime min="8500"
|
||||
max="9500" />
|
||||
|
||||
<!-- Size of the particles -->
|
||||
<size min="0.10"
|
||||
max="0.30" />
|
||||
|
||||
<color min="40 40 255"
|
||||
max="255 255 255" />
|
||||
|
||||
<!-- How much time in milliseconds before the particle is fully faded out -->
|
||||
<fadeout time="100" />
|
||||
|
||||
<wind speed="0.16"
|
||||
flips="Y" />
|
||||
|
||||
</particles>
|
||||
32
data/gfx/gfx_blueNebula_a.xml
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0"?>
|
||||
<particles emitter="sphere" radius="20.5">
|
||||
|
||||
<spreading angle="120" />
|
||||
|
||||
<velocity x="0.002"
|
||||
y="0.000"
|
||||
z="0.000" />
|
||||
|
||||
<material file="stktex_nebulaCloud_a.png" />
|
||||
|
||||
<!-- Amount of particles emitted per second -->
|
||||
<rate min="1"
|
||||
max="2" />
|
||||
|
||||
<!-- Minimal and maximal lifetime of a particle, in milliseconds. -->
|
||||
<lifetime min="20000"
|
||||
max="30000" />
|
||||
|
||||
<!-- Size of the particles -->
|
||||
<size min="20.5"
|
||||
max="45.0"
|
||||
x-increase-factor="1.6"
|
||||
y-increase-factor="1.6" />
|
||||
|
||||
<color min="0 0 0"
|
||||
max="255 255 255" />
|
||||
|
||||
<fadeout time="5000" />
|
||||
|
||||
|
||||
</particles>
|
||||
32
data/gfx/gfx_bubbleFast_a.xml
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0"?>
|
||||
<particles emitter="box" box_x="0.5" box_y="0.5" box_z="0.5">
|
||||
|
||||
<spreading angle="45" />
|
||||
|
||||
<velocity x="0.000"
|
||||
y="0.005"
|
||||
z="0.000" />
|
||||
|
||||
<material file="gfx_bubble_a.png" />
|
||||
|
||||
<!-- Amount of particles emitted per second -->
|
||||
<rate min="8"
|
||||
max="15" />
|
||||
|
||||
<!-- Minimal and maximal lifetime of a particle, in milliseconds. -->
|
||||
<lifetime min="2000"
|
||||
max="3000" />
|
||||
|
||||
<!-- Size of the particles -->
|
||||
<size min="0.5"
|
||||
max="0.8"
|
||||
x-increase-factor="1.6"
|
||||
y-increase-factor="1.6" />
|
||||
|
||||
<color min="0 0 0"
|
||||
max="255 255 255" />
|
||||
|
||||
<fadeout time="2000" />
|
||||
|
||||
|
||||
</particles>
|
||||
33
data/gfx/gfx_fireworkExplosion_a.xml
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0"?>
|
||||
<particles emitter="sphere" radius="0.5">
|
||||
|
||||
<spreading angle="180" />
|
||||
|
||||
<velocity x="0.003"
|
||||
y="0.0003"
|
||||
z="0.003" />
|
||||
|
||||
<material file="gfx_sparkFire_a.png" />
|
||||
|
||||
<!-- Amount of particles emitted per second -->
|
||||
<rate min="65"
|
||||
max="100" />
|
||||
|
||||
<!-- Minimal and maximal lifetime of a particle, in milliseconds. -->
|
||||
<lifetime min="1700"
|
||||
max="1700" />
|
||||
|
||||
<!-- Size of the particles -->
|
||||
<size min="0.7"
|
||||
max="1.1"
|
||||
x-increase-factor="1.3"
|
||||
y-increase-factor="1.3"
|
||||
/>
|
||||
|
||||
<color min="255 255 255"
|
||||
max="255 0 0" />
|
||||
|
||||
<!-- How much time in milliseconds before the particle is fully faded out -->
|
||||
<fadeout time="50" />
|
||||
|
||||
</particles>
|
||||
33
data/gfx/gfx_fireworkGreen_a.xml
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0"?>
|
||||
<particles emitter="sphere" radius="0.5">
|
||||
|
||||
<spreading angle="180" />
|
||||
|
||||
<velocity x="0.03"
|
||||
y="0.003"
|
||||
z="0.03" />
|
||||
|
||||
<material file="gfx_sparkGreen_a.png" />
|
||||
|
||||
<!-- Amount of particles emitted per second -->
|
||||
<rate min="65"
|
||||
max="100" />
|
||||
|
||||
<!-- Minimal and maximal lifetime of a particle, in milliseconds. -->
|
||||
<lifetime min="2700"
|
||||
max="2700" />
|
||||
|
||||
<!-- Size of the particles -->
|
||||
<size min="0.5"
|
||||
max="0.8"
|
||||
x-increase-factor="1.1"
|
||||
y-increase-factor="1.3"
|
||||
/>
|
||||
|
||||
<color min="255 255 255"
|
||||
max="255 0 0" />
|
||||
|
||||
<!-- How much time in milliseconds before the particle is fully faded out -->
|
||||
<fadeout time="50" />
|
||||
|
||||
</particles>
|
||||
32
data/gfx/gfx_sandExplosion_a.xml
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0"?>
|
||||
<particles emitter="sphere" radius="0.5">
|
||||
|
||||
<spreading angle="90" />
|
||||
|
||||
<velocity x="0.000"
|
||||
y="0.003"
|
||||
z="0.000" />
|
||||
|
||||
<material file="gfx_earthJetblast_a.png" />
|
||||
|
||||
<!-- Amount of particles emitted per second -->
|
||||
<rate min="900"
|
||||
max="1000" />
|
||||
|
||||
<!-- Minimal and maximal lifetime of a particle, in milliseconds. -->
|
||||
<lifetime min="300"
|
||||
max="1000" />
|
||||
|
||||
<!-- Size of the particles -->
|
||||
<size min="0.3"
|
||||
max="0.7"
|
||||
x-increase-factor="1.2"
|
||||
y-increase-factor="1.2" />
|
||||
|
||||
<color min="0 0 0"
|
||||
max="255 255 255" />
|
||||
|
||||
<fadeout time="500" />
|
||||
|
||||
|
||||
</particles>
|
||||
32
data/gfx/gfx_smallWaterFlow.xml
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0"?>
|
||||
<particles emitter="sphere" radius="0.1">
|
||||
|
||||
<spreading angle="12" />
|
||||
|
||||
<velocity x="0.000"
|
||||
y="0.000"
|
||||
z="0.005" />
|
||||
|
||||
<material file="particle_water.png" />
|
||||
|
||||
<!-- Amount of particles emitted per second -->
|
||||
<rate min="30"
|
||||
max="50" />
|
||||
|
||||
<!-- Minimal and maximal lifetime of a particle, in milliseconds. -->
|
||||
<lifetime min="500"
|
||||
max="1000" />
|
||||
|
||||
<!-- Size of the particles -->
|
||||
<size min="0.1"
|
||||
max="0.2"
|
||||
x-increase-factor="1.3"
|
||||
y-increase-factor="1.3" />
|
||||
|
||||
<color min="255 255 255"
|
||||
max="255 255 255" />
|
||||
|
||||
<fadeout time="3000" />
|
||||
|
||||
|
||||
</particles>
|
||||
1
data/po/.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*.sh -crlf
|
||||
1
data/po/.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
transifex
|
||||
tx.exe
|
||||
gui_strings.h
|
||||
|
||||
6431
data/po/ar.po
3370
data/po/bg.po
3370
data/po/bn.po
6590
data/po/br.po
6593
data/po/ca.po
6562
data/po/cs.po
6598
data/po/da.po
@@ -3364,6 +3364,10 @@ msgstr ""
|
||||
msgid "standard"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/credits.cpp:209
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
|
||||
#: src/states_screens/credits.cpp:209
|
||||
msgid "translator-credits"
|
||||
msgstr "Launchpad Contributions:"
|
||||
|
||||
6600
data/po/de.po
6550
data/po/el.po
6417
data/po/en_GB.po
3370
data/po/eo.po
6593
data/po/es.po
6411
data/po/eu.po
3367
data/po/fa.po
6597
data/po/fi.po
6385
data/po/fr.po
6421
data/po/fr_CA.po
3378
data/po/ga.po
6607
data/po/gd.po
3372
data/po/gl.po
6595
data/po/he.po
3370
data/po/hi.po
3373
data/po/hr.po
3370
data/po/hu.po
3370
data/po/hy.po
3367
data/po/id.po
3370
data/po/is.po
6524
data/po/it.po
6492
data/po/ja.po
3371
data/po/jbo.po
3367
data/po/ko.po
6605
data/po/kw.po
3367
data/po/ky.po
6348
data/po/lt.po
6495
data/po/lv.po
6442
data/po/nb.po
6593
data/po/nl.po
6555
data/po/nn.po
3370
data/po/os.po
6598
data/po/pl.po
6607
data/po/pt.po
6598
data/po/pt_BR.po
3372
data/po/ro.po
6606
data/po/ru.po
3370
data/po/sco.po
6660
data/po/sk.po
6607
data/po/sl.po
3370
data/po/sq.po
6629
data/po/sr.po
6336
data/po/sv.po
6447
data/po/tr.po
3367
data/po/tt.po
6425
data/po/uk.po
@@ -52,7 +52,7 @@ xgettext -j -d supertuxkart --keyword=_ --keyword=N_ --keyword=_LTR \
|
||||
--package-name=supertuxkart
|
||||
|
||||
# Angelscript files (xgettext doesn't support AS so pretend it's c++)
|
||||
xgettext -j -d supertuxkart -s --keyword="translate" --add-comments="I18N:" \
|
||||
xgettext -j -d supertuxkart --keyword="translate" --add-comments="I18N:" \
|
||||
-p ./data/po -o supertuxkart.pot $ANGELSCRIPT_FILE_LIST \
|
||||
--package-name=supertuxkart --language=c++
|
||||
|
||||
|
||||
3367
data/po/vi.po
6547
data/po/zh_CN.po
6610
data/po/zh_TW.po
@@ -23,5 +23,7 @@ void main(void)
|
||||
col.xyz *= pow(color.xyz, vec3(2.2));
|
||||
if (col.a * color.a < 0.5) discard;
|
||||
float specmap = texture(SpecMap, uv).g;
|
||||
FragColor = vec4(getLightFactor(col.xyz, vec3(1.), specmap, 0.), 1.);
|
||||
float emitmap = texture(SpecMap, uv).b;
|
||||
|
||||
FragColor = vec4(getLightFactor(col.xyz, vec3(1.), specmap, emitmap), 1.);
|
||||
}
|
||||
|
||||
@@ -2,9 +2,7 @@ layout(triangles) in;
|
||||
layout(triangle_strip, max_vertices=3) out;
|
||||
|
||||
in int layer[3];
|
||||
in vec2 uv_in[3];
|
||||
flat out int slice;
|
||||
out vec2 uv;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
@@ -12,7 +10,6 @@ void main(void)
|
||||
for(int i=0; i<3; i++)
|
||||
{
|
||||
slice = layer[0];
|
||||
uv = uv_in[i];
|
||||
gl_Position = gl_in[i].gl_Position;
|
||||
EmitVertex();
|
||||
}
|
||||
|
||||
@@ -4,3 +4,6 @@ Atm there is no mechanism in place to verify this.
|
||||
stk release svn version of assets
|
||||
---------------------------------------
|
||||
0.8.2-beta2 needs r15985
|
||||
0.9 needs r16279
|
||||
0.9.1-rc1 needs r16470
|
||||
0.9.1 needs r16503
|
||||
|
||||
@@ -133,7 +133,7 @@ else()
|
||||
endif()
|
||||
|
||||
add_library(${ANGELSCRIPT_LIBRARY_NAME} ${ANGELSCRIPT_SOURCE} ${ANGELSCRIPT_HEADERS})
|
||||
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../../lib)
|
||||
#set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../../lib)
|
||||
target_link_libraries(${ANGELSCRIPT_LIBRARY_NAME} ${CMAKE_THREAD_LIBS_INIT})
|
||||
|
||||
set_target_properties(${ANGELSCRIPT_LIBRARY_NAME} PROPERTIES VERSION ${PROJECT_VERSION})
|
||||
@@ -154,6 +154,6 @@ if(MSVC)
|
||||
set_target_properties(${ANGELSCRIPT_LIBRARY_NAME} PROPERTIES COMPILE_FLAGS "/MP")
|
||||
endif()
|
||||
|
||||
set(RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/../../bin)
|
||||
#set(RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/../../bin)
|
||||
|
||||
|
||||
|
||||
@@ -912,31 +912,17 @@ bool CIrrDeviceLinux::createWindow()
|
||||
// window is showed in wrong screen. It doesn't matter for vidmode
|
||||
// which displays cloned image in all devices.
|
||||
#ifdef _IRR_LINUX_X11_RANDR_
|
||||
XResizeWindow(display, window, Width, Height);
|
||||
XMoveWindow(display, window, crtc_x, crtc_y);
|
||||
XMoveResizeWindow(display, window, crtc_x, crtc_y, Width, Height);
|
||||
XRaiseWindow(display, window);
|
||||
XFlush(display);
|
||||
#endif
|
||||
|
||||
// Workaround for Gnome which sometimes creates window smaller than display
|
||||
XSizeHints *hints = XAllocSizeHints();
|
||||
hints->flags=PMinSize;
|
||||
hints->min_width=Width;
|
||||
hints->min_height=Height;
|
||||
XSetWMNormalHints(display, window, hints);
|
||||
XFree(hints);
|
||||
|
||||
// Set the fullscreen mode via the window manager. This allows alt-tabing, volume hot keys & others.
|
||||
// Get the needed atom from there freedesktop names
|
||||
Atom WMStateAtom = XInternAtom(display, "_NET_WM_STATE", true);
|
||||
Atom WMFullscreenAtom = XInternAtom(display, "_NET_WM_STATE_FULLSCREEN", true);
|
||||
// Set the fullscreen property
|
||||
XChangeProperty(display, window, WMStateAtom, XA_ATOM, 32, PropModeReplace,
|
||||
reinterpret_cast<unsigned char*>(&WMFullscreenAtom), 1);
|
||||
|
||||
// Notify the root window
|
||||
XEvent xev = {0}; // The event should be filled with zeros before setting its attributes
|
||||
|
||||
xev.type = ClientMessage;
|
||||
xev.xclient.window = window;
|
||||
xev.xclient.message_type = WMStateAtom;
|
||||
@@ -947,6 +933,47 @@ bool CIrrDeviceLinux::createWindow()
|
||||
SubstructureRedirectMask | SubstructureNotifyMask, &xev);
|
||||
|
||||
XFlush(display);
|
||||
|
||||
// Wait until window state is already changed to fullscreen
|
||||
bool fullscreen = false;
|
||||
for (int i = 0; i < 500; i++)
|
||||
{
|
||||
Atom type;
|
||||
int format;
|
||||
unsigned long numItems, bytesAfter;
|
||||
unsigned char* data = NULL;
|
||||
|
||||
int s = XGetWindowProperty(display, window, WMStateAtom,
|
||||
0l, 1024, False, XA_ATOM, &type,
|
||||
&format, &numItems, &bytesAfter,
|
||||
&data);
|
||||
|
||||
if (s == Success)
|
||||
{
|
||||
Atom* atoms = (Atom*)data;
|
||||
|
||||
for (unsigned int i = 0; i < numItems; ++i)
|
||||
{
|
||||
if (atoms[i] == WMFullscreenAtom)
|
||||
{
|
||||
fullscreen = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
XFree(data);
|
||||
|
||||
if (fullscreen == true)
|
||||
break;
|
||||
|
||||
usleep(1000);
|
||||
}
|
||||
|
||||
if (!fullscreen)
|
||||
{
|
||||
os::Printer::log("Warning! Got timeout while checking fullscreen sate", ELL_WARNING);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -96,6 +96,7 @@ GPUTimer m_perf_query[Q_LAST];
|
||||
|
||||
const int MIN_SUPPORTED_HEIGHT = 768;
|
||||
const int MIN_SUPPORTED_WIDTH = 1024;
|
||||
const bool ALLOW_1280_X_720 = true;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
/** The constructor creates the irrlicht device. It first creates a NULL
|
||||
@@ -157,7 +158,10 @@ IrrDriver::~IrrDriver()
|
||||
|
||||
delete m_shadow_matrices;
|
||||
m_shadow_matrices = NULL;
|
||||
if (CVS->isGLSL())
|
||||
{
|
||||
Shaders::destroy();
|
||||
}
|
||||
delete m_wind;
|
||||
delete m_spherical_harmonics;
|
||||
} // ~IrrDriver
|
||||
@@ -325,7 +329,8 @@ void IrrDriver::createListOfVideoModes()
|
||||
const int w = modes->getVideoModeResolution(i).Width;
|
||||
const int h = modes->getVideoModeResolution(i).Height;
|
||||
if ((h < MIN_SUPPORTED_HEIGHT || w < MIN_SUPPORTED_WIDTH) &&
|
||||
( ! (h==600 && w==800 && UserConfigParams::m_artist_debug_mode) ) )
|
||||
(!(h==600 && w==800 && UserConfigParams::m_artist_debug_mode) &&
|
||||
(!(h==720 && w==1280 && ALLOW_1280_X_720 == true))))
|
||||
continue;
|
||||
|
||||
VideoMode mode(w, h);
|
||||
@@ -822,7 +827,10 @@ void IrrDriver::applyResolutionSettings()
|
||||
GlowPassCmd::getInstance()->kill();
|
||||
resetTextureTable();
|
||||
// initDevice will drop the current device.
|
||||
if (CVS->isGLSL())
|
||||
{
|
||||
Shaders::destroy();
|
||||
}
|
||||
initDevice();
|
||||
|
||||
// Re-init GUI engine
|
||||
@@ -1383,7 +1391,11 @@ scene::ISceneNode *IrrDriver::addSkyBox(const std::vector<video::ITexture*> &tex
|
||||
{
|
||||
assert(texture.size() == 6);
|
||||
|
||||
if (CVS->isGLSL())
|
||||
{
|
||||
m_skybox = new Skybox(texture);
|
||||
}
|
||||
|
||||
if(spherical_harmonics_textures.size() == 6)
|
||||
{
|
||||
m_spherical_harmonics->setTextures(spherical_harmonics_textures);
|
||||
|
||||
@@ -1778,6 +1778,8 @@ void Kart::crashed(AbstractKart *k, bool update_attachments)
|
||||
// -----------------------------------------------------------------------------
|
||||
/** Kart hits the track with a given material.
|
||||
* \param m Material hit, can be NULL if no specific material exists.
|
||||
* \param normal The normal of the hit (used to push a kart back, which avoids
|
||||
* that karts sometimes can get stuck).
|
||||
*/
|
||||
void Kart::crashed(const Material *m, const Vec3 &normal)
|
||||
{
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "config/user_config.hpp"
|
||||
#include "io/file_manager.hpp"
|
||||
#include "graphics/central_settings.hpp"
|
||||
#include "graphics/irr_driver.hpp"
|
||||
#include "graphics/particle_emitter.hpp"
|
||||
#include "graphics/particle_kind.hpp"
|
||||
@@ -120,9 +121,13 @@ KartGFX::~KartGFX()
|
||||
if(m_all_emitters[i])
|
||||
delete m_all_emitters[i];
|
||||
} // for i < KGFX_COUNT
|
||||
|
||||
if (CVS->isGLSL())
|
||||
{
|
||||
m_nitro_light->drop();
|
||||
m_skidding_light_1->drop();
|
||||
m_skidding_light_2->drop();
|
||||
}
|
||||
|
||||
} // ~KartGFX
|
||||
|
||||
|
||||
@@ -496,6 +496,11 @@ void PhysicalObject::init()
|
||||
btVector3 inertia(1,1,1);
|
||||
if (m_body_type != MP_EXACT)
|
||||
m_shape->calculateLocalInertia(m_mass, inertia);
|
||||
else
|
||||
{
|
||||
if (m_mass == 0)
|
||||
inertia.setValue(0, 0, 0);
|
||||
}
|
||||
btRigidBody::btRigidBodyConstructionInfo info(m_mass, m_motion_state,
|
||||
m_shape, inertia);
|
||||
|
||||
|
||||
@@ -594,10 +594,21 @@ btScalar Physics::solveGroup(btCollisionObject** bodies, int numBodies,
|
||||
upA, contact_manifold->getContactPoint(0).m_localPointA,
|
||||
upB, contact_manifold->getContactPoint(0).m_localPointB);
|
||||
else if(upB->is(UserPointer::UP_PHYSICAL_OBJECT))
|
||||
{
|
||||
// 2.3 kart hits physical object
|
||||
m_all_collisions.push_back(
|
||||
upB, contact_manifold->getContactPoint(0).m_localPointB,
|
||||
upA, contact_manifold->getContactPoint(0).m_localPointA);
|
||||
// If the object is a statical object (e.g. a door in
|
||||
// overworld) add a push back to avoid that karts get stuck
|
||||
if (objB->isStaticObject())
|
||||
{
|
||||
AbstractKart *kart = upA->getPointerKart();
|
||||
const btVector3 &normal = contact_manifold->getContactPoint(0)
|
||||
.m_normalWorldOnB;
|
||||
kart->crashed((Material*)NULL, normal);
|
||||
} // isStatiObject
|
||||
}
|
||||
else if(upB->is(UserPointer::UP_ANIMATION))
|
||||
m_all_collisions.push_back(
|
||||
upB, contact_manifold->getContactPoint(0).m_localPointB,
|
||||
|
||||
@@ -143,7 +143,7 @@ void CreditsScreen::loadedFromFile()
|
||||
|
||||
std::string creditsfile = file_manager->getAsset("CREDITS");
|
||||
|
||||
std::ifstream file( creditsfile.c_str() ) ;
|
||||
std::ifstream file( creditsfile.c_str(), std::ios::binary ) ;
|
||||
|
||||
if (file.fail() || !file.is_open() || file.eof())
|
||||
{
|
||||
|
||||
@@ -200,7 +200,7 @@ void OptionsScreenVideo::init()
|
||||
CheckBoxWidget* rememberWinpos = getWidget<CheckBoxWidget>("rememberWinpos");
|
||||
rememberWinpos->setState(UserConfigParams::m_remember_window_location);
|
||||
|
||||
rememberWinpos->setActive(UserConfigParams::m_fullscreen);
|
||||
rememberWinpos->setActive(!UserConfigParams::m_fullscreen);
|
||||
|
||||
// --- get resolution list from irrlicht the first time
|
||||
if (!m_inited)
|
||||
|
||||