@directivegames/genesys.js 3.1.29 → 3.1.30
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/genesys.min.mjs
CHANGED
|
@@ -5086,7 +5086,7 @@ void main() {
|
|
|
5086
5086
|
Session ID: ${this.gameSession?.getDescription().sessionId}<br/>
|
|
5087
5087
|
Client ID: ${this.clientId}<br/>
|
|
5088
5088
|
</div>
|
|
5089
|
-
`;this.statsUIElement.setHTML(e)}doBeginPlay(){this.world.consoleManager.addCommandHandler(this)}doEndPlay(){this.gameSessionManager=null,this.gameSession=null,this.localNetObjects.clear(),this.remoteNetObjects.clear(),this.localRelevantNetObjectsInSession.clear(),this.addToSessionQueue.clear(),this.deleteFromSessionQueue.clear(),this.pendingNetObjects.clear(),this.sessionClients={},this.lastReplicatedStates.clear(),this.remoteObjectCreationRequests.clear(),this.destroyStatsUI(),this.world.consoleManager.removeCommandHandler(this),this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null),this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=null)}isClientInactive(e){let g=this.sessionClients[e];return g?Date.now()-g.lastHeartBeatTime>30*1e3:!1}};oA([Xt("dumpnetobjects","Dump all net objects to console")],Co.prototype,"dumpNetObjects",1),oA([Xt("setmemorysession","Set memory session manager")],Co.prototype,"setMemorySessionManager",1),oA([Xt("setwebsocketsession","Set WebSocket session manager (usage: setwebsocketsession [url])")],Co.prototype,"setWebSocketSessionManager",1),oA([Xt("joinorcreatewebsocket","Join or create WebSocket session (usage: joinorcreatewebsocket [url])")],Co.prototype,"joinOrCreateWebSocketSession",1),oA([Xt("createsession","Create a new session (usage: createsession [name])")],Co.prototype,"createSessionCommand",1),oA([Xt("joinsession","Join a session by ID (usage: joinsession <sessionId>)")],Co.prototype,"joinSessionCommand",1),oA([Xt("joinfirstsession","Join the first available session")],Co.prototype,"joinFirstSessionCommand",1),oA([Xt("listsessions","List all available sessions")],Co.prototype,"listSessionsCommand",1),oA([Xt("togglemovementprediction","Toggle movement prediction (usage: togglemovementprediction <true | false>)")],Co.prototype,"toggleMovementPrediction",1),oA([Xt("setmovementlerpalpha","Set movement prediction lerp alpha (usage: setmovementlerpalpha <value>)")],Co.prototype,"setMovementLerpAlpha",1),oA([Xt("stat","Toggle network statistics display (usage: stat net)")],Co.prototype,"stat",1);var Oo=Co;var oo=Symbol("IAsyncLoadable"),JC=class{constructor(){l(this,"_promise",null);l(this,"_runningTask",null)}runTask(A){let e=A;return this._runningTask=e,this._promise=(async()=>{await A(),this._runningTask===e&&(this._promise=null)})(),this._promise}isRunning(){return this._promise!==null}async waitUntilComplete(){this._promise&&await this._promise}};function G5(i){return i&&i[oo]===!0}var R5,k5,Kg=class extends(k5=Os,R5=KC,k5){constructor(e={}){super();this.options=e;l(this,R5,!0);l(this,"editorData",{});l(this,"uuid",aC());l(this,"name");l(this,"_rootComponent");l(this,"world",null);l(this,"lifeSpan",0);l(this,"remoteNetClientId",null);l(this,"remoteNetDeviceId",null);l(this,"netRelevant",!1);l(this,"movementPredictor",null);l(this,"prefabName",null);l(this,"prefabData",null);l(this,"prefabInheritanceChain",null);l(this,"ctorArgOptions");l(this,"$prefab",null);l(this,"transient",!1);l(this,"actorTags",[]);l(this,"hiddenInGame",!1);l(this,"editorOnly",!1);l(this,"onAddedToWorld",new oe);l(this,"onTickPrePhysics",new oe);l(this,"onTickPostPhysics",new oe);l(this,"onBeginPlay",new oe);l(this,"onEndPlay",new oe);l(this,"onPreEndPlay",new oe);l(this,"onClicked",new oe);l(this,"onCollideWith",new oe);l(this,"onOverlapWith",new oe);l(this,"onStopCollidingWith",new oe);l(this,"onStopOverlappingWith",new oe);this.ctorArgOptions=e,e={...Kg.DEFAULT_OPTIONS,...e},this.name=eB.generateName(this),this.actorTags=e.actorTags?[...e.actorTags]:[];let g=e.rootComponent;g&&!Hg(g.getActor()===null)&&(g=void 0),g?(this._rootComponent=g,e.position&&this.rootComponent.position.copy(e.position),e.rotation&&this.rootComponent.rotation.copy(e.rotation),e.scale&&this.rootComponent.scale.copy(e.scale)):this._rootComponent=new $A({position:e.position,rotation:e.rotation,scale:e.scale}),this.rootComponent.setActor(this);for(let C of e.sceneComponents??[])C instanceof $A?this.rootComponent.add(C):console.trace(`${C} is not a SceneComponent`);this.rootComponent.updateMatrixWorld(!0);let t=e.prefabName;t&&(this.prefabName=t)}static get DEFAULT_OPTIONS(){return{actorTags:[]}}getPrefabName(){return this.prefabName??this.$prefab?.$path??null}getPrefabData(){return this.prefabData}getPrefabInheritanceChain(){return this.prefabInheritanceChain}setPrefab(e,g,t){return this.prefabName=e,this.prefabData=g,this.prefabInheritanceChain=t??null,this}clearPrefab(){return this.prefabName=null,this.prefabData=null,this.prefabInheritanceChain=null,this}getActorTags(){return[...this.actorTags]}setActorTags(e){return this.actorTags=[...e],this}addActorTag(e){return this.actorTags.includes(e)||this.actorTags.push(e),this}removeActorTag(e){let g=this.actorTags.indexOf(e);return g!==-1&&this.actorTags.splice(g,1),this}hasActorTag(e){return this.actorTags.includes(e)}hasAnyActorTag(e){return e.some(g=>this.actorTags.includes(g))}hasAllActorTags(e){return e.every(g=>this.actorTags.includes(g))}setTransient(e){this.transient=e}isTransient(){return this.transient}static async spawnPrefabActor(e,g,t={},C){let o=t[e];return VE(o)?await PI.loadActor({ctor:{position:g?.position,rotation:g?.rotation,scale:g?.scale},prefabName:e},t,C):Ql(e,t,{ctorArgsOverrides:{position:g?.position,rotation:g?.rotation,scale:g?.scale}})}getDefaultOptions(){return this.constructor.DEFAULT_OPTIONS}export(e,g){let t={editorData:this.editorData,actorTags:this.actorTags?.length>0?[...this.actorTags]:void 0,hiddenInGame:this.hiddenInGame?!0:void 0,editorOnly:this.editorOnly?!0:void 0},C=Il(this.constructor);for(let s of Object.keys(C))s in this&&(t[s]=this[s]);let o={uuid:this.uuid,class:Mg.getClassNameChecked(this),properties:t};return o.ctor=e.exportObject({...this.getExportedConstructor(),rootComponent:this.rootComponent},g),o.prefabName=this.prefabName??void 0,this.prefabData?.parentPrefabName&&(o.parentPrefabName=this.prefabData.parentPrefabName),o}clicked(e){this.onClicked.invoke(this,e)}get rootComponent(){return this._rootComponent}setRootComponent(e,g){if(!Hg(!this.isPlayEnded()))return this;if(!Hg(e.getActor()===null))return this;g&&(e.position.copy(this.rootComponent.position),e.rotation.copy(this.rootComponent.rotation),e.scale.copy(this.rootComponent.scale));let t=this.rootComponent;return t.removeFromParent(),t.setActor(null),this._rootComponent=e,this.rootComponent.setActor(this),this.rootComponent.updateMatrixWorld(!0),this.isPlaying()&&this.rootComponent.beginPlay(),this.world&&this.world.scene.add(e),this}collapseRootComponent(){if(Hg(this.getPlayState()==="notStarted")&&Mg.getClassOrConstructorName(this.rootComponent)==="SceneComponent"&&this.rootComponent.children.length===1){let e=this.rootComponent.children[0];if(Hg(e instanceof $A))return e.removeFromParent(),this.setRootComponent(e,!0),!0}return!1}setWorld(e){Hg(!this.world||!e)&&(this.world=e,e&&this.onAddedToWorld.invoke(this,e))}getWorld(){return this.world}tickPrePhysics(e){if(this.lifeSpan>0&&(this.lifeSpan-=e,this.lifeSpan<=0)){this.destroy();return}if(this.movementPredictor){let g=this.movementPredictor.predictCurrentTransform();if(g){let t=CC.lerpTransform({position:this.rootComponent.position,rotation:this.rootComponent.quaternion,scale:this.rootComponent.scale},g,CC.LerpAlpha);this.setWorldTransform({position:t.position,rotation:new je().setFromQuaternion(t.rotation),scale:t.scale})}}this.rootComponent.tickPrePhysics(e),this.onTickPrePhysics.invoke(this,e)}tickPostPhysics(e){this.rootComponent.tickPostPhysics(e),this.onTickPostPhysics.invoke(this,e),this.movementPredictor&&this.movementPredictor.addLocalTransform({timestamp:CC.currentTime(),position:this.rootComponent.position.clone(),rotation:this.rootComponent.quaternion.clone(),scale:this.rootComponent.scale.clone()})}forwardDirection(){return new m(0,0,-1).applyQuaternion(this.rootComponent.quaternion).normalize()}rightDirection(){return new m(1,0,0).applyQuaternion(this.rootComponent.quaternion).normalize()}upDirection(){return new m(0,1,0).applyQuaternion(this.rootComponent.quaternion).normalize()}getPhysicsEngine(){return this.world?this.world.getPhysicsEngine():null}setHidden(e){return this.isHidden()!==e&&this.rootComponent.setHidden(e,!0),this}isHidden(){return this.rootComponent.isHidden()}replacePhysicsOptions(e,g=!1){return this.rootComponent.replacePhysicsOptions(e,g),this}overridePhysicsOptions(e,g=!1){return this.rootComponent.overridePhysicsOptions(e,g),this}setPhysicsEnabled(e,g=!1){return this.rootComponent.setPhysicsEnabled(e,g),this}isPhysicsEnabled(){return this.rootComponent instanceof wg&&this.rootComponent.isPhysicsEnabled()}generateDebugNode(){let e=[];return e.push(this.rootComponent.generateDebugNode()),{title:this.name,children:e,data:{uuid:this.uuid}}}getLifeSpan(){return this.lifeSpan}setLifeSpan(e){return this.lifeSpan=e,this}addComponent(e){return this.addComponents(e)}addComponents(...e){return e.forEach(g=>{this.rootComponent.add(g)}),this}getComponent(e=$A){return this.rootComponent.getComponent(e)}getComponents(e=$A){return this.rootComponent.getComponents(e)}getPathName(){return this.world?`${this.world.getPathName()}.${this.name}`:this.name}destroy(){this.world&&this.world.removeActors(this)}handleDeath(e){this.destroy()}asExportedObject(e=!1){return PI.exportObject(this,e)}asExportedPrefabData(){return PI.exportAsPrefab(this)}setWorldTransform(e){this.rootComponent.setWorldTransform(e)}setWorldPosition(e){this.setWorldTransform({position:e})}setWorldRotation(e){this.setWorldTransform({rotation:e})}setWorldScale(e){this.setWorldTransform({scale:e})}setWorldQuaternion(e){this.setWorldTransform({rotation:new je().setFromQuaternion(e)})}getWorldPosition(){return this.rootComponent.getWorldPosition()}getWorldRotation(){return this.rootComponent.getWorldRotation()}getWorldScale(){return this.rootComponent.getWorldScale()}getWorldQuaternion(){return this.rootComponent.getWorldQuaternion()}getWorldTransform(){return this.rootComponent.getWorldTransform()}setNetRelevant(e){this.netRelevant=e}isNetRelevant(){return this.netRelevant}getNetObjectId(){return`${Mg.getClassOrConstructorName(this)}'${this.uuid}'`}setRemoteNetClientId(e){this.remoteNetClientId=e}setRemoteNetDeviceId(e){this.remoteNetDeviceId=e}getNetDeviceId(){return this.remoteNetDeviceId??Oo.getDeviceId()}getNetClientId(){if(this.remoteNetClientId)return this.remoteNetClientId;let e=this.getWorld()?.netWorld;if(!e)throw new Error("Failed to get net world when getting net client id");return e.clientId}consumeLocalDynamicState(){return!1}getNetConstructionData(){return this.asExportedObject()}getNetDynamicState(e){let g=e||null,t=g?.position,C=g?.rotation,o=g?.scale,s=this.rootComponent.position.toArray(),n=this.rootComponent.rotation.toArray(),B=this.rootComponent.scale.toArray();return g&&Oo.isVectorNearlyEqual(t,s)&&Oo.isVectorNearlyEqual(C,n)&&Oo.isVectorNearlyEqual(o,B)?null:{position:s,rotation:n,scale:B,timestamp:CC.currentTime()}}setNetDynamicState(e){let{position:g,rotation:t,scale:C,timestamp:o}=e;this.movementPredictor??=new CC,this.movementPredictor.addRemoteTransform({timestamp:o,position:new m(g[0],g[1],g[2]),rotation:new qA().setFromEuler(new je(t[0],t[1],t[2])),scale:new m(C[0],C[1],C[2])})}setOverrideMaterial(e){return this.rootComponent.setOverrideMaterial(e,!0),this}getExportedConstructor(){let e=this.rootComponent.isTransient();return{...this.options,position:e?this.getWorldPosition():void 0,rotation:e?this.getWorldRotation():void 0,scale:e?this.getWorldScale():void 0,sceneComponents:void 0,__isDeserializing:void 0,prefabName:void 0}}doBeginPlay(){this.rootComponent.beginPlay(),this.onBeginPlay.invoke(this),this.getWorld()?.netWorld.addNetObject(this),this.isHiddenInGame()&&this.getWorld()?.setActorHiddenInGame(this,!0)}doPreEndPlay(){this.onPreEndPlay.invoke(this)}doEndPlay(){this.isHiddenInGame()&&this.getWorld()?.setActorHiddenInGame(this,!1),this.getWorld()?.netWorld.removeNetObject(this),this.rootComponent.endPlay(),this.onEndPlay.invoke(this),this.world=null}calcBoundingBox(){this.rootComponent.updateMatrixWorld(!0);let e=this.getComponents($A);for(let g of e)g.calcBoundingBox();return this.getBoundingBox()}getBoundingBox(){let e=new ug,g=this.getComponents($A);for(let t of g){let C=t.boundingBox;C&&e.union(C)}return e}describe(e){if(e?.omitDescription){let o={name:this.name,uuid:this.uuid};return this.editorData?.displayName&&(o.displayName=this.editorData.displayName),o}let g={name:this.name,uuid:this.uuid,className:Mg.getClassName(this)??this.constructor.name,position:Ps.dumpPosition(this.getWorldPosition()),rotation:Ps.dumpRotation(this.getWorldRotation()),scale:Ps.dumpScale(this.getWorldScale())};this.editorData?.displayName&&(g.displayName=this.editorData.displayName),this.editorData?.description&&(g.description=this.editorData.description),this.calcBoundingBox(),this.getBoundingBox().isEmpty()||(g.boundingBox=Ps.dumpBoundingBox(this.getBoundingBox()));let C=o=>{let s=o.describe({recalculateBounds:!1,includeDetails:e?.includeComponentsDetails});if(o.children&&o.children.length>0){let n=o.children.map(C).filter(B=>B&&Object.keys(B).length>0);n.length>0&&(s.children=n)}return s};return g.rootComponent=C(this.rootComponent),g}isHiddenInGame(){return this.hiddenInGame}setHiddenInGame(e){this.hiddenInGame=e,this.world&&this.world.setActorHiddenInGame(this,e)}isEditorOnly(){return this.editorOnly}setEditorOnly(e){this.editorOnly=e}getCamera(){return this.getComponent(lo)??null}getPlayerController(){return null}isPlayerControlled(){return!!this.getPlayerController()}async waitForComponentsToLoad(){let t=this.getComponents($A).filter(C=>G5(C)).map(C=>C.waitForLoad());await Promise.all(t)}serialize(e){e.dumpValue("rootComponent",this.rootComponent,"_rootComponent"),e.dumpProperties(this),this.isEditorOnly()&&e.markEditorOnly()}deserialize(e){let g=e.loadValue("rootComponent",this.rootComponent);g&&g!==this.rootComponent&&this.setRootComponent(g,!1),e.loadProperties(this)}onEditorPropertyChanged(e,g,t){e==="actorTags"&&this.setActorTags(g)}onEditorSelectedChanged(e,g){this.getComponents($A).forEach(t=>t.onEditorSelectedChanged(e,g))}onEditorAddToWorld(){this.getComponents($A).forEach(e=>e.onEditorAddToWorld())}onEditorRemoveFromWorld(){this.getComponents($A).forEach(e=>e.onEditorRemoveFromWorld())}getConfigurationWarnings(){return[]}getEditorClassIcon(){return"Icon_Actor"}};l(Kg,"EDITOR_CLASS_META",{actorTags:{isTagProperty:!0}}),oA([bC({editorOnly:!0,hidden:!0})],Kg.prototype,"editorData",2),oA([bC({transientOnPrefab:!0,readonly:!0})],Kg.prototype,"uuid",2),oA([bC({ctorArg:"ctorArgOnly"})],Kg.prototype,"ctorArgOptions",2),oA([bC({default:!1,category:"Advanced"})],Kg.prototype,"hiddenInGame",2),oA([bC({default:!1,category:"Advanced"})],Kg.prototype,"editorOnly",2),Kg=oA([pA("Actor")],Kg);var _5,N5,Tt=class extends(N5=wg,_5=oo,N5){constructor(e={}){super(e);l(this,_5,!0);l(this,"onMeshLoaded",new oe);l(this,"model",null);l(this,"gltf",null);l(this,"_asyncTaskWorker",new JC);this.options.modelUrl&&this.loadModel(og.fromString(this.options.modelUrl))}static get DEFAULT_OPTIONS(){return{...wg.DEFAULT_OPTIONS,modelUrl:void 0,material:void 0,materials:void 0,excludeFromNavigation:!1,useDynamicMaterials:!1}}async waitForLoad(){await this._asyncTaskWorker.waitUntilComplete()}isLoading(){return this._asyncTaskWorker.isRunning()}async loadModel(e){await this._asyncTaskWorker.runTask(async()=>{this.options.modelUrl=e.initialPath;let g=await Fg.loadModel(e);g&&(this.model?.removeFromParent(),this.gltf=g,this.model=e_(g.scene),Lc&&this.deepCloneGeometries(this.model),iC()||(this.options.material?await this.setMaterial(this.options.material):this.options.materials&&await this.setMaterials(this.options.materials)),this.add(this.model),this.updateMatrixWorld(!0),this.gltf=g,this.refreshPhysics(),this.model.traverse(t=>{t instanceof uA&&this.bindObject3DProperties(t,["castShadow","receiveShadow"])}),this.options.useDynamicMaterials&&this.getActor()?.isPlaying()&&this.cloneMaterials(),this.onMeshLoaded.invoke(this,this.model))})}deepCloneGeometries(e){e.traverse(g=>{g instanceof uA&&g.geometry&&(g.geometry=g.geometry.clone())})}cloneMaterials(){this.model&&this.model.traverse(e=>{e instanceof uA&&e.material&&(Array.isArray(e.material)?e.material=e.material.map(g=>g.clone()):e.material=e.material.clone())})}refreshPhysics(){if(this.getActor()?.isPlaying()&&this.isPhysicsEnabled()){let g=this.getPhysicsEngine();g&&(g.removeComponent(this),this.motionType=g.addComponent(this)??null)}}async setMaterial(e){if(typeof e=="string"&&(this.options.material=e,!e&&!e&&typeof this.options.modelUrl=="string")){await this.loadModel(og.fromString(this.options.modelUrl));return}let g=await Fg.loadGenericMaterial(e);if(g){let t=this.getAllMeshes();for(let C of t)C.material=g}}async setMaterials(e){this.options.materials=e;let g=this.getAllMeshes();(await Promise.all(e.map(C=>Fg.loadGenericMaterial(C)))).forEach((C,o)=>{C&&o<g.length&&(g[o].material=C)})}getMaterialBySlot(e){let g=this.getAllMeshes();return e<0||e>=g.length?null:g[e].material}async setMaterialBySlot(e,g){let t=this.getAllMeshes();if(e<0||e>=t.length){console.warn(`GLTFMeshComponent: Invalid slot index ${e}. Valid range is 0-${t.length-1}`);return}let C=await Fg.loadGenericMaterial(g);C&&(t[e].material=C)}getModel(){return this.model}getModelTemplate(){return this.gltf?.scene??null}getGLTF(){return this.gltf}getAnimations(){return this.gltf?.animations??[]}getSkinnedMeshData(){return this.model?this.getAllSkinnedMeshes()[0]??null:null}getAllSkinnedMeshes(){if(!this.model)return[];let e=[];for(let g of this.getAllMeshes())g instanceof VC&&g.skeleton&&g.skeleton.bones&&g.skeleton.bones.length>0&&e.push({skinnedMesh:g,skeleton:g.skeleton});return e}getMesh(){return this.getAllMeshes()[0]??null}getAllMeshes(){let e=[];return this.model?.traverse(g=>{g instanceof uA&&e.push(g)}),e}isModelLoaded(){return!!this.model}onEditorPropertyChanged(e,g,t){super.onEditorPropertyChanged(e,g,t),e==="modelUrl"?this.loadModel(og.fromString(g)):e==="material"?this.setMaterial(g):e.startsWith("materials")&&!this.options.material&&this.options.materials&&this.setMaterials(this.options.materials)}calcBoundingBox(){console.log("Calculating bounding box for GLTFMeshComponent",this.getActor()?.editorData?.displayName),this._boundingBox=Tt.calcBoundingBoxFromGLTFModel(this.getModel(),this.getActor()?.editorData?.displayName)}static calcBoundingBoxFromGLTF(e){return!e||!e.scene?(console.warn("GLTFMeshComponent: No GLTF scene available to calculate bounding box. Has the model finished loading?"),new ug):Tt.calcBoundingBoxFromGLTFModel(e.scene)}static calcBoundingBoxFromGLTFModel(e,g){if(!e)return console.warn("GLTFMeshComponent: No GLTF scene available to calculate bounding box. Has the model finished loading?",g),new ug;let t=new ug;return e.traverse(C=>{if(C instanceof uA){C.updateMatrixWorld(!0),C.geometry.computeBoundingBox();let o=new ug;o.copy(C.geometry.boundingBox),o.applyMatrix4(C.matrixWorld),t.union(o)}}),t}describe(e){let g=super.describe(e);return e?.includeDetails&&(g.modelUrl=this.options.modelUrl,g.material=this.options.material,g.materials=this.options.materials,g.useDynamicMaterials=this.options.useDynamicMaterials),g}getEditorClassIcon(){return"Icon_GLTFMesh"}};l(Tt,"EDITOR_CLASS_META",{...wg.EDITOR_CLASS_META,modelUrl:{type:["model"]},material:{type:["material"]},materials:{array:{child:{type:["material"]}}}}),Tt=oA([pA("GLTFMeshComponent")],Tt);var nB=class extends Kg{static get DEFAULT_OPTIONS(){return{...Kg.DEFAULT_OPTIONS,modelUrl:void 0,material:void 0,physicsOptions:void 0}}constructor(A){let e={...A,rootComponent:void 0},g=A.rootComponent;g&&g instanceof $A&&(e.position=g.position.clone(),e.rotation=g.rotation.clone(),e.scale=g.scale.clone(),g instanceof Tt&&(e.modelUrl=g.options.modelUrl,e.material=g.options.material,e.physicsOptions=g.options.physicsOptions)),super(e);let t=new Tt({modelUrl:e.modelUrl,material:e.material,physicsOptions:e.physicsOptions});this.setRootComponent(t,!0)}setRootComponent(A,e){return super.setRootComponent(A,e),A instanceof Tt||console.error("GLTFMeshActor can only have GLTFMeshComponent as root"),this}getMeshComponent(){return this.getComponent(Tt)}async waitForLoad(){let A=this.getMeshComponent();A&&await A.waitForLoad()}getEditorClassIcon(){return"Icon_GLTFMesh"}};l(nB,"EDITOR_CLASS_META",{...Kg.EDITOR_CLASS_META,modelUrl:{type:["model"]},material:{type:["material"]}}),nB=oA([pA("GLTFMeshActor")],nB);var yoA=Object.defineProperty,foA=(i,A,e)=>A in i?yoA(i,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[A]=e,LC=(i,A,e)=>foA(i,typeof A!="symbol"?A+"":A,e),U5=i=>{let A,e=new Set,g=(s,n)=>{let B=typeof s=="function"?s(A):s;if(!Object.is(B,A)){let a=A;A=n??(typeof B!="object"||B===null)?B:Object.assign({},A,B),e.forEach(E=>E(A,a))}},t=()=>A,C={setState:g,getState:t,getInitialState:()=>o,subscribe:s=>(e.add(s),()=>e.delete(s))},o=A=i(g,t,C);return C},woA=(i=>i?U5(i):U5),$p=woA((i,A)=>({emitters:{},shouldEmit:!0,registerEmitter:(e,g)=>{if(A().emitters[e]){console.warn(`Emitter ${e} already exists`);return}i(t=>(t.emitters[e]=g,t))},unregisterEmitter:e=>{i(g=>(delete g.emitters[e],g))},emit:(e,g,t)=>{let C=A().emitters[e];if(!C){console.warn(`Emitter ${e} not found`);return}C(g,t)}})),zE=new m,XE=new qA,F5=new je,$E=new je,b5=new m,eQ=class extends de{constructor(A,e={},g,t=!1,C=!0){super(),LC(this,"settings"),LC(this,"emitted",0),LC(this,"elapsedTime",0),LC(this,"currentTime",0),LC(this,"shouldEmit"),LC(this,"emitterName"),LC(this,"localDirection"),LC(this,"store"),this.emitterName=A,this.localDirection=t,this.shouldEmit=C,this.store=g||$p.getState(),this.settings={duration:e.duration??1,nbParticles:e.nbParticles??1e3,spawnMode:e.spawnMode??"time",loop:e.loop??!1,delay:e.delay??0,colorStart:e.colorStart??["white","skyblue"],colorEnd:e.colorEnd??[],particlesLifetime:e.particlesLifetime??[.1,1],speed:e.speed??[5,20],size:e.size??[.1,1],startPositionMin:e.startPositionMin??[-1,-1,-1],startPositionMax:e.startPositionMax??[1,1,1],startRotationMin:e.startRotationMin??[0,0,0],startRotationMax:e.startRotationMax??[0,0,0],rotationSpeedMin:e.rotationSpeedMin??[0,0,0],rotationSpeedMax:e.rotationSpeedMax??[0,0,0],directionMin:e.directionMin??[0,0,0],directionMax:e.directionMax??[0,0,0]}}randFloat(A,e){return Math.random()*(e-A)+A}randInt(A,e){return Math.floor(Math.random()*(e-A+1))+A}stopEmitting(){this.shouldEmit=!1}startEmitting(A=!1){A&&(this.emitted=0,this.elapsedTime=0),this.shouldEmit=!0}emitAtPos(A,e=!1){if(this.settings.spawnMode!=="burst"){console.error("This function is meant to be used with burst spawn mode only.");return}let g=this.settings.nbParticles-this.emitted;e&&(this.emitted=0,this.elapsedTime=0),A&&this.position.copy(A),this.updateWorldMatrix(!0,!0),this.matrixWorld.decompose(zE,XE,b5),F5.setFromQuaternion(XE),$E.setFromQuaternion(XE),this.store.emit(this.emitterName,g,()=>{var t;let C=this.randFloat(this.settings.size[0],this.settings.size[1]),o=this.settings.colorStart[this.randInt(0,this.settings.colorStart.length-1)],s=new m(this.randFloat(this.settings.directionMin[0],this.settings.directionMax[0]),this.randFloat(this.settings.directionMin[1],this.settings.directionMax[1]),this.randFloat(this.settings.directionMin[2],this.settings.directionMax[2]));return this.localDirection&&s.applyQuaternion(XE),{position:[zE.x+this.randFloat(this.settings.startPositionMin[0],this.settings.startPositionMax[0]),zE.y+this.randFloat(this.settings.startPositionMin[1],this.settings.startPositionMax[1]),zE.z+this.randFloat(this.settings.startPositionMin[2],this.settings.startPositionMax[2])],direction:[s.x,s.y,s.z],scale:[C,C,C],rotation:[$E.x+this.randFloat(this.settings.startRotationMin[0],this.settings.startRotationMax[0]),$E.y+this.randFloat(this.settings.startRotationMin[1],this.settings.startRotationMax[1]),$E.z+this.randFloat(this.settings.startRotationMin[2],this.settings.startRotationMax[2])],rotationSpeed:[this.randFloat(this.settings.rotationSpeedMin[0],this.settings.rotationSpeedMax[0]),this.randFloat(this.settings.rotationSpeedMin[1],this.settings.rotationSpeedMax[1]),this.randFloat(this.settings.rotationSpeedMin[2],this.settings.rotationSpeedMax[2])],lifetime:[this.currentTime,this.randFloat(this.settings.particlesLifetime[0],this.settings.particlesLifetime[1])],colorStart:o,colorEnd:(t=this.settings.colorEnd)!=null&&t.length?this.settings.colorEnd[this.randInt(0,this.settings.colorEnd.length-1)]:o,speed:[this.randFloat(this.settings.speed[0],this.settings.speed[1])]}})}update(A,e){if(this.currentTime=A,this.emitted<this.settings.nbParticles||this.settings.loop){if(!this.shouldEmit)return;let g=(this.settings.spawnMode==="burst"?this.settings.nbParticles:Math.max(0,Math.floor((this.elapsedTime-this.settings.delay)/this.settings.duration*this.settings.nbParticles)))-this.emitted;g>0&&this.elapsedTime>=this.settings.delay&&(this.updateWorldMatrix(!0,!0),this.matrixWorld.decompose(zE,XE,b5),F5.setFromQuaternion(XE),$E.setFromQuaternion(XE),this.store.emit(this.emitterName,g,()=>{var t;let C=this.randFloat(this.settings.size[0],this.settings.size[1]),o=this.settings.colorStart[this.randInt(0,this.settings.colorStart.length-1)],s=new m(this.randFloat(this.settings.directionMin[0],this.settings.directionMax[0]),this.randFloat(this.settings.directionMin[1],this.settings.directionMax[1]),this.randFloat(this.settings.directionMin[2],this.settings.directionMax[2]));return this.localDirection&&s.applyQuaternion(XE),{position:[zE.x+this.randFloat(this.settings.startPositionMin[0],this.settings.startPositionMax[0]),zE.y+this.randFloat(this.settings.startPositionMin[1],this.settings.startPositionMax[1]),zE.z+this.randFloat(this.settings.startPositionMin[2],this.settings.startPositionMax[2])],direction:[s.x,s.y,s.z],scale:[C,C,C],rotation:[$E.x+this.randFloat(this.settings.startRotationMin[0],this.settings.startRotationMax[0]),$E.y+this.randFloat(this.settings.startRotationMin[1],this.settings.startRotationMax[1]),$E.z+this.randFloat(this.settings.startRotationMin[2],this.settings.startRotationMax[2])],rotationSpeed:[this.randFloat(this.settings.rotationSpeedMin[0],this.settings.rotationSpeedMax[0]),this.randFloat(this.settings.rotationSpeedMin[1],this.settings.rotationSpeedMax[1]),this.randFloat(this.settings.rotationSpeedMin[2],this.settings.rotationSpeedMax[2])],lifetime:[A,this.randFloat(this.settings.particlesLifetime[0],this.settings.particlesLifetime[1])],colorStart:o,colorEnd:(t=this.settings.colorEnd)!=null&&t.length?this.settings.colorEnd[this.randInt(0,this.settings.colorEnd.length-1)]:o,speed:[this.randFloat(this.settings.speed[0],this.settings.speed[1])]}}),this.emitted+=g)}this.elapsedTime+=e}updateSettings(A){Object.assign(this.settings,A)}restart(){this.emitted=0,this.elapsedTime=0}},SoA=`
|
|
5089
|
+
`;this.statsUIElement.setHTML(e)}doBeginPlay(){this.world.consoleManager.addCommandHandler(this)}doEndPlay(){this.gameSessionManager=null,this.gameSession=null,this.localNetObjects.clear(),this.remoteNetObjects.clear(),this.localRelevantNetObjectsInSession.clear(),this.addToSessionQueue.clear(),this.deleteFromSessionQueue.clear(),this.pendingNetObjects.clear(),this.sessionClients={},this.lastReplicatedStates.clear(),this.remoteObjectCreationRequests.clear(),this.destroyStatsUI(),this.world.consoleManager.removeCommandHandler(this),this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null),this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=null)}isClientInactive(e){let g=this.sessionClients[e];return g?Date.now()-g.lastHeartBeatTime>30*1e3:!1}};oA([Xt("dumpnetobjects","Dump all net objects to console")],Co.prototype,"dumpNetObjects",1),oA([Xt("setmemorysession","Set memory session manager")],Co.prototype,"setMemorySessionManager",1),oA([Xt("setwebsocketsession","Set WebSocket session manager (usage: setwebsocketsession [url])")],Co.prototype,"setWebSocketSessionManager",1),oA([Xt("joinorcreatewebsocket","Join or create WebSocket session (usage: joinorcreatewebsocket [url])")],Co.prototype,"joinOrCreateWebSocketSession",1),oA([Xt("createsession","Create a new session (usage: createsession [name])")],Co.prototype,"createSessionCommand",1),oA([Xt("joinsession","Join a session by ID (usage: joinsession <sessionId>)")],Co.prototype,"joinSessionCommand",1),oA([Xt("joinfirstsession","Join the first available session")],Co.prototype,"joinFirstSessionCommand",1),oA([Xt("listsessions","List all available sessions")],Co.prototype,"listSessionsCommand",1),oA([Xt("togglemovementprediction","Toggle movement prediction (usage: togglemovementprediction <true | false>)")],Co.prototype,"toggleMovementPrediction",1),oA([Xt("setmovementlerpalpha","Set movement prediction lerp alpha (usage: setmovementlerpalpha <value>)")],Co.prototype,"setMovementLerpAlpha",1),oA([Xt("stat","Toggle network statistics display (usage: stat net)")],Co.prototype,"stat",1);var Oo=Co;var oo=Symbol("IAsyncLoadable"),JC=class{constructor(){l(this,"_promise",null);l(this,"_runningTask",null)}runTask(A){let e=A;return this._runningTask=e,this._promise=(async()=>{await A(),this._runningTask===e&&(this._promise=null)})(),this._promise}isRunning(){return this._promise!==null}async waitUntilComplete(){this._promise&&await this._promise}};function G5(i){return i&&i[oo]===!0}var R5,k5,Kg=class extends(k5=Os,R5=KC,k5){constructor(e={}){super();this.options=e;l(this,R5,!0);l(this,"editorData",{});l(this,"uuid",aC());l(this,"name");l(this,"_rootComponent");l(this,"world",null);l(this,"lifeSpan",0);l(this,"remoteNetClientId",null);l(this,"remoteNetDeviceId",null);l(this,"netRelevant",!1);l(this,"movementPredictor",null);l(this,"prefabName",null);l(this,"prefabData",null);l(this,"prefabInheritanceChain",null);l(this,"ctorArgOptions");l(this,"$prefab",null);l(this,"transient",!1);l(this,"actorTags",[]);l(this,"hiddenInGame",!1);l(this,"editorOnly",!1);l(this,"onAddedToWorld",new oe);l(this,"onTickPrePhysics",new oe);l(this,"onTickPostPhysics",new oe);l(this,"onBeginPlay",new oe);l(this,"onEndPlay",new oe);l(this,"onPreEndPlay",new oe);l(this,"onClicked",new oe);l(this,"onCollideWith",new oe);l(this,"onOverlapWith",new oe);l(this,"onStopCollidingWith",new oe);l(this,"onStopOverlappingWith",new oe);this.ctorArgOptions=e,e={...Kg.DEFAULT_OPTIONS,...e},this.name=eB.generateName(this),this.actorTags=e.actorTags?[...e.actorTags]:[];let g=e.rootComponent;g&&!Hg(g.getActor()===null)&&(g=void 0),g?(this._rootComponent=g,e.position&&this.rootComponent.position.copy(e.position),e.rotation&&this.rootComponent.rotation.copy(e.rotation),e.scale&&this.rootComponent.scale.copy(e.scale)):this._rootComponent=new $A({position:e.position,rotation:e.rotation,scale:e.scale}),this.rootComponent.setActor(this);for(let C of e.sceneComponents??[])C instanceof $A?this.rootComponent.add(C):console.trace(`${C} is not a SceneComponent`);this.rootComponent.updateMatrixWorld(!0);let t=e.prefabName;t&&(this.prefabName=t),this.ctorArgOptions={...this.ctorArgOptions},delete this.ctorArgOptions.position,delete this.ctorArgOptions.rotation,delete this.ctorArgOptions.scale}static get DEFAULT_OPTIONS(){return{actorTags:[]}}getPrefabName(){return this.prefabName??this.$prefab?.$path??null}getPrefabData(){return this.prefabData}getPrefabInheritanceChain(){return this.prefabInheritanceChain}setPrefab(e,g,t){return this.prefabName=e,this.prefabData=g,this.prefabInheritanceChain=t??null,this}clearPrefab(){return this.prefabName=null,this.prefabData=null,this.prefabInheritanceChain=null,this}getActorTags(){return[...this.actorTags]}setActorTags(e){return this.actorTags=[...e],this}addActorTag(e){return this.actorTags.includes(e)||this.actorTags.push(e),this}removeActorTag(e){let g=this.actorTags.indexOf(e);return g!==-1&&this.actorTags.splice(g,1),this}hasActorTag(e){return this.actorTags.includes(e)}hasAnyActorTag(e){return e.some(g=>this.actorTags.includes(g))}hasAllActorTags(e){return e.every(g=>this.actorTags.includes(g))}setTransient(e){this.transient=e}isTransient(){return this.transient}static async spawnPrefabActor(e,g,t={},C){let o=t[e];return VE(o)?await PI.loadActor({ctor:{position:g?.position,rotation:g?.rotation,scale:g?.scale},prefabName:e},t,C):Ql(e,t,{ctorArgsOverrides:{position:g?.position,rotation:g?.rotation,scale:g?.scale}})}getDefaultOptions(){return this.constructor.DEFAULT_OPTIONS}export(e,g){let t={editorData:this.editorData,actorTags:this.actorTags?.length>0?[...this.actorTags]:void 0,hiddenInGame:this.hiddenInGame?!0:void 0,editorOnly:this.editorOnly?!0:void 0},C=Il(this.constructor);for(let s of Object.keys(C))s in this&&(t[s]=this[s]);let o={uuid:this.uuid,class:Mg.getClassNameChecked(this),properties:t};return o.ctor=e.exportObject({...this.getExportedConstructor(),rootComponent:this.rootComponent},g),o.prefabName=this.prefabName??void 0,this.prefabData?.parentPrefabName&&(o.parentPrefabName=this.prefabData.parentPrefabName),o}clicked(e){this.onClicked.invoke(this,e)}get rootComponent(){return this._rootComponent}setRootComponent(e,g){if(!Hg(!this.isPlayEnded()))return this;if(!Hg(e.getActor()===null))return this;g&&(e.position.copy(this.rootComponent.position),e.rotation.copy(this.rootComponent.rotation),e.scale.copy(this.rootComponent.scale));let t=this.rootComponent;return t.removeFromParent(),t.setActor(null),this._rootComponent=e,this.rootComponent.setActor(this),this.rootComponent.updateMatrixWorld(!0),this.isPlaying()&&this.rootComponent.beginPlay(),this.world&&this.world.scene.add(e),this}collapseRootComponent(){if(Hg(this.getPlayState()==="notStarted")&&Mg.getClassOrConstructorName(this.rootComponent)==="SceneComponent"&&this.rootComponent.children.length===1){let e=this.rootComponent.children[0];if(Hg(e instanceof $A))return e.removeFromParent(),this.setRootComponent(e,!0),!0}return!1}setWorld(e){Hg(!this.world||!e)&&(this.world=e,e&&this.onAddedToWorld.invoke(this,e))}getWorld(){return this.world}tickPrePhysics(e){if(this.lifeSpan>0&&(this.lifeSpan-=e,this.lifeSpan<=0)){this.destroy();return}if(this.movementPredictor){let g=this.movementPredictor.predictCurrentTransform();if(g){let t=CC.lerpTransform({position:this.rootComponent.position,rotation:this.rootComponent.quaternion,scale:this.rootComponent.scale},g,CC.LerpAlpha);this.setWorldTransform({position:t.position,rotation:new je().setFromQuaternion(t.rotation),scale:t.scale})}}this.rootComponent.tickPrePhysics(e),this.onTickPrePhysics.invoke(this,e)}tickPostPhysics(e){this.rootComponent.tickPostPhysics(e),this.onTickPostPhysics.invoke(this,e),this.movementPredictor&&this.movementPredictor.addLocalTransform({timestamp:CC.currentTime(),position:this.rootComponent.position.clone(),rotation:this.rootComponent.quaternion.clone(),scale:this.rootComponent.scale.clone()})}forwardDirection(){return new m(0,0,-1).applyQuaternion(this.rootComponent.quaternion).normalize()}rightDirection(){return new m(1,0,0).applyQuaternion(this.rootComponent.quaternion).normalize()}upDirection(){return new m(0,1,0).applyQuaternion(this.rootComponent.quaternion).normalize()}getPhysicsEngine(){return this.world?this.world.getPhysicsEngine():null}setHidden(e){return this.isHidden()!==e&&this.rootComponent.setHidden(e,!0),this}isHidden(){return this.rootComponent.isHidden()}replacePhysicsOptions(e,g=!1){return this.rootComponent.replacePhysicsOptions(e,g),this}overridePhysicsOptions(e,g=!1){return this.rootComponent.overridePhysicsOptions(e,g),this}setPhysicsEnabled(e,g=!1){return this.rootComponent.setPhysicsEnabled(e,g),this}isPhysicsEnabled(){return this.rootComponent instanceof wg&&this.rootComponent.isPhysicsEnabled()}generateDebugNode(){let e=[];return e.push(this.rootComponent.generateDebugNode()),{title:this.name,children:e,data:{uuid:this.uuid}}}getLifeSpan(){return this.lifeSpan}setLifeSpan(e){return this.lifeSpan=e,this}addComponent(e){return this.addComponents(e)}addComponents(...e){return e.forEach(g=>{this.rootComponent.add(g)}),this}getComponent(e=$A){return this.rootComponent.getComponent(e)}getComponents(e=$A){return this.rootComponent.getComponents(e)}getPathName(){return this.world?`${this.world.getPathName()}.${this.name}`:this.name}destroy(){this.world&&this.world.removeActors(this)}handleDeath(e){this.destroy()}asExportedObject(e=!1){return PI.exportObject(this,e)}asExportedPrefabData(){return PI.exportAsPrefab(this)}setWorldTransform(e){this.rootComponent.setWorldTransform(e)}setWorldPosition(e){this.setWorldTransform({position:e})}setWorldRotation(e){this.setWorldTransform({rotation:e})}setWorldScale(e){this.setWorldTransform({scale:e})}setWorldQuaternion(e){this.setWorldTransform({rotation:new je().setFromQuaternion(e)})}getWorldPosition(){return this.rootComponent.getWorldPosition()}getWorldRotation(){return this.rootComponent.getWorldRotation()}getWorldScale(){return this.rootComponent.getWorldScale()}getWorldQuaternion(){return this.rootComponent.getWorldQuaternion()}getWorldTransform(){return this.rootComponent.getWorldTransform()}setNetRelevant(e){this.netRelevant=e}isNetRelevant(){return this.netRelevant}getNetObjectId(){return`${Mg.getClassOrConstructorName(this)}'${this.uuid}'`}setRemoteNetClientId(e){this.remoteNetClientId=e}setRemoteNetDeviceId(e){this.remoteNetDeviceId=e}getNetDeviceId(){return this.remoteNetDeviceId??Oo.getDeviceId()}getNetClientId(){if(this.remoteNetClientId)return this.remoteNetClientId;let e=this.getWorld()?.netWorld;if(!e)throw new Error("Failed to get net world when getting net client id");return e.clientId}consumeLocalDynamicState(){return!1}getNetConstructionData(){return this.asExportedObject()}getNetDynamicState(e){let g=e||null,t=g?.position,C=g?.rotation,o=g?.scale,s=this.rootComponent.position.toArray(),n=this.rootComponent.rotation.toArray(),B=this.rootComponent.scale.toArray();return g&&Oo.isVectorNearlyEqual(t,s)&&Oo.isVectorNearlyEqual(C,n)&&Oo.isVectorNearlyEqual(o,B)?null:{position:s,rotation:n,scale:B,timestamp:CC.currentTime()}}setNetDynamicState(e){let{position:g,rotation:t,scale:C,timestamp:o}=e;this.movementPredictor??=new CC,this.movementPredictor.addRemoteTransform({timestamp:o,position:new m(g[0],g[1],g[2]),rotation:new qA().setFromEuler(new je(t[0],t[1],t[2])),scale:new m(C[0],C[1],C[2])})}setOverrideMaterial(e){return this.rootComponent.setOverrideMaterial(e,!0),this}getExportedConstructor(){let e=this.rootComponent.isTransient();return{...this.options,position:e?this.getWorldPosition():void 0,rotation:e?this.getWorldRotation():void 0,scale:e?this.getWorldScale():void 0,sceneComponents:void 0,__isDeserializing:void 0,prefabName:void 0}}doBeginPlay(){this.rootComponent.beginPlay(),this.onBeginPlay.invoke(this),this.getWorld()?.netWorld.addNetObject(this),this.isHiddenInGame()&&this.getWorld()?.setActorHiddenInGame(this,!0)}doPreEndPlay(){this.onPreEndPlay.invoke(this)}doEndPlay(){this.isHiddenInGame()&&this.getWorld()?.setActorHiddenInGame(this,!1),this.getWorld()?.netWorld.removeNetObject(this),this.rootComponent.endPlay(),this.onEndPlay.invoke(this),this.world=null}calcBoundingBox(){this.rootComponent.updateMatrixWorld(!0);let e=this.getComponents($A);for(let g of e)g.calcBoundingBox();return this.getBoundingBox()}getBoundingBox(){let e=new ug,g=this.getComponents($A);for(let t of g){let C=t.boundingBox;C&&e.union(C)}return e}describe(e){if(e?.omitDescription){let o={name:this.name,uuid:this.uuid};return this.editorData?.displayName&&(o.displayName=this.editorData.displayName),o}let g={name:this.name,uuid:this.uuid,className:Mg.getClassName(this)??this.constructor.name,position:Ps.dumpPosition(this.getWorldPosition()),rotation:Ps.dumpRotation(this.getWorldRotation()),scale:Ps.dumpScale(this.getWorldScale())};this.editorData?.displayName&&(g.displayName=this.editorData.displayName),this.editorData?.description&&(g.description=this.editorData.description),this.calcBoundingBox(),this.getBoundingBox().isEmpty()||(g.boundingBox=Ps.dumpBoundingBox(this.getBoundingBox()));let C=o=>{let s=o.describe({recalculateBounds:!1,includeDetails:e?.includeComponentsDetails});if(o.children&&o.children.length>0){let n=o.children.map(C).filter(B=>B&&Object.keys(B).length>0);n.length>0&&(s.children=n)}return s};return g.rootComponent=C(this.rootComponent),g}isHiddenInGame(){return this.hiddenInGame}setHiddenInGame(e){this.hiddenInGame=e,this.world&&this.world.setActorHiddenInGame(this,e)}isEditorOnly(){return this.editorOnly}setEditorOnly(e){this.editorOnly=e}getCamera(){return this.getComponent(lo)??null}getPlayerController(){return null}isPlayerControlled(){return!!this.getPlayerController()}async waitForComponentsToLoad(){let t=this.getComponents($A).filter(C=>G5(C)).map(C=>C.waitForLoad());await Promise.all(t)}serialize(e){e.dumpValue("rootComponent",this.rootComponent,"_rootComponent"),e.dumpProperties(this),this.isEditorOnly()&&e.markEditorOnly()}deserialize(e){let g=e.loadValue("rootComponent",this.rootComponent);g&&g!==this.rootComponent&&this.setRootComponent(g,!1),e.loadProperties(this)}onEditorPropertyChanged(e,g,t){e==="actorTags"&&this.setActorTags(g)}onEditorSelectedChanged(e,g){this.getComponents($A).forEach(t=>t.onEditorSelectedChanged(e,g))}onEditorAddToWorld(){this.getComponents($A).forEach(e=>e.onEditorAddToWorld())}onEditorRemoveFromWorld(){this.getComponents($A).forEach(e=>e.onEditorRemoveFromWorld())}getConfigurationWarnings(){return[]}getEditorClassIcon(){return"Icon_Actor"}};l(Kg,"EDITOR_CLASS_META",{actorTags:{isTagProperty:!0}}),oA([bC({editorOnly:!0,hidden:!0})],Kg.prototype,"editorData",2),oA([bC({transientOnPrefab:!0,readonly:!0})],Kg.prototype,"uuid",2),oA([bC({ctorArg:"ctorArgOnly"})],Kg.prototype,"ctorArgOptions",2),oA([bC({default:!1,category:"Advanced"})],Kg.prototype,"hiddenInGame",2),oA([bC({default:!1,category:"Advanced"})],Kg.prototype,"editorOnly",2),Kg=oA([pA("Actor")],Kg);var _5,N5,Tt=class extends(N5=wg,_5=oo,N5){constructor(e={}){super(e);l(this,_5,!0);l(this,"onMeshLoaded",new oe);l(this,"model",null);l(this,"gltf",null);l(this,"_asyncTaskWorker",new JC);this.options.modelUrl&&this.loadModel(og.fromString(this.options.modelUrl))}static get DEFAULT_OPTIONS(){return{...wg.DEFAULT_OPTIONS,modelUrl:void 0,material:void 0,materials:void 0,excludeFromNavigation:!1,useDynamicMaterials:!1}}async waitForLoad(){await this._asyncTaskWorker.waitUntilComplete()}isLoading(){return this._asyncTaskWorker.isRunning()}async loadModel(e){await this._asyncTaskWorker.runTask(async()=>{this.options.modelUrl=e.initialPath;let g=await Fg.loadModel(e);g&&(this.model?.removeFromParent(),this.gltf=g,this.model=e_(g.scene),Lc&&this.deepCloneGeometries(this.model),iC()||(this.options.material?await this.setMaterial(this.options.material):this.options.materials&&await this.setMaterials(this.options.materials)),this.add(this.model),this.updateMatrixWorld(!0),this.gltf=g,this.refreshPhysics(),this.model.traverse(t=>{t instanceof uA&&this.bindObject3DProperties(t,["castShadow","receiveShadow"])}),this.options.useDynamicMaterials&&this.getActor()?.isPlaying()&&this.cloneMaterials(),this.onMeshLoaded.invoke(this,this.model))})}deepCloneGeometries(e){e.traverse(g=>{g instanceof uA&&g.geometry&&(g.geometry=g.geometry.clone())})}cloneMaterials(){this.model&&this.model.traverse(e=>{e instanceof uA&&e.material&&(Array.isArray(e.material)?e.material=e.material.map(g=>g.clone()):e.material=e.material.clone())})}refreshPhysics(){if(this.getActor()?.isPlaying()&&this.isPhysicsEnabled()){let g=this.getPhysicsEngine();g&&(g.removeComponent(this),this.motionType=g.addComponent(this)??null)}}async setMaterial(e){if(typeof e=="string"&&(this.options.material=e,!e&&!e&&typeof this.options.modelUrl=="string")){await this.loadModel(og.fromString(this.options.modelUrl));return}let g=await Fg.loadGenericMaterial(e);if(g){let t=this.getAllMeshes();for(let C of t)C.material=g}}async setMaterials(e){this.options.materials=e;let g=this.getAllMeshes();(await Promise.all(e.map(C=>Fg.loadGenericMaterial(C)))).forEach((C,o)=>{C&&o<g.length&&(g[o].material=C)})}getMaterialBySlot(e){let g=this.getAllMeshes();return e<0||e>=g.length?null:g[e].material}async setMaterialBySlot(e,g){let t=this.getAllMeshes();if(e<0||e>=t.length){console.warn(`GLTFMeshComponent: Invalid slot index ${e}. Valid range is 0-${t.length-1}`);return}let C=await Fg.loadGenericMaterial(g);C&&(t[e].material=C)}getModel(){return this.model}getModelTemplate(){return this.gltf?.scene??null}getGLTF(){return this.gltf}getAnimations(){return this.gltf?.animations??[]}getSkinnedMeshData(){return this.model?this.getAllSkinnedMeshes()[0]??null:null}getAllSkinnedMeshes(){if(!this.model)return[];let e=[];for(let g of this.getAllMeshes())g instanceof VC&&g.skeleton&&g.skeleton.bones&&g.skeleton.bones.length>0&&e.push({skinnedMesh:g,skeleton:g.skeleton});return e}getMesh(){return this.getAllMeshes()[0]??null}getAllMeshes(){let e=[];return this.model?.traverse(g=>{g instanceof uA&&e.push(g)}),e}isModelLoaded(){return!!this.model}onEditorPropertyChanged(e,g,t){super.onEditorPropertyChanged(e,g,t),e==="modelUrl"?this.loadModel(og.fromString(g)):e==="material"?this.setMaterial(g):e.startsWith("materials")&&!this.options.material&&this.options.materials&&this.setMaterials(this.options.materials)}calcBoundingBox(){console.log("Calculating bounding box for GLTFMeshComponent",this.getActor()?.editorData?.displayName),this._boundingBox=Tt.calcBoundingBoxFromGLTFModel(this.getModel(),this.getActor()?.editorData?.displayName)}static calcBoundingBoxFromGLTF(e){return!e||!e.scene?(console.warn("GLTFMeshComponent: No GLTF scene available to calculate bounding box. Has the model finished loading?"),new ug):Tt.calcBoundingBoxFromGLTFModel(e.scene)}static calcBoundingBoxFromGLTFModel(e,g){if(!e)return console.warn("GLTFMeshComponent: No GLTF scene available to calculate bounding box. Has the model finished loading?",g),new ug;let t=new ug;return e.traverse(C=>{if(C instanceof uA){C.updateMatrixWorld(!0),C.geometry.computeBoundingBox();let o=new ug;o.copy(C.geometry.boundingBox),o.applyMatrix4(C.matrixWorld),t.union(o)}}),t}describe(e){let g=super.describe(e);return e?.includeDetails&&(g.modelUrl=this.options.modelUrl,g.material=this.options.material,g.materials=this.options.materials,g.useDynamicMaterials=this.options.useDynamicMaterials),g}getEditorClassIcon(){return"Icon_GLTFMesh"}};l(Tt,"EDITOR_CLASS_META",{...wg.EDITOR_CLASS_META,modelUrl:{type:["model"]},material:{type:["material"]},materials:{array:{child:{type:["material"]}}}}),Tt=oA([pA("GLTFMeshComponent")],Tt);var nB=class extends Kg{static get DEFAULT_OPTIONS(){return{...Kg.DEFAULT_OPTIONS,modelUrl:void 0,material:void 0,physicsOptions:void 0}}constructor(A){let e={...A,rootComponent:void 0},g=A.rootComponent;g&&g instanceof $A&&(e.position=g.position.clone(),e.rotation=g.rotation.clone(),e.scale=g.scale.clone(),g instanceof Tt&&(e.modelUrl=g.options.modelUrl,e.material=g.options.material,e.physicsOptions=g.options.physicsOptions)),super(e);let t=new Tt({modelUrl:e.modelUrl,material:e.material,physicsOptions:e.physicsOptions});this.setRootComponent(t,!0)}setRootComponent(A,e){return super.setRootComponent(A,e),A instanceof Tt||console.error("GLTFMeshActor can only have GLTFMeshComponent as root"),this}getMeshComponent(){return this.getComponent(Tt)}async waitForLoad(){let A=this.getMeshComponent();A&&await A.waitForLoad()}getEditorClassIcon(){return"Icon_GLTFMesh"}};l(nB,"EDITOR_CLASS_META",{...Kg.EDITOR_CLASS_META,modelUrl:{type:["model"]},material:{type:["material"]}}),nB=oA([pA("GLTFMeshActor")],nB);var yoA=Object.defineProperty,foA=(i,A,e)=>A in i?yoA(i,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[A]=e,LC=(i,A,e)=>foA(i,typeof A!="symbol"?A+"":A,e),U5=i=>{let A,e=new Set,g=(s,n)=>{let B=typeof s=="function"?s(A):s;if(!Object.is(B,A)){let a=A;A=n??(typeof B!="object"||B===null)?B:Object.assign({},A,B),e.forEach(E=>E(A,a))}},t=()=>A,C={setState:g,getState:t,getInitialState:()=>o,subscribe:s=>(e.add(s),()=>e.delete(s))},o=A=i(g,t,C);return C},woA=(i=>i?U5(i):U5),$p=woA((i,A)=>({emitters:{},shouldEmit:!0,registerEmitter:(e,g)=>{if(A().emitters[e]){console.warn(`Emitter ${e} already exists`);return}i(t=>(t.emitters[e]=g,t))},unregisterEmitter:e=>{i(g=>(delete g.emitters[e],g))},emit:(e,g,t)=>{let C=A().emitters[e];if(!C){console.warn(`Emitter ${e} not found`);return}C(g,t)}})),zE=new m,XE=new qA,F5=new je,$E=new je,b5=new m,eQ=class extends de{constructor(A,e={},g,t=!1,C=!0){super(),LC(this,"settings"),LC(this,"emitted",0),LC(this,"elapsedTime",0),LC(this,"currentTime",0),LC(this,"shouldEmit"),LC(this,"emitterName"),LC(this,"localDirection"),LC(this,"store"),this.emitterName=A,this.localDirection=t,this.shouldEmit=C,this.store=g||$p.getState(),this.settings={duration:e.duration??1,nbParticles:e.nbParticles??1e3,spawnMode:e.spawnMode??"time",loop:e.loop??!1,delay:e.delay??0,colorStart:e.colorStart??["white","skyblue"],colorEnd:e.colorEnd??[],particlesLifetime:e.particlesLifetime??[.1,1],speed:e.speed??[5,20],size:e.size??[.1,1],startPositionMin:e.startPositionMin??[-1,-1,-1],startPositionMax:e.startPositionMax??[1,1,1],startRotationMin:e.startRotationMin??[0,0,0],startRotationMax:e.startRotationMax??[0,0,0],rotationSpeedMin:e.rotationSpeedMin??[0,0,0],rotationSpeedMax:e.rotationSpeedMax??[0,0,0],directionMin:e.directionMin??[0,0,0],directionMax:e.directionMax??[0,0,0]}}randFloat(A,e){return Math.random()*(e-A)+A}randInt(A,e){return Math.floor(Math.random()*(e-A+1))+A}stopEmitting(){this.shouldEmit=!1}startEmitting(A=!1){A&&(this.emitted=0,this.elapsedTime=0),this.shouldEmit=!0}emitAtPos(A,e=!1){if(this.settings.spawnMode!=="burst"){console.error("This function is meant to be used with burst spawn mode only.");return}let g=this.settings.nbParticles-this.emitted;e&&(this.emitted=0,this.elapsedTime=0),A&&this.position.copy(A),this.updateWorldMatrix(!0,!0),this.matrixWorld.decompose(zE,XE,b5),F5.setFromQuaternion(XE),$E.setFromQuaternion(XE),this.store.emit(this.emitterName,g,()=>{var t;let C=this.randFloat(this.settings.size[0],this.settings.size[1]),o=this.settings.colorStart[this.randInt(0,this.settings.colorStart.length-1)],s=new m(this.randFloat(this.settings.directionMin[0],this.settings.directionMax[0]),this.randFloat(this.settings.directionMin[1],this.settings.directionMax[1]),this.randFloat(this.settings.directionMin[2],this.settings.directionMax[2]));return this.localDirection&&s.applyQuaternion(XE),{position:[zE.x+this.randFloat(this.settings.startPositionMin[0],this.settings.startPositionMax[0]),zE.y+this.randFloat(this.settings.startPositionMin[1],this.settings.startPositionMax[1]),zE.z+this.randFloat(this.settings.startPositionMin[2],this.settings.startPositionMax[2])],direction:[s.x,s.y,s.z],scale:[C,C,C],rotation:[$E.x+this.randFloat(this.settings.startRotationMin[0],this.settings.startRotationMax[0]),$E.y+this.randFloat(this.settings.startRotationMin[1],this.settings.startRotationMax[1]),$E.z+this.randFloat(this.settings.startRotationMin[2],this.settings.startRotationMax[2])],rotationSpeed:[this.randFloat(this.settings.rotationSpeedMin[0],this.settings.rotationSpeedMax[0]),this.randFloat(this.settings.rotationSpeedMin[1],this.settings.rotationSpeedMax[1]),this.randFloat(this.settings.rotationSpeedMin[2],this.settings.rotationSpeedMax[2])],lifetime:[this.currentTime,this.randFloat(this.settings.particlesLifetime[0],this.settings.particlesLifetime[1])],colorStart:o,colorEnd:(t=this.settings.colorEnd)!=null&&t.length?this.settings.colorEnd[this.randInt(0,this.settings.colorEnd.length-1)]:o,speed:[this.randFloat(this.settings.speed[0],this.settings.speed[1])]}})}update(A,e){if(this.currentTime=A,this.emitted<this.settings.nbParticles||this.settings.loop){if(!this.shouldEmit)return;let g=(this.settings.spawnMode==="burst"?this.settings.nbParticles:Math.max(0,Math.floor((this.elapsedTime-this.settings.delay)/this.settings.duration*this.settings.nbParticles)))-this.emitted;g>0&&this.elapsedTime>=this.settings.delay&&(this.updateWorldMatrix(!0,!0),this.matrixWorld.decompose(zE,XE,b5),F5.setFromQuaternion(XE),$E.setFromQuaternion(XE),this.store.emit(this.emitterName,g,()=>{var t;let C=this.randFloat(this.settings.size[0],this.settings.size[1]),o=this.settings.colorStart[this.randInt(0,this.settings.colorStart.length-1)],s=new m(this.randFloat(this.settings.directionMin[0],this.settings.directionMax[0]),this.randFloat(this.settings.directionMin[1],this.settings.directionMax[1]),this.randFloat(this.settings.directionMin[2],this.settings.directionMax[2]));return this.localDirection&&s.applyQuaternion(XE),{position:[zE.x+this.randFloat(this.settings.startPositionMin[0],this.settings.startPositionMax[0]),zE.y+this.randFloat(this.settings.startPositionMin[1],this.settings.startPositionMax[1]),zE.z+this.randFloat(this.settings.startPositionMin[2],this.settings.startPositionMax[2])],direction:[s.x,s.y,s.z],scale:[C,C,C],rotation:[$E.x+this.randFloat(this.settings.startRotationMin[0],this.settings.startRotationMax[0]),$E.y+this.randFloat(this.settings.startRotationMin[1],this.settings.startRotationMax[1]),$E.z+this.randFloat(this.settings.startRotationMin[2],this.settings.startRotationMax[2])],rotationSpeed:[this.randFloat(this.settings.rotationSpeedMin[0],this.settings.rotationSpeedMax[0]),this.randFloat(this.settings.rotationSpeedMin[1],this.settings.rotationSpeedMax[1]),this.randFloat(this.settings.rotationSpeedMin[2],this.settings.rotationSpeedMax[2])],lifetime:[A,this.randFloat(this.settings.particlesLifetime[0],this.settings.particlesLifetime[1])],colorStart:o,colorEnd:(t=this.settings.colorEnd)!=null&&t.length?this.settings.colorEnd[this.randInt(0,this.settings.colorEnd.length-1)]:o,speed:[this.randFloat(this.settings.speed[0],this.settings.speed[1])]}}),this.emitted+=g)}this.elapsedTime+=e}updateSettings(A){Object.assign(this.settings,A)}restart(){this.emitted=0,this.elapsedTime=0}},SoA=`
|
|
5090
5090
|
#define PI 3.1415926535897932384626433832795
|
|
5091
5091
|
// Linear
|
|
5092
5092
|
float easeLinear(float t)
|
|
@@ -153,7 +153,7 @@ export declare class Actor<TOptions extends ActorOptions = ActorOptions> extends
|
|
|
153
153
|
*/
|
|
154
154
|
getPrefabInheritanceChain(): Record<string, SerializedActor> | null;
|
|
155
155
|
/**
|
|
156
|
-
*
|
|
156
|
+
* @deprecated deprecated, use $$prefab, setAsPrefabInstance instead
|
|
157
157
|
* @param name The prefab name
|
|
158
158
|
* @param data The prefab data
|
|
159
159
|
* @param inheritanceChain The full prefab inheritance chain (optional)
|
|
@@ -161,7 +161,7 @@ export declare class Actor<TOptions extends ActorOptions = ActorOptions> extends
|
|
|
161
161
|
*/
|
|
162
162
|
setPrefab(name: string, data: SerializedActor, inheritanceChain?: Record<string, SerializedActor>): this;
|
|
163
163
|
/**
|
|
164
|
-
* Clears the prefab name and data of this actor
|
|
164
|
+
* @deprecated Clears the prefab name and data of this actor. Use setAsPrefabInstance(null) instead
|
|
165
165
|
* @returns This actor instance for method chaining
|
|
166
166
|
*/
|
|
167
167
|
clearPrefab(): this;
|
package/dist/src/actors/Actor.js
CHANGED
|
@@ -316,6 +316,12 @@ let Actor = Actor_1 = class Actor extends Playable {
|
|
|
316
316
|
if (legacyPrefabName) {
|
|
317
317
|
this.prefabName = legacyPrefabName;
|
|
318
318
|
}
|
|
319
|
+
// HACK copy the ctorArgOptions and delete the transform data, so they get populated by the data stored in root component when loaded
|
|
320
|
+
// and also this won't mutate the original `options` passed in
|
|
321
|
+
this.ctorArgOptions = { ...this.ctorArgOptions };
|
|
322
|
+
delete this.ctorArgOptions.position;
|
|
323
|
+
delete this.ctorArgOptions.rotation;
|
|
324
|
+
delete this.ctorArgOptions.scale;
|
|
319
325
|
}
|
|
320
326
|
/**
|
|
321
327
|
* Gets the prefab name of this actor
|
|
@@ -339,7 +345,7 @@ let Actor = Actor_1 = class Actor extends Playable {
|
|
|
339
345
|
return this.prefabInheritanceChain;
|
|
340
346
|
}
|
|
341
347
|
/**
|
|
342
|
-
*
|
|
348
|
+
* @deprecated deprecated, use $$prefab, setAsPrefabInstance instead
|
|
343
349
|
* @param name The prefab name
|
|
344
350
|
* @param data The prefab data
|
|
345
351
|
* @param inheritanceChain The full prefab inheritance chain (optional)
|
|
@@ -352,7 +358,7 @@ let Actor = Actor_1 = class Actor extends Playable {
|
|
|
352
358
|
return this;
|
|
353
359
|
}
|
|
354
360
|
/**
|
|
355
|
-
* Clears the prefab name and data of this actor
|
|
361
|
+
* @deprecated Clears the prefab name and data of this actor. Use setAsPrefabInstance(null) instead
|
|
356
362
|
* @returns This actor instance for method chaining
|
|
357
363
|
*/
|
|
358
364
|
clearPrefab() {
|
|
@@ -1177,4 +1183,4 @@ Actor = Actor_1 = __decorate([
|
|
|
1177
1183
|
__metadata("design:paramtypes", [Object])
|
|
1178
1184
|
], Actor);
|
|
1179
1185
|
export { Actor };
|
|
1180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0b3JzL0FjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7Ozs7Ozs7Ozs7OztBQUVILE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFtQixRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQThCLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxz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
|
|
1186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0b3JzL0FjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7Ozs7Ozs7Ozs7OztBQUVILE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFtQixRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQThCLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUE4RHREOzs7R0FHRztBQUVJLElBQU0sS0FBSyxhQUFYLE1BQU0sS0FBb0QsU0FBUSxRQUFRO0lBb0YvRSxNQUFNLEtBQUssZUFBZTtRQUN4QixPQUFPO1lBQ0wsU0FBUyxFQUFFLEVBQUU7U0FDTCxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7U0FHSztJQUNMLFlBQXFCLFVBQW9CLEVBQWM7UUFDckQsS0FBSyxFQUFFLENBQUM7UUFERTs7OzttQkFBUyxPQUFPO1dBQTJCO1FBbEY5Qzs7OzttQkFBMkIsSUFBSTtXQUFDO1FBR2xDOzs7O21CQUFrQyxFQUFFO1dBQUM7UUFHbkM7Ozs7bUJBQWUsU0FBUyxFQUFFO1dBQUM7UUFFM0I7Ozs7O1dBQWE7UUFDZDs7Ozs7V0FBK0I7UUFDN0I7Ozs7bUJBQXNCLElBQUk7V0FBQztRQUMzQjs7OzttQkFBbUIsQ0FBQztXQUFDO1FBQ3JCOzs7O21CQUFtQyxJQUFJO1dBQUM7UUFDeEM7Ozs7bUJBQW1DLElBQUk7V0FBQztRQUN4Qzs7OzttQkFBdUIsS0FBSztXQUFDO1FBQzdCOzs7O21CQUFpRCxJQUFJO1dBQUM7UUFFaEUsaUNBQWlDO1FBQ3ZCOzs7O21CQUE0QixJQUFJO1dBQUM7UUFDakM7Ozs7bUJBQXFDLElBQUk7V0FBQztRQUMxQzs7OzttQkFBaUUsSUFBSTtXQUFDO1FBR3hFOzs7OztXQUF5QjtRQUVqQyxrQ0FBa0M7UUFDM0I7Ozs7bUJBQTZCLElBQUk7V0FBQztRQUVqQzs7OzttQkFBcUIsS0FBSztXQUFDO1FBQ3pCOzs7O21CQUFzQixFQUFFO1dBQUM7UUFHM0I7Ozs7bUJBQXdCLEtBQUs7V0FBQztRQUU5Qjs7OzttQkFBc0IsS0FBSztXQUFDO1FBRXBDLGtEQUFrRDtRQUNsQzs7OzttQkFBNEMsSUFBSSxRQUFRLEVBQXdCO1dBQUM7UUFDakcsb0RBQW9EO1FBQ3BDOzs7O21CQUFzQyxJQUFJLFFBQVEsRUFBeUI7V0FBQztRQUM1RixtREFBbUQ7UUFDbkM7Ozs7bUJBQXVDLElBQUksUUFBUSxFQUF5QjtXQUFDO1FBQzdGLDBDQUEwQztRQUMxQjs7OzttQkFBb0MsSUFBSSxRQUFRLEVBQWlCO1dBQUM7UUFDbEYsd0NBQXdDO1FBQ3hCOzs7O21CQUFrQyxJQUFJLFFBQVEsRUFBaUI7V0FBQztRQUNoRix3RkFBd0Y7UUFDeEU7Ozs7bUJBQXFDLElBQUksUUFBUSxFQUFpQjtXQUFDO1FBQ25GLHlDQUF5QztRQUN6Qjs7OzttQkFBZ0MsSUFBSSxRQUFRLEVBQXFDO1dBQUM7UUFFbEc7OztXQUdHO1FBQ2E7Ozs7bUJBQXdDLElBQUksUUFBUSxFQUF3RTtXQUFDO1FBQzdJOzs7V0FHRztRQUNhOzs7O21CQUF3QyxJQUFJLFFBQVEsRUFBd0U7V0FBQztRQUM3STs7O1dBR0c7UUFDYTs7OzttQkFBOEMsSUFBSSxRQUFRLEVBQXdFO1dBQUM7UUFDbko7OztXQUdHO1FBQ2E7Ozs7bUJBQWdELElBQUksUUFBUSxFQUF3RTtXQUFDO1FBY25KLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDO1FBRTlCLE9BQU8sR0FBRyxFQUFFLEdBQUcsT0FBSyxDQUFDLGVBQWUsRUFBRSxHQUFHLE9BQU8sR0FBRyxDQUFDO1FBQ3BELElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pFLElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDMUMsSUFBSSxhQUFhLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEUsYUFBYSxHQUFHLFNBQVMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztZQUNwQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRCxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUM7Z0JBQ3ZDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtnQkFDMUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO2dCQUMxQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7YUFDckIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLEtBQUssTUFBTSxTQUFTLElBQUksT0FBTyxDQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0RCxJQUFJLFNBQVMsWUFBWSxjQUFjLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLDBCQUEwQixDQUFDLENBQUM7WUFDeEQsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNDLE1BQU0sZ0JBQWdCLEdBQUksT0FBZSxDQUFDLFVBQVUsQ0FBQztRQUNyRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQztRQUNyQyxDQUFDO1FBRUQscUlBQXFJO1FBQ3JJLDhEQUE4RDtRQUM5RCxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztJQUN4RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLHlCQUF5QjtRQUM5QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksU0FBUyxDQUFDLElBQVksRUFBRSxJQUFxQixFQUFFLGdCQUFrRDtRQUN0RyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsZ0JBQWdCLElBQUksSUFBSSxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSSxZQUFZO1FBQ2pCLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLDZDQUE2QztJQUMzRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFlBQVksQ0FBQyxJQUFjO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsNENBQTRDO1FBQ3hFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsR0FBVztRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGNBQWMsQ0FBQyxHQUFXO1FBQy9CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLEdBQVc7UUFDNUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGNBQWMsQ0FBQyxJQUFjO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsSUFBYztRQUNuQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7O09BR0c7SUFDSSxZQUFZLENBQUMsU0FBa0I7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUNsQyxVQUFrQixFQUNsQixTQUF1RixFQUN2RixVQUErQixFQUFFLEVBQ2pDLFFBQWtCO1FBRWxCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2QyxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sTUFBTSxlQUFlLENBQUMsU0FBUyxDQUFDO2dCQUNyQyxJQUFJLEVBQUU7b0JBQ0osUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRO29CQUM3QixRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVE7b0JBQzdCLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSztpQkFDeEI7Z0JBQ0QsVUFBVTthQUNYLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFFRCxPQUFPLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBQyxpQkFBaUIsRUFBRTtnQkFDaEUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRO2dCQUM3QixRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVE7Z0JBQzdCLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSzthQUN4QixFQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsT0FBUSxJQUFJLENBQUMsV0FBNEIsQ0FBQyxlQUEyQixDQUFDO0lBQ3hFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxPQUFrQyxFQUFFLGVBQXdCO1FBQ3hFLE1BQU0sVUFBVSxHQUF3QjtZQUN0QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUN2RSxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ2xELFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDL0MsQ0FBQztRQUVGLHlDQUF5QztRQUN6QyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkQsS0FBSyxNQUFNLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBSSxJQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakQsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLElBQUksR0FBb0I7WUFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7WUFDOUMsVUFBVTtTQUNYLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDL0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDaEMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ2xDLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQztRQUUvQyxrRUFBa0U7UUFDbEUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUM7UUFDM0QsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7U0FHSztJQUNFLE9BQU8sQ0FBQyxZQUFnQztRQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7O1NBSUs7SUFDRSxnQkFBZ0IsQ0FBQyxnQkFBZ0MsRUFBRSxhQUFzQjtRQUM5RSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVELGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzVDLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDcEMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNJLHFCQUFxQjtRQUMxQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDekQsdUVBQXVFO1lBQ3ZFLElBQUksYUFBYSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2pJLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLE1BQU0sQ0FBQyxLQUFLLFlBQVksY0FBYyxDQUFDLEVBQUUsQ0FBQztvQkFDNUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUF1QixFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNyRCxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7O1NBR0s7SUFDRSxRQUFRLENBQUMsS0FBbUI7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7U0FHSztJQUNFLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7U0FHSztJQUNFLGNBQWMsQ0FBQyxTQUFpQjtRQUNyQyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTLENBQUM7WUFDM0IsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsT0FBTztZQUNULENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQzVFLElBQUksa0JBQWtCLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxlQUFlLEdBQUcsb0JBQW9CLENBQUMsYUFBYSxDQUFDO29CQUN6RCxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRO29CQUNyQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVO29CQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLO2lCQUNoQyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsaUJBQWlCLENBQUM7b0JBQ3JCLFFBQVEsRUFBRSxlQUFlLENBQUMsUUFBUTtvQkFDbEMsUUFBUSxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUM7b0JBQ3ZFLEtBQUssRUFBRSxlQUFlLENBQUMsS0FBSztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7OztTQUdLO0lBQ0UsZUFBZSxDQUFDLFNBQWlCO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDO2dCQUN2QyxTQUFTLEVBQUUsb0JBQW9CLENBQUMsV0FBVyxFQUFFO2dCQUM3QyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFO2dCQUM3QyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO2dCQUMvQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO2FBQ3hDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztTQUdLO0lBQ0UsZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoRyxDQUFDO0lBRUQ7OztTQUdLO0lBQ0UsY0FBYztRQUNuQixPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQy9GLENBQUM7SUFFRDs7O1NBR0s7SUFDRSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDL0YsQ0FBQztJQUVEOzs7U0FHSztJQUNFLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzNELENBQUM7SUFFRDs7OztTQUlLO0lBQ0UsU0FBUyxDQUFDLE1BQWU7UUFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O1NBR0s7SUFDRSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLHFCQUFxQixDQUFDLFVBQW1DLEVBQUUsc0JBQStCLEtBQUs7UUFDcEcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUMxRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLHNCQUFzQixDQUFDLFVBQW1DLEVBQUUsc0JBQStCLEtBQUs7UUFDckcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUMzRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7U0FLSztJQUNFLGlCQUFpQixDQUFDLE1BQWUsRUFBRSxzQkFBK0IsS0FBSztRQUM1RSxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7U0FHSztJQUNFLGdCQUFnQjtRQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsWUFBWSxrQkFBa0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNyRyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksaUJBQWlCO1FBQ3RCLE1BQU0sUUFBUSxHQUFtQyxFQUFFLENBQUM7UUFDcEQsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUN0RCxPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2hCLFFBQVE7WUFDUixJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQ2hCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxRQUFnQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksWUFBWSxDQUFDLFNBQXlCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGFBQWEsQ0FBQyxHQUFHLFVBQTRCO1FBQ2xELFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksWUFBWSxDQUEyQixPQUEyQyxjQUFxQjtRQUM1RyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFHRDs7OztPQUlHO0lBQ0ksYUFBYSxDQUEyQixPQUEyQyxjQUFxQjtRQUM3RyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7O09BR0c7SUFDSSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUM3RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1osSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFdBQVcsQ0FBQyxPQUF1QjtRQUN4QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxrQkFBMkIsS0FBSztRQUN0RCxPQUFPLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxvQkFBb0I7UUFDekIsT0FBTyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxpQkFBaUIsQ0FBQyxTQUFzRjtRQUM3RyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7O09BR0c7SUFDSSxnQkFBZ0IsQ0FBQyxRQUF1QjtRQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxnQkFBZ0IsQ0FBQyxRQUFxQjtRQUMzQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxhQUFhLENBQUMsS0FBb0I7UUFDdkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksa0JBQWtCLENBQUMsVUFBNEI7UUFDcEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRDs7O09BR0c7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGlCQUFpQjtRQUN0QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBSU0sY0FBYyxDQUFDLFFBQWlCO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFTSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLEdBQUcsYUFBYSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztJQUMxRSxDQUFDO0lBRU0sb0JBQW9CLENBQUMsUUFBZ0I7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztJQUNwQyxDQUFDO0lBRU0sb0JBQW9CLENBQUMsUUFBZ0I7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztJQUNwQyxDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRU0sd0JBQXdCO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLHNCQUFzQjtRQUMzQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxtQkFBa0M7UUFDMUQsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFFLG1CQUFxQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdEYsTUFBTSxZQUFZLEdBQUcsU0FBUyxFQUFFLFFBQVEsQ0FBQztRQUN6QyxNQUFNLFlBQVksR0FBRyxTQUFTLEVBQUUsUUFBUSxDQUFDO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLFNBQVMsRUFBRSxLQUFLLENBQUM7UUFDbkMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEQsSUFBSSxTQUFTO1lBQ1gsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFlBQWEsRUFBRSxlQUFlLENBQUM7WUFDNUQsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFlBQWEsRUFBRSxlQUEyQyxDQUFDO1lBQ3hGLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFVLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsUUFBUSxFQUFFLGVBQWU7WUFDekIsS0FBSyxFQUFFLFlBQVk7WUFDbkIsU0FBUyxFQUFFLG9CQUFvQixDQUFDLFdBQVcsRUFBRTtTQUM3QixDQUFDO0lBQ3JCLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxZQUFvQjtRQUM1QyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsWUFBNkIsQ0FBQztRQUMvRSxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQztZQUN4QyxTQUFTO1lBQ1QsUUFBUSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRSxRQUFRLEVBQUUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JHLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLG1CQUFtQixDQUFDLFFBQStCO1FBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHNHQUFzRztJQUV0Rzs7O09BR0c7SUFDTyxzQkFBc0I7UUFDOUIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2RCxPQUFPO1lBQ0wsR0FBRyxJQUFJLENBQUMsT0FBTztZQUNmLGtGQUFrRjtZQUNsRixRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUM3RCxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUM3RCxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDdkQsMkdBQTJHO1lBQzNHLGVBQWUsRUFBRSxTQUFTO1lBQzFCLGlCQUFpQixFQUFFLFNBQVM7WUFDNUIsMkZBQTJGO1lBQzNGLFVBQVUsRUFBRSxTQUFTO1NBQ3RCLENBQUM7SUFDSixDQUFDO0lBRWtCLFdBQVc7UUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFa0IsWUFBWTtRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRWtCLFNBQVM7UUFDMUIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxxREFBcUQ7SUFDOUMsZUFBZTtRQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0QsS0FBSyxNQUFNLFNBQVMsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUN4QyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCx5REFBeUQ7SUFDbEQsY0FBYztRQUNuQixNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNELEtBQUssTUFBTSxTQUFTLElBQUksZUFBZSxFQUFFLENBQUM7WUFDeEMsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQztZQUMzQyxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksUUFBUSxDQUFDLE9BQWlDO1FBQy9DLElBQUksT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQzdCLE1BQU0saUJBQWlCLEdBQVE7Z0JBQzdCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDaEIsQ0FBQztZQUVGLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQztnQkFDakMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1lBQzlELENBQUM7WUFFRCxPQUFPLGlCQUFpQixDQUFDO1FBQzNCLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBUTtZQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixTQUFTLEVBQUUsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7WUFDcEUsUUFBUSxFQUFFLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqRSxRQUFRLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3pELENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDakMsV0FBVyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztRQUN4RCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7UUFDeEQsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzNCLFdBQVcsQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFFRCxNQUFNLHNCQUFzQixHQUFHLENBQUMsU0FBeUIsRUFBRSxFQUFFO1lBQzNELE1BQU0sb0JBQW9CLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLENBQUMsQ0FBQztZQUNqSSxJQUFJLFNBQVMsQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN4SCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3hCLG9CQUFvQixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7Z0JBQzNDLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxvQkFBb0IsQ0FBQztRQUM5QixDQUFDLENBQUM7UUFDRixXQUFXLENBQUMsYUFBYSxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV2RSxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNNLGVBQWUsQ0FBQyxNQUFlO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRU0sYUFBYSxDQUFDLFVBQW1CO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLG1CQUFtQjtRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNJLGtCQUFrQjtRQUN2QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU0sS0FBSyxDQUFDLHVCQUF1QjtRQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQXFCLENBQUM7UUFDdEYsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sU0FBUyxDQUFDLE1BQWM7UUFDN0IsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUN4QixNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFTSxXQUFXLENBQUMsTUFBYztRQUMvQixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFtQixDQUFDO1FBQzlGLElBQUksYUFBYSxJQUFJLGFBQWEsS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsc0dBQXNHO0lBQ3RHLG1CQUFtQjtJQUNuQixzR0FBc0c7SUFFL0YsdUJBQXVCLENBQUMsSUFBWSxFQUFFLEtBQVUsRUFBRSxNQUFtQztRQUMxRixJQUFJLElBQUksS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQWlCLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVNLHVCQUF1QixDQUFDLFVBQW1CLEVBQUUsY0FBdUI7UUFDekUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsdUJBQXVCLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDbkksQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUVNLHVCQUF1QjtRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVNLHdCQUF3QjtRQUM3QixNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFDOUIsdUNBQXVDO1FBQ3ZDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQzs7S0FwakNTLHNCQUFzQjtBQU5oQjs7OztXQUFxQztRQUNuRCxTQUFTLEVBQUU7WUFDVCxhQUFhLEVBQUUsSUFBSTtTQUNwQjtLQUNPO0VBSnVCLENBSXRCO0FBS0o7SUFETixRQUFRLENBQUMsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQzs7eUNBQ0M7QUFHbkM7SUFEUixRQUFRLENBQUMsRUFBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDOzttQ0FDaEI7QUFpQjVCO0lBRFAsUUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDOzs2Q0FDSjtBQVN6QjtJQURQLFFBQVEsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBQyxDQUFDOzsyQ0FDWDtBQUU5QjtJQURQLFFBQVEsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBQyxDQUFDOzt5Q0FDYjtBQTlDekIsS0FBSztJQURqQixXQUFXLENBQUMsT0FBTyxDQUFDOztHQUNSLEtBQUssQ0Fpa0NqQiJ9
|
package/dist/test/prefab.test.js
CHANGED
|
@@ -53,7 +53,7 @@ QUnit.module('Prefab', hooks => {
|
|
|
53
53
|
for (let index = 0; index < 4; index++) {
|
|
54
54
|
const instanceRootData = [index === 0 ? -123 : undefined, index === 1 ? -456 : undefined];
|
|
55
55
|
const instanceComponentData = [index === 2 ? -789 : undefined, index === 3 ? -101 : undefined];
|
|
56
|
-
//
|
|
56
|
+
// load an instance actor then modify its properties
|
|
57
57
|
const instanceActor = await ENGINE.Actor.spawnPrefabActor(prefabName, {
|
|
58
58
|
position: instancePosition,
|
|
59
59
|
rotation: instanceRotation,
|
package/package.json
CHANGED
package/src/actors/Actor.ts
CHANGED
|
@@ -196,6 +196,7 @@ export class Actor<TOptions extends ActorOptions = ActorOptions> extends Playabl
|
|
|
196
196
|
constructor(readonly options: TOptions = {} as TOptions) {
|
|
197
197
|
super();
|
|
198
198
|
this.ctorArgOptions = options;
|
|
199
|
+
|
|
199
200
|
options = { ...Actor.DEFAULT_OPTIONS, ...options, };
|
|
200
201
|
this.name = ObjectNamingSystem.generateName(this);
|
|
201
202
|
this.actorTags = options.actorTags ? [...options.actorTags] : [];
|
|
@@ -236,6 +237,13 @@ export class Actor<TOptions extends ActorOptions = ActorOptions> extends Playabl
|
|
|
236
237
|
if (legacyPrefabName) {
|
|
237
238
|
this.prefabName = legacyPrefabName;
|
|
238
239
|
}
|
|
240
|
+
|
|
241
|
+
// HACK copy the ctorArgOptions and delete the transform data, so they get populated by the data stored in root component when loaded
|
|
242
|
+
// and also this won't mutate the original `options` passed in
|
|
243
|
+
this.ctorArgOptions = {...this.ctorArgOptions};
|
|
244
|
+
delete this.ctorArgOptions.position;
|
|
245
|
+
delete this.ctorArgOptions.rotation;
|
|
246
|
+
delete this.ctorArgOptions.scale;
|
|
239
247
|
}
|
|
240
248
|
|
|
241
249
|
/**
|
|
@@ -263,7 +271,7 @@ export class Actor<TOptions extends ActorOptions = ActorOptions> extends Playabl
|
|
|
263
271
|
}
|
|
264
272
|
|
|
265
273
|
/**
|
|
266
|
-
*
|
|
274
|
+
* @deprecated deprecated, use $$prefab, setAsPrefabInstance instead
|
|
267
275
|
* @param name The prefab name
|
|
268
276
|
* @param data The prefab data
|
|
269
277
|
* @param inheritanceChain The full prefab inheritance chain (optional)
|
|
@@ -277,7 +285,7 @@ export class Actor<TOptions extends ActorOptions = ActorOptions> extends Playabl
|
|
|
277
285
|
}
|
|
278
286
|
|
|
279
287
|
/**
|
|
280
|
-
* Clears the prefab name and data of this actor
|
|
288
|
+
* @deprecated Clears the prefab name and data of this actor. Use setAsPrefabInstance(null) instead
|
|
281
289
|
* @returns This actor instance for method chaining
|
|
282
290
|
*/
|
|
283
291
|
public clearPrefab(): this {
|