jerrrrycho
807d6822a5
refactor(sonar): remove redundant access specifiers (cpp:S3539)
2026-10-10 20:44:33 +02:00
jerrrrycho
3f1c9720fb
refactor(sonar): prefer using over typedef (cpp:S5416)
2026-10-10 20:44:32 +02:00
jerrrrycho
c4738dbc87
refactor(sonar): remove empty statements, one declaration per statement (cpp:S1116, cpp:S1659)
2026-10-10 20:44:31 +02:00
jerrrrycho
3d46090e49
refactor(sonar): use override instead of redundant virtual (cpp:S3471)
2026-10-10 20:44:30 +02:00
917c8f7285
Merge branch 'master' into feat/modern-editor
2026-10-08 17:44:58 +02:00
maj00r
35a59c7cf2
fix(sweep): local named near renamed, MSVC takes near for the empty macro of windows.h and fails on the syntax
2026-10-08 08:51:06 +02:00
maj00r
2626c8c86b
fix(editor): platform edge by the points of a switch keeps the setback of the diverging path, the sample at the points counted with the line leading into the switch
2026-10-08 01:48:41 +02:00
maj00r
a5ade3258f
fix(editor): a curve with a switch in it read as one curve through the main track of the switch, the switch placed into a curve on the part around the click; the diverging path of a switch placed into a canted curve lies on the conical surface of the cant along its whole length, not only at its ends; platforms by a switch keep the cant of the track for their height, the gauge of the other path only sets them back
2026-10-08 01:39:35 +02:00
maj00r
ee3833fdba
feat(editor): platform edge put 1.725, 1.675 or 1.650 m from the axis of the track as chosen, kept in the editor settings; models along a track set back by the gauge of the other path of each switch whose points their line passes, also when they stand by the plain track ahead of the switch or by its straight path, the widening led in from the tracks beyond the diverging path; the line beyond the ends of a sweep goes on along the straightest path
2026-10-08 01:12:30 +02:00
maj00r
d4791f6a29
feat(editor): a model or an include standing by a track bent along it (B, or the Bend along the track section of the toolset): it stays where it stood and follows the track, through the joined tracks as far as it reaches; reference point at its start, origin, middle, end or a point picked on the model, across at its origin, the side facing the track, the far side or its middle, up at its origin, bottom, top or the top of its edge by the track; the blue cross of a bent model dragged for its offset, with Shift for its height and with Ctrl along the track, the values shown at the cursor; a bent model clicked to edit; one step of the undo history; scale of the model kept, parts lit only at night left out; edges of platforms told by the name of the model and by the overhang of their edge over the foot: put 1.725 m from the axis at the height the name gives, turned with the edge to the track when they stood the other way; platforms stand on the plane of the rail heads carried on to their edge (PKP PLK ST-T2), the gauge widening led in from the tracks beyond the ends and from the other path of a switch; gaps between the pieces of a sweep filled with the paths which join them; Platforms and models tab left out of the track editor; laid track eased into the curvature of the one it joins with a transition curve; File > Open scenery... starts the editor again with the scenery picked from a list; the camera saved with the scenery; T and Shift+T turn each turntable to its next and previous position by event launchers written on each save; a turntable track deleted with its template; a scenery with no trainset gets a WMB10 on its first track; vehicle placed where the track is clicked; gauge check takes in the bent models; Polish translation of the editor
2026-10-08 00:51:40 +02:00
maj00r
978b99b7e5
feat(scenery): models laid along curves (sweep nodes), bent to follow the paths or repeated along them, loaded and saved with the scenery; trainsets put on a path while the simulation runs; trainset turned around by reversed after its header: the first vehicle stays at the offset and leads towards point 1, the rest stands behind it; launcher keeps reversed trainsets and can turn one around; memory cells saved with the new name of the path they name; events tell their targets and the events of a multiple event; renderer tells whether the cursor is over a surface; vehicle placed in the editor entered when the driving goes on
2026-10-06 22:19:32 +02:00
maj00r
084a705452
fix(vehicles): vehicle placed with a switch as its first path no longer reads the direction of a previous path it doesn't have; vehicle put back on the track keeps the direction of its axles
2026-10-06 22:19:12 +02:00
012ffc7470
Merge branch 'feat/modern-editor' of https://github.com/MaSzyna-EU07/maszyna into feat/modern-editor
2026-10-04 21:58:19 +02:00
jerrrrycho
79bd0c8e91
fix(sonar): addressing reliability/security issues ( #202 )
2026-10-04 20:00:13 +02:00
444e89558b
feat(roads): lanes change within a road piece (lanesto), junctions of two roads from earlier sceneries are loaded as such pieces and saved as roads; the editor leads the lanes of neighbouring pieces with them
2026-10-04 05:00:52 +02:00
ceae93eec5
fix(roads): lane transitions drawn as road with an island or a closed zone, end faces and rounded island ends, closed zone stripes on curves, banks applied to the whole road; junction banks to the ground and pedestrian crossings
2026-10-04 03:25:32 +02:00
27a94509c4
feat(roads): right of way and lane turns at junctions, road weights, kerbs, medians and forking roads, banks to the ground, roundabouts, pedestrian crossings, spawn sets by count; fix(editor): model skin export, placement on the ground under the orthophoto
2026-10-04 01:55:35 +02:00
3ce9102da0
feat(roads): level crossings, spawn and removal points for road vehicles, deleting points of a road
2026-10-04 00:31:44 +02:00
maj00r
8778353b22
feat(editor): infrastructure bound to the paths follows their changes
2026-10-04 00:14:03 +02:00
d37dff11e1
fix(editor): ground lookups sorted once instead of walking every terrain model, orthophoto kept under the roads; feat(roads): junction sides, stop lines and junction options
2026-10-03 23:13:01 +02:00
502c609b13
feat(roads): single piece widening with generated transitions, point height tools, fix for the frame rate drop in the road tools
2026-10-03 22:18:53 +02:00
1d4c448e30
feat(roads): junctions made by leading a road out of another, width and height set at road points
2026-10-03 21:20:00 +02:00
daeed40f15
feat(roads): junctions, height above the ground and rounded profile following the terrain
2026-10-03 20:28:37 +02:00
e4083d507f
feat(roads): editor menu and window for building roads, lanes shown as trajectories
2026-10-03 18:21:10 +02:00
2f417fddcc
feat(roads): road node with generated lanes, surface and markings
2026-10-03 17:35:08 +02:00
maj00r
7ede96df5f
chore(editor): cleanup comments
2026-10-03 02:41:34 +02:00
maj00r
8f2a34b3cf
feat(editor): route design with curves and transitions
2026-10-03 02:41:34 +02:00
maj00r
b93c5dde60
feat(editor): edit tracks loaded from the scenery
2026-10-03 02:41:34 +02:00
maj00r
e46fe6d06c
refactor(track): reusable segment init, geometry rebuild, cell removal
2026-10-03 02:41:30 +02:00
7a469190ca
Merge pull request #168 from pwarszawski/whois-owner-fallback
...
whois: fall back to the consist owner in the +0/+7 mode too
2026-09-05 21:08:29 +02:00
Piotr Warszawski
2dcae05c77
event names: drop redundant locale-dependent ToLower() at registration
...
make_event() lowercased the event name twice: cParser::getToken() already
folds ASCII via toLowerChar() (which intentionally leaves bytes >= 0x80
alone), then ToLower() ran std::tolower() over every byte on top of that.
With a non-"C" global locale, that second pass remaps cp1250 uppercase
accented letters (e.g. 0xAF -> 0xBF). Every lookup path - TTrack::AssignEvents(),
child-event resolution in multi_event, event-launcher name resolution -
normalizes only through the parser, so a registered name containing such a
letter can no longer be found: the track logs "can't find assigned event"
and the binding is silently dropped.
Removing the extra ToLower() makes the registration key match every lookup
site (ASCII-only folding, non-ASCII bytes compared verbatim), and matches
the direction toLowerChar()'s own comment already points at for UTF-8.
2026-09-05 19:10:58 +02:00
Piotr Warszawski
1ce576c0c6
whois: log the no-activator case instead of failing silently
...
A whois with no triggering vehicle previously just wrote nothing to
the target cell with no trace in the log, which is a real pain to
diagnose from the scenery side (this is exactly the kind of thing that
cost real debugging time on a station script recently).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
2026-09-04 22:22:25 +02:00
Piotr Warszawski
7ead4f11b4
whois: guard against a null activator
...
whois_event::run_() dereferenced m_activator unconditionally in every
branch (this predates this PR). getvalues_event::run_() and
putvalues_event::run_() already guard the same way elsewhere in this
file; whois_event was missing it. Single early return covers every
branch, old and new.
2026-09-04 22:09:23 +02:00
Piotr Warszawski
4f47233a89
whois: fall back to the consist owner in the +0/+7 mode too
...
The +8/+16/+24/+32/+40 (and the new +48) modes all pick the reporting
vehicle the same way: the activator's own Mechanik if it's the primary
driver, otherwise the consist's controlling vehicle (ctOwner) - so the
event still resolves correctly if a wagon happens to trigger it ahead
of its locomotive.
+0 (train name / stations left / stop flag) predates that pattern and
never got it: it required m_activator->Mechanik directly and silently
wrote nothing otherwise. A whois hook placed where the loco doesn't
necessarily lead (e.g. a train that reverses direction, or one being
propelled) can have a wagon trigger the event first and the memcell
stays empty, with no error - hard to diagnose from scenery side.
Same owner-selection, same guard semantics (still nothing written if
neither the activator nor its consist has a controller), only the
source of the vehicle it reads from is widened.
2026-09-04 21:01:33 +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
d85096f64d
reformat: remove redundant parentheses
2026-06-30 21:19:46 +02:00
jerrrrycho
bf147dd155
refactor: replace null with nullptr
2026-06-29 02:48:25 +02:00
1aac9b4e76
Merge pull request #111 from MaSzyna-EU07/opengl-instancing
...
Some rendering improvements
2026-06-16 23:09:12 +02:00
1be56de0fa
Add sleepermodel optional parameter for tracks
2026-05-19 22:10:47 +02:00
docentYT
81eadbef73
Do not use temp variable when it is not needed
2026-05-12 18:19:11 +02:00
docentYT
13c7317f6e
Do not allow implicit cast for inline std::string to_string(bool Value) and change to_string to std::string for non boolean values
2026-05-03 15:49:29 +02:00
docentYT
1e8b3d554a
Add missing include
2026-05-02 19:49:09 +02:00
docentYT
aaf0352ff6
Remove not needed import
2026-05-02 14:54:40 +02:00
docentYT
7081dab3c2
Replace RadToDeg and DegToRad with glm::degrees and glm::radians
2026-05-02 14:51:13 +02:00
docentYT
ca699d117f
Remove not needed includes
2026-05-02 14:40:31 +02:00
docentYT
3628eb0fc3
Replace interpolate with std::lerp and glm::mix
2026-05-02 01:31:38 +02:00
docentYT
d1f16411a1
Replace clamp with std::clamp
2026-05-01 22:14:29 +02:00
docentYT
ec1dfae953
Replace starts_with and ends_with with string class methods
2026-05-01 17:31:11 +02:00
docentYT
ca839652bf
Use the sq function to force constexpr expressions for numeric literals and enhance readability
2026-04-28 13:23:14 +02:00