16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-09-01 11:39:18 +02:00
Commit Graph

3054 Commits

Author SHA1 Message Date
4aa4918a36 Merge pull request #155 from MaSzyna-EU07/fix/default-shader-reflections
Fix default shader reflection
2026-08-19 10:03:45 +02:00
dcd87d8c80 Merge pull request #156 from MaSzyna-EU07/fix-traxx-independent-brake
Fix "Traxx" local brake
2026-08-19 10:03:11 +02:00
Ryba04
7cc6a67399 Followed sonar's suggestions 2026-08-18 20:34:37 +02:00
Ryba04
7d3b9a7360 Fix "Traxx" local brake 2026-08-18 00:04:31 +02:00
3b4df9bb6d Fix default shader reflection 2026-08-17 18:51:36 +02:00
Ryba04
1357afb9e1 Update C++ version in readme 2026-08-16 12:40:47 +02:00
Ryba04
7ed57d1b3b Fix assets license link in README
Updated the link for the assets license in the README.
2026-08-09 19:27:27 +02:00
Ryba04
8cd94859c3 Update assets license link in README.md 2026-08-09 19:26:24 +02:00
b70afe6a74 Merge pull request #152 from combolek/unc-path
mashadercompiler: Add support for UNC paths
2026-08-06 21:38:27 +02:00
e65b062721 Merge pull request #151 from combolek/smoke-fix
Disable GLM_FORCE_DEFAULT_ALIGNED_GENTYPES to fix graphics corruption
2026-08-06 21:23:03 +02:00
combolek
1d08198d22 mashadercompiler: Add support for UNC paths
MS DXC on Windows (at least IDxcUtils::BuildArguments) does not support forward slashes in UNC paths. This change feeds it native format with backslashes.

