Fixed ghost track rotation on rear ends
Recalculation on track edit end Changes rendering of ties to be evenly spaced Fixes ghost and held track rendering
This commit is contained in:
@@ -29,6 +29,13 @@ export class TrackSystem {
|
||||
}
|
||||
}
|
||||
|
||||
recalculateAll() {
|
||||
for (const segment of this.segments.values()) {
|
||||
segment.recalculateRailPoints();
|
||||
segment.length = segment.calculateApproxLength();
|
||||
}
|
||||
}
|
||||
|
||||
registerSegment(segment: TrackSegment) {
|
||||
segment.setTrack(this);
|
||||
this.segments.set(segment.id, segment);
|
||||
@@ -39,6 +46,9 @@ export class TrackSystem {
|
||||
s.backNeighbours = s.backNeighbours.filter((n) => n !== segment);
|
||||
s.frontNeighbours = s.frontNeighbours.filter((n) => n !== segment);
|
||||
}
|
||||
const ends = this.ends.get(segment);
|
||||
this.ends.delete(segment);
|
||||
this.endArray = this.endArray.filter((e) => !ends?.includes(e));
|
||||
}
|
||||
|
||||
draw(showControls = false) {
|
||||
@@ -291,7 +301,7 @@ export class TrackSegment extends PathSegment {
|
||||
this.track = t;
|
||||
}
|
||||
|
||||
override draw(showControls = false) {
|
||||
override draw(showControls = false, recalculateRailPoints = false) {
|
||||
// if (showControls) {
|
||||
// this.doodler.drawBezier(
|
||||
// this.points[0],
|
||||
@@ -320,15 +330,17 @@ export class TrackSegment extends PathSegment {
|
||||
});
|
||||
}
|
||||
|
||||
const ties = Math.ceil(this.length / 10);
|
||||
for (let i = 0; i < ties; i++) {
|
||||
const t = i / ties;
|
||||
const p = this.getPointAtT(t);
|
||||
const spacing = Math.ceil(this.length / 10);
|
||||
const points = this.calculateEvenlySpacedPoints(this.length / spacing);
|
||||
for (let i = 0; i < points.length - 1; i++) {
|
||||
// const t = i / ties;
|
||||
// const p = this.getPointAtT(t);
|
||||
const [p, t] = points[i];
|
||||
// this.doodler.drawCircle(p, 2, {
|
||||
// color: "red",
|
||||
// weight: 3,
|
||||
// });
|
||||
this.doodler.drawRotated(p, this.tangent(t).heading(), () => {
|
||||
this.doodler.drawRotated(p, t, () => {
|
||||
this.doodler.line(p, p.copy().add(0, 10), {
|
||||
color: "#291b17",
|
||||
weight: 4,
|
||||
@@ -348,6 +360,9 @@ export class TrackSegment extends PathSegment {
|
||||
});
|
||||
}
|
||||
|
||||
if (recalculateRailPoints) {
|
||||
this.recalculateRailPoints();
|
||||
}
|
||||
this.doodler.deferDrawing(
|
||||
() => {
|
||||
this.doodler.drawLine(this.normalPoints, {
|
||||
|
Reference in New Issue
Block a user