@tomorrowevening/hermes 0.0.52 → 0.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("three"),fn=require("tweakpane"),pn=require("@tweakpane/plugin-essentials"),x=require("react"),qt=require("framer-motion");function mn(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const e=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(n,a,e.get?e:{enumerable:!0,get:()=>t[a]})}}return n.default=t,Object.freeze(n)}const gn=mn(pn),kt=()=>{},vn=()=>{};function ct(t){return t.substring(0,1).toUpperCase()+t.substring(1)}function Ue(t,n,a){return Math.min(n,Math.max(t,a))}function Rt(t,n,a){return(a-t)/(n-t)}function _t(t,n,a){return t*(1-a)+n*a}function bn(t,n){const a=t-n;return Math.sqrt(a*a)}function Kt(){return Math.round(Math.random()*1e6).toString()}function Xt(t){return t.r!==void 0&&t.g!==void 0&&t.b!==void 0}function Zt(t){const n=Math.round(t.r*255),a=Math.round(t.g*255),e=Math.round(t.b*255),i=d=>{const h=d.toString(16);return h.length===1?"0"+h:h},c=i(n),f=i(a),o=i(e);return"#"+c+f+o}function et(t,n=1){return Number(t.toFixed(n))}exports.totalThreeObjects=0;const Jt=()=>{exports.totalThreeObjects=0},Dt=t=>{if(!t)return;let n=t.name.replace(" ","");n.length===0&&(n=`obj_${exports.totalThreeObjects}`,exports.totalThreeObjects++),t.parent!==null&&(n=`${t.parent.uuid}.${n}`),t.uuid=n,t.children.forEach(a=>{Dt(a)})},yn=t=>{t?.dispose()},Qt=t=>{t&&(Array.isArray(t)?t.forEach(n=>n.dispose()):t.dispose())},jt=t=>{if(t){for(;t.children.length>0;){const n=t.children[0];n.type==="Audio"?(n.pause(),n.parent&&n.parent.remove(n)):jt(n)}if(t.parent&&t.parent.remove(t),t.isMesh){const n=t;n.geometry?.dispose(),Qt(n.material)}t.dispose!==void 0&&t.dispose()}};class En{components=new Map;listen;_appID="";_debugEnabled;_broadcastChannel=void 0;_webSocket=void 0;_mode="app";_connected=!1;_useBC=!1;constructor(n,a,e=!0){this._appID=n,this._debugEnabled=a,a&&(this._useBC=e,e?(this._broadcastChannel=new BroadcastChannel(n),this._broadcastChannel.addEventListener("message",this.messageHandler)):(this._webSocket=new WebSocket(n),this._webSocket.addEventListener("open",this.openHandler),this._webSocket.addEventListener("close",this.closeHandler),this._webSocket.addEventListener("message",this.messageHandler)))}addComponent(n,a){this.components.set(n,a)}dispose(){this._broadcastChannel!==void 0&&this._broadcastChannel.removeEventListener("message",this.messageHandler),this._webSocket!==void 0&&(this._webSocket.removeEventListener("open",this.openHandler),this._webSocket.removeEventListener("close",this.closeHandler),this._webSocket.removeEventListener("message",this.messageHandler)),this.components.forEach(n=>{n.dispose()}),this.components.clear()}send(n){this._mode!==n.target&&(this._useBC?this._broadcastChannel?.postMessage(n):this._connected&&this._webSocket?.send(JSON.stringify(n)))}messageHandler=n=>{this.listen!==void 0&&(this._useBC?this.listen(n.data):this.listen(JSON.parse(n.data)))};openHandler=()=>{this._connected=!0};closeHandler=()=>{this._connected=!1};get appID(){return this._appID}get connected(){return this._connected}get debugEnabled(){return this._debugEnabled}get mode(){return this._mode}get isApp(){return this._mode==="app"}get editor(){return this._mode==="editor"}set editor(n){n&&(this._mode="editor")}}const N=new l.EventDispatcher,F={CUSTOM:"ToolEvents::custom",SELECT_DROPDOWN:"ToolEvents::selectDropdown",DRAG_UPDATE:"ToolEvents::dragUpdate",SET_SCENE:"ToolEvents::setScene",GET_OBJECT:"ToolEvents::getObject",SET_OBJECT:"ToolEvents::setObject",UPDATE_OBJECT:"ToolEvents::updateObject",CREATE_TEXTURE:"ToolEvents::createTexture",REQUEST_METHOD:"ToolEvents::requestMethod",ADD_CAMERA:"ToolEvents::addCamera",REMOVE_CAMERA:"ToolEvents::removeCamera"};class lt{app;constructor(n){this.app=n}dispose(){}handleApp(n,a,e){}handleEditor(n,a,e){}}class Sn extends lt{selectDropdown(n,a){this.app.send({event:"selectComponent",target:"app",data:{dropdown:n,value:a}})}updateDropdown(n,a){this.app.send({event:"draggableListUpdate",target:"app",data:{dropdown:n,value:a}})}handleApp(n,a,e){switch(e.event){case"selectComponent":N.dispatchEvent({type:F.SELECT_DROPDOWN,value:e.data});break;case"draggableListUpdate":N.dispatchEvent({type:F.DRAG_UPDATE,value:e.data});break}}}class yt extends lt{project;sheets=new Map;sheetObjects=new Map;sheetObjectCBs=new Map;sheetObjectUnsubscribe=new Map;activeSheet;studio=void 0;static rafDriver=void 0;dispose(){this.project=void 0,this.sheets=new Map,this.sheetObjects=new Map,this.sheetObjectCBs=new Map,this.sheetObjectUnsubscribe=new Map}sheet(n){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}let a=this.sheets.get(n);return a!==void 0||(a=this.project?.sheet(n),this.sheets.set(n,a)),a}playSheet(n,a){this.sheet(n)?.sequence.play(a),this.app.send({event:"playSheet",target:"editor",data:{sheet:n,value:a}})}pauseSheet(n){this.sheet(n)?.sequence.pause(),this.app.send({event:"pauseSheet",target:"editor",data:{sheet:n}})}clearSheetObjects(n){this.sheetObjects.forEach((a,e)=>{e.search(`${n}_`)>-1&&this.unsubscribe(a)})}sheetObject(n,a,e,i){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const c=this.sheet(n);if(c===void 0)return;const f=`${n}_${a}`;let o=this.sheetObjects.get(f);o!==void 0?o=c.object(a,{...e,...o.value},{reconfigure:!0}):o=c.object(a,e),this.sheetObjects.set(f,o),this.sheetObjectCBs.set(f,i!==void 0?i:kt);const d=o.onValuesChange(h=>{if(this.app.editor){for(const v in h){const S=h[v];typeof S=="object"&&Xt(S)&&(h[v]={r:S.r,g:S.g,b:S.b,a:S.a})}this.app.send({event:"updateSheetObject",target:"app",data:{sheet:n,sheetObject:f,values:h}})}const b=this.sheetObjectCBs.get(f);b!==void 0&&b(h)});return this.sheetObjectUnsubscribe.set(f,d),o}unsubscribe(n){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const a=n.address.sheetId,e=n.address.objectKey;this.sheets.get(a)?.detachObject(e);const c=`${a}_${e}`,f=this.sheetObjectUnsubscribe.get(c);f!==void 0&&(this.sheetObjects.delete(c),this.sheetObjectCBs.delete(c),this.sheetObjectUnsubscribe.delete(c),f())}handleApp(n,a,e){const i=a;let c;switch(e.event){case"setSheet":c=i.sheets.get(e.data.sheet),c!==void 0&&(i.activeSheet=c,this.studio?.setSelection([c]));break;case"setSheetObject":c=i.sheetObjects.get(`${e.data.sheet}_${e.data.key}`),c!==void 0&&this.studio?.setSelection([c]);break;case"updateSheetObject":c=i.sheets.get(e.data.sheet),c!==void 0&&c.sequence.pause(),c=i.sheetObjectCBs.get(e.data.sheetObject),c!==void 0&&c(e.data.values);break;case"updateTimeline":c=i.sheets.get(e.data.sheet),i.activeSheet!==void 0&&(i.activeSheet.sequence.position=e.data.position);break}}handleEditor(n,a,e){if(n.editor){const i=a;switch(e.event){case"playSheet":i.sheet(e.data.sheet)?.sequence.play(e.data.value);break;case"pauseSheet":i.sheet(e.data.sheet)?.sequence.pause();break}}}handleEditorApp(n,a){if(n.editor){this.studio?.ui.restore(),this.studio?.onSelectionChange(f=>{f.length<1||f.forEach(o=>{let d=o.address.sheetId,h="setSheet",b={};switch(o.type){case"Theatre_Sheet_PublicAPI":h="setSheet",b={sheet:o.address.sheetId},a.activeSheet=a.sheets.get(o.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":h="setSheetObject",d+=`_${o.address.objectKey}`,b={id:d,sheet:o.address.sheetId,key:o.address.objectKey},a.activeSheet=a.sheets.get(o.address.sheetId);break}n.send({event:h,target:"app",data:b})})});let e=-1;const i=()=>{if(yt.rafDriver?.tick(performance.now()),a.activeSheet!==void 0&&e!==a.activeSheet.sequence.position){e=a.activeSheet.sequence.position;const f=a.activeSheet;n.send({event:"updateTimeline",target:"app",data:{position:e,sheet:f.address.sheetId}})}},c=()=>{i(),requestAnimationFrame(c)};i(),c()}else this.studio?.ui.hide()}}function xn(t,n,a){if(t.editor){a.ui.restore(),a.onSelectionChange(f=>{f.length<1||f.forEach(o=>{let d=o.address.sheetId,h="setSheet",b={};switch(o.type){case"Theatre_Sheet_PublicAPI":h="setSheet",b={sheet:o.address.sheetId},n.activeSheet=n.sheets.get(o.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":h="setSheetObject",d+=`_${o.address.objectKey}`,b={id:d,sheet:o.address.sheetId,key:o.address.objectKey},n.activeSheet=n.sheets.get(o.address.sheetId);break}t.send({event:h,target:"app",data:b})})});let e=-1;const i=()=>{if(yt.rafDriver?.tick(performance.now()),n.activeSheet!==void 0&&e!==n.activeSheet.sequence.position){e=n.activeSheet.sequence.position;const f=n.activeSheet;t.send({event:"updateTimeline",target:"app",data:{position:e,sheet:f.address.sheetId}})}},c=()=>{i(),requestAnimationFrame(c)};i(),c()}else a.ui.hide()}function Cn(t){if(t.name==="cameras")return"camera";if(t.name==="interactive")return"interactive";if(t.name==="lights")return"light";if(t.name==="ui")return"ui";if(t.name==="utils")return"utils";const n=t.type;return n.search("Helper")>-1?"icon_utils":n.search("Camera")>-1?"camera":n.search("Light")>-1?"light":"obj3D"}function en(t){const n={name:t.name,type:t.type,uuid:t.uuid,children:[]};return t.children.forEach(a=>{n.children.push(en(a))}),n}function wn(t){const n={};for(const a in t){const e=t[a].value;n[a]={value:e},e===null?n[a].value={src:""}:e.isTexture&&(n[a].value={src:e.image.src})}return n}function On(t){switch(t){case"blendSrcAlpha":case"blendDstAlpha":case"blendEquationAlpha":case"clippingPlanes":case"shadowSide":case"precision":return!0}return!1}function Je(t){const n={};for(const a in t){if(a.substring(0,1)==="_"||a.substring(0,2)==="is"||On(a))continue;const e=typeof t[a],i=t[a];switch(e){case"boolean":case"number":case"string":n[a]=i;break;case"object":if(i!==null)if(n[a]=i,i.isTexture)if(i instanceof l.Texture){const c=i.source.toJSON();n[a]={src:c.url}}else i instanceof l.CubeTexture&&(console.log("env map"),console.log(i.source.data),console.log(i.source.toJSON()),n[a]={src:""});else a==="uniforms"&&(n[a]=wn(n[a]));else n[a]={src:""};break}}return n}function Ot(t){t.updateMatrix();const n={name:t.name,type:t.type,uuid:t.uuid,visible:t.visible,matrix:t.matrix.elements,animations:[],material:void 0,perspectiveCameraInfo:void 0,orthographicCameraInfo:void 0,lightInfo:void 0};t.animations.forEach(e=>{n.animations.push({name:e.name,duration:e.duration,blendMode:e.blendMode})});const a=t.type.toLowerCase();if(a.search("mesh")>-1){const e=t;if(Array.isArray(e.material)){const i=[];e.material.forEach(c=>{i.push(Je(c))}),n.material=i}else n.material=Je(e.material)}else if(a.search("points")>-1){const e=t;if(Array.isArray(e.material)){const i=[];e.material.forEach(c=>{i.push(Je(c))}),n.material=i}else n.material=Je(e.material)}else if(a.search("line")>-1){const e=t;if(Array.isArray(e.material)){const i=[];e.material.forEach(c=>{i.push(Je(c))}),n.material=i}else n.material=Je(e.material)}else a.search("camera")>-1?t.type==="PerspectiveCamera"?n.perspectiveCameraInfo={fov:t.fov,zoom:t.zoom,near:t.near,far:t.far,focus:t.focus,aspect:t.aspect,filmGauge:t.filmGauge,filmOffset:t.filmOffset}:t.type==="OrthographicCamera"&&(n.orthographicCameraInfo={zoom:t.zoom,near:t.near,far:t.far,left:t.left,right:t.right,top:t.top,bottom:t.bottom}):a.search("light")>-1&&(n.lightInfo={color:t.color,intensity:t.intensity,decay:t.decay,distance:t.distance,angle:t.angle,penumbra:t.penumbra,groundColor:t.groundColor,width:t.width,height:t.height});return n}function Mn(t,n){const a=n.split(".");switch(a.length){case 1:return t[a[0]];case 2:return t[a[0]][a[1]];case 3:return t[a[0]][a[1]][a[2]];case 4:return t[a[0]][a[1]][a[2]][a[3]];case 5:return t[a[0]][a[1]][a[2]][a[3]][a[4]];case 6:return t[a[0]][a[1]][a[2]][a[3]][a[4]][a[5]]}}function J(t,n,a){const e=n.split(".");switch(e.length){case 1:t[e[0]]=a;break;case 2:t[e[0]][e[1]]=a;break;case 3:t[e[0]][e[1]][e[2]]=a;break;case 4:t[e[0]][e[1]][e[2]][e[3]]=a;break;case 5:t[e[0]][e[1]][e[2]][e[3]][e[4]]=a;break}}function At(t){return new Promise((n,a)=>{const e=new Image;e.onload=()=>{const i=new l.Texture(e);i.wrapS=l.RepeatWrapping,i.wrapT=l.RepeatWrapping,i.needsUpdate=!0,n(i)},e.onerror=a,e.src=t})}class Tn extends lt{scene=void 0;renderer=void 0;getObject(n){this.app.debugEnabled&&this.app.send({event:"getObject",target:"app",data:n})}setObject(n){const a=Ot(n);this.app.send({event:"setObject",target:"editor",data:a})}requestMethod(n,a,e,i){this.app.send({event:"requestMethod",target:"app",data:{uuid:n,key:a,value:e,subitem:i}})}updateObject(n,a,e){this.app.send({event:"updateObject",target:"app",data:{uuid:n,key:a,value:e}})}createTexture(n,a,e){this.app.send({event:"createTexture",target:"app",data:{uuid:n,key:a,value:e}})}setScene(n){if(n===void 0||(this.scene=n,!this.app.debugEnabled))return;Jt(),Dt(this.scene);const a=en(this.scene);this.app.send({event:"setScene",target:"editor",data:a})}addCamera(n){if(!this.app.debugEnabled)return;const a=Ot(n);this.app.send({event:"addCamera",target:"editor",data:a})}removeCamera(n){if(!this.app.debugEnabled)return;const a=Ot(n);this.app.send({event:"removeCamera",target:"editor",data:a})}handleApp(n,a,e){switch(e.event){case"getObject":N.dispatchEvent({type:F.GET_OBJECT,value:e.data});break;case"updateObject":N.dispatchEvent({type:F.UPDATE_OBJECT,value:e.data});break;case"createTexture":N.dispatchEvent({type:F.CREATE_TEXTURE,value:e.data});break;case"requestMethod":N.dispatchEvent({type:F.REQUEST_METHOD,value:e.data});break}}handleEditor(n,a,e){switch(e.event){case"setObject":N.dispatchEvent({type:F.SET_OBJECT,value:e.data});break;case"setScene":N.dispatchEvent({type:F.SET_SCENE,value:e.data});break;case"addCamera":N.dispatchEvent({type:F.ADD_CAMERA,value:e.data});break;case"removeCamera":N.dispatchEvent({type:F.REMOVE_CAMERA,value:e.data});break}}resize(n,a){this.renderer?.setSize(n,a)}set dpr(n){this.renderer?.setPixelRatio(Ue(1,2,n))}get dpr(){return this.renderer!==void 0?this.renderer?.getPixelRatio():1}get width(){return this.renderer!==void 0?this.renderer?.domElement.width/this.dpr:0}get height(){return this.renderer!==void 0?this.renderer?.domElement.height/this.dpr:0}get canvas(){return this.renderer!==void 0?this.renderer?.domElement:null}}class Rn extends lt{bindCBs;buttonCBs;pane=void 0;appCallbacks=0;editorCallbacks=0;inspectorFolder=void 0;constructor(n){super(n),this.bindCBs=new Map,this.buttonCBs=new Map,n.editor&&this.createGUI()}createGUI(){this.pane=new fn.Pane({title:"GUI"}),this.pane.registerPlugin(gn)}dispose(){this.bindCBs.clear(),this.buttonCBs.clear(),this.appCallbacks=0,this.editorCallbacks=0,this.app.editor&&(this.pane?.dispose(),this.pane=void 0)}addFolder(n,a=void 0,e=void 0){if(this.app.editor)return this.pane===void 0&&this.createGUI(),(e!==void 0?e:this.pane).addFolder({title:n,...a});this.app.send({event:"addFolder",target:"app",data:{name:n,params:a,parent:e}})}get bindID(){return`debug_${Math.max(this.appCallbacks,this.editorCallbacks)}`}bind(n,a,e,i=void 0){const c=this.bindID,f=e.onChange!==void 0?e.onChange:kt;this.bindCBs.set(c,f),this.app.editor?(this.pane===void 0&&this.createGUI(),(i!==void 0?i:this.pane).addBinding(n,a,e).on("change",d=>{this.app.send({event:"updateBind",target:"app",data:{id:c,value:d.value}})}),this.editorCallbacks++):(this.app.send({event:"bindObject",target:"app",data:{id:c,name:a,params:e,parent:i}}),this.appCallbacks++)}triggerBind(n,a){const e=this.bindCBs.get(n);e!==void 0?e(a):console.warn(`No callback for: ${n}`,a)}button(n,a,e=void 0){const i=this.bindID;this.buttonCBs.set(i,a),this.app.editor?(this.pane===void 0&&this.createGUI(),(e!==void 0?e:this.pane).addButton({title:n}).on("click",()=>{this.app.send({event:"clickButton",target:"app",data:{id:i}})}),this.editorCallbacks++):(this.app.send({event:"addButton",target:"app",data:{id:i,name:n,callback:a,parent:e}}),this.appCallbacks++)}triggerButton(n){const a=this.buttonCBs.get(n);a!==void 0&&a()}createInspector(){this.inspectorFolder=this.addFolder("Inspector",this.pane)}clearInspector(){const n=this.inspectorFolder.children.length-1;for(let a=n;a>-1;--a)this.inspectorFolder.remove(this.inspectorFolder.children[a])}handleApp(n,a,e){const i=a;switch(e.event){case"addFolder":i.addFolder(e.data.name,e.data.params,e.data.parent);break;case"bindObject":i.bind(e.data.name,e.data.params,e.data.parent);break;case"updateBind":i.triggerBind(e.data.id,e.data.value);break;case"addButton":i.button(e.data.name,e.data.callback,e.data.parent);break;case"clickButton":i.triggerButton(e.data.id);break}}}var Pt={exports:{}},it={};/**
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("three"),fn=require("tweakpane"),pn=require("@tweakpane/plugin-essentials"),x=require("react"),qt=require("framer-motion");function mn(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const e=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(n,a,e.get?e:{enumerable:!0,get:()=>t[a]})}}return n.default=t,Object.freeze(n)}const gn=mn(pn),kt=()=>{},vn=()=>{};function ct(t){return t.substring(0,1).toUpperCase()+t.substring(1)}function Ue(t,n,a){return Math.min(n,Math.max(t,a))}function Rt(t,n,a){return(a-t)/(n-t)}function _t(t,n,a){return t*(1-a)+n*a}function bn(t,n){const a=t-n;return Math.sqrt(a*a)}function Kt(){return Math.round(Math.random()*1e6).toString()}function Xt(t){return t.r!==void 0&&t.g!==void 0&&t.b!==void 0}function Zt(t){const n=Math.round(t.r*255),a=Math.round(t.g*255),e=Math.round(t.b*255),i=d=>{const h=d.toString(16);return h.length===1?"0"+h:h},c=i(n),f=i(a),o=i(e);return"#"+c+f+o}function et(t,n=1){return Number(t.toFixed(n))}exports.totalThreeObjects=0;const Jt=()=>{exports.totalThreeObjects=0},Dt=t=>{if(!t)return;let n=t.name.replace(" ","");n.length===0&&(n=`obj_${exports.totalThreeObjects}`,exports.totalThreeObjects++),t.parent!==null&&t.parent.uuid.length>0&&(n=`${t.parent.uuid}.${n}`),t.uuid=n,t.children.forEach(a=>{Dt(a)})},yn=t=>{t?.dispose()},Qt=t=>{t&&(Array.isArray(t)?t.forEach(n=>n.dispose()):t.dispose())},jt=t=>{if(t){for(;t.children.length>0;){const n=t.children[0];n.type==="Audio"?(n.pause(),n.parent&&n.parent.remove(n)):jt(n)}if(t.parent&&t.parent.remove(t),t.isMesh){const n=t;n.geometry?.dispose(),Qt(n.material)}t.dispose!==void 0&&t.dispose()}};class En{components=new Map;listen;_appID="";_debugEnabled;_broadcastChannel=void 0;_webSocket=void 0;_mode="app";_connected=!1;_useBC=!1;constructor(n,a,e=!0){this._appID=n,this._debugEnabled=a,a&&(this._useBC=e,e?(this._broadcastChannel=new BroadcastChannel(n),this._broadcastChannel.addEventListener("message",this.messageHandler)):(this._webSocket=new WebSocket(n),this._webSocket.addEventListener("open",this.openHandler),this._webSocket.addEventListener("close",this.closeHandler),this._webSocket.addEventListener("message",this.messageHandler)))}addComponent(n,a){this.components.set(n,a)}dispose(){this._broadcastChannel!==void 0&&this._broadcastChannel.removeEventListener("message",this.messageHandler),this._webSocket!==void 0&&(this._webSocket.removeEventListener("open",this.openHandler),this._webSocket.removeEventListener("close",this.closeHandler),this._webSocket.removeEventListener("message",this.messageHandler)),this.components.forEach(n=>{n.dispose()}),this.components.clear()}send(n){this._mode!==n.target&&(this._useBC?this._broadcastChannel?.postMessage(n):this._connected&&this._webSocket?.send(JSON.stringify(n)))}messageHandler=n=>{this.listen!==void 0&&(this._useBC?this.listen(n.data):this.listen(JSON.parse(n.data)))};openHandler=()=>{this._connected=!0};closeHandler=()=>{this._connected=!1};get appID(){return this._appID}get connected(){return this._connected}get debugEnabled(){return this._debugEnabled}get mode(){return this._mode}get isApp(){return this._mode==="app"}get editor(){return this._mode==="editor"}set editor(n){n&&(this._mode="editor")}}const N=new l.EventDispatcher,F={CUSTOM:"ToolEvents::custom",SELECT_DROPDOWN:"ToolEvents::selectDropdown",DRAG_UPDATE:"ToolEvents::dragUpdate",SET_SCENE:"ToolEvents::setScene",GET_OBJECT:"ToolEvents::getObject",SET_OBJECT:"ToolEvents::setObject",UPDATE_OBJECT:"ToolEvents::updateObject",CREATE_TEXTURE:"ToolEvents::createTexture",REQUEST_METHOD:"ToolEvents::requestMethod",ADD_CAMERA:"ToolEvents::addCamera",REMOVE_CAMERA:"ToolEvents::removeCamera"};class lt{app;constructor(n){this.app=n}dispose(){}handleApp(n,a,e){}handleEditor(n,a,e){}}class Sn extends lt{selectDropdown(n,a){this.app.send({event:"selectComponent",target:"app",data:{dropdown:n,value:a}})}updateDropdown(n,a){this.app.send({event:"draggableListUpdate",target:"app",data:{dropdown:n,value:a}})}handleApp(n,a,e){switch(e.event){case"selectComponent":N.dispatchEvent({type:F.SELECT_DROPDOWN,value:e.data});break;case"draggableListUpdate":N.dispatchEvent({type:F.DRAG_UPDATE,value:e.data});break}}}class yt extends lt{project;sheets=new Map;sheetObjects=new Map;sheetObjectCBs=new Map;sheetObjectUnsubscribe=new Map;activeSheet;studio=void 0;static rafDriver=void 0;dispose(){this.project=void 0,this.sheets=new Map,this.sheetObjects=new Map,this.sheetObjectCBs=new Map,this.sheetObjectUnsubscribe=new Map}sheet(n){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}let a=this.sheets.get(n);return a!==void 0||(a=this.project?.sheet(n),this.sheets.set(n,a)),a}playSheet(n,a){this.sheet(n)?.sequence.play(a),this.app.send({event:"playSheet",target:"editor",data:{sheet:n,value:a}})}pauseSheet(n){this.sheet(n)?.sequence.pause(),this.app.send({event:"pauseSheet",target:"editor",data:{sheet:n}})}clearSheetObjects(n){this.sheetObjects.forEach((a,e)=>{e.search(`${n}_`)>-1&&this.unsubscribe(a)})}sheetObject(n,a,e,i){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const c=this.sheet(n);if(c===void 0)return;const f=`${n}_${a}`;let o=this.sheetObjects.get(f);o!==void 0?o=c.object(a,{...e,...o.value},{reconfigure:!0}):o=c.object(a,e),this.sheetObjects.set(f,o),this.sheetObjectCBs.set(f,i!==void 0?i:kt);const d=o.onValuesChange(h=>{if(this.app.editor){for(const v in h){const S=h[v];typeof S=="object"&&Xt(S)&&(h[v]={r:S.r,g:S.g,b:S.b,a:S.a})}this.app.send({event:"updateSheetObject",target:"app",data:{sheet:n,sheetObject:f,values:h}})}const b=this.sheetObjectCBs.get(f);b!==void 0&&b(h)});return this.sheetObjectUnsubscribe.set(f,d),o}unsubscribe(n){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const a=n.address.sheetId,e=n.address.objectKey;this.sheets.get(a)?.detachObject(e);const c=`${a}_${e}`,f=this.sheetObjectUnsubscribe.get(c);f!==void 0&&(this.sheetObjects.delete(c),this.sheetObjectCBs.delete(c),this.sheetObjectUnsubscribe.delete(c),f())}handleApp(n,a,e){const i=a;let c;switch(e.event){case"setSheet":c=i.sheets.get(e.data.sheet),c!==void 0&&(i.activeSheet=c,this.studio?.setSelection([c]));break;case"setSheetObject":c=i.sheetObjects.get(`${e.data.sheet}_${e.data.key}`),c!==void 0&&this.studio?.setSelection([c]);break;case"updateSheetObject":c=i.sheets.get(e.data.sheet),c!==void 0&&c.sequence.pause(),c=i.sheetObjectCBs.get(e.data.sheetObject),c!==void 0&&c(e.data.values);break;case"updateTimeline":c=i.sheets.get(e.data.sheet),i.activeSheet!==void 0&&(i.activeSheet.sequence.position=e.data.position);break}}handleEditor(n,a,e){if(n.editor){const i=a;switch(e.event){case"playSheet":i.sheet(e.data.sheet)?.sequence.play(e.data.value);break;case"pauseSheet":i.sheet(e.data.sheet)?.sequence.pause();break}}}handleEditorApp(n,a){if(n.editor){this.studio?.ui.restore(),this.studio?.onSelectionChange(f=>{f.length<1||f.forEach(o=>{let d=o.address.sheetId,h="setSheet",b={};switch(o.type){case"Theatre_Sheet_PublicAPI":h="setSheet",b={sheet:o.address.sheetId},a.activeSheet=a.sheets.get(o.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":h="setSheetObject",d+=`_${o.address.objectKey}`,b={id:d,sheet:o.address.sheetId,key:o.address.objectKey},a.activeSheet=a.sheets.get(o.address.sheetId);break}n.send({event:h,target:"app",data:b})})});let e=-1;const i=()=>{if(yt.rafDriver?.tick(performance.now()),a.activeSheet!==void 0&&e!==a.activeSheet.sequence.position){e=a.activeSheet.sequence.position;const f=a.activeSheet;n.send({event:"updateTimeline",target:"app",data:{position:e,sheet:f.address.sheetId}})}},c=()=>{i(),requestAnimationFrame(c)};i(),c()}else this.studio?.ui.hide()}}function xn(t,n,a){if(t.editor){a.ui.restore(),a.onSelectionChange(f=>{f.length<1||f.forEach(o=>{let d=o.address.sheetId,h="setSheet",b={};switch(o.type){case"Theatre_Sheet_PublicAPI":h="setSheet",b={sheet:o.address.sheetId},n.activeSheet=n.sheets.get(o.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":h="setSheetObject",d+=`_${o.address.objectKey}`,b={id:d,sheet:o.address.sheetId,key:o.address.objectKey},n.activeSheet=n.sheets.get(o.address.sheetId);break}t.send({event:h,target:"app",data:b})})});let e=-1;const i=()=>{if(yt.rafDriver?.tick(performance.now()),n.activeSheet!==void 0&&e!==n.activeSheet.sequence.position){e=n.activeSheet.sequence.position;const f=n.activeSheet;t.send({event:"updateTimeline",target:"app",data:{position:e,sheet:f.address.sheetId}})}},c=()=>{i(),requestAnimationFrame(c)};i(),c()}else a.ui.hide()}function Cn(t){if(t.name==="cameras")return"camera";if(t.name==="interactive")return"interactive";if(t.name==="lights")return"light";if(t.name==="ui")return"ui";if(t.name==="utils")return"utils";const n=t.type;return n.search("Helper")>-1?"icon_utils":n.search("Camera")>-1?"camera":n.search("Light")>-1?"light":"obj3D"}function en(t){const n={name:t.name,type:t.type,uuid:t.uuid,children:[]};return t.children.forEach(a=>{n.children.push(en(a))}),n}function wn(t){const n={};for(const a in t){const e=t[a].value;n[a]={value:e},e===null?n[a].value={src:""}:e.isTexture&&(n[a].value={src:e.image.src})}return n}function On(t){switch(t){case"blendSrcAlpha":case"blendDstAlpha":case"blendEquationAlpha":case"clippingPlanes":case"shadowSide":case"precision":return!0}return!1}function Je(t){const n={};for(const a in t){if(a.substring(0,1)==="_"||a.substring(0,2)==="is"||On(a))continue;const e=typeof t[a],i=t[a];switch(e){case"boolean":case"number":case"string":n[a]=i;break;case"object":if(i!==null)if(n[a]=i,i.isTexture)if(i instanceof l.Texture){const c=i.source.toJSON();n[a]={src:c.url}}else i instanceof l.CubeTexture&&(console.log("env map"),console.log(i.source.data),console.log(i.source.toJSON()),n[a]={src:""});else a==="uniforms"&&(n[a]=wn(n[a]));else n[a]={src:""};break}}return n}function Ot(t){t.updateMatrix();const n={name:t.name,type:t.type,uuid:t.uuid,visible:t.visible,matrix:t.matrix.elements,animations:[],material:void 0,perspectiveCameraInfo:void 0,orthographicCameraInfo:void 0,lightInfo:void 0};t.animations.forEach(e=>{n.animations.push({name:e.name,duration:e.duration,blendMode:e.blendMode})});const a=t.type.toLowerCase();if(a.search("mesh")>-1){const e=t;if(Array.isArray(e.material)){const i=[];e.material.forEach(c=>{i.push(Je(c))}),n.material=i}else n.material=Je(e.material)}else if(a.search("points")>-1){const e=t;if(Array.isArray(e.material)){const i=[];e.material.forEach(c=>{i.push(Je(c))}),n.material=i}else n.material=Je(e.material)}else if(a.search("line")>-1){const e=t;if(Array.isArray(e.material)){const i=[];e.material.forEach(c=>{i.push(Je(c))}),n.material=i}else n.material=Je(e.material)}else a.search("camera")>-1?t.type==="PerspectiveCamera"?n.perspectiveCameraInfo={fov:t.fov,zoom:t.zoom,near:t.near,far:t.far,focus:t.focus,aspect:t.aspect,filmGauge:t.filmGauge,filmOffset:t.filmOffset}:t.type==="OrthographicCamera"&&(n.orthographicCameraInfo={zoom:t.zoom,near:t.near,far:t.far,left:t.left,right:t.right,top:t.top,bottom:t.bottom}):a.search("light")>-1&&(n.lightInfo={color:t.color,intensity:t.intensity,decay:t.decay,distance:t.distance,angle:t.angle,penumbra:t.penumbra,groundColor:t.groundColor,width:t.width,height:t.height});return n}function Mn(t,n){const a=n.split(".");switch(a.length){case 1:return t[a[0]];case 2:return t[a[0]][a[1]];case 3:return t[a[0]][a[1]][a[2]];case 4:return t[a[0]][a[1]][a[2]][a[3]];case 5:return t[a[0]][a[1]][a[2]][a[3]][a[4]];case 6:return t[a[0]][a[1]][a[2]][a[3]][a[4]][a[5]]}}function J(t,n,a){const e=n.split(".");switch(e.length){case 1:t[e[0]]=a;break;case 2:t[e[0]][e[1]]=a;break;case 3:t[e[0]][e[1]][e[2]]=a;break;case 4:t[e[0]][e[1]][e[2]][e[3]]=a;break;case 5:t[e[0]][e[1]][e[2]][e[3]][e[4]]=a;break}}function At(t){return new Promise((n,a)=>{const e=new Image;e.onload=()=>{const i=new l.Texture(e);i.wrapS=l.RepeatWrapping,i.wrapT=l.RepeatWrapping,i.needsUpdate=!0,n(i)},e.onerror=a,e.src=t})}class Tn extends lt{scene=void 0;renderer=void 0;getObject(n){this.app.debugEnabled&&this.app.send({event:"getObject",target:"app",data:n})}setObject(n){const a=Ot(n);this.app.send({event:"setObject",target:"editor",data:a})}requestMethod(n,a,e,i){this.app.send({event:"requestMethod",target:"app",data:{uuid:n,key:a,value:e,subitem:i}})}updateObject(n,a,e){this.app.send({event:"updateObject",target:"app",data:{uuid:n,key:a,value:e}})}createTexture(n,a,e){this.app.send({event:"createTexture",target:"app",data:{uuid:n,key:a,value:e}})}setScene(n){if(n===void 0||(this.scene=n,!this.app.debugEnabled))return;Jt(),Dt(this.scene);const a=en(this.scene);this.app.send({event:"setScene",target:"editor",data:a})}addCamera(n){if(!this.app.debugEnabled)return;const a=Ot(n);this.app.send({event:"addCamera",target:"editor",data:a})}removeCamera(n){if(!this.app.debugEnabled)return;const a=Ot(n);this.app.send({event:"removeCamera",target:"editor",data:a})}handleApp(n,a,e){switch(e.event){case"getObject":N.dispatchEvent({type:F.GET_OBJECT,value:e.data});break;case"updateObject":N.dispatchEvent({type:F.UPDATE_OBJECT,value:e.data});break;case"createTexture":N.dispatchEvent({type:F.CREATE_TEXTURE,value:e.data});break;case"requestMethod":N.dispatchEvent({type:F.REQUEST_METHOD,value:e.data});break}}handleEditor(n,a,e){switch(e.event){case"setObject":N.dispatchEvent({type:F.SET_OBJECT,value:e.data});break;case"setScene":N.dispatchEvent({type:F.SET_SCENE,value:e.data});break;case"addCamera":N.dispatchEvent({type:F.ADD_CAMERA,value:e.data});break;case"removeCamera":N.dispatchEvent({type:F.REMOVE_CAMERA,value:e.data});break}}resize(n,a){this.renderer?.setSize(n,a)}set dpr(n){this.renderer?.setPixelRatio(Ue(1,2,n))}get dpr(){return this.renderer!==void 0?this.renderer?.getPixelRatio():1}get width(){return this.renderer!==void 0?this.renderer?.domElement.width/this.dpr:0}get height(){return this.renderer!==void 0?this.renderer?.domElement.height/this.dpr:0}get canvas(){return this.renderer!==void 0?this.renderer?.domElement:null}}class Rn extends lt{bindCBs;buttonCBs;pane=void 0;appCallbacks=0;editorCallbacks=0;inspectorFolder=void 0;constructor(n){super(n),this.bindCBs=new Map,this.buttonCBs=new Map,n.editor&&this.createGUI()}createGUI(){this.pane=new fn.Pane({title:"GUI"}),this.pane.registerPlugin(gn)}dispose(){this.bindCBs.clear(),this.buttonCBs.clear(),this.appCallbacks=0,this.editorCallbacks=0,this.app.editor&&(this.pane?.dispose(),this.pane=void 0)}addFolder(n,a=void 0,e=void 0){if(this.app.editor)return this.pane===void 0&&this.createGUI(),(e!==void 0?e:this.pane).addFolder({title:n,...a});this.app.send({event:"addFolder",target:"app",data:{name:n,params:a,parent:e}})}get bindID(){return`debug_${Math.max(this.appCallbacks,this.editorCallbacks)}`}bind(n,a,e,i=void 0){const c=this.bindID,f=e.onChange!==void 0?e.onChange:kt;this.bindCBs.set(c,f),this.app.editor?(this.pane===void 0&&this.createGUI(),(i!==void 0?i:this.pane).addBinding(n,a,e).on("change",d=>{this.app.send({event:"updateBind",target:"app",data:{id:c,value:d.value}})}),this.editorCallbacks++):(this.app.send({event:"bindObject",target:"app",data:{id:c,name:a,params:e,parent:i}}),this.appCallbacks++)}triggerBind(n,a){const e=this.bindCBs.get(n);e!==void 0?e(a):console.warn(`No callback for: ${n}`,a)}button(n,a,e=void 0){const i=this.bindID;this.buttonCBs.set(i,a),this.app.editor?(this.pane===void 0&&this.createGUI(),(e!==void 0?e:this.pane).addButton({title:n}).on("click",()=>{this.app.send({event:"clickButton",target:"app",data:{id:i}})}),this.editorCallbacks++):(this.app.send({event:"addButton",target:"app",data:{id:i,name:n,callback:a,parent:e}}),this.appCallbacks++)}triggerButton(n){const a=this.buttonCBs.get(n);a!==void 0&&a()}createInspector(){this.inspectorFolder=this.addFolder("Inspector",this.pane)}clearInspector(){const n=this.inspectorFolder.children.length-1;for(let a=n;a>-1;--a)this.inspectorFolder.remove(this.inspectorFolder.children[a])}handleApp(n,a,e){const i=a;switch(e.event){case"addFolder":i.addFolder(e.data.name,e.data.params,e.data.parent);break;case"bindObject":i.bind(e.data.name,e.data.params,e.data.parent);break;case"updateBind":i.triggerBind(e.data.id,e.data.value);break;case"addButton":i.button(e.data.name,e.data.callback,e.data.parent);break;case"clickButton":i.triggerButton(e.data.id);break}}}var Pt={exports:{}},it={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.min.js
4
4
  *
@@ -141,4 +141,4 @@ void main() {
141
141
  void main() {
142
142
  #include <clipping_planes_fragment>
143
143
  gl_FragColor = vec4(vec3(vUv, 0.0), 1.0);
144
- }`;class da extends l.ShaderMaterial{constructor(){super({defines:{USE_UV:""},vertexShader:la,fragmentShader:ua})}}let gt="Renderer",De,vt=!1,Wt=!1,W=null,ce=null,Fe=null,Be=null;function ha(t){const n=t.three.app.appID,a=localStorage.getItem(`${n}_mode`),e=localStorage.getItem(`${n}_tlCam`)!==null?localStorage.getItem(`${n}_tlCam`):"Debug",i=localStorage.getItem(`${n}_trCam`)!==null?localStorage.getItem(`${n}_trCam`):"Orthographic",c=localStorage.getItem(`${n}_blCam`)!==null?localStorage.getItem(`${n}_blCam`):"Front",f=localStorage.getItem(`${n}_brCam`)!==null?localStorage.getItem(`${n}_brCam`):"Top",o=x.useMemo(()=>new Map,[]),d=x.useMemo(()=>new Map,[]),h=x.useMemo(()=>new Map,[]),b=x.useMemo(()=>new Map,[]),v=x.useMemo(()=>new l.Scene,[]),S=x.useMemo(()=>new l.Group,[]),C=x.useMemo(()=>new ca,[]),P=x.useMemo(()=>new l.AxesHelper(500),[]),k=x.useMemo(()=>new l.AxesHelper(100),[]),q=x.useMemo(()=>new l.MeshDepthMaterial,[]),G=x.useMemo(()=>new l.MeshNormalMaterial,[]),B=x.useMemo(()=>new da,[]),A=x.useMemo(()=>new l.MeshBasicMaterial({opacity:.33,transparent:!0,wireframe:!0}),[]);function X(m,g){const M=new l.OrthographicCamera(-100,100,100,-100,50,3e3);return M.name=m,M.position.copy(g),M.lookAt(0,0,0),o.set(m,M),M}const te=["Renderer","Depth","Normals","UVs","Wireframe"],ye=["Single","Side by Side","Stacked","Quad"],K=x.useRef(null),fe=x.useRef(null),le=x.useRef(null),Ce=x.useRef(null),we=x.useRef(null),pe=x.useRef(null),[U,me]=x.useState(a!==null?a:"Single"),[O,Ee]=x.useState(null),[Oe,_e]=x.useState(!1),[Me,Te]=x.useState(!1),[Ae,je]=x.useState(!1),[,Ie]=x.useState(Date.now());localStorage.setItem(`${n}_mode`,U),localStorage.setItem(`${n}_tlCam`,e),localStorage.setItem(`${n}_trCam`,i),localStorage.setItem(`${n}_blCam`,c),localStorage.setItem(`${n}_brCam`,f);const ae=(m,g)=>{const M=d.get(m.name);M!==void 0&&M.dispose(),d.delete(m.name);const L=h.get(m.name);L!==void 0&&(v.remove(L),L.dispose()),h.delete(m.name);const ie=new sa(m,g);switch(ie.enableDamping=!0,ie.dampingFactor=.05,m.name){case"Top":case"Bottom":case"Left":case"Right":case"Front":case"Back":ie.enableRotate=!1;break}if(d.set(m.name,ie),m instanceof l.PerspectiveCamera){const R=new l.CameraHelper(m);h.set(m.name,R),v.add(R)}},Se=m=>{const g=h.get(m.name);g!==void 0&&(v.remove(g),g.dispose(),h.delete(m.name));const M=d.get(m.name);M!==void 0&&(M.dispose(),d.delete(m.name))},Ve=()=>{d.forEach((m,g)=>{m.dispose();const M=h.get(g);M!==void 0&&(v.remove(M),M.dispose()),h.delete(g),d.delete(g)}),d.clear(),h.clear()},$e=()=>{switch(U){case"Single":ae(W,le.current);break;case"Side by Side":case"Stacked":ae(W,le.current),ae(ce,Ce.current);break;case"Quad":ae(W,le.current),ae(ce,Ce.current),ae(Fe,we.current),ae(Be,pe.current);break}};x.useEffect(()=>{const m=new l.WebGLRenderer({canvas:K.current,stencil:!1});m.autoClear=!1,m.shadowMap.enabled=!0,m.setPixelRatio(devicePixelRatio),m.setClearColor(0),t.three.renderer=m,Ee(m)},[]),x.useEffect(()=>{v.name="Debug Scene",S.name="helpers",v.add(S),S.add(C),P.name="axisHelper",S.add(P),k.name="interactionHelper",S.add(k),k.visible=!1,X("Top",new l.Vector3(0,1e3,0)),X("Bottom",new l.Vector3(0,-1e3,0)),X("Left",new l.Vector3(-1e3,0,0)),X("Right",new l.Vector3(1e3,0,0)),X("Front",new l.Vector3(0,0,1e3)),X("Back",new l.Vector3(0,0,-1e3)),X("Orthographic",new l.Vector3(1e3,1e3,1e3));const m=new l.PerspectiveCamera(60,1,50,3e3);m.name="Debug",m.position.set(500,500,500),m.lookAt(0,0,0),o.set("Debug",m),W=o.get(localStorage.getItem(`${n}_tlCam`)),ce=o.get(localStorage.getItem(`${n}_trCam`)),Fe=o.get(localStorage.getItem(`${n}_blCam`)),Be=o.get(localStorage.getItem(`${n}_brCam`))},[]),x.useEffect(()=>{const m=()=>{b.forEach(R=>{S.remove(R),R.dispose()}),b.clear()},g=()=>{De.traverse(R=>{if(R.type.search("Light")>-1){let T;switch(R.type){case"DirectionalLight":T=new l.DirectionalLightHelper(R),T.name=`${R.name}Helper`,b.set(R.name,T),S.add(T);break;case"HemisphereLight":T=new l.HemisphereLightHelper(R,250),T.name=`${R.name}Helper`,b.set(R.name,T),S.add(T);break;case"RectAreaLight":T=new ia(R),T.name=`${R.name}Helper`,b.set(R.name,T),S.add(T);break;case"PointLight":T=new l.PointLightHelper(R),T.name=`${R.name}Helper`,b.set(R.name,T),S.add(T);break;case"SpotLight":T=new l.SpotLightHelper(R),T.name=`${R.name}Helper`,b.set(R.name,T),S.add(T);break}}})},M=R=>{m(),jt(De),v.remove(De);const T=t.scenes.get(R.value.name);if(T!==void 0){const V=new T;t.onSceneSet!==void 0&&t.onSceneSet(V),De=V,t.three.scene=De,v.add(De),Wt=!0,g()}},L=R=>{const T=R.value,V=t.three.scene?.getObjectByProperty("uuid",T.uuid);V!==void 0&&o.set(T.name,V),Ie(Date.now())},ie=R=>{o.delete(R.value.name),Ie(Date.now())};return N.addEventListener(F.SET_SCENE,M),N.addEventListener(F.ADD_CAMERA,L),N.addEventListener(F.REMOVE_CAMERA,ie),()=>{N.removeEventListener(F.SET_SCENE,M),N.removeEventListener(F.ADD_CAMERA,L),N.removeEventListener(F.REMOVE_CAMERA,ie)}},[]),x.useEffect(()=>{if(O===null)return;let m=window.innerWidth,g=window.innerHeight,M=Math.floor(m/2),L=Math.floor(g/2),ie=-1;const R=()=>{m=window.innerWidth-300,g=window.innerHeight,M=Math.floor(m/2),L=Math.floor(g/2),O.setSize(m,g);let D=m,z=g;switch(U){case"Side by Side":D=M,z=g;break;case"Stacked":D=m,z=L;break;case"Quad":D=M,z=L;break}o.forEach(Q=>{Q instanceof l.OrthographicCamera?(Q.left=D/-2,Q.right=D/2,Q.top=z/2,Q.bottom=z/-2,Q.updateProjectionMatrix()):Q instanceof l.PerspectiveCamera&&(Q.aspect=D/z,Q.updateProjectionMatrix(),h.get(Q.name)?.update())})},T=()=>{O.setViewport(0,0,m,g),O.setScissor(0,0,m,g),O.render(v,W)},V=()=>{if(U==="Side by Side")O.setViewport(0,0,M,g),O.setScissor(0,0,M,g),O.render(v,W),O.setViewport(M,0,M,g),O.setScissor(M,0,M,g),O.render(v,ce);else{const D=g-L;O.setViewport(0,D,m,L),O.setScissor(0,D,m,L),O.render(v,W),O.setViewport(0,0,m,L),O.setScissor(0,0,m,L),O.render(v,ce)}},re=()=>{let D=0,z=0;z=g-L,D=0,O.setViewport(D,z,M,L),O.setScissor(D,z,M,L),O.render(v,W),D=M,O.setViewport(D,z,M,L),O.setScissor(D,z,M,L),O.render(v,ce),z=0,D=0,O.setViewport(D,z,M,L),O.setScissor(D,z,M,L),O.render(v,Fe),D=M,O.setViewport(D,z,M,L),O.setScissor(D,z,M,L),O.render(v,Be)},se=()=>{switch(d.forEach(D=>{D.update()}),t.onSceneUpdate!==void 0&&Wt&&t.onSceneUpdate(De),O.clear(),U){case"Single":T();break;case"Side by Side":case"Stacked":V();break;case"Quad":re();break}ie=requestAnimationFrame(se)};return $e(),window.addEventListener("resize",R),R(),se(),()=>{window.removeEventListener("resize",R),cancelAnimationFrame(ie),ie=-1}},[U,O]),x.useEffect(()=>{if(O!==null){const m=new l.Raycaster,g=new l.Vector2,M=(T,V,re,se)=>{switch(U){case"Quad":T<re?V<se?m.setFromCamera(g,W):m.setFromCamera(g,Fe):V<se?m.setFromCamera(g,ce):m.setFromCamera(g,Be);break;case"Side by Side":T<re?m.setFromCamera(g,W):m.setFromCamera(g,ce);break;case"Single":m.setFromCamera(g,W);break;case"Stacked":V<se?m.setFromCamera(g,W):m.setFromCamera(g,ce);break}},L=T=>{if(!vt)return;const V=new l.Vector2;O.getSize(V);const re=Math.min(T.clientX,V.x),se=Math.min(T.clientY,V.y);g.x=Qe(re,0,V.x,-1,1),g.y=Qe(se,0,V.y,1,-1);const D=V.x/2,z=V.y/2,Q=()=>{re<D?g.x=Qe(re,0,D,-1,1):g.x=Qe(re,D,V.x,-1,1)},Pe=()=>{se<z?g.y=Qe(se,0,z,1,-1):g.y=Qe(se,z,V.y,1,-1)};switch(U){case"Quad":Q(),Pe();break;case"Side by Side":Q();break;case"Stacked":Pe(),Pe();break}M(re,se,D,z);const Ke=m.intersectObjects(De.children);Ke.length>0&&k.position.copy(Ke[0].point)},ie=T=>{if(!vt)return;const V=new l.Vector2;if(O.getSize(V),T.clientX>=V.x)return;L(T);const re=m.intersectObjects(De.children);re.length>0&&t.three.getObject(re[0].object.uuid)},R=fe.current;return R.addEventListener("mousemove",L,!1),R.addEventListener("click",ie,!1),()=>{R.removeEventListener("mousemove",L),R.removeEventListener("click",ie)}}},[U,O]);const de=[];return o.forEach((m,g)=>{de.push(g)}),u.jsxs("div",{className:"multiview",children:[u.jsx("canvas",{ref:K}),O!==null&&u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:`cameras ${U==="Single"||U==="Stacked"?"single":""}`,ref:fe,children:[U==="Single"&&u.jsx(u.Fragment,{children:u.jsx(We,{camera:W,options:de,ref:le,onSelect:m=>{d.get(W.name)?.dispose();const g=o.get(m);g!==void 0&&(Se(W),W=g,localStorage.setItem(`${n}_tlCam`,g.name),ae(g,le.current))}})}),(U==="Side by Side"||U==="Stacked")&&u.jsxs(u.Fragment,{children:[u.jsx(We,{camera:W,options:de,ref:le,onSelect:m=>{d.get(W.name)?.dispose();const g=o.get(m);g!==void 0&&(Se(W),W=g,localStorage.setItem(`${n}_tlCam`,g.name),ae(g,le.current))}}),u.jsx(We,{camera:ce,options:de,ref:Ce,onSelect:m=>{d.get(ce.name)?.dispose();const g=o.get(m);g!==void 0&&(Se(ce),ce=g,localStorage.setItem(`${n}_trCam`,g.name),ae(g,Ce.current))}})]}),U==="Quad"&&u.jsxs(u.Fragment,{children:[u.jsx(We,{camera:W,options:de,ref:le,onSelect:m=>{d.get(W.name)?.dispose();const g=o.get(m);g!==void 0&&(Se(W),W=g,localStorage.setItem(`${n}_tlCam`,g.name),ae(g,le.current))}}),u.jsx(We,{camera:ce,options:de,ref:Ce,onSelect:m=>{d.get(ce.name)?.dispose();const g=o.get(m);g!==void 0&&(Se(ce),ce=g,localStorage.setItem(`${n}_trCam`,g.name),ae(g,Ce.current))}}),u.jsx(We,{camera:Fe,options:de,ref:we,onSelect:m=>{d.get(Fe.name)?.dispose();const g=o.get(m);g!==void 0&&(Se(Fe),Fe=g,localStorage.setItem(`${n}_blCam`,g.name),ae(g,we.current))}}),u.jsx(We,{camera:Be,options:de,ref:pe,onSelect:m=>{d.get(Be.name)?.dispose();const g=o.get(m);g!==void 0&&(Se(Be),Be=g,localStorage.setItem(`${n}_brCam`,g.name),ae(g,pe.current))}})]})]}),u.jsxs("div",{className:"settings",children:[u.jsx(bt,{index:ye.indexOf(U),options:ye,onSelect:m=>{m!==U&&(Ve(),me(m))},open:Oe,onToggle:m=>{_e(m),Me&&Te(!1),Ae&&je(!1)}}),u.jsx(bt,{index:te.indexOf(gt),options:te,onSelect:m=>{if(m!==gt)switch(gt=m,gt){case"Depth":v.overrideMaterial=q;break;case"Normals":v.overrideMaterial=G;break;default:case"Renderer":v.overrideMaterial=null;break;case"Wireframe":v.overrideMaterial=A;break;case"UVs":v.overrideMaterial=B;break}},open:Me,onToggle:m=>{Oe&&_e(!1),Te(m),Ae&&je(!1)}}),u.jsx(bt,{index:0,options:["Orbit Mode","Selection Mode"],onSelect:m=>{vt=m==="Selection Mode",k.visible=vt},open:Ae,onToggle:m=>{Oe&&_e(!1),Me&&Te(!1),je(m)}})]})]})]})}function fa(t){return u.jsxs("div",{className:"editor",ref:t.ref,style:t.style,children:[u.jsx("div",{className:"header",children:t.header}),t.children,u.jsx("div",{className:"footer",children:t.footer})]})}exports.Accordion=Et;exports.Application=En;exports.BaseRemote=lt;exports.ChildObject=Lt;exports.ContainerObject=sn;exports.Draggable=nn;exports.DraggableItem=tn;exports.Dropdown=an;exports.DropdownItem=rn;exports.Editor=fa;exports.Inspector=cn;exports.MultiView=ha;exports.NavButton=It;exports.RemoteComponents=Sn;exports.RemoteController=Dn;exports.RemoteTheatre=yt;exports.RemoteThree=Tn;exports.RemoteTweakpane=Rn;exports.SceneInspector=aa;exports.SidePanel=na;exports.ToolEvents=F;exports.capitalize=ct;exports.clamp=Ue;exports.colorToHex=Zt;exports.debugDispatcher=N;exports.defaultTheatreCallback=vn;exports.dispose=jt;exports.disposeMaterial=Qt;exports.disposeTexture=yn;exports.distance=bn;exports.hierarchyUUID=Dt;exports.isColor=Xt;exports.mix=_t;exports.noop=kt;exports.normalize=Rt;exports.randomID=Kt;exports.resetThreeObjects=Jt;exports.round=et;exports.theatreEditorApp=xn;
144
+ }`;class da extends l.ShaderMaterial{constructor(){super({defines:{USE_UV:""},vertexShader:la,fragmentShader:ua})}}let gt="Renderer",De,vt=!1,Wt=!1,W=null,ce=null,Fe=null,Be=null;function ha(t){const n=t.three.app.appID,a=localStorage.getItem(`${n}_mode`),e=localStorage.getItem(`${n}_tlCam`)!==null?localStorage.getItem(`${n}_tlCam`):"Debug",i=localStorage.getItem(`${n}_trCam`)!==null?localStorage.getItem(`${n}_trCam`):"Orthographic",c=localStorage.getItem(`${n}_blCam`)!==null?localStorage.getItem(`${n}_blCam`):"Front",f=localStorage.getItem(`${n}_brCam`)!==null?localStorage.getItem(`${n}_brCam`):"Top",o=x.useMemo(()=>new Map,[]),d=x.useMemo(()=>new Map,[]),h=x.useMemo(()=>new Map,[]),b=x.useMemo(()=>new Map,[]),v=x.useMemo(()=>new l.Scene,[]),S=x.useMemo(()=>new l.Group,[]),C=x.useMemo(()=>new ca,[]),P=x.useMemo(()=>new l.AxesHelper(500),[]),k=x.useMemo(()=>new l.AxesHelper(100),[]),q=x.useMemo(()=>new l.MeshDepthMaterial,[]),G=x.useMemo(()=>new l.MeshNormalMaterial,[]),B=x.useMemo(()=>new da,[]),A=x.useMemo(()=>new l.MeshBasicMaterial({opacity:.33,transparent:!0,wireframe:!0}),[]);function X(m,g){const M=new l.OrthographicCamera(-100,100,100,-100,50,3e3);return M.name=m,M.position.copy(g),M.lookAt(0,0,0),o.set(m,M),M}const te=["Renderer","Depth","Normals","UVs","Wireframe"],ye=["Single","Side by Side","Stacked","Quad"],K=x.useRef(null),fe=x.useRef(null),le=x.useRef(null),Ce=x.useRef(null),we=x.useRef(null),pe=x.useRef(null),[U,me]=x.useState(a!==null?a:"Single"),[O,Ee]=x.useState(null),[Oe,_e]=x.useState(!1),[Me,Te]=x.useState(!1),[Ae,je]=x.useState(!1),[,Ie]=x.useState(Date.now());localStorage.setItem(`${n}_mode`,U),localStorage.setItem(`${n}_tlCam`,e),localStorage.setItem(`${n}_trCam`,i),localStorage.setItem(`${n}_blCam`,c),localStorage.setItem(`${n}_brCam`,f);const ae=(m,g)=>{const M=d.get(m.name);M!==void 0&&M.dispose(),d.delete(m.name);const L=h.get(m.name);L!==void 0&&(v.remove(L),L.dispose()),h.delete(m.name);const ie=new sa(m,g);switch(ie.enableDamping=!0,ie.dampingFactor=.05,m.name){case"Top":case"Bottom":case"Left":case"Right":case"Front":case"Back":ie.enableRotate=!1;break}if(d.set(m.name,ie),m instanceof l.PerspectiveCamera){const R=new l.CameraHelper(m);h.set(m.name,R),v.add(R)}},Se=m=>{const g=h.get(m.name);g!==void 0&&(v.remove(g),g.dispose(),h.delete(m.name));const M=d.get(m.name);M!==void 0&&(M.dispose(),d.delete(m.name))},Ve=()=>{d.forEach((m,g)=>{m.dispose();const M=h.get(g);M!==void 0&&(v.remove(M),M.dispose()),h.delete(g),d.delete(g)}),d.clear(),h.clear()},$e=()=>{switch(U){case"Single":ae(W,le.current);break;case"Side by Side":case"Stacked":ae(W,le.current),ae(ce,Ce.current);break;case"Quad":ae(W,le.current),ae(ce,Ce.current),ae(Fe,we.current),ae(Be,pe.current);break}};x.useEffect(()=>{const m=new l.WebGLRenderer({canvas:K.current,stencil:!1});m.autoClear=!1,m.shadowMap.enabled=!0,m.setPixelRatio(devicePixelRatio),m.setClearColor(0),t.three.renderer=m,Ee(m)},[]),x.useEffect(()=>{v.name="Debug Scene",v.uuid="",S.name="helpers",v.add(S),S.add(C),P.name="axisHelper",S.add(P),k.name="interactionHelper",S.add(k),k.visible=!1,X("Top",new l.Vector3(0,1e3,0)),X("Bottom",new l.Vector3(0,-1e3,0)),X("Left",new l.Vector3(-1e3,0,0)),X("Right",new l.Vector3(1e3,0,0)),X("Front",new l.Vector3(0,0,1e3)),X("Back",new l.Vector3(0,0,-1e3)),X("Orthographic",new l.Vector3(1e3,1e3,1e3));const m=new l.PerspectiveCamera(60,1,50,3e3);m.name="Debug",m.position.set(500,500,500),m.lookAt(0,0,0),o.set("Debug",m),W=o.get(localStorage.getItem(`${n}_tlCam`)),ce=o.get(localStorage.getItem(`${n}_trCam`)),Fe=o.get(localStorage.getItem(`${n}_blCam`)),Be=o.get(localStorage.getItem(`${n}_brCam`))},[]),x.useEffect(()=>{const m=()=>{b.forEach(R=>{S.remove(R),R.dispose()}),b.clear()},g=()=>{De.traverse(R=>{if(R.type.search("Light")>-1){let T;switch(R.type){case"DirectionalLight":T=new l.DirectionalLightHelper(R),T.name=`${R.name}Helper`,b.set(R.name,T),S.add(T);break;case"HemisphereLight":T=new l.HemisphereLightHelper(R,250),T.name=`${R.name}Helper`,b.set(R.name,T),S.add(T);break;case"RectAreaLight":T=new ia(R),T.name=`${R.name}Helper`,b.set(R.name,T),S.add(T);break;case"PointLight":T=new l.PointLightHelper(R),T.name=`${R.name}Helper`,b.set(R.name,T),S.add(T);break;case"SpotLight":T=new l.SpotLightHelper(R),T.name=`${R.name}Helper`,b.set(R.name,T),S.add(T);break}}})},M=R=>{m(),jt(De),v.remove(De);const T=t.scenes.get(R.value.name);if(T!==void 0){const V=new T;t.onSceneSet!==void 0&&t.onSceneSet(V),De=V,t.three.scene=De,v.add(De),Wt=!0,g()}},L=R=>{const T=R.value,V=t.three.scene?.getObjectByProperty("uuid",T.uuid);V!==void 0&&o.set(T.name,V),Ie(Date.now())},ie=R=>{o.delete(R.value.name),Ie(Date.now())};return N.addEventListener(F.SET_SCENE,M),N.addEventListener(F.ADD_CAMERA,L),N.addEventListener(F.REMOVE_CAMERA,ie),()=>{N.removeEventListener(F.SET_SCENE,M),N.removeEventListener(F.ADD_CAMERA,L),N.removeEventListener(F.REMOVE_CAMERA,ie)}},[]),x.useEffect(()=>{if(O===null)return;let m=window.innerWidth,g=window.innerHeight,M=Math.floor(m/2),L=Math.floor(g/2),ie=-1;const R=()=>{m=window.innerWidth-300,g=window.innerHeight,M=Math.floor(m/2),L=Math.floor(g/2),O.setSize(m,g);let D=m,z=g;switch(U){case"Side by Side":D=M,z=g;break;case"Stacked":D=m,z=L;break;case"Quad":D=M,z=L;break}o.forEach(Q=>{Q instanceof l.OrthographicCamera?(Q.left=D/-2,Q.right=D/2,Q.top=z/2,Q.bottom=z/-2,Q.updateProjectionMatrix()):Q instanceof l.PerspectiveCamera&&(Q.aspect=D/z,Q.updateProjectionMatrix(),h.get(Q.name)?.update())})},T=()=>{O.setViewport(0,0,m,g),O.setScissor(0,0,m,g),O.render(v,W)},V=()=>{if(U==="Side by Side")O.setViewport(0,0,M,g),O.setScissor(0,0,M,g),O.render(v,W),O.setViewport(M,0,M,g),O.setScissor(M,0,M,g),O.render(v,ce);else{const D=g-L;O.setViewport(0,D,m,L),O.setScissor(0,D,m,L),O.render(v,W),O.setViewport(0,0,m,L),O.setScissor(0,0,m,L),O.render(v,ce)}},re=()=>{let D=0,z=0;z=g-L,D=0,O.setViewport(D,z,M,L),O.setScissor(D,z,M,L),O.render(v,W),D=M,O.setViewport(D,z,M,L),O.setScissor(D,z,M,L),O.render(v,ce),z=0,D=0,O.setViewport(D,z,M,L),O.setScissor(D,z,M,L),O.render(v,Fe),D=M,O.setViewport(D,z,M,L),O.setScissor(D,z,M,L),O.render(v,Be)},se=()=>{switch(d.forEach(D=>{D.update()}),t.onSceneUpdate!==void 0&&Wt&&t.onSceneUpdate(De),O.clear(),U){case"Single":T();break;case"Side by Side":case"Stacked":V();break;case"Quad":re();break}ie=requestAnimationFrame(se)};return $e(),window.addEventListener("resize",R),R(),se(),()=>{window.removeEventListener("resize",R),cancelAnimationFrame(ie),ie=-1}},[U,O]),x.useEffect(()=>{if(O!==null){const m=new l.Raycaster,g=new l.Vector2,M=(T,V,re,se)=>{switch(U){case"Quad":T<re?V<se?m.setFromCamera(g,W):m.setFromCamera(g,Fe):V<se?m.setFromCamera(g,ce):m.setFromCamera(g,Be);break;case"Side by Side":T<re?m.setFromCamera(g,W):m.setFromCamera(g,ce);break;case"Single":m.setFromCamera(g,W);break;case"Stacked":V<se?m.setFromCamera(g,W):m.setFromCamera(g,ce);break}},L=T=>{if(!vt)return;const V=new l.Vector2;O.getSize(V);const re=Math.min(T.clientX,V.x),se=Math.min(T.clientY,V.y);g.x=Qe(re,0,V.x,-1,1),g.y=Qe(se,0,V.y,1,-1);const D=V.x/2,z=V.y/2,Q=()=>{re<D?g.x=Qe(re,0,D,-1,1):g.x=Qe(re,D,V.x,-1,1)},Pe=()=>{se<z?g.y=Qe(se,0,z,1,-1):g.y=Qe(se,z,V.y,1,-1)};switch(U){case"Quad":Q(),Pe();break;case"Side by Side":Q();break;case"Stacked":Pe(),Pe();break}M(re,se,D,z);const Ke=m.intersectObjects(De.children);Ke.length>0&&k.position.copy(Ke[0].point)},ie=T=>{if(!vt)return;const V=new l.Vector2;if(O.getSize(V),T.clientX>=V.x)return;L(T);const re=m.intersectObjects(De.children);re.length>0&&t.three.getObject(re[0].object.uuid)},R=fe.current;return R.addEventListener("mousemove",L,!1),R.addEventListener("click",ie,!1),()=>{R.removeEventListener("mousemove",L),R.removeEventListener("click",ie)}}},[U,O]);const de=[];return o.forEach((m,g)=>{de.push(g)}),u.jsxs("div",{className:"multiview",children:[u.jsx("canvas",{ref:K}),O!==null&&u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:`cameras ${U==="Single"||U==="Stacked"?"single":""}`,ref:fe,children:[U==="Single"&&u.jsx(u.Fragment,{children:u.jsx(We,{camera:W,options:de,ref:le,onSelect:m=>{d.get(W.name)?.dispose();const g=o.get(m);g!==void 0&&(Se(W),W=g,localStorage.setItem(`${n}_tlCam`,g.name),ae(g,le.current))}})}),(U==="Side by Side"||U==="Stacked")&&u.jsxs(u.Fragment,{children:[u.jsx(We,{camera:W,options:de,ref:le,onSelect:m=>{d.get(W.name)?.dispose();const g=o.get(m);g!==void 0&&(Se(W),W=g,localStorage.setItem(`${n}_tlCam`,g.name),ae(g,le.current))}}),u.jsx(We,{camera:ce,options:de,ref:Ce,onSelect:m=>{d.get(ce.name)?.dispose();const g=o.get(m);g!==void 0&&(Se(ce),ce=g,localStorage.setItem(`${n}_trCam`,g.name),ae(g,Ce.current))}})]}),U==="Quad"&&u.jsxs(u.Fragment,{children:[u.jsx(We,{camera:W,options:de,ref:le,onSelect:m=>{d.get(W.name)?.dispose();const g=o.get(m);g!==void 0&&(Se(W),W=g,localStorage.setItem(`${n}_tlCam`,g.name),ae(g,le.current))}}),u.jsx(We,{camera:ce,options:de,ref:Ce,onSelect:m=>{d.get(ce.name)?.dispose();const g=o.get(m);g!==void 0&&(Se(ce),ce=g,localStorage.setItem(`${n}_trCam`,g.name),ae(g,Ce.current))}}),u.jsx(We,{camera:Fe,options:de,ref:we,onSelect:m=>{d.get(Fe.name)?.dispose();const g=o.get(m);g!==void 0&&(Se(Fe),Fe=g,localStorage.setItem(`${n}_blCam`,g.name),ae(g,we.current))}}),u.jsx(We,{camera:Be,options:de,ref:pe,onSelect:m=>{d.get(Be.name)?.dispose();const g=o.get(m);g!==void 0&&(Se(Be),Be=g,localStorage.setItem(`${n}_brCam`,g.name),ae(g,pe.current))}})]})]}),u.jsxs("div",{className:"settings",children:[u.jsx(bt,{index:ye.indexOf(U),options:ye,onSelect:m=>{m!==U&&(Ve(),me(m))},open:Oe,onToggle:m=>{_e(m),Me&&Te(!1),Ae&&je(!1)}}),u.jsx(bt,{index:te.indexOf(gt),options:te,onSelect:m=>{if(m!==gt)switch(gt=m,gt){case"Depth":v.overrideMaterial=q;break;case"Normals":v.overrideMaterial=G;break;default:case"Renderer":v.overrideMaterial=null;break;case"Wireframe":v.overrideMaterial=A;break;case"UVs":v.overrideMaterial=B;break}},open:Me,onToggle:m=>{Oe&&_e(!1),Te(m),Ae&&je(!1)}}),u.jsx(bt,{index:0,options:["Orbit Mode","Selection Mode"],onSelect:m=>{vt=m==="Selection Mode",k.visible=vt},open:Ae,onToggle:m=>{Oe&&_e(!1),Me&&Te(!1),je(m)}})]})]})]})}function fa(t){return u.jsxs("div",{className:"editor",ref:t.ref,style:t.style,children:[u.jsx("div",{className:"header",children:t.header}),t.children,u.jsx("div",{className:"footer",children:t.footer})]})}exports.Accordion=Et;exports.Application=En;exports.BaseRemote=lt;exports.ChildObject=Lt;exports.ContainerObject=sn;exports.Draggable=nn;exports.DraggableItem=tn;exports.Dropdown=an;exports.DropdownItem=rn;exports.Editor=fa;exports.Inspector=cn;exports.MultiView=ha;exports.NavButton=It;exports.RemoteComponents=Sn;exports.RemoteController=Dn;exports.RemoteTheatre=yt;exports.RemoteThree=Tn;exports.RemoteTweakpane=Rn;exports.SceneInspector=aa;exports.SidePanel=na;exports.ToolEvents=F;exports.capitalize=ct;exports.clamp=Ue;exports.colorToHex=Zt;exports.debugDispatcher=N;exports.defaultTheatreCallback=vn;exports.dispose=jt;exports.disposeMaterial=Qt;exports.disposeTexture=yn;exports.distance=bn;exports.hierarchyUUID=Dt;exports.isColor=Xt;exports.mix=_t;exports.noop=kt;exports.normalize=Rt;exports.randomID=Kt;exports.resetThreeObjects=Jt;exports.round=et;exports.theatreEditorApp=xn;
package/dist/hermes.es.js CHANGED
@@ -45,7 +45,7 @@ const Ma = () => {
45
45
  if (!t)
46
46
  return;
47
47
  let n = t.name.replace(" ", "");
48
- n.length === 0 && (n = `obj_${jt}`, jt++), t.parent !== null && (n = `${t.parent.uuid}.${n}`), t.uuid = n, t.children.forEach((a) => {
48
+ n.length === 0 && (n = `obj_${jt}`, jt++), t.parent !== null && t.parent.uuid.length > 0 && (n = `${t.parent.uuid}.${n}`), t.uuid = n, t.children.forEach((a) => {
49
49
  Pn(a);
50
50
  });
51
51
  }, wi = (t) => {
@@ -3742,7 +3742,7 @@ function Di(t) {
3742
3742
  });
3743
3743
  p.autoClear = !1, p.shadowMap.enabled = !0, p.setPixelRatio(devicePixelRatio), p.setClearColor(0), t.three.renderer = p, Ce(p);
3744
3744
  }, []), ke(() => {
3745
- v.name = "Debug Scene", E.name = "helpers", v.add(E), E.add(x), R.name = "axisHelper", E.add(R), P.name = "interactionHelper", E.add(P), P.visible = !1, q("Top", new X(0, 1e3, 0)), q("Bottom", new X(0, -1e3, 0)), q("Left", new X(-1e3, 0, 0)), q("Right", new X(1e3, 0, 0)), q("Front", new X(0, 0, 1e3)), q("Back", new X(0, 0, -1e3)), q("Orthographic", new X(1e3, 1e3, 1e3));
3745
+ v.name = "Debug Scene", v.uuid = "", E.name = "helpers", v.add(E), E.add(x), R.name = "axisHelper", E.add(R), P.name = "interactionHelper", E.add(P), P.visible = !1, q("Top", new X(0, 1e3, 0)), q("Bottom", new X(0, -1e3, 0)), q("Left", new X(-1e3, 0, 0)), q("Right", new X(1e3, 0, 0)), q("Front", new X(0, 0, 1e3)), q("Back", new X(0, 0, -1e3)), q("Orthographic", new X(1e3, 1e3, 1e3));
3746
3746
  const p = new Pt(60, 1, 50, 3e3);
3747
3747
  p.name = "Debug", p.position.set(500, 500, 500), p.lookAt(0, 0, 0), o.set("Debug", p), G = o.get(localStorage.getItem(`${n}_tlCam`)), ce = o.get(localStorage.getItem(`${n}_trCam`)), ze = o.get(localStorage.getItem(`${n}_blCam`)), He = o.get(localStorage.getItem(`${n}_brCam`));
3748
3748
  }, []), ke(() => {
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "module": "./dist/hermes.esm.js",
8
8
  "types": "./types/index.d.ts",
9
9
  "type": "module",
10
- "version": "0.0.52",
10
+ "version": "0.0.53",
11
11
  "homepage": "https://github.com/tomorrowevening/hermes#readme",
12
12
  "bugs": {
13
13
  "url": "https://github.com/tomorrowevening/hermes/issues"