Abort path preview when opening render screen (fixes #524)
This commit is contained in:
@@ -102,6 +102,7 @@ public class GuiPathing {
|
|||||||
public final GuiButton renderButton = new GuiButton().onClick(new Runnable() {
|
public final GuiButton renderButton = new GuiButton().onClick(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
abortPathPlayback();
|
||||||
GuiScreen screen = GuiRenderSettings.createBaseScreen();
|
GuiScreen screen = GuiRenderSettings.createBaseScreen();
|
||||||
new GuiRenderQueue(screen, replayHandler, () -> preparePathsForPlayback(false)) {
|
new GuiRenderQueue(screen, replayHandler, () -> preparePathsForPlayback(false)) {
|
||||||
@Override
|
@Override
|
||||||
@@ -378,7 +379,21 @@ public class GuiPathing {
|
|||||||
startLoadingEntityTracker();
|
startLoadingEntityTracker();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void abortPathPlayback() {
|
||||||
|
if (!player.isActive()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ListenableFuture<Void> future = player.getFuture();
|
||||||
|
if (!future.isDone() && !future.isCancelled()) {
|
||||||
|
future.cancel(false);
|
||||||
|
}
|
||||||
|
// Tear down of the player might only happen the next tick after it was cancelled
|
||||||
|
player.onTick();
|
||||||
|
}
|
||||||
|
|
||||||
public void keyframeRepoButtonPressed() {
|
public void keyframeRepoButtonPressed() {
|
||||||
|
abortPathPlayback();
|
||||||
try {
|
try {
|
||||||
GuiKeyframeRepository gui = new GuiKeyframeRepository(
|
GuiKeyframeRepository gui = new GuiKeyframeRepository(
|
||||||
mod.getCurrentTimeline(), replayHandler.getReplayFile(), mod.getCurrentTimeline().getTimeline());
|
mod.getCurrentTimeline(), replayHandler.getReplayFile(), mod.getCurrentTimeline().getTimeline());
|
||||||
|
|||||||
Reference in New Issue
Block a user