editor fixes and undo/redo
This commit is contained in:
parent
69475b1bd8
commit
e3194e45ff
24
bundle.js
24
bundle.js
@ -2043,8 +2043,7 @@
|
|||||||
this.ghostSegment = void 0;
|
this.ghostSegment = void 0;
|
||||||
this.closestEnd = void 0;
|
this.closestEnd = void 0;
|
||||||
} else if (this.selectedSegment) {
|
} else if (this.selectedSegment) {
|
||||||
track2.registerSegment(this.selectedSegment);
|
track2.registerSegment(this.selectedSegment.cleanCopy());
|
||||||
this.selectedSegment = new StraightTrack();
|
|
||||||
} else {
|
} else {
|
||||||
this.selectedSegment = void 0;
|
this.selectedSegment = void 0;
|
||||||
}
|
}
|
||||||
@ -2056,13 +2055,32 @@
|
|||||||
this.ghostRotated = false;
|
this.ghostRotated = false;
|
||||||
this.ghostSegment = void 0;
|
this.ghostSegment = void 0;
|
||||||
});
|
});
|
||||||
this.currentSegment = track.lastSegment;
|
inputManager2.onKey("z", () => {
|
||||||
|
if (inputManager2.getKeyState("Control")) {
|
||||||
|
const segment = track.lastSegment;
|
||||||
|
if (!segment) return;
|
||||||
|
this.redoBuffer.push(segment);
|
||||||
|
if (this.redoBuffer.length > 100) {
|
||||||
|
this.redoBuffer.shift();
|
||||||
|
}
|
||||||
|
track.unregisterSegment(segment);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
inputManager2.onKey("y", () => {
|
||||||
|
if (inputManager2.getKeyState("Control")) {
|
||||||
|
const segment = this.redoBuffer.pop();
|
||||||
|
if (!segment) return;
|
||||||
|
track.registerSegment(segment);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
redoBuffer = [];
|
||||||
stop() {
|
stop() {
|
||||||
const inputManager2 = getContextItem("inputManager");
|
const inputManager2 = getContextItem("inputManager");
|
||||||
inputManager2.offKey("e");
|
inputManager2.offKey("e");
|
||||||
inputManager2.offKey("w");
|
inputManager2.offKey("w");
|
||||||
inputManager2.offKey("Escape");
|
inputManager2.offKey("Escape");
|
||||||
|
inputManager2.offMouse("left");
|
||||||
if (this.heldEvents.size > 0) {
|
if (this.heldEvents.size > 0) {
|
||||||
for (const [key, cb] of this.heldEvents) {
|
for (const [key, cb] of this.heldEvents) {
|
||||||
if (cb) {
|
if (cb) {
|
||||||
|
@ -324,8 +324,8 @@ export class EditTrackState extends State<States> {
|
|||||||
this.ghostSegment = undefined;
|
this.ghostSegment = undefined;
|
||||||
this.closestEnd = undefined;
|
this.closestEnd = undefined;
|
||||||
} else if (this.selectedSegment) {
|
} else if (this.selectedSegment) {
|
||||||
track.registerSegment(this.selectedSegment);
|
track.registerSegment(this.selectedSegment.cleanCopy());
|
||||||
this.selectedSegment = new StraightTrack();
|
// this.selectedSegment = new StraightTrack();
|
||||||
} else {
|
} else {
|
||||||
this.selectedSegment = undefined;
|
this.selectedSegment = undefined;
|
||||||
}
|
}
|
||||||
@ -355,16 +355,36 @@ export class EditTrackState extends State<States> {
|
|||||||
this.ghostSegment = undefined;
|
this.ghostSegment = undefined;
|
||||||
});
|
});
|
||||||
|
|
||||||
this.currentSegment = track.lastSegment;
|
// this.currentSegment = track.lastSegment;
|
||||||
|
inputManager.onKey("z", () => {
|
||||||
|
if (inputManager.getKeyState("Control")) {
|
||||||
|
const segment = track.lastSegment;
|
||||||
|
if (!segment) return;
|
||||||
|
this.redoBuffer.push(segment);
|
||||||
|
if (this.redoBuffer.length > 100) {
|
||||||
|
this.redoBuffer.shift();
|
||||||
|
}
|
||||||
|
track.unregisterSegment(segment);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
inputManager.onKey("y", () => {
|
||||||
|
if (inputManager.getKeyState("Control")) {
|
||||||
|
const segment = this.redoBuffer.pop();
|
||||||
|
if (!segment) return;
|
||||||
|
track.registerSegment(segment);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
// Cache trains and save
|
// Cache trains and save
|
||||||
}
|
}
|
||||||
|
redoBuffer: TrackSegment[] = [];
|
||||||
override stop(): void {
|
override stop(): void {
|
||||||
const inputManager = getContextItem<InputManager>("inputManager");
|
const inputManager = getContextItem<InputManager>("inputManager");
|
||||||
inputManager.offKey("e");
|
inputManager.offKey("e");
|
||||||
inputManager.offKey("w");
|
inputManager.offKey("w");
|
||||||
inputManager.offKey("Escape");
|
inputManager.offKey("Escape");
|
||||||
|
inputManager.offMouse("left");
|
||||||
if (this.heldEvents.size > 0) {
|
if (this.heldEvents.size > 0) {
|
||||||
for (const [key, cb] of this.heldEvents) {
|
for (const [key, cb] of this.heldEvents) {
|
||||||
if (cb) {
|
if (cb) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user