@tomorrowevening/hermes 0.0.45 → 0.0.46
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.
package/dist/hermes.cjs.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("three"),un=require("tweakpane"),dn=require("@tweakpane/plugin-essentials"),C=require("react"),Ht=require("framer-motion");function hn(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 fn=hn(dn),_t=()=>{},pn=()=>{};function qe(t){return t.substring(0,1).toUpperCase()+t.substring(1)}function mn(t,n,a){return Math.min(n,Math.max(t,a))}function vn(t,n){const a=t-n;return Math.sqrt(a*a)}function Wt(){return Math.round(Math.random()*1e6).toString()}function $t(t){return t.r!==void 0&&t.g!==void 0&&t.b!==void 0}function qt(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},s=i(n),f=i(a),c=i(e);return"#"+s+f+c}function mt(t,n=1){return Number(t.toFixed(n))}exports.totalThreeObjects=0;const Kt=()=>{exports.totalThreeObjects=0},At=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=>{At(a)})},gn=t=>{t?.dispose()},Xt=t=>{t&&(Array.isArray(t)?t.forEach(n=>n.dispose()):t.dispose())},Pt=t=>{if(t){for(;t.children.length>0;){const n=t.children[0];n.type==="Audio"?(n.pause(),n.parent&&n.parent.remove(n)):Pt(n)}if(t.parent&&t.parent.remove(t),t.isMesh){const n=t;n.geometry?.dispose(),Xt(n.material)}t.dispose!==void 0&&t.dispose()}};class bn{components=new Map;listen;_debugEnabled;_broadcastChannel=void 0;_webSocket=void 0;_mode="app";_connected=!1;_useBC=!1;constructor(n,a,e=!0){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 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 j=new l.EventDispatcher,D={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 it{app;constructor(n){this.app=n}dispose(){}handleApp(n,a,e){}handleEditor(n,a,e){}}class yn extends it{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":j.dispatchEvent({type:D.SELECT_DROPDOWN,value:e.data});break;case"draggableListUpdate":j.dispatchEvent({type:D.DRAG_UPDATE,value:e.data});break}}}class gt extends it{project;sheets=new Map;sheetObjects=new Map;sheetObjectCBs=new Map;sheetObjectUnsubscribe=new Map;activeSheet;studio;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 s=this.sheet(n);if(s===void 0)return;const f=`${n}_${a}`;let c=this.sheetObjects.get(f);c!==void 0?c=s.object(a,{...e,...c.value},{reconfigure:!0}):c=s.object(a,e),this.sheetObjects.set(f,c),this.sheetObjectCBs.set(f,i!==void 0?i:_t);const d=c.onValuesChange(h=>{if(this.app.editor){for(const y in h){const S=h[y];typeof S=="object"&&$t(S)&&(h[y]={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 g=this.sheetObjectCBs.get(f);g!==void 0&&g(h)});return this.sheetObjectUnsubscribe.set(f,d),c}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 s=`${a}_${e}`,f=this.sheetObjectUnsubscribe.get(s);f!==void 0&&(this.sheetObjects.delete(s),this.sheetObjectCBs.delete(s),this.sheetObjectUnsubscribe.delete(s),f())}handleApp(n,a,e){const i=a;let s;switch(e.event){case"setSheet":s=i.sheets.get(e.data.sheet),s!==void 0&&(i.activeSheet=s,this.studio.setSelection([s]));break;case"setSheetObject":s=i.sheetObjects.get(`${e.data.sheet}_${e.data.key}`),s!==void 0&&this.studio.setSelection([s]);break;case"updateSheetObject":s=i.sheets.get(e.data.sheet),s!==void 0&&s.sequence.pause(),s=i.sheetObjectCBs.get(e.data.sheetObject),s!==void 0&&s(e.data.values);break;case"updateTimeline":s=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(c=>{let d=c.address.sheetId,h="setSheet",g={};switch(c.type){case"Theatre_Sheet_PublicAPI":h="setSheet",g={sheet:c.address.sheetId},a.activeSheet=a.sheets.get(c.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":h="setSheetObject",d+=`_${c.address.objectKey}`,g={id:d,sheet:c.address.sheetId,key:c.address.objectKey},a.activeSheet=a.sheets.get(c.address.sheetId);break}n.send({event:h,target:"app",data:g})})});let e=-1;const i=()=>{if(gt.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}})}},s=()=>{i(),requestAnimationFrame(s)};i(),s()}else this.studio.ui.hide()}}function En(t,n,a){if(t.editor){a.ui.restore(),a.onSelectionChange(f=>{f.length<1||f.forEach(c=>{let d=c.address.sheetId,h="setSheet",g={};switch(c.type){case"Theatre_Sheet_PublicAPI":h="setSheet",g={sheet:c.address.sheetId},n.activeSheet=n.sheets.get(c.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":h="setSheetObject",d+=`_${c.address.objectKey}`,g={id:d,sheet:c.address.sheetId,key:c.address.objectKey},n.activeSheet=n.sheets.get(c.address.sheetId);break}t.send({event:h,target:"app",data:g})})});let e=-1;const i=()=>{if(gt.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}})}},s=()=>{i(),requestAnimationFrame(s)};i(),s()}else a.ui.hide()}function Sn(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 Zt(t){const n={name:t.name,type:t.type,uuid:t.uuid,children:[]};return t.children.forEach(a=>{n.children.push(Zt(a))}),n}function Cn(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 xn(t){switch(t){case"blendSrcAlpha":case"blendDstAlpha":case"blendEquationAlpha":case"clippingPlanes":case"shadowSide":case"precision":return!0}return!1}function We(t){const n={};for(const a in t){if(a.substring(0,1)==="_"||a.substring(0,2)==="is"||xn(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 s=i.source.toJSON();n[a]={src:s.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]=Cn(n[a]));else n[a]={src:""};break}}return n}function wt(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(s=>{i.push(We(s))}),n.material=i}else n.material=We(e.material)}else if(a.search("points")>-1){const e=t;if(Array.isArray(e.material)){const i=[];e.material.forEach(s=>{i.push(We(s))}),n.material=i}else n.material=We(e.material)}else if(a.search("line")>-1){const e=t;if(Array.isArray(e.material)){const i=[];e.material.forEach(s=>{i.push(We(s))}),n.material=i}else n.material=We(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});return n}function wn(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 te(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 Tt(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 On extends it{scene=void 0;getObject(n){this.app.debugEnabled&&this.app.send({event:"getObject",target:"app",data:n})}setObject(n){const a=wt(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;Kt(),At(this.scene);const a=Zt(this.scene);this.app.send({event:"setScene",target:"editor",data:a})}addCamera(n){if(!this.app.debugEnabled)return;const a=wt(n);this.app.send({event:"addCamera",target:"editor",data:a})}removeCamera(n){if(!this.app.debugEnabled)return;const a=wt(n);this.app.send({event:"removeCamera",target:"editor",data:a})}handleApp(n,a,e){switch(e.event){case"getObject":j.dispatchEvent({type:D.GET_OBJECT,value:e.data});break;case"updateObject":j.dispatchEvent({type:D.UPDATE_OBJECT,value:e.data});break;case"createTexture":j.dispatchEvent({type:D.CREATE_TEXTURE,value:e.data});break;case"requestMethod":j.dispatchEvent({type:D.REQUEST_METHOD,value:e.data});break}}handleEditor(n,a,e){switch(e.event){case"setObject":j.dispatchEvent({type:D.SET_OBJECT,value:e.data});break;case"setScene":j.dispatchEvent({type:D.SET_SCENE,value:e.data});break;case"addCamera":j.dispatchEvent({type:D.ADD_CAMERA,value:e.data});break;case"removeCamera":j.dispatchEvent({type:D.REMOVE_CAMERA,value:e.data});break}}}class Mn extends it{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 un.Pane({title:"GUI"}),this.pane.registerPlugin(fn)}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 s=this.bindID,f=e.onChange!==void 0?e.onChange:_t;this.bindCBs.set(s,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:s,value:d.value}})}),this.editorCallbacks++):(this.app.send({event:"bindObject",target:"app",data:{id:s,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 Rt={exports:{}},et={};/**
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("three"),un=require("tweakpane"),dn=require("@tweakpane/plugin-essentials"),C=require("react"),Ht=require("framer-motion");function hn(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 fn=hn(dn),_t=()=>{},pn=()=>{};function qe(t){return t.substring(0,1).toUpperCase()+t.substring(1)}function mn(t,n,a){return Math.min(n,Math.max(t,a))}function vn(t,n){const a=t-n;return Math.sqrt(a*a)}function Wt(){return Math.round(Math.random()*1e6).toString()}function $t(t){return t.r!==void 0&&t.g!==void 0&&t.b!==void 0}function qt(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},s=i(n),f=i(a),c=i(e);return"#"+s+f+c}function mt(t,n=1){return Number(t.toFixed(n))}exports.totalThreeObjects=0;const Kt=()=>{exports.totalThreeObjects=0},At=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=>{At(a)})},gn=t=>{t?.dispose()},Xt=t=>{t&&(Array.isArray(t)?t.forEach(n=>n.dispose()):t.dispose())},Pt=t=>{if(t){for(;t.children.length>0;){const n=t.children[0];n.type==="Audio"?(n.pause(),n.parent&&n.parent.remove(n)):Pt(n)}if(t.parent&&t.parent.remove(t),t.isMesh){const n=t;n.geometry?.dispose(),Xt(n.material)}t.dispose!==void 0&&t.dispose()}};class bn{components=new Map;listen;_debugEnabled;_broadcastChannel=void 0;_webSocket=void 0;_mode="app";_connected=!1;_useBC=!1;constructor(n,a,e=!0){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 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 j=new l.EventDispatcher,D={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 it{app;constructor(n){this.app=n}dispose(){}handleApp(n,a,e){}handleEditor(n,a,e){}}class yn extends it{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":j.dispatchEvent({type:D.SELECT_DROPDOWN,value:e.data});break;case"draggableListUpdate":j.dispatchEvent({type:D.DRAG_UPDATE,value:e.data});break}}}class gt extends it{project;sheets=new Map;sheetObjects=new Map;sheetObjectCBs=new Map;sheetObjectUnsubscribe=new Map;activeSheet;studio;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 s=this.sheet(n);if(s===void 0)return;const f=`${n}_${a}`;let c=this.sheetObjects.get(f);c!==void 0?c=s.object(a,{...e,...c.value},{reconfigure:!0}):c=s.object(a,e),this.sheetObjects.set(f,c),this.sheetObjectCBs.set(f,i!==void 0?i:_t);const d=c.onValuesChange(h=>{if(this.app.editor){for(const y in h){const S=h[y];typeof S=="object"&&$t(S)&&(h[y]={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 g=this.sheetObjectCBs.get(f);g!==void 0&&g(h)});return this.sheetObjectUnsubscribe.set(f,d),c}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 s=`${a}_${e}`,f=this.sheetObjectUnsubscribe.get(s);f!==void 0&&(this.sheetObjects.delete(s),this.sheetObjectCBs.delete(s),this.sheetObjectUnsubscribe.delete(s),f())}handleApp(n,a,e){const i=a;let s;switch(e.event){case"setSheet":s=i.sheets.get(e.data.sheet),s!==void 0&&(i.activeSheet=s,this.studio.setSelection([s]));break;case"setSheetObject":s=i.sheetObjects.get(`${e.data.sheet}_${e.data.key}`),s!==void 0&&this.studio.setSelection([s]);break;case"updateSheetObject":s=i.sheets.get(e.data.sheet),s!==void 0&&s.sequence.pause(),s=i.sheetObjectCBs.get(e.data.sheetObject),s!==void 0&&s(e.data.values);break;case"updateTimeline":s=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(c=>{let d=c.address.sheetId,h="setSheet",g={};switch(c.type){case"Theatre_Sheet_PublicAPI":h="setSheet",g={sheet:c.address.sheetId},a.activeSheet=a.sheets.get(c.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":h="setSheetObject",d+=`_${c.address.objectKey}`,g={id:d,sheet:c.address.sheetId,key:c.address.objectKey},a.activeSheet=a.sheets.get(c.address.sheetId);break}n.send({event:h,target:"app",data:g})})});let e=-1;const i=()=>{if(gt.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}})}},s=()=>{i(),requestAnimationFrame(s)};i(),s()}else this.studio.ui.hide()}}function En(t,n,a){if(t.editor){a.ui.restore(),a.onSelectionChange(f=>{f.length<1||f.forEach(c=>{let d=c.address.sheetId,h="setSheet",g={};switch(c.type){case"Theatre_Sheet_PublicAPI":h="setSheet",g={sheet:c.address.sheetId},n.activeSheet=n.sheets.get(c.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":h="setSheetObject",d+=`_${c.address.objectKey}`,g={id:d,sheet:c.address.sheetId,key:c.address.objectKey},n.activeSheet=n.sheets.get(c.address.sheetId);break}t.send({event:h,target:"app",data:g})})});let e=-1;const i=()=>{if(gt.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}})}},s=()=>{i(),requestAnimationFrame(s)};i(),s()}else a.ui.hide()}function Sn(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 Zt(t){const n={name:t.name,type:t.type,uuid:t.uuid,children:[]};return t.children.forEach(a=>{n.children.push(Zt(a))}),n}function Cn(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 xn(t){switch(t){case"blendSrcAlpha":case"blendDstAlpha":case"blendEquationAlpha":case"clippingPlanes":case"shadowSide":case"precision":return!0}return!1}function We(t){const n={};for(const a in t){if(a.substring(0,1)==="_"||a.substring(0,2)==="is"||xn(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 s=i.source.toJSON();n[a]={src:s.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]=Cn(n[a]));else n[a]={src:""};break}}return n}function wt(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(s=>{i.push(We(s))}),n.material=i}else n.material=We(e.material)}else if(a.search("points")>-1){const e=t;if(Array.isArray(e.material)){const i=[];e.material.forEach(s=>{i.push(We(s))}),n.material=i}else n.material=We(e.material)}else if(a.search("line")>-1){const e=t;if(Array.isArray(e.material)){const i=[];e.material.forEach(s=>{i.push(We(s))}),n.material=i}else n.material=We(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});return n}function wn(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 te(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 Tt(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 On extends it{scene=void 0;renderer=void 0;getObject(n){this.app.debugEnabled&&this.app.send({event:"getObject",target:"app",data:n})}setObject(n){const a=wt(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;Kt(),At(this.scene);const a=Zt(this.scene);this.app.send({event:"setScene",target:"editor",data:a})}addCamera(n){if(!this.app.debugEnabled)return;const a=wt(n);this.app.send({event:"addCamera",target:"editor",data:a})}removeCamera(n){if(!this.app.debugEnabled)return;const a=wt(n);this.app.send({event:"removeCamera",target:"editor",data:a})}handleApp(n,a,e){switch(e.event){case"getObject":j.dispatchEvent({type:D.GET_OBJECT,value:e.data});break;case"updateObject":j.dispatchEvent({type:D.UPDATE_OBJECT,value:e.data});break;case"createTexture":j.dispatchEvent({type:D.CREATE_TEXTURE,value:e.data});break;case"requestMethod":j.dispatchEvent({type:D.REQUEST_METHOD,value:e.data});break}}handleEditor(n,a,e){switch(e.event){case"setObject":j.dispatchEvent({type:D.SET_OBJECT,value:e.data});break;case"setScene":j.dispatchEvent({type:D.SET_SCENE,value:e.data});break;case"addCamera":j.dispatchEvent({type:D.ADD_CAMERA,value:e.data});break;case"removeCamera":j.dispatchEvent({type:D.REMOVE_CAMERA,value:e.data});break}}}class Mn extends it{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 un.Pane({title:"GUI"}),this.pane.registerPlugin(fn)}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 s=this.bindID,f=e.onChange!==void 0?e.onChange:_t;this.bindCBs.set(s,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:s,value:d.value}})}),this.editorCallbacks++):(this.app.send({event:"bindObject",target:"app",data:{id:s,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 Rt={exports:{}},et={};/**
|
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 ia extends l.ShaderMaterial{constructor(){super({defines:{USE_UV:""},vertexShader:na,fragmentShader:aa})}}let ft="Renderer",Pe,pt=!1,Gt=!1,Y,se,ke,je;function ra(t){const n=C.useMemo(()=>new Map,[]),a=C.useMemo(()=>new Map,[]),e=C.useMemo(()=>new Map,[]),i=C.useMemo(()=>new l.Scene,[]),s=C.useMemo(()=>new l.Group,[]),f=C.useMemo(()=>new ta,[]),c=C.useMemo(()=>new l.AxesHelper(500),[]),d=C.useMemo(()=>new l.AxesHelper(100),[]),h=C.useMemo(()=>new l.MeshDepthMaterial,[]),g=C.useMemo(()=>new l.MeshNormalMaterial,[]),y=C.useMemo(()=>new ia,[]),S=C.useMemo(()=>new l.MeshBasicMaterial({opacity:.33,transparent:!0,wireframe:!0}),[]);function x(m,v){const M=new l.OrthographicCamera(-100,100,100,-100,50,3e3);return M.name=m,M.position.copy(v),M.lookAt(0,0,0),n.set(m,M),M}const N=["Renderer","Depth","Normals","UVs","Wireframe"],L=["Single","Side by Side","Stacked","Quad"];C.useEffect(()=>{i.name="Debug Scene",s.name="helpers",i.add(s),s.add(f),c.name="axisHelper",s.add(c),d.name="interactionHelper",s.add(d),d.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),n.set("Debug",m),Y=n.get("Debug"),se=n.get("Orthographic"),ke=n.get("Front"),je=n.get("Top")},[]);const K=C.useRef(null),V=C.useRef(null),R=C.useRef(null),G=C.useRef(null),Ce=C.useRef(null),ce=C.useRef(null),[H,ee]=C.useState(t.mode!==void 0?t.mode:"Single"),[O,Me]=C.useState(null),[De,xe]=C.useState(!1),[pe,ne]=C.useState(!1),[de,me]=C.useState(!1),[,ve]=C.useState(Date.now()),X=(m,v)=>{const M=a.get(m.name);M!==void 0&&M.dispose(),a.delete(m.name);const A=e.get(m.name);A!==void 0&&(i.remove(A),A.dispose()),e.delete(m.name);const W=new Qn(m,v);switch(W.enableDamping=!0,W.dampingFactor=.05,m.name){case"Top":case"Bottom":case"Left":case"Right":case"Front":case"Back":W.enableRotate=!1;break}if(a.set(m.name,W),m instanceof l.PerspectiveCamera){const $=new l.CameraHelper(m);e.set(m.name,$),i.add($)}},fe=m=>{const v=e.get(m.name);v!==void 0&&(i.remove(v),v.dispose(),e.delete(m.name));const M=a.get(m.name);M!==void 0&&(M.dispose(),a.delete(m.name))},Te=()=>{a.forEach((m,v)=>{m.dispose();const M=e.get(v);M!==void 0&&(i.remove(M),M.dispose()),e.delete(v),a.delete(v)}),a.clear(),e.clear()},Re=()=>{switch(H){case"Single":X(Y,R.current);break;case"Side by Side":case"Stacked":X(Y,R.current),X(se,G.current);break;case"Quad":X(Y,R.current),X(se,G.current),X(ke,Ce.current),X(je,ce.current);break}};C.useEffect(()=>{const m=new l.WebGLRenderer({canvas:K.current,stencil:!1});m.autoClear=!1,m.shadowMap.enabled=!0,m.setPixelRatio(devicePixelRatio),m.setClearColor(0),Me(m)},[]),C.useEffect(()=>{const m=A=>{Pt(Pe),i.remove(Pe);const W=t.scenes.get(A.value.name);if(W!==void 0){const $=new W;t.onSceneSet!==void 0&&t.onSceneSet($),Pe=$,t.three.scene=Pe,i.add(Pe),Gt=!0}},v=A=>{const W=A.value,$=t.three.scene?.getObjectByProperty("uuid",W.uuid);$!==void 0&&n.set(W.name,$),ve(Date.now())},M=A=>{n.delete(A.value.name),ve(Date.now())};return j.addEventListener(D.SET_SCENE,m),j.addEventListener(D.ADD_CAMERA,v),j.addEventListener(D.REMOVE_CAMERA,M),()=>{j.removeEventListener(D.SET_SCENE,m),j.removeEventListener(D.ADD_CAMERA,v),j.removeEventListener(D.REMOVE_CAMERA,M)}},[]),C.useEffect(()=>{if(O===null)return;let m=window.innerWidth,v=window.innerHeight,M=Math.floor(m/2),A=Math.floor(v/2),W=-1;const $=()=>{m=window.innerWidth-300,v=window.innerHeight,M=Math.floor(m/2),A=Math.floor(v/2),O.setSize(m,v);let P=m,B=v;switch(H){case"Side by Side":P=M,B=v;break;case"Stacked":P=m,B=A;break;case"Quad":P=M,B=A;break}n.forEach(ae=>{ae instanceof l.OrthographicCamera?(ae.left=P/-2,ae.right=P/2,ae.top=B/2,ae.bottom=B/-2,ae.updateProjectionMatrix()):ae instanceof l.PerspectiveCamera&&(ae.aspect=P/B,ae.updateProjectionMatrix(),e.get(ae.name)?.update())})},ie=()=>{O.setViewport(0,0,m,v),O.setScissor(0,0,m,v),O.render(i,Y)},z=()=>{if(H==="Side by Side")O.setViewport(0,0,M,v),O.setScissor(0,0,M,v),O.render(i,Y),O.setViewport(M,0,M,v),O.setScissor(M,0,M,v),O.render(i,se);else{const P=v-A;O.setViewport(0,P,m,A),O.setScissor(0,P,m,A),O.render(i,Y),O.setViewport(0,0,m,A),O.setScissor(0,0,m,A),O.render(i,se)}},Z=()=>{let P=0,B=0;B=v-A,P=0,O.setViewport(P,B,M,A),O.setScissor(P,B,M,A),O.render(i,Y),P=M,O.setViewport(P,B,M,A),O.setScissor(P,B,M,A),O.render(i,se),B=0,P=0,O.setViewport(P,B,M,A),O.setScissor(P,B,M,A),O.render(i,ke),P=M,O.setViewport(P,B,M,A),O.setScissor(P,B,M,A),O.render(i,je)},re=()=>{switch(a.forEach(P=>{P.update()}),t.onSceneUpdate!==void 0&&Gt&&t.onSceneUpdate(Pe),O.clear(),H){case"Single":ie();break;case"Side by Side":case"Stacked":z();break;case"Quad":Z();break}W=requestAnimationFrame(re)};return Re(),window.addEventListener("resize",$),$(),re(),()=>{window.removeEventListener("resize",$),cancelAnimationFrame(W),W=-1}},[H,O]),C.useEffect(()=>{if(O!==null){const m=new l.Raycaster,v=new l.Vector2,M=(ie,z,Z,re)=>{switch(H){case"Quad":ie<Z?z<re?m.setFromCamera(v,Y):m.setFromCamera(v,ke):z<re?m.setFromCamera(v,se):m.setFromCamera(v,je);break;case"Side by Side":ie<Z?m.setFromCamera(v,Y):m.setFromCamera(v,se);break;case"Single":m.setFromCamera(v,Y);break;case"Stacked":z<re?m.setFromCamera(v,Y):m.setFromCamera(v,se);break}},A=ie=>{if(!pt)return;const z=new l.Vector2;O.getSize(z);const Z=Math.min(ie.clientX,z.x),re=Math.min(ie.clientY,z.y);v.x=$e(Z,0,z.x,-1,1),v.y=$e(re,0,z.y,1,-1);const P=z.x/2,B=z.y/2,ae=()=>{Z<P?v.x=$e(Z,0,P,-1,1):v.x=$e(Z,P,z.x,-1,1)},Ee=()=>{re<B?v.y=$e(re,0,B,1,-1):v.y=$e(re,B,z.y,1,-1)};switch(H){case"Quad":ae(),Ee();break;case"Side by Side":ae();break;case"Stacked":Ee(),Ee();break}M(Z,re,P,B);const we=m.intersectObjects(Pe.children);we.length>0&&d.position.copy(we[0].point)},W=ie=>{if(!pt)return;const z=new l.Vector2;if(O.getSize(z),ie.clientX>=z.x)return;A(ie);const Z=m.intersectObjects(Pe.children);Z.length>0&&t.three.getObject(Z[0].object.uuid)},$=V.current;return $.addEventListener("mousemove",A,!1),$.addEventListener("click",W,!1),()=>{$.removeEventListener("mousemove",A),$.removeEventListener("click",W)}}},[H,O]);const he=[];return n.forEach((m,v)=>{he.push(v)}),u.jsxs("div",{className:"multiview",children:[u.jsx("canvas",{ref:K}),O!==null&&u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:`cameras ${H==="Single"||H==="Stacked"?"single":""}`,ref:V,children:[H==="Single"&&u.jsx(u.Fragment,{children:u.jsx(ze,{camera:Y,options:he,ref:R,onSelect:m=>{a.get(Y.name)?.dispose();const v=n.get(m);v!==void 0&&(fe(Y),Y=v,X(v,R.current))}})}),(H==="Side by Side"||H==="Stacked")&&u.jsxs(u.Fragment,{children:[u.jsx(ze,{camera:Y,options:he,ref:R,onSelect:m=>{a.get(Y.name)?.dispose();const v=n.get(m);v!==void 0&&(fe(Y),Y=v,X(v,R.current))}}),u.jsx(ze,{camera:se,options:he,ref:G,onSelect:m=>{a.get(se.name)?.dispose();const v=n.get(m);v!==void 0&&(fe(se),se=v,X(v,G.current))}})]}),H==="Quad"&&u.jsxs(u.Fragment,{children:[u.jsx(ze,{camera:Y,options:he,ref:R,onSelect:m=>{a.get(Y.name)?.dispose();const v=n.get(m);v!==void 0&&(fe(Y),Y=v,X(v,R.current))}}),u.jsx(ze,{camera:se,options:he,ref:G,onSelect:m=>{a.get(se.name)?.dispose();const v=n.get(m);v!==void 0&&(fe(se),se=v,X(v,G.current))}}),u.jsx(ze,{camera:ke,options:he,ref:Ce,onSelect:m=>{a.get(ke.name)?.dispose();const v=n.get(m);v!==void 0&&(fe(ke),ke=v,X(v,Ce.current))}}),u.jsx(ze,{camera:je,options:he,ref:ce,onSelect:m=>{a.get(je.name)?.dispose();const v=n.get(m);v!==void 0&&(fe(je),je=v,X(v,ce.current))}})]})]}),u.jsxs("div",{className:"settings",children:[u.jsx(vt,{index:L.indexOf(H),options:L,onSelect:m=>{m!==H&&(Te(),ee(m))},open:De,onToggle:m=>{xe(m),pe&&ne(!1),de&&me(!1)}}),u.jsx(vt,{index:N.indexOf(ft),options:N,onSelect:m=>{if(m!==ft)switch(ft=m,ft){case"Depth":i.overrideMaterial=h;break;case"Normals":i.overrideMaterial=g;break;default:case"Renderer":i.overrideMaterial=null;break;case"Wireframe":i.overrideMaterial=S;break;case"UVs":i.overrideMaterial=y;break}},open:pe,onToggle:m=>{De&&xe(!1),ne(m),de&&me(!1)}}),u.jsx(vt,{index:0,options:["Orbit Mode","Selection Mode"],onSelect:m=>{pt=m==="Selection Mode",d.visible=pt},open:de,onToggle:m=>{De&&xe(!1),pe&&ne(!1),me(m)}})]})]})]})}function oa(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=bt;exports.Application=bn;exports.BaseRemote=it;exports.ChildObject=jt;exports.ContainerObject=nn;exports.Draggable=Qt;exports.DraggableItem=Jt;exports.Dropdown=en;exports.DropdownItem=tn;exports.Editor=oa;exports.Inspector=rn;exports.MultiView=ra;exports.NavButton=kt;exports.RemoteComponents=yn;exports.RemoteController=Pn;exports.RemoteTheatre=gt;exports.RemoteThree=On;exports.RemoteTweakpane=Mn;exports.SceneInspector=Zn;exports.SidePanel=Xn;exports.ToolEvents=D;exports.capitalize=qe;exports.clamp=mn;exports.colorToHex=qt;exports.debugDispatcher=j;exports.defaultTheatreCallback=pn;exports.dispose=Pt;exports.disposeMaterial=Xt;exports.disposeTexture=gn;exports.distance=vn;exports.hierarchyUUID=At;exports.isColor=$t;exports.noop=_t;exports.randomID=Wt;exports.resetThreeObjects=Kt;exports.round=mt;exports.theatreEditorApp=En;
|
144
|
+
}`;class ia extends l.ShaderMaterial{constructor(){super({defines:{USE_UV:""},vertexShader:na,fragmentShader:aa})}}let ft="Renderer",Pe,pt=!1,Gt=!1,Y,se,ke,je;function ra(t){const n=C.useMemo(()=>new Map,[]),a=C.useMemo(()=>new Map,[]),e=C.useMemo(()=>new Map,[]),i=C.useMemo(()=>new l.Scene,[]),s=C.useMemo(()=>new l.Group,[]),f=C.useMemo(()=>new ta,[]),c=C.useMemo(()=>new l.AxesHelper(500),[]),d=C.useMemo(()=>new l.AxesHelper(100),[]),h=C.useMemo(()=>new l.MeshDepthMaterial,[]),g=C.useMemo(()=>new l.MeshNormalMaterial,[]),y=C.useMemo(()=>new ia,[]),S=C.useMemo(()=>new l.MeshBasicMaterial({opacity:.33,transparent:!0,wireframe:!0}),[]);function x(m,v){const M=new l.OrthographicCamera(-100,100,100,-100,50,3e3);return M.name=m,M.position.copy(v),M.lookAt(0,0,0),n.set(m,M),M}const N=["Renderer","Depth","Normals","UVs","Wireframe"],L=["Single","Side by Side","Stacked","Quad"];C.useEffect(()=>{i.name="Debug Scene",s.name="helpers",i.add(s),s.add(f),c.name="axisHelper",s.add(c),d.name="interactionHelper",s.add(d),d.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),n.set("Debug",m),Y=n.get("Debug"),se=n.get("Orthographic"),ke=n.get("Front"),je=n.get("Top")},[]);const K=C.useRef(null),V=C.useRef(null),R=C.useRef(null),G=C.useRef(null),Ce=C.useRef(null),ce=C.useRef(null),[H,ee]=C.useState(t.mode!==void 0?t.mode:"Single"),[O,Me]=C.useState(null),[De,xe]=C.useState(!1),[pe,ne]=C.useState(!1),[de,me]=C.useState(!1),[,ve]=C.useState(Date.now()),X=(m,v)=>{const M=a.get(m.name);M!==void 0&&M.dispose(),a.delete(m.name);const A=e.get(m.name);A!==void 0&&(i.remove(A),A.dispose()),e.delete(m.name);const W=new Qn(m,v);switch(W.enableDamping=!0,W.dampingFactor=.05,m.name){case"Top":case"Bottom":case"Left":case"Right":case"Front":case"Back":W.enableRotate=!1;break}if(a.set(m.name,W),m instanceof l.PerspectiveCamera){const $=new l.CameraHelper(m);e.set(m.name,$),i.add($)}},fe=m=>{const v=e.get(m.name);v!==void 0&&(i.remove(v),v.dispose(),e.delete(m.name));const M=a.get(m.name);M!==void 0&&(M.dispose(),a.delete(m.name))},Te=()=>{a.forEach((m,v)=>{m.dispose();const M=e.get(v);M!==void 0&&(i.remove(M),M.dispose()),e.delete(v),a.delete(v)}),a.clear(),e.clear()},Re=()=>{switch(H){case"Single":X(Y,R.current);break;case"Side by Side":case"Stacked":X(Y,R.current),X(se,G.current);break;case"Quad":X(Y,R.current),X(se,G.current),X(ke,Ce.current),X(je,ce.current);break}};C.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,Me(m)},[]),C.useEffect(()=>{const m=A=>{Pt(Pe),i.remove(Pe);const W=t.scenes.get(A.value.name);if(W!==void 0){const $=new W;t.onSceneSet!==void 0&&t.onSceneSet($),Pe=$,t.three.scene=Pe,i.add(Pe),Gt=!0}},v=A=>{const W=A.value,$=t.three.scene?.getObjectByProperty("uuid",W.uuid);$!==void 0&&n.set(W.name,$),ve(Date.now())},M=A=>{n.delete(A.value.name),ve(Date.now())};return j.addEventListener(D.SET_SCENE,m),j.addEventListener(D.ADD_CAMERA,v),j.addEventListener(D.REMOVE_CAMERA,M),()=>{j.removeEventListener(D.SET_SCENE,m),j.removeEventListener(D.ADD_CAMERA,v),j.removeEventListener(D.REMOVE_CAMERA,M)}},[]),C.useEffect(()=>{if(O===null)return;let m=window.innerWidth,v=window.innerHeight,M=Math.floor(m/2),A=Math.floor(v/2),W=-1;const $=()=>{m=window.innerWidth-300,v=window.innerHeight,M=Math.floor(m/2),A=Math.floor(v/2),O.setSize(m,v);let P=m,B=v;switch(H){case"Side by Side":P=M,B=v;break;case"Stacked":P=m,B=A;break;case"Quad":P=M,B=A;break}n.forEach(ae=>{ae instanceof l.OrthographicCamera?(ae.left=P/-2,ae.right=P/2,ae.top=B/2,ae.bottom=B/-2,ae.updateProjectionMatrix()):ae instanceof l.PerspectiveCamera&&(ae.aspect=P/B,ae.updateProjectionMatrix(),e.get(ae.name)?.update())})},ie=()=>{O.setViewport(0,0,m,v),O.setScissor(0,0,m,v),O.render(i,Y)},z=()=>{if(H==="Side by Side")O.setViewport(0,0,M,v),O.setScissor(0,0,M,v),O.render(i,Y),O.setViewport(M,0,M,v),O.setScissor(M,0,M,v),O.render(i,se);else{const P=v-A;O.setViewport(0,P,m,A),O.setScissor(0,P,m,A),O.render(i,Y),O.setViewport(0,0,m,A),O.setScissor(0,0,m,A),O.render(i,se)}},Z=()=>{let P=0,B=0;B=v-A,P=0,O.setViewport(P,B,M,A),O.setScissor(P,B,M,A),O.render(i,Y),P=M,O.setViewport(P,B,M,A),O.setScissor(P,B,M,A),O.render(i,se),B=0,P=0,O.setViewport(P,B,M,A),O.setScissor(P,B,M,A),O.render(i,ke),P=M,O.setViewport(P,B,M,A),O.setScissor(P,B,M,A),O.render(i,je)},re=()=>{switch(a.forEach(P=>{P.update()}),t.onSceneUpdate!==void 0&&Gt&&t.onSceneUpdate(Pe),O.clear(),H){case"Single":ie();break;case"Side by Side":case"Stacked":z();break;case"Quad":Z();break}W=requestAnimationFrame(re)};return Re(),window.addEventListener("resize",$),$(),re(),()=>{window.removeEventListener("resize",$),cancelAnimationFrame(W),W=-1}},[H,O]),C.useEffect(()=>{if(O!==null){const m=new l.Raycaster,v=new l.Vector2,M=(ie,z,Z,re)=>{switch(H){case"Quad":ie<Z?z<re?m.setFromCamera(v,Y):m.setFromCamera(v,ke):z<re?m.setFromCamera(v,se):m.setFromCamera(v,je);break;case"Side by Side":ie<Z?m.setFromCamera(v,Y):m.setFromCamera(v,se);break;case"Single":m.setFromCamera(v,Y);break;case"Stacked":z<re?m.setFromCamera(v,Y):m.setFromCamera(v,se);break}},A=ie=>{if(!pt)return;const z=new l.Vector2;O.getSize(z);const Z=Math.min(ie.clientX,z.x),re=Math.min(ie.clientY,z.y);v.x=$e(Z,0,z.x,-1,1),v.y=$e(re,0,z.y,1,-1);const P=z.x/2,B=z.y/2,ae=()=>{Z<P?v.x=$e(Z,0,P,-1,1):v.x=$e(Z,P,z.x,-1,1)},Ee=()=>{re<B?v.y=$e(re,0,B,1,-1):v.y=$e(re,B,z.y,1,-1)};switch(H){case"Quad":ae(),Ee();break;case"Side by Side":ae();break;case"Stacked":Ee(),Ee();break}M(Z,re,P,B);const we=m.intersectObjects(Pe.children);we.length>0&&d.position.copy(we[0].point)},W=ie=>{if(!pt)return;const z=new l.Vector2;if(O.getSize(z),ie.clientX>=z.x)return;A(ie);const Z=m.intersectObjects(Pe.children);Z.length>0&&t.three.getObject(Z[0].object.uuid)},$=V.current;return $.addEventListener("mousemove",A,!1),$.addEventListener("click",W,!1),()=>{$.removeEventListener("mousemove",A),$.removeEventListener("click",W)}}},[H,O]);const he=[];return n.forEach((m,v)=>{he.push(v)}),u.jsxs("div",{className:"multiview",children:[u.jsx("canvas",{ref:K}),O!==null&&u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:`cameras ${H==="Single"||H==="Stacked"?"single":""}`,ref:V,children:[H==="Single"&&u.jsx(u.Fragment,{children:u.jsx(ze,{camera:Y,options:he,ref:R,onSelect:m=>{a.get(Y.name)?.dispose();const v=n.get(m);v!==void 0&&(fe(Y),Y=v,X(v,R.current))}})}),(H==="Side by Side"||H==="Stacked")&&u.jsxs(u.Fragment,{children:[u.jsx(ze,{camera:Y,options:he,ref:R,onSelect:m=>{a.get(Y.name)?.dispose();const v=n.get(m);v!==void 0&&(fe(Y),Y=v,X(v,R.current))}}),u.jsx(ze,{camera:se,options:he,ref:G,onSelect:m=>{a.get(se.name)?.dispose();const v=n.get(m);v!==void 0&&(fe(se),se=v,X(v,G.current))}})]}),H==="Quad"&&u.jsxs(u.Fragment,{children:[u.jsx(ze,{camera:Y,options:he,ref:R,onSelect:m=>{a.get(Y.name)?.dispose();const v=n.get(m);v!==void 0&&(fe(Y),Y=v,X(v,R.current))}}),u.jsx(ze,{camera:se,options:he,ref:G,onSelect:m=>{a.get(se.name)?.dispose();const v=n.get(m);v!==void 0&&(fe(se),se=v,X(v,G.current))}}),u.jsx(ze,{camera:ke,options:he,ref:Ce,onSelect:m=>{a.get(ke.name)?.dispose();const v=n.get(m);v!==void 0&&(fe(ke),ke=v,X(v,Ce.current))}}),u.jsx(ze,{camera:je,options:he,ref:ce,onSelect:m=>{a.get(je.name)?.dispose();const v=n.get(m);v!==void 0&&(fe(je),je=v,X(v,ce.current))}})]})]}),u.jsxs("div",{className:"settings",children:[u.jsx(vt,{index:L.indexOf(H),options:L,onSelect:m=>{m!==H&&(Te(),ee(m))},open:De,onToggle:m=>{xe(m),pe&&ne(!1),de&&me(!1)}}),u.jsx(vt,{index:N.indexOf(ft),options:N,onSelect:m=>{if(m!==ft)switch(ft=m,ft){case"Depth":i.overrideMaterial=h;break;case"Normals":i.overrideMaterial=g;break;default:case"Renderer":i.overrideMaterial=null;break;case"Wireframe":i.overrideMaterial=S;break;case"UVs":i.overrideMaterial=y;break}},open:pe,onToggle:m=>{De&&xe(!1),ne(m),de&&me(!1)}}),u.jsx(vt,{index:0,options:["Orbit Mode","Selection Mode"],onSelect:m=>{pt=m==="Selection Mode",d.visible=pt},open:de,onToggle:m=>{De&&xe(!1),pe&&ne(!1),me(m)}})]})]})]})}function oa(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=bt;exports.Application=bn;exports.BaseRemote=it;exports.ChildObject=jt;exports.ContainerObject=nn;exports.Draggable=Qt;exports.DraggableItem=Jt;exports.Dropdown=en;exports.DropdownItem=tn;exports.Editor=oa;exports.Inspector=rn;exports.MultiView=ra;exports.NavButton=kt;exports.RemoteComponents=yn;exports.RemoteController=Pn;exports.RemoteTheatre=gt;exports.RemoteThree=On;exports.RemoteTweakpane=Mn;exports.SceneInspector=Zn;exports.SidePanel=Xn;exports.ToolEvents=D;exports.capitalize=qe;exports.clamp=mn;exports.colorToHex=qt;exports.debugDispatcher=j;exports.defaultTheatreCallback=pn;exports.dispose=Pt;exports.disposeMaterial=Xt;exports.disposeTexture=gn;exports.distance=vn;exports.hierarchyUUID=At;exports.isColor=$t;exports.noop=_t;exports.randomID=Wt;exports.resetThreeObjects=Kt;exports.round=mt;exports.theatreEditorApp=En;
|
package/dist/hermes.es.js
CHANGED
@@ -582,6 +582,7 @@ function Dt(t) {
|
|
582
582
|
}
|
583
583
|
class fi extends Ct {
|
584
584
|
scene = void 0;
|
585
|
+
renderer = void 0;
|
585
586
|
getObject(n) {
|
586
587
|
this.app.debugEnabled && this.app.send({
|
587
588
|
event: "getObject",
|
@@ -3549,7 +3550,7 @@ function bi(t) {
|
|
3549
3550
|
canvas: q.current,
|
3550
3551
|
stencil: !1
|
3551
3552
|
});
|
3552
|
-
p.autoClear = !1, p.shadowMap.enabled = !0, p.setPixelRatio(devicePixelRatio), p.setClearColor(0), Ae(p);
|
3553
|
+
p.autoClear = !1, p.shadowMap.enabled = !0, p.setPixelRatio(devicePixelRatio), p.setClearColor(0), t.three.renderer = p, Ae(p);
|
3553
3554
|
}, []), _e(() => {
|
3554
3555
|
const p = (R) => {
|
3555
3556
|
xn(Ie), i.remove(Ie);
|
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.
|
10
|
+
"version": "0.0.46",
|
11
11
|
"homepage": "https://github.com/tomorrowevening/hermes#readme",
|
12
12
|
"bugs": {
|
13
13
|
"url": "https://github.com/tomorrowevening/hermes/issues"
|
@@ -1,9 +1,10 @@
|
|
1
|
-
import { Camera, Scene } from 'three';
|
1
|
+
import { Camera, Scene, WebGLRenderer } from 'three';
|
2
2
|
import BaseRemote from './BaseRemote';
|
3
3
|
import Application from '../Application';
|
4
4
|
import { BroadcastData } from '../types';
|
5
5
|
export default class RemoteThree extends BaseRemote {
|
6
6
|
scene?: Scene;
|
7
|
+
renderer?: WebGLRenderer;
|
7
8
|
getObject(uuid: string): void;
|
8
9
|
setObject(value: any): void;
|
9
10
|
requestMethod(uuid: string, key: string, value?: any, subitem?: string): void;
|