From 61dcc351c00f52b4ab479fb89db69c4bc64696d3 Mon Sep 17 00:00:00 2001 From: Marcus Longmuir Date: Wed, 29 Jan 2025 16:52:41 +0000 Subject: [PATCH] Remove getRootContainer from MMLScene (#214) --- .../src/StandalonePlayCanvasAdapter.ts | 5 ++++- .../src/elements/PlayCanvasMElement.ts | 2 +- .../src/StandaloneThreeJSAdapter.ts | 10 ++++++++-- .../src/elements/ThreeJSMElement.ts | 2 +- packages/mml-web/src/frame/CreateWrappedScene.ts | 3 --- packages/mml-web/src/scene/MMLScene.ts | 14 +++----------- .../src/tag-debug-adapter/TagDebugMElement.ts | 6 ++++-- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/packages/mml-web-playcanvas-standalone/src/StandalonePlayCanvasAdapter.ts b/packages/mml-web-playcanvas-standalone/src/StandalonePlayCanvasAdapter.ts index 91ecbe18..08fa4c83 100644 --- a/packages/mml-web-playcanvas-standalone/src/StandalonePlayCanvasAdapter.ts +++ b/packages/mml-web-playcanvas-standalone/src/StandalonePlayCanvasAdapter.ts @@ -2,6 +2,7 @@ import { Interaction, Matr4, MMLGraphicsInterface, + StandaloneGraphicsAdapter, TransformableElement, Vect3, } from "@mml-io/mml-web"; @@ -33,7 +34,9 @@ export type StandalonePlayCanvasAdapterOptions = { controlsType?: StandalonePlayCanvasAdapterControlsType; }; -export class StandalonePlayCanvasAdapter implements PlayCanvasGraphicsAdapter { +export class StandalonePlayCanvasAdapter + implements PlayCanvasGraphicsAdapter, StandaloneGraphicsAdapter +{ containerType: playcanvas.Entity; collisionType: playcanvas.Entity; diff --git a/packages/mml-web-playcanvas/src/elements/PlayCanvasMElement.ts b/packages/mml-web-playcanvas/src/elements/PlayCanvasMElement.ts index bf9906f9..74321c92 100644 --- a/packages/mml-web-playcanvas/src/elements/PlayCanvasMElement.ts +++ b/packages/mml-web-playcanvas/src/elements/PlayCanvasMElement.ts @@ -30,7 +30,7 @@ export class PlayCanvasMElement extends MElementGraphics { // If none of the ancestors are MElements then this element may be directly connected to the body (without a wrapper). // Attempt to use a global scene that has been configured to attach this element to. const scene = this.element.getScene(); - this.currentParentContainer = scene.getRootContainer(); + this.currentParentContainer = scene.getGraphicsAdapter().getRootContainer(); this.currentParentContainer.add(this.container); } diff --git a/packages/mml-web/src/frame/CreateWrappedScene.ts b/packages/mml-web/src/frame/CreateWrappedScene.ts index 8cfb82a1..17199695 100644 --- a/packages/mml-web/src/frame/CreateWrappedScene.ts +++ b/packages/mml-web/src/frame/CreateWrappedScene.ts @@ -73,9 +73,6 @@ export function createWrappedScene( ) { scene.link(linkProps, abortSignal, windowCallback); }, - getRootContainer: () => { - throw new Error("Wrapped scenes do not have a root container"); - }, getUserPositionAndRotation: () => { return scene.getUserPositionAndRotation(); }, diff --git a/packages/mml-web/src/scene/MMLScene.ts b/packages/mml-web/src/scene/MMLScene.ts index e4ef621d..5aa1d443 100644 --- a/packages/mml-web/src/scene/MMLScene.ts +++ b/packages/mml-web/src/scene/MMLScene.ts @@ -27,6 +27,7 @@ import { CylinderGraphics, DebugHelperGraphics, FrameGraphics, + GraphicsAdapter, ImageGraphics, InteractionGraphics, LabelGraphics, @@ -39,10 +40,10 @@ import { PromptGraphics, RemoteDocumentGraphics, SphereGraphics, + StandaloneGraphicsAdapter, TransformableGraphics, VideoGraphics, } from "../graphics"; -import { GraphicsAdapter, StandaloneGraphicsAdapter } from "../graphics"; import { InteractionManager } from "../interaction-ui"; import { LoadingProgressManager } from "../loading"; import { PromptManager } from "../prompt-ui"; @@ -118,8 +119,6 @@ export type IMMLScene = { getGraphicsAdapter: () => G; hasGraphicsAdapter: () => boolean; - getRootContainer: () => ReturnType; - addCollider?: (collider: unknown, element: MElement) => void; updateCollider?: (collider: unknown, element: MElement) => void; removeCollider?: (collider: unknown, element: MElement) => void; @@ -155,7 +154,7 @@ export type IMMLScene = { * * It is the default implementation of the IMMLScene interface and presents a fly camera with drag controls. */ -export class MMLScene> implements IMMLScene { +export class MMLScene implements IMMLScene { private colliders = new Set(); private interactions = new Set>(); @@ -212,13 +211,6 @@ export class MMLScene> implem return this.graphicsAdapter; } - public getRootContainer(): G["containerType"] { - if (!this.graphicsAdapter) { - throw new Error("MMLScene not initialized with a graphics adapter"); - } - return this.graphicsAdapter.getRootContainer(); - } - public getUserPositionAndRotation(): PositionAndRotation { if (!this.graphicsAdapter) { throw new Error("MMLScene not initialized with a graphics adapter"); diff --git a/packages/mml-web/src/tag-debug-adapter/TagDebugMElement.ts b/packages/mml-web/src/tag-debug-adapter/TagDebugMElement.ts index 033aa629..1a405363 100644 --- a/packages/mml-web/src/tag-debug-adapter/TagDebugMElement.ts +++ b/packages/mml-web/src/tag-debug-adapter/TagDebugMElement.ts @@ -42,7 +42,7 @@ export class TagDebugMElement implements MElementGraphics