public void cancel() { synchronized (TimelineEngine.LOCK) { TimelineScenarioState oldState = this.state; if (oldState != TimelineScenarioState.PLAYING) return; this.state = TimelineScenarioState.DONE; for (TimelineScenarioActor waiting : this.waitingActors) { if (waiting instanceof Timeline) { ((Timeline) waiting).cancel(); } } for (TimelineScenarioActor running : this.runningActors) { if (running instanceof Timeline) { ((Timeline) running).cancel(); } } } }