maj00r
b07050fa52
feat(tracks): switches keep their neighbours joined on replacing, flipping and moving; events copied on splitting; circuits, overhead line, sleepers and events of the paths; curve design through the switches of a line; changes in files included more than once or with parameters reported instead of written; split of a straight at the point found, not a share of its length
2026-10-05 01:21:11 +02:00
maj00r
8f050d9c3e
feat(tracks): speed check of the paths against the speed their geometry allows: radius and cant, cant ramps, curves without transitions, switch branches
2026-10-05 01:21:11 +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
maj00r
9bd8226c51
Fix the GCC 13 and MSVC builds: no brace-initialised reference from reference_wrapper, no near/far names
2026-10-04 02:49:05 +02:00
maj00r
ac82db8178
Structure gauge: map scan in slices over the frames with progress and cancel, skip the triangles far from the lines
2026-10-04 02:35:00 +02:00
maj00r
818fc60e21
Structure gauge: no road gauge along the pavements
2026-10-04 02:33:11 +02:00
maj00r
e69601dfa0
Structure gauge: no red highlight of the intruding triangles
2026-10-04 02:27:52 +02:00
maj00r
1ab5e1e8c3
Structure gauge: camera along the track at the height of the hit, close to it
2026-10-04 02:25:12 +02:00
maj00r
ce0c311106
Structure gauge refactor: outline ring, tilt in the sections, outline choice, shared track line
2026-10-04 02:22:57 +02:00
maj00r
ae8a046f79
Structure gauge: wheel zone in the common lower part, depth as the distance from the outline
2026-10-04 02:17:50 +02:00
maj00r
7e78ca8714
Structure gauge: the lower part turns with the plane of the rail heads on cant
2026-10-04 02:12:14 +02:00
maj00r
0b5b69d76e
Structure gauge button in the Track tab of the toolset
2026-10-04 02:05:31 +02:00
maj00r
e4e3aad853
Structure gauge: G1/G2/GA/GB/GC installation gauges, road clearance, Toolset button
2026-10-04 02:00:43 +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
maj00r
d57215877f
feat: structure gauge window in the menu bar, gauge tunnel around the hit, fixed reach
2026-10-04 01:54:17 +02:00
maj00r
208ad3400d
fix: structure gauge measured from the rail head, not the rail foot of the scenery points
2026-10-04 01:48:11 +02:00
maj00r
f2e727ce9a
feat: structure gauge violations on the whole map, camera goes to them
2026-10-04 01:44:04 +02:00
maj00r
cf8062ea96
feat: GPL-1/GPL-2 structure gauges, widening run-in ahead of the curves
2026-10-04 01:40:25 +02:00
maj00r
b0c363b586
feat: structure gauge along the line of the selected path in the OpenGL view
2026-10-04 01:27:41 +02:00
maj00r
661c211b2e
feat(editor): tooltips of the track fields, textures applied on leaving the field
2026-10-04 01:04:41 +02:00
maj00r
17725b6527
feat(editor): mode bar of the track window, key hints and values of the change at the cursor
2026-10-04 01:01:49 +02:00
maj00r
fc195880e1
refactor(editor): one place for the orthographic projection of the editor view
2026-10-04 00:52:14 +02:00
maj00r
7d87fef7a0
refactor(editor): anchor on the nearest place of a path
2026-10-04 00:51:05 +02:00
maj00r
07994a578c
refactor(editor): stored bindings read apart from their registration, one way to open a profile route
2026-10-04 00:50:08 +02:00
maj00r
21082c4a5f
refactor(editor): split the vertical profile window
2026-10-04 00:48:42 +02:00
maj00r
eb5b2e8919
refactor(editor): split the infrastructure window
2026-10-04 00:48:00 +02:00
maj00r
c95c374082
refactor(editor): split the route design panel
2026-10-04 00:47:00 +02:00
maj00r
1f381bbb48
refactor(editor): split the profile canvas into navigation, editing and drawing
2026-10-04 00:45:54 +02:00
maj00r
0879f1528e
refactor(editor): named overlay colours
2026-10-04 00:43:41 +02:00
maj00r
20fa5613a7
refactor(editor): shared gizmo frame, screen picking and history trimming
2026-10-04 00:42:47 +02:00
maj00r
9cd0f0b1a7
refactor(editor): shared writers of the path definitions
2026-10-04 00:39:30 +02:00
maj00r
62f07c8fbb
refactor(editor): one edit helper for the definitions rewritten on save
2026-10-04 00:39:30 +02:00
maj00r
c85a52d5b1
refactor(editor): track observer instead of the function hooks
2026-10-04 00:37:26 +02:00
maj00r
7b8d809078
refactor(editor): drop unused editor state and vertical leftovers of the route design
2026-10-04 00:35:40 +02:00
maj00r
e5c91d8a1a
refactor(editor): shared plan geometry and formatting helpers
2026-10-04 00:33:44 +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
maj00r
7371b18910
feat(editor): vertical profile editor, grade lines kept in the scenery
2026-10-04 00:14:03 +02:00
maj00r
cdd5c242d1
feat(editor): curves take over the adjoining straights
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
3eb1f42e8e
fix(editor): rename lambda clashing with the windows far macro
2026-10-03 17:34:48 +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