jerrrrycho
7c0f81fb30
refactor(sonar): rely on class template argument deduction (cpp:S6012)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 16:37:55 +02:00
jerrrrycho
89583b2569
refactor(sonar): declare loop counters in the for statement (cpp:S5955)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 16:34:28 +02:00
jerrrrycho
f19e64bc11
refactor(sonar): declare variables separately from their type definitions (cpp:S3646)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 16:33:12 +02:00
jerrrrycho
319815cb0b
refactor(sonar): drop top-level const from by-value return types (cpp:S5951)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 16:29:47 +02:00
jerrrrycho
85640589aa
refactor(sonar): avoid side effects inside typeid operands (cpp:S5279)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 16:26:40 +02:00
jerrrrycho
0bf013fef9
refactor(sonar): add braces around nested if-else (cpp:S5261)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 16:25:40 +02:00
jerrrrycho
24425d222f
refactor(sonar): access static members through the class (cpp:S2209)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 16:24:59 +02:00
jerrrrycho
51337cb1b7
refactor(sonar): use std::ranges algorithms and std::erase(_if) (cpp:S6197)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 16:24:06 +02:00
jerrrrycho
22c7c33a63
refactor(sonar): use std::size for array lengths (cpp:S7127)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 16:22:49 +02:00
jerrrrycho
6445ef728a
refactor(sonar): add default cases to switch statements (cpp:S3562)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 16:22:01 +02:00
jerrrrycho
c67b8be22e
refactor(sonar): split chained assignments (cpp:S1121)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 16:20:06 +02:00
jerrrrycho
03652a5934
refactor(sonar): use range-based loops and ranges algorithms (cpp:S5566)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 16:13:12 +02:00
jerrrrycho
b6349b76e3
refactor(sonar): use structured bindings for pair access (cpp:S6005)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 16:06:32 +02:00
jerrrrycho
9c7043d013
refactor(sonar): remove unused variables, captures and private fields (cpp:S1481, cpp:S1068)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 16:03:19 +02:00
jerrrrycho
ce786c22ce
refactor(sonar): remove dead stores (cpp:S1854)
...
Side effects (e.g. LISTLINE++) are kept.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:58:05 +02:00
jerrrrycho
5a806223e7
refactor(sonar): document intentionally empty functions (cpp:S1186)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:56:34 +02:00
jerrrrycho
41e802eb7a
refactor(sonar): remove redundant parentheses (cpp:S1110)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:55:46 +02:00
jerrrrycho
8f89dcefcd
refactor(sonar): use auto where the type is spelled out on the right (cpp:S5827)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:52:25 +02:00
jerrrrycho
95bc9bd511
refactor(sonar): use try_emplace for map insertion (cpp:S6030)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:51:29 +02:00
jerrrrycho
6547f7e967
fix(sonar): give polymorphic base classes virtual destructors (cpp:S1235)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:48:07 +02:00
jerrrrycho
9b89a5d887
refactor(sonar): scope single-use variables in if init-statements (cpp:S6004)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:44:18 +02:00
jerrrrycho
f8104bd0dd
refactor(sonar): merge collapsible nested if statements (cpp:S1066)
...
Comments that preceded the inner if are kept above the merged statement.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:39:11 +02:00
jerrrrycho
3198cabc78
refactor(sonar): declare non-mutating member functions const (cpp:S5817)
...
Virtual functions are left untouched so overrides keep matching.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:26:48 +02:00
jerrrrycho
1f256e9593
refactor(sonar): mark unused parameters (cpp:S1172)
...
Unused names are commented out; parameters used only on some platforms
are marked [[maybe_unused]].
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:18:45 +02:00
jerrrrycho
8c23c1fe2b
refactor(sonar): make narrowing conversions explicit (cpp:S5276)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:16:28 +02:00
jerrrrycho
80464d0bc1
refactor(sonar): construct elements in place with emplace_back (cpp:S6003)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:06:57 +02:00
jerrrrycho
789e391420
refactor(sonar): use std::scoped_lock instead of std::lock_guard (cpp:S5997)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:06:48 +02:00
jerrrrycho
7e8081d904
refactor(sonar): remove redundant casts (cpp:S1905)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:06:37 +02:00
jerrrrycho
c831bb543c
refactor(sonar): remove redundant access specifiers (cpp:S3539)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:05:48 +02:00
jerrrrycho
1806f029cc
refactor(sonar): use nullptr literal (cpp:S4962)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:05:47 +02:00
jerrrrycho
7b3109061e
refactor(sonar): use =default for trivial special members (cpp:S3490)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:05:45 +02:00
jerrrrycho
3d7a06f425
refactor(sonar): prefer using over typedef (cpp:S5416)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:05:42 +02:00
jerrrrycho
caa1313407
refactor(sonar): drop redundant lambda return types (cpp:S3574)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:04:25 +02:00
jerrrrycho
65ded920d2
refactor(sonar): remove empty statements, one declaration per statement (cpp:S1116, cpp:S1659)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 15:03:30 +02:00
jerrrrycho
8ce68e3d41
refactor(sonar): use override instead of redundant virtual (cpp:S3471)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 14:55:56 +02:00
jerrrrycho
79bd0c8e91
fix(sonar): addressing reliability/security issues ( #202 )
2026-10-04 20:00:13 +02:00
pawelw
51521a135a
Text displays: accept characters above 127, in windows-1250 or utf-8 ( #198 )
...
* Text displays: accept characters above 127, in windows-1250 or utf-8
A text display (sub-model of type "text") looks up the sub-model of each character
in a 256 entry table, and indexed it with a plain char. With char being signed, any
character above 127 gave a negative index: reading the text went outside the table,
and so did filling the table if a character sub-model had such a name. In effect the
displays could only show ASCII, and a text with national characters could crash.
The lookup is now keyed by unicode code point. Both the displayed text and the names
of the character sub-models are decoded as utf-8 if they are valid utf-8, and as
windows-1250 otherwise, so legacy (ansi) sceneries and models work next to utf-8
ones, and the two can be mixed. A short ansi text can be valid utf-8 by accident
(two upper case accented letters in a row will do); when both readings are possible
the one which finds more of its characters in the model is used.
The rest is unchanged: the first character of the text still isn't displayed, the
characters are still drawn in the translucent pass only. A missing text pointer no
longer gets dereferenced.
* Text displays: prepare the characters once for each text
The sequence of character sub-models was cached for the last text only, so
displays of several instances drawn in turn decoded their texts again on
every draw. It is now kept for each text the display shows; the texts of the
instances don't change, so a draw costs a single lookup.
Also the comments added in the renderers are now in English.
* Text displays: move the text decoding to utilities
utf8_to_utf32() and win1250_to_utf32(), with the windows-1250 table, now sit
next to win1250_to_utf8(). The existing function maps only the Polish letters
and passes other bytes above 127 through, so it can't serve the displays.
* Text displays: address the SonarCloud findings
std::array instead of the C-style arrays, the utf-8 sequence length worked
out in a function of its own instead of nested conditional operators,
std::byte for the bit operations, std::ranges::count_if and contains().
The character loop of the renderers moved to Render_Alpha_text(), which
takes the nesting back to the limit, and the static pasText is accessed
through the class.
2026-10-03 12:05:32 +02:00
jerrrrycho
06fc3915f4
fix(renderer): guard replacable skin lookup and light colour access ( #200 )
2026-10-02 21:19:16 +02:00
jerrrrycho
76a39af8c2
fix: bound MotorParam and MPTRelay indices ( #196 )
2026-10-01 20:21:01 +02:00
09e02a75a7
Merge pull request #195 from MaSzyna-EU07/fix/instancing
...
Improve instancing rendering speed
2026-10-01 20:18:19 +02:00
jerrrrycho
1474d2b773
fix: merge nested ifs in Driver.cpp cpp:s1066 ( #194 )
2026-10-01 13:30:36 +02:00
jerrrrycho
06078ddab9
fix: other sonar sast fixes ( #193 )
2026-10-01 13:30:25 +02:00
d670c4b116
perf(instancing): skip models without shadow casters in shadow passes
2026-10-01 12:57:33 +02:00
2130d175e9
perf(instancing): cache instance rotation and group lod bands linearly
2026-10-01 12:43:07 +02:00
4eabf3c3b5
feat(instancing): batch models animated only by time, wind or sky
2026-10-01 12:07:54 +02:00
20f536f05e
fix(instancing): keep batches correct after load-time classification
2026-10-01 11:51:41 +02:00
jerrrrycho
f05b58b0e9
Revert "fix: yet other sonar sast fixes"
...
This reverts commit 403a6d1f9f .
2026-10-01 08:01:23 +02:00
jerrrrycho
403a6d1f9f
fix: yet other sonar sast fixes
2026-10-01 07:58:28 +02:00
jakubg1
10985fbf46
Merge pull request #190 from pwarszawski/fix/reardriver-reverser
...
Send the reverser position, not the absolute direction, when activating a cab
2026-10-01 03:35:08 +02:00
jakubg1
40a6fbbb31
Merge pull request #192 from jakubg1/fix-ew58-ai-unbrake
...
Remove brake position check from `TController::PrepareEngine()`
2026-10-01 02:24:36 +02:00