From f95a38f96cc0bc1762ded91784ef91908be9ea1a Mon Sep 17 00:00:00 2001 From: izawartka <59137928+izawartka@users.noreply.github.com> Date: Wed, 4 Jun 2025 14:13:33 +0200 Subject: [PATCH] Invisible tracks indication +Added prefab_name field in the Track class and track_prefab_name in the Switch class *Invisible tracks are now drawn in gray instead of being completely skipped --- src/components/map/object-renderers/TrackRenderer.js | 2 +- src/model/bezier-track.js | 5 +++-- src/model/point-track.js | 4 ++-- src/model/scenery.js | 4 ---- src/model/standard-track.js | 5 +++-- src/model/switch.js | 10 +++++++--- src/model/track.js | 4 +++- 7 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/components/map/object-renderers/TrackRenderer.js b/src/components/map/object-renderers/TrackRenderer.js index 2d0c03f..4b12d44 100644 --- a/src/components/map/object-renderers/TrackRenderer.js +++ b/src/components/map/object-renderers/TrackRenderer.js @@ -52,7 +52,7 @@ function getTrackColor(object, trackColorMode) { switch (trackColorMode) { case "none": default: - return "#aaa"; + return object.prefab_name.includes('trans-mat') ? "#444" : "#aaa"; case "type": switch (object.type) { diff --git a/src/model/bezier-track.js b/src/model/bezier-track.js index c20b4ae..f397be4 100644 --- a/src/model/bezier-track.js +++ b/src/model/bezier-track.js @@ -11,8 +11,8 @@ export default class BezierTrack extends Track control2: Vector3.zero() }; - constructor(id, start, control1, end, control2, rot, len, r, nextid, previd, id_station, start_slope, end_slope, id_isolation, maxspeed, derailspeed) { - super(id, start, rot, len, r, nextid, previd, id_station, start_slope, end_slope, id_isolation, maxspeed, derailspeed); + constructor(id, start, control1, end, control2, rot, len, r, nextid, previd, id_station, start_slope, end_slope, id_isolation, prefab_name, maxspeed, derailspeed) { + super(id, start, rot, len, r, nextid, previd, id_station, start_slope, end_slope, id_isolation, prefab_name, maxspeed, derailspeed); Object.assign(this.points, { start, @@ -39,6 +39,7 @@ export default class BezierTrack extends Track values[17], // id_station ...Track.slopesFromText(values[18]), // start_slope, end_slope values[21], // id_isolation + values[23], // prefab_name parseFloat(values[24]), // maxspeed parseFloat(values[25]) // derailspeed ); diff --git a/src/model/point-track.js b/src/model/point-track.js index bbc2759..6a1836d 100644 --- a/src/model/point-track.js +++ b/src/model/point-track.js @@ -10,12 +10,12 @@ export default class PointTrack extends Track end: Vector3.zero() }; - constructor(id, start, end, r, nextid, previd, id_station, start_slope, end_slope, id_isolation, maxspeed, derailspeed) { + constructor(id, start, end, r, nextid, previd, id_station, start_slope, end_slope, id_isolation, prefab_name, maxspeed, derailspeed) { const ry = AngleHelper.radToDeg(start.atanY(end)); const rot = new Vector3(0, ry, 0); // TODO: fix rx and rz = 0 // TODO: calculate length - super(id, start, rot, null, r, nextid, previd, id_station, start_slope, end_slope, id_isolation, maxspeed, derailspeed); + super(id, start, rot, null, r, nextid, previd, id_station, start_slope, end_slope, id_isolation, prefab_name, maxspeed, derailspeed); Object.assign(this.points, { start, end diff --git a/src/model/scenery.js b/src/model/scenery.js index dd5b713..f7e1620 100644 --- a/src/model/scenery.js +++ b/src/model/scenery.js @@ -109,10 +109,6 @@ export default class Scenery } static _parseTrack(text) { - /// TODO: remove - const values = text.split(";"); - if(values.includes("none-slp,trans-mat,trans-mat")) return null; // skip invisible tracks - const trackType = text.split(';', 4)[2]; switch(trackType) { case 'Track': diff --git a/src/model/standard-track.js b/src/model/standard-track.js index 74f25a0..e62cd67 100644 --- a/src/model/standard-track.js +++ b/src/model/standard-track.js @@ -11,8 +11,8 @@ export default class StandardTrack extends Track circleCenter: Vector3.zero() }; - constructor(id, start, rot, len, r, nextid, previd, id_station, start_slope, end_slope, id_isolation, maxspeed, derailspeed) { - super(id, start, rot, len, r, nextid, previd, id_station, start_slope, end_slope, id_isolation, maxspeed, derailspeed); + constructor(id, start, rot, len, r, nextid, previd, id_station, start_slope, end_slope, id_isolation, prefab_name, maxspeed, derailspeed) { + super(id, start, rot, len, r, nextid, previd, id_station, start_slope, end_slope, id_isolation, prefab_name, maxspeed, derailspeed); this._calcPoints(); } @@ -29,6 +29,7 @@ export default class StandardTrack extends Track values[13], // id_station ...Track.slopesFromText(values[14]), // start_slope, end_slope values[17], // id_isolation + values[19], // prefab_name parseFloat(values[20]), // maxspeed parseFloat(values[21]) // derailspeed ); diff --git a/src/model/switch.js b/src/model/switch.js index 2a5ba0b..846b917 100644 --- a/src/model/switch.js +++ b/src/model/switch.js @@ -15,16 +15,18 @@ export default class Switch extends SceneryObject { category = "switches"; type = "Switch"; applied = false; + track_prefab_name; trackA; trackB; - constructor(id, model, pos, rot, data, id_isolation, id_switch, maxspeed, derailspeed) { + constructor(id, model, pos, rot, data, id_isolation, id_switch, maxspeed, derailspeed, track_prefab_name) { super(id, pos, rot); Object.assign(this, { model, data, id_switch, id_isolation, - maxspeed, derailspeed + maxspeed, derailspeed, + track_prefab_name }); this.bare_model = model.split(',')[0]?.trim() || model.trim(); @@ -42,7 +44,8 @@ export default class Switch extends SceneryObject { values[10], // id_isolation values[11], // id_switch parseFloat(values[13]), // maxspeed - parseFloat(values[14]) // derailspeed + parseFloat(values[14]), // derailspeed + values[15] // track_prefab_name ); return sw; @@ -121,6 +124,7 @@ export default class Switch extends SceneryObject { 0, // start_slope 0, // end_slope this.id_isolation, + this.track_prefab_name, this.maxspeed, this.derailspeed ); diff --git a/src/model/track.js b/src/model/track.js index 00adb38..df5e1b1 100644 --- a/src/model/track.js +++ b/src/model/track.js @@ -13,9 +13,10 @@ export default class Track extends SceneryObject { previd; start_slope; end_slope; + prefab_name; hide_isolation = false; - constructor(id, pos, rot, len, r, nextid, previd, id_station, start_slope, end_slope, id_isolation, maxspeed, derailspeed) { + constructor(id, pos, rot, len, r, nextid, previd, id_station, start_slope, end_slope, id_isolation, prefab_name, maxspeed, derailspeed) { super(id, pos, rot); Object.assign(this, { len, r, @@ -23,6 +24,7 @@ export default class Track extends SceneryObject { id_station, start_slope, end_slope, id_isolation, + prefab_name, maxspeed, derailspeed }); }