Add crossing prefab definitions

This commit is contained in:
dominik-korsa 2025-07-12 10:48:06 +02:00
parent 5d7cef846f
commit 4342bb41e8
No known key found for this signature in database
GPG Key ID: 5A24D76EE0A30974
2 changed files with 46 additions and 21 deletions

View File

@ -1,24 +1,8 @@
import SwitchPrefab from "../switch-descriptions/switch-prefab"; import SwitchPrefab from "../switch-descriptions/switch-prefab";
const DefinedSwitches = { const DefinedSwitches = {
// "Crossing": [ "Crossing": SwitchPrefab.crossing(33.2294, 9.0),
// 0, "Crossing4.444": SwitchPrefab.crossing(20.0, 4.444),
// 0,
// [0,1],
// new Vector3(-0.919, 0, -16.59),
// new Vector3(0.919, 0, -16.59),
// new Vector3(0.919, 0, 16.59),
// new Vector3(-0.919, 0, 16.59)
// ],
// "Crossing4.444": [
// 0,
// 0,
// [0,1],
// new Vector3(-1.104, 0, -9.939),
// new Vector3(1.104, 0, -9.939),
// new Vector3(1.104, 0, 9.939),
// new Vector3(-1.104, 0, 9.939)
// ],
// Rkp 60E1-190-1_9 ab // Rkp 60E1-190-1_9 ab
// Rkp 60E1-190-1_9 ba // Rkp 60E1-190-1_9 ba
// Rkpd 60E1-190-1_9 // Rkpd 60E1-190-1_9

View File

@ -75,13 +75,13 @@ export default class SwitchPrefab {
}, },
], ],
), ),
...SwitchPrefab._createSwitchTracks( ...SwitchPrefab._createForkSwitchTracks(
radiusA, radiusA,
curveLength, curveLength,
addedLength, addedLength,
'a', 'a',
), ),
...SwitchPrefab._createSwitchTracks( ...SwitchPrefab._createForkSwitchTracks(
radiusB, radiusB,
curveLength, curveLength,
addedLength, addedLength,
@ -92,7 +92,7 @@ export default class SwitchPrefab {
return new SwitchPrefab(tracks); return new SwitchPrefab(tracks);
} }
static _createSwitchTracks(radius, curveLength, addedLength, side) { static _createForkSwitchTracks(radius, curveLength, addedLength, side) {
let curveEnd; let curveEnd;
let endAngle; let endAngle;
if (radius === 0) { if (radius === 0) {
@ -174,4 +174,45 @@ export default class SwitchPrefab {
return tracks; return tracks;
} }
static crossing(length, tangentInv) {
const vectorA = Vector3.fromAngleY(Math.atan(1 / tangentInv / 2), length / 2);
const vectorB = Vector3.fromAngleY(-Math.atan(1 / tangentInv / 2), length / 2);
const tracks = {
a: new SwitchPrefabTrack(
vectorA.negate(),
vectorA,
0,
0,
[
{
type: SwitchTrackConnectionType.EXTERNAL,
end: TrackConnectionEnd.START,
},
{
type: SwitchTrackConnectionType.EXTERNAL,
end: TrackConnectionEnd.END,
},
],
),
b: new SwitchPrefabTrack(
vectorB.negate(),
vectorB,
0,
1,
[
{
type: SwitchTrackConnectionType.EXTERNAL,
end: TrackConnectionEnd.START,
},
{
type: SwitchTrackConnectionType.EXTERNAL,
end: TrackConnectionEnd.END,
},
],
),
};
return new SwitchPrefab(tracks);
}
} }