This makes it possible to build Linux and Windows binaries from a single source on a network share.
2026-07-28 18:51:10 -07:00
combolek
a62c9d12f4 Disable GLM_FORCE_DEFAULT_ALIGNED_GENTYPES to fix graphics corruption
This is a regression introduced in 7525b54f (merged via df5a8a89), GLM_FORCE_DEFAULT_ALIGNED_GENTYPES causes visible screen corruption, particularly in the smoke from chimneys or vehicles.
2026-07-28 14:57:30 -07:00
d9eb705d4a Revert "Update GLM ref"
This reverts commit 38db27d3de.
2026-07-25 12:59:54 +02:00
38db27d3de Update GLM ref 2026-07-24 13:05:18 +02:00
8399f55e53 Enable GLM_FORCE_INLINE only for MSVC compiler
Fixes compilation under gcc 15
2026-07-24 12:53:55 +02:00
Sebastian Krzyszkowiak
8383472bbe stdafx: Only use GLM_FORCE_DEFAULT_ALIGNED_GENTYPES on MSVC (#136)
It causes the game to crash on launch while attempting to use SIMD
instructions when compiled with GCC or Clang.

Since it's known to work on MSVC and was enabled due to performance
improvement, leave it enabled there.
2026-07-21 22:57:00 +02:00
jakubg1
1929119db6 Simplify lamp logic, add new lights for 810 vehicles (#148)
Simplified lamp logic by reducing unnecessary brackets, `if` statements, ternary operators and boolean comparisons.
Added new lamps:
- `i-gear1` - 1st gear in the gearbox is active
- `i-gear2` - 2nd gear in the gearbox is active
- `i-hydrolockup` - The gearbox is locking the engine and wheels together

Additionally, fixed motor overload and differential relay lights not turning off when the battery is turned off.
2026-07-21 22:44:04 +02:00
combolek
c8e5360d87 state_manager: Optimize/unify track curve derivative computation (#147)
In TSegment there were two different formulas for a derivative. Most places called GetFirstDerivative() that used the direct formula from the curve points. However RaPositionGet() had its own calculation based on pre-computed cubic polynomial coefficients. This latter method is faster and simpler, so change GetFirstDerivative() to use it and change RaPositionGet() to just call GetFirstDerivative().
2026-07-20 00:02:02 +02:00
combolek
b17a86bc18 state_manager: Optimize computation of position from distance along the track (#141)
TSegment::GetTFromS() is a significant hotspot in the non-rendering part of the state_manager update (about 13%). This change introduces a FastGetTFromS() version that interpolates from precomputed values instead of doing the whole calculation on every call. Computing position from track distance is now done in constant time. This reduces the contribution to about 0.3%.
2026-07-19 15:06:56 +02:00
jerrrrycho
8fbdf21ab8 ci: remove potential script injection (#145) 2026-07-19 14:36:09 +02:00
jerrrrycho
f3881a2432 ci: create an individual check for sonar workflow in pull requests (#144) 2026-07-19 12:04:57 +02:00
jerrrrycho
44113e84de ci: fix sast from forked repos (#142) 2026-07-19 10:22:51 +02:00
Sebastian Krzyszkowiak
22361eec1d Fix compilation with discord-rpc turned off (#135)
Closes #55
2026-07-15 21:50:16 +02:00
Sebastian Krzyszkowiak
c58d218fe7 opengl33renderer: Don't render stars with strong fog (#134)
Stars aren't currently affected by fog. Band-aid it and don't render them
at all when fog is stronger than 500m.
2026-07-15 21:48:27 +02:00
Mateusz Włodarczyk
a961393df9 macOS: guard mipmap generation call on legacy GL path (#132)
glGenerateMipmap is null on the legacy GL path in some contexts; use the
GL_GENERATE_MIPMAP fallback instead of crashing.
2026-07-13 10:15:39 +02:00
combolek
d863ec18c3 uilayer: Implement ui.bg.opacity setting (#139)
uilayer: Implement up ui.bg.opacity setting
2026-07-12 00:41:25 +02:00
jerrrrycho
8d3e10c93b Merge pull request #138 from MaSzyna-EU07/ci-incorporate-sonarcloud
ci: create github actions for sonar
2026-07-11 16:51:33 +02:00
jerrrrycho
9cfbbc567e ci: create github actions for sonarqube 2026-07-11 13:44:30 +02:00
2a5a5acdf8 Merge pull request #131 from xwizard/fix/embedded-python-cwd-syspath
scripting: make CWD-local packages importable in embedded Python
2026-07-06 20:21:18 +02:00
Mateusz Włodarczyk
fd4c112436 scripting: make CWD-local packages importable in embedded Python
Embedded CPython builds sys.path from PYTHONHOME only. Unlike the python
CLI it does not prepend the working directory, and unlike Windows'
getpathp.c it does not add the executable's directory either, so on POSIX
"from scripts import ..." (the asset-side scripts package used by texture
and screen renderers) fails to import.

Insert "." at the front of sys.path after interpreter init, matching how
the engine resolves every other asset (relative to CWD). Idempotent and
harmless on Windows.
2026-07-06 20:07:08 +02:00
0c30f9d706 Merge pull request #130 from MaSzyna-EU07/fix/audio-listener-orientation-alignment
Fix/audio listener orientation alignment
2026-07-04 21:54:33 +02:00
maj00r
3d6c45cd00 audio: use native OpenAL Soft typedefs, drop local token fallbacks
Now that ref/openal ships a current alext.h, include it and use the real
LPALC*SOFT / ALCEVENTPROCTYPESOFT typedefs instead of hand-rolled function
pointer types and #define'd ALC_* tokens. The event callback is marked
ALC_APIENTRY + noexcept to match ALCEVENTPROCTYPESOFT. No behaviour change.
2026-07-04 15:33:32 +02:00
maj00r
6b97268014 audio: follow output-device changes event-driven (ALC_SOFT_system_events)
Replace the ~1 Hz poll (which relied on alcGetString(DEFAULT_ALL_DEVICES),
whose value OpenAL caches and does not refresh on re-plug) with an
alcEventCallbackSOFT handler for DEFAULT_DEVICE_CHANGED / DEVICE_REMOVED. The
callback (possibly off-thread) just flags the change; update() reopens playback
on the new default on the main thread. Now both unplugging and re-plugging the
output are followed. Falls back to the ALC_CONNECTED poll when system_events is
unavailable, and only chases the default when no device is pinned.
2026-07-04 15:22:33 +02:00
maj00r
cb02dc6480 openal: update vendored AL headers to a modern OpenAL Soft
Refresh ref/openal with current OpenAL Soft headers: adds alext.h (ALC_SOFT
extensions incl. reopen_device / system_events, ALC_CONNECTED, the EFX
presets) and efx*.h, and updates al.h/alc.h. Enables the audio device-change
following to build against native tokens instead of local fallbacks.
2026-07-04 15:22:33 +02:00
maj00r
82a0cb8b6f audio: log the real OpenAL Soft library version
ALC_MAJOR/MINOR_VERSION only report the OpenAL API spec level (always 1.1),
which is misleading. Additionally log alGetString(AL_VERSION) (e.g.
"1.1 ALSOFT 1.24.2") once a context is current, and relabel the spec line.
2026-07-03 22:28:17 +02:00
maj00r
7fd98374e9 feat: follow audio output device changes (reopen on disconnect)
OpenAL does not re-route on its own, so unplugging the active output device
(e.g. headphones) mid-game left the sim silent until restart. Poll ALC_CONNECTED
(ALC_EXT_disconnect) at ~1 Hz and, when the device is lost, reopen playback on
the current default output via alcReopenDeviceSOFT, preserving the context and
all sources. Tokens are declared locally since the bundled AL headers ship no
alext.h; the entry point is resolved at runtime, so this is a no-op (with a log
warning) on OpenAL Soft builds too old to provide ALC_SOFT_reopen_device.
2026-07-03 22:12:55 +02:00
maj00r
2ffff9193f fix: correct listener orientation broken by GLM aligned gentypes
Enabling GLM_FORCE_DEFAULT_ALIGNED_GENTYPES makes glm::vec3 16 bytes (padded),
but the listener orientation was passed to alListenerfv as
reinterpret_cast<ALfloat const *>(glm::vec3[2]). With the padding the six
floats OpenAL reads are at.x, at.y, at.z, PAD, up.x, up.y - the 'up' vector is
taken from padding garbage, corrupting the listener basis (right = at x up) and
swapping left/right of every positional sound.

Build the 6 floats explicitly instead of reinterpreting a padded vec3 array.
2026-07-03 21:49:43 +02:00
565aeb0c70 Merge pull request #125 from MaSzyna-EU07/hotfix/std_clamp
Hotfix/std clamp
2026-07-02 09:58:30 +02:00
0207c3f53c Merge pull request #128 from dos1/first-frame-pause
drivermode: Make sure to draw the first frame before pausing
2026-07-02 09:58:05 +02:00
e3ccdd98ab Merge pull request #127 from dos1/randomseed
Initialize random seed early in the init sequence
2026-07-02 09:57:46 +02:00
d1129c4f77 Merge pull request #126 from dos1/loadingscreen
Loading screen improvements
2026-07-02 09:57:27 +02:00
Sebastian Krzyszkowiak
f8339d9bfb drivermode: Make sure to draw the first frame before pausing
Otherwise the screen stays empty when the game is launched paused.
2026-07-02 09:37:07 +02:00
Sebastian Krzyszkowiak
86e91b187a scenarioloaderuilayer: Make the bottom gradient smoother
Since gamma factor is used, we need more than 256 steps to make
the gradient smooth.
2026-07-02 06:49:52 +02:00
Sebastian Krzyszkowiak
8b47d2af51 scenarioloaderuilayer: Scale the loading screen to the window size 2026-07-02 06:49:52 +02:00
Sebastian Krzyszkowiak
c98441d1aa Initialize random seed early in the init sequence
Network client will overwrite the seed if necessary.
2026-07-02 03:14:54 +02:00
maj00r
5fce417a51 fix: guard Random/LocalRandom against inverted min>max bounds
std::uniform_real/int_distribution has UB when min>max. The old "fancy Random"
used interpolate(a,b,t) which tolerated a>b; the migration to
std::uniform_real_distribution did not, and only one inverted call site was
fixed by hand. Swap the bounds inside Random()/Random(int)/LocalRandom() so
every call site is safe, and reorder the two inverted literal calls in
Driver.cpp (fActionTime buzzer / departure delay) for readability.
2026-07-02 00:37:52 +02:00
maj00r
03bfbb1345 fix: restore min>max tolerance lost in clamp->std::clamp migration
The dumb3d->glm / utilities-simplification refactor replaced the old custom
clamp() (which tolerated Lo>Hi, returning the upper bound) with std::clamp,
where inverted bounds are undefined behaviour. Only a few sites were patched
afterwards, by hand, with std::minmax plumbing (incl. a stray `static` inside
a per-axle loop). Others silently produced wrong results in the AI braking /
acceleration path.

Add a safe_clamp() helper (normalizes inverted bounds) and use it ONLY where
Lo<=Hi cannot be proven at compile time (config min/max pairs, sign-dependent
expressions, container underflow). Sites with constant bounds or [0, x>=0]
keep std::clamp. Remove the manual std::minmax workarounds and rewrite the
damaged-track jolt code value-first.
2026-07-02 00:37:52 +02:00
80c3feac03 Merge branch 'master' of https://github.com/MaSzyna-EU07/maszyna 2026-06-30 23:35:46 +02:00
4867f60a65 parser: keep UTF-8 multibyte chars intact when lowercasing tokens 2026-06-30 23:35:33 +02:00
d60841944d Merge pull request #124 from xwizard/refactor/user-config-path
refactor: extract user_config_path() helper
2026-06-30 22:35:53 +02:00