Add scene exit transition request handling in RuntimeHost
This commit is contained in:
@@ -117,6 +117,12 @@ export interface RuntimeSceneLoadState {
|
||||
message: string | null;
|
||||
}
|
||||
|
||||
export interface RuntimeSceneExitTransitionRequest {
|
||||
sourceExitEntityId: string;
|
||||
targetSceneId: string;
|
||||
targetEntryEntityId: string;
|
||||
}
|
||||
|
||||
export class RuntimeHost {
|
||||
private readonly scene = new Scene();
|
||||
private readonly camera = new PerspectiveCamera(70, 1, 0.05, 1000);
|
||||
@@ -188,6 +194,9 @@ export class RuntimeHost {
|
||||
private sceneLoadStateHandler:
|
||||
| ((state: RuntimeSceneLoadState) => void)
|
||||
| null = null;
|
||||
private sceneExitHandler:
|
||||
| ((request: RuntimeSceneExitTransitionRequest) => void)
|
||||
| null = null;
|
||||
private currentRuntimeMessage: string | null = null;
|
||||
private currentFirstPersonTelemetry: FirstPersonTelemetry | null = null;
|
||||
private currentInteractionPrompt: RuntimeInteractionPrompt | null = null;
|
||||
@@ -422,6 +431,14 @@ export class RuntimeHost {
|
||||
}
|
||||
}
|
||||
|
||||
setSceneExitHandler(
|
||||
handler:
|
||||
| ((request: RuntimeSceneExitTransitionRequest) => void)
|
||||
| null
|
||||
) {
|
||||
this.sceneExitHandler = handler;
|
||||
}
|
||||
|
||||
dispose() {
|
||||
if (this.animationFrame !== 0) {
|
||||
cancelAnimationFrame(this.animationFrame);
|
||||
@@ -1642,6 +1659,13 @@ export class RuntimeHost {
|
||||
teleportPlayer: (target) => {
|
||||
this.applyTeleportPlayerAction(target);
|
||||
},
|
||||
activateSceneExit: (sceneExit) => {
|
||||
this.sceneExitHandler?.({
|
||||
sourceExitEntityId: sceneExit.entityId,
|
||||
targetSceneId: sceneExit.targetSceneId,
|
||||
targetEntryEntityId: sceneExit.targetEntryEntityId
|
||||
});
|
||||
},
|
||||
toggleBrushVisibility: (brushId, visible) => {
|
||||
this.applyToggleBrushVisibilityAction(brushId, visible);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user