@dcl/builder-site 7.2.1 → 7.2.2

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.
Files changed (77) hide show
  1. package/assets/{Back-BJi2deng.js → Back-DtK6x4Bn.js} +1 -1
  2. package/assets/{CollectionProvider.container-S7TwnaYa.js → CollectionProvider.container-CXdA94fU.js} +1 -1
  3. package/assets/{CollectionStatus.container-Bt_3fJiK.js → CollectionStatus.container-CKYVdJgB.js} +1 -1
  4. package/assets/{ConfirmDelete-t9nvFRtI.js → ConfirmDelete-BE0vH5uM.js} +1 -1
  5. package/assets/{FileSaver.min-CLucrmh1.js → FileSaver.min-dYVWgoJI.js} +1 -1
  6. package/assets/{ItemProvider.container-BxFpMAym.js → ItemProvider.container-C_ird2Zu.js} +1 -1
  7. package/assets/{JumpIn.container-BDuzzlQd.js → JumpIn.container-DjpgxX_c.js} +1 -1
  8. package/assets/{LandAction-6prp6OtG.js → LandAction-33UdtFZb.js} +1 -1
  9. package/assets/{LandProviderPage-uQEQcWUB.js → LandProviderPage-fMqWevKT.js} +1 -1
  10. package/assets/{LoggedInDetailPage.container-Cp2VcxxY.js → LoggedInDetailPage.container-BLvSpUqS.js} +1 -1
  11. package/assets/{Navigation-N5s3jc7p.css → Navigation-CumA_dnJ.css} +1 -1
  12. package/assets/{Navigation.container-CPkNf2QL.js → Navigation.container-C54rXpIm.js} +1 -1
  13. package/assets/{NotFound-D4LnQbRF.js → NotFound-CWDykcSQ.js} +1 -1
  14. package/assets/{OptionsDropdown-C6_LhYKO.js → OptionsDropdown-C7AtDOm3.js} +1 -1
  15. package/assets/{RentalPeriod-BbEOmAsT.js → RentalPeriod-BqEjSl0y.js} +1 -1
  16. package/assets/{SDKTag-mgVMhaWr.js → SDKTag-BLT7PlWy.js} +1 -1
  17. package/assets/{SceneStats.container-B6dn3bXo.js → SceneStats.container-DA0XO8U0.js} +1 -1
  18. package/assets/{SignInRequired-C13PYv-8.js → SignInRequired-vn0lyw6H.js} +1 -1
  19. package/assets/{ThirdPartyKindBadge-DfcaD8hC.js → ThirdPartyKindBadge-DSlG5fJU.js} +1 -1
  20. package/assets/{dataReader-Cfy83NJj.js → dataReader-Cpr013wV.js} +1 -1
  21. package/assets/{date-Dp-8ZdTY.js → date-BhOAIsCu.js} +1 -1
  22. package/assets/{fortmatic-BppYrTpx.js → fortmatic-CM_hH-QZ.js} +1 -1
  23. package/assets/{index-C262n0GR.js → index-23gqgSsS.js} +1 -1
  24. package/assets/{index-CKmaAyse.js → index-4bvVCOPT.js} +1 -1
  25. package/assets/{index-67k0pvNC.js → index-9p_FZzqu.js} +1 -1
  26. package/assets/{index-CHS_1sWp.css → index-AmjEp0WZ.css} +1 -1
  27. package/assets/{index-B2uoPAxz.js → index-B15QgiWh.js} +1 -1
  28. package/assets/{index-BDG2fKsI.js → index-B1Z5dXCr.js} +1 -1
  29. package/assets/{index-DRnk3O3P.css → index-B4QUye_p.css} +1 -1
  30. package/assets/{index-CsIw7b3W.js → index-B6iImHgG.js} +1 -1
  31. package/assets/{index-CuC-vTv3.js → index-BJBJoWZs.js} +1 -1
  32. package/assets/{index-BqzNNfxh.js → index-BL8f4n87.js} +1 -1
  33. package/assets/{index-lGt2UflX.js → index-BMiurEtO.js} +1 -1
  34. package/assets/{index-gh0L5vcZ.js → index-BU1OApef.js} +1 -1
  35. package/assets/{index-CPTxkxGa.js → index-BeJeXmKD.js} +1 -1
  36. package/assets/index-CCILTcNe.js +1 -0
  37. package/assets/{index-B_Ecssie.js → index-CIkGNRAR.js} +1 -1
  38. package/assets/{index-oIZ2KZpv.js → index-CK--OQ83.js} +1 -1
  39. package/assets/{index-xvdZIeP3.js → index-CdSybgoG.js} +1 -1
  40. package/assets/{index-Di4WYmvS.css → index-CfU_ubdu.css} +1 -1
  41. package/assets/{index-DStnZvAp.js → index-CqmX90TP.js} +1 -1
  42. package/assets/{index-C6Sem-h_.css → index-CtM7ULBP.css} +7 -7
  43. package/assets/{index-BhgxnmSa.js → index-CwkP6MWv.js} +1 -1
  44. package/assets/{index-D44ywto_.js → index-Cwkr6Bc-.js} +1 -1
  45. package/assets/{index-CpGwIWGz.js → index-Cxg8OEsE.js} +1 -1
  46. package/assets/{index-QkSdK4RR.js → index-CxhDJKuk.js} +1 -1
  47. package/assets/{index-ME6Lx47Y.css → index-CyHCxbg4.css} +1 -1
  48. package/assets/{index-D6Wpyxlx.js → index-D2pe819n.js} +1 -1
  49. package/assets/{index-DhuRBTPq.js → index-D5p2T3o2.js} +1 -1
  50. package/assets/{index-DH_2Hr1M.js → index-DFMQLpF2.js} +1 -1
  51. package/assets/{index-DFDW3vrM.js → index-DIlb7NGo.js} +1 -1
  52. package/assets/{index-DtME10H2.js → index-DK322CRN.js} +1 -1
  53. package/assets/{index-BLQYfQ3K.js → index-DLcC_YRz.js} +1 -1
  54. package/assets/{index-D_zTHEk6.css → index-DPcTJN54.css} +1 -1
  55. package/assets/{index-DoA3dxJB.js → index-DREoEfuJ.js} +2 -2
  56. package/assets/{index-DJZN1aUR.js → index-DTaWDFyZ.js} +1 -1
  57. package/assets/{index-BUd-6xMj.js → index-Db2yXUSb.js} +1 -1
  58. package/assets/{index-Dr_fA8K6.js → index-DhUm7yG5.js} +1 -1
  59. package/assets/index-DkTMwtTI.js +1 -0
  60. package/assets/{index-A3_hfI9n.js → index-Dmo3kwAH.js} +1 -1
  61. package/assets/{index-BH4cF3_2.js → index-DoqbeoQw.js} +1 -1
  62. package/assets/{index-NrQFL8FO.js → index-DqpTosSn.js} +1 -1
  63. package/assets/{index-DuKm-a73.js → index-DvloJJ3K.js} +1 -1
  64. package/assets/{index-drR7groY.js → index-Ff3ES8h5.js} +1 -1
  65. package/assets/{index-TA6XUFTz.js → index-JS6japPI.js} +1 -1
  66. package/assets/{index-DixQ4Vhj.js → index-L3D6xA3L.js} +1 -1
  67. package/assets/{index-DnGApJNY.css → index-W_enwN_T.css} +1 -1
  68. package/assets/{index-eRzQAiun.js → index-YPAJmkCB.js} +24 -24
  69. package/assets/{index-CJ4F6eK1.js → index-mhnh9pfu.js} +1 -1
  70. package/assets/{index-BfrPcxy-.js → index-oH5zVeed.js} +1 -1
  71. package/assets/{index-Bx5VEAGf.js → index-obn1Zrh9.js} +1 -1
  72. package/assets/{index.es-Dquh_Hol.js → index.es-BmduyGx6.js} +4 -4
  73. package/assets/{selectors-BKBiSwJX.js → selectors-CoHvSlLI.js} +1 -1
  74. package/index.html +3 -3
  75. package/package.json +3 -3
  76. package/assets/index-CusOxEAD.js +0 -1
  77. package/assets/index-sD7BkER8.js +0 -1
@@ -1,4 +1,4 @@
1
- import{V as ae,a as _,C as oe,b as ve,_ as $,O as J,L as Z,D as zt,E as Qe,A as Xl,c as at,d as Be,M as q,Q as te,S as he,e as ot,f as ue,g as ft,h as de,i as Jr,j as ye,P as Ir,k as Ae,I as Ql,T as ee,l as sn,m as Xt,n as Me,o as ce,p as O,q as Ue,r as lt,s as ct,t as B,u as Ut,v as se,K as Po,w as So,F as Co,x as Kl,N as st,y as Jt,z as Yi,B as Cr,G as xo,H as To,J as re,R as Ie,U as Pe,W as $t,X,Y as Dt,Z as ht,$ as Qt,a0 as Zl,a1 as ql,a2 as Jl,a3 as yn,a4 as Mt,a5 as Eo,a6 as Yt,a7 as F,a8 as ke,a9 as Nr,aa as Ko,ab as $l,ac as On,ad as Ni,ae as _i,af as Ee,ag as Ke,ah as mr,ai as ss,aj as eu,ak as $r,al as ls,am as tu,an as fr,ao as We,ap as iu,aq as ru,ar as nu,as as zi,at as vr,au as Ve,av as wt,aw as ou,ax as us,ay as cs,az as Ro,aA as bn,aB as gi,aC as Xi,aD as hs,aE as fs,aF as Pi,aG as au,aH as ao,aI as jt,aJ as ni,aK as su,aL as lu,aM as Zo,aN as ln,aO as uu,aP as en,aQ as ds,aR as yr,aS as Mo,aT as Ao,aU as cu,aV as hu,aW as Ui,aX as mi,aY as fu,aZ as He,a_ as du,a$ as qo,b0 as pu,b1 as Jo,b2 as _u,b3 as gu,b4 as un,b5 as wi,b6 as vi,b7 as Di,b8 as mu,b9 as vu,ba as yu,bb as fi,bc as bu}from"./dataReader-Cfy83NJj.js";import{bT as Cy,bW as xy,bd as Ty,bh as Ey,bi as Ry,bj as My,bn as Ay,bC as Oy,bt as wy,bI as Dy,ce as Iy,cd as Ny,b_ as Fy,bU as By,bL as Ly,b$ as Vy,cc as ky,bo as zy,bp as Uy,bq as Gy,br as jy,bl as Wy,bk as Hy,bv as Yy,bw as Xy,c9 as Qy,bN as Ky,bP as Zy,c1 as qy,c0 as Jy,bD as $y,c2 as eb,bx as tb,by as ib,c4 as rb,c7 as nb,bF as ob,cb as ab,bQ as sb,bR as lb,ca as ub,c8 as cb,c3 as hb,bg as fb,bA as db,bB as pb,bz as _b,bK as gb,bS as mb,bE as vb,bV as yb,c5 as bb,bf as Pb,bJ as Sb,bO as Cb,bu as xb,bm as Tb,be as Eb,bM as Rb,bs as Mb,c6 as Ab,bH as Ob,bG as wb,bY as Db,bX as Ib,bZ as Nb}from"./dataReader-Cfy83NJj.js";import{hO as N,hP as R,hQ as ze,hR as dr,hS as pr,hT as Pu}from"./index-eRzQAiun.js";var Ye=function(){function n(t,e){this.triggerOptions=t,this.onBeforeExecuteObservable=new J,t.parameter?(this.trigger=t.trigger,this._triggerParameter=t.parameter):t.trigger?this.trigger=t.trigger:this.trigger=t,this._nextActiveAction=this,this._condition=e}return n.prototype._prepare=function(){},n.prototype.getTriggerParameter=function(){return this._triggerParameter},n.prototype._executeCurrent=function(t){if(this._nextActiveAction._condition){var e=this._nextActiveAction._condition,i=this._actionManager.getScene().getRenderId();if(e._evaluationId===i){if(!e._currentResult)return}else{if(e._evaluationId=i,!e.isValid()){e._currentResult=!1;return}e._currentResult=!0}}this.onBeforeExecuteObservable.notifyObservers(this),this._nextActiveAction.execute(t),this.skipToNextActiveAction()},n.prototype.execute=function(t){},n.prototype.skipToNextActiveAction=function(){this._nextActiveAction._child?(this._nextActiveAction._child._actionManager||(this._nextActiveAction._child._actionManager=this._actionManager),this._nextActiveAction=this._nextActiveAction._child):this._nextActiveAction=this},n.prototype.then=function(t){return this._child=t,t._actionManager=this._actionManager,t._prepare(),t},n.prototype._getProperty=function(t){return this._actionManager._getProperty(t)},n.prototype._getEffectiveTarget=function(t,e){return this._actionManager._getEffectiveTarget(t,e)},n.prototype.serialize=function(t){},n.prototype._serialize=function(t,e){var i={type:1,children:[],name:t.name,properties:t.properties||[]};if(this._child&&this._child.serialize(i),this._condition){var r=this._condition.serialize();return r.children.push(i),e&&e.children.push(r),r}return e&&e.children.push(i),i},n._SerializeValueAsString=function(t){return typeof t=="number"?t.toString():typeof t=="boolean"?t?"true":"false":t instanceof ae?t.x+", "+t.y:t instanceof _?t.x+", "+t.y+", "+t.z:t instanceof oe?t.r+", "+t.g+", "+t.b:t instanceof ve?t.r+", "+t.g+", "+t.b+", "+t.a:t},n._GetTargetProperty=function(t){return{name:"target",targetType:t._isMesh?"MeshProperties":t._isLight?"LightProperties":t._isCamera?"CameraProperties":"SceneProperties",value:t._isScene?"Scene":t.name}},n}();$.RegisteredTypes["BABYLON.Action"]=Ye;var Fr=function(){function n(t){this._actionManager=t}return n.prototype.isValid=function(){return!0},n.prototype._getProperty=function(t){return this._actionManager._getProperty(t)},n.prototype._getEffectiveTarget=function(t,e){return this._actionManager._getEffectiveTarget(t,e)},n.prototype.serialize=function(){},n.prototype._serialize=function(t){return{type:2,children:[],name:t.name,properties:t.properties}},n}(),ps=function(n){N(t,n);function t(e,i,r,o,a){a===void 0&&(a=t.IsEqual);var s=n.call(this,e)||this;return s.propertyPath=r,s.value=o,s.operator=a,s._target=i,s._effectiveTarget=s._getEffectiveTarget(i,s.propertyPath),s._property=s._getProperty(s.propertyPath),s}return Object.defineProperty(t,"IsEqual",{get:function(){return t._IsEqual},enumerable:!1,configurable:!0}),Object.defineProperty(t,"IsDifferent",{get:function(){return t._IsDifferent},enumerable:!1,configurable:!0}),Object.defineProperty(t,"IsGreater",{get:function(){return t._IsGreater},enumerable:!1,configurable:!0}),Object.defineProperty(t,"IsLesser",{get:function(){return t._IsLesser},enumerable:!1,configurable:!0}),t.prototype.isValid=function(){switch(this.operator){case t.IsGreater:return this._effectiveTarget[this._property]>this.value;case t.IsLesser:return this._effectiveTarget[this._property]<this.value;case t.IsEqual:case t.IsDifferent:var e;return this.value.equals?e=this.value.equals(this._effectiveTarget[this._property]):e=this.value===this._effectiveTarget[this._property],this.operator===t.IsEqual?e:!e}return!1},t.prototype.serialize=function(){return this._serialize({name:"ValueCondition",properties:[Ye._GetTargetProperty(this._target),{name:"propertyPath",value:this.propertyPath},{name:"value",value:Ye._SerializeValueAsString(this.value)},{name:"operator",value:t.GetOperatorName(this.operator)}]})},t.GetOperatorName=function(e){switch(e){case t._IsEqual:return"IsEqual";case t._IsDifferent:return"IsDifferent";case t._IsGreater:return"IsGreater";case t._IsLesser:return"IsLesser";default:return""}},t._IsEqual=0,t._IsDifferent=1,t._IsGreater=2,t._IsLesser=3,t}(Fr),Su=function(n){N(t,n);function t(e,i){var r=n.call(this,e)||this;return r.predicate=i,r}return t.prototype.isValid=function(){return this.predicate()},t}(Fr),Cu=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e)||this;return o.value=r,o._target=i,o}return t.prototype.isValid=function(){return this._target.state===this.value},t.prototype.serialize=function(){return this._serialize({name:"StateCondition",properties:[Ye._GetTargetProperty(this._target),{name:"value",value:this.value}]})},t}(Fr);$.RegisteredTypes["BABYLON.ValueCondition"]=ps;$.RegisteredTypes["BABYLON.PredicateCondition"]=Su;$.RegisteredTypes["BABYLON.StateCondition"]=Cu;var zm=function(n){N(t,n);function t(e,i,r,o){var a=n.call(this,e,o)||this;return a.propertyPath=r,a._target=a._effectiveTarget=i,a}return t.prototype._prepare=function(){this._effectiveTarget=this._getEffectiveTarget(this._effectiveTarget,this.propertyPath),this._property=this._getProperty(this.propertyPath)},t.prototype.execute=function(){this._effectiveTarget[this._property]=!this._effectiveTarget[this._property]},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"SwitchBooleanAction",properties:[Ye._GetTargetProperty(this._target),{name:"propertyPath",value:this.propertyPath}]},e)},t}(Ye),xu=function(n){N(t,n);function t(e,i,r,o){var a=n.call(this,e,o)||this;return a.value=r,a._target=i,a}return t.prototype.execute=function(){this._target.state=this.value},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"SetStateAction",properties:[Ye._GetTargetProperty(this._target),{name:"value",value:this.value}]},e)},t}(Ye),Tu=function(n){N(t,n);function t(e,i,r,o,a){var s=n.call(this,e,a)||this;return s.propertyPath=r,s.value=o,s._target=s._effectiveTarget=i,s}return t.prototype._prepare=function(){this._effectiveTarget=this._getEffectiveTarget(this._effectiveTarget,this.propertyPath),this._property=this._getProperty(this.propertyPath)},t.prototype.execute=function(){this._effectiveTarget[this._property]=this.value,this._target.markAsDirty&&this._target.markAsDirty(this._property)},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"SetValueAction",properties:[Ye._GetTargetProperty(this._target),{name:"propertyPath",value:this.propertyPath},{name:"value",value:Ye._SerializeValueAsString(this.value)}]},e)},t}(Ye),Eu=function(n){N(t,n);function t(e,i,r,o,a){var s=n.call(this,e,a)||this;return s.propertyPath=r,s.value=o,s._target=s._effectiveTarget=i,s}return t.prototype._prepare=function(){this._effectiveTarget=this._getEffectiveTarget(this._effectiveTarget,this.propertyPath),this._property=this._getProperty(this.propertyPath),typeof this._effectiveTarget[this._property]!="number"&&Z.Warn("Warning: IncrementValueAction can only be used with number values")},t.prototype.execute=function(){this._effectiveTarget[this._property]+=this.value,this._target.markAsDirty&&this._target.markAsDirty(this._property)},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"IncrementValueAction",properties:[Ye._GetTargetProperty(this._target),{name:"propertyPath",value:this.propertyPath},{name:"value",value:Ye._SerializeValueAsString(this.value)}]},e)},t}(Ye),Ru=function(n){N(t,n);function t(e,i,r,o,a,s){var l=n.call(this,e,s)||this;return l.from=r,l.to=o,l.loop=a,l._target=i,l}return t.prototype._prepare=function(){},t.prototype.execute=function(){var e=this._actionManager.getScene();e.beginAnimation(this._target,this.from,this.to,this.loop)},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"PlayAnimationAction",properties:[Ye._GetTargetProperty(this._target),{name:"from",value:String(this.from)},{name:"to",value:String(this.to)},{name:"loop",value:Ye._SerializeValueAsString(this.loop)||!1}]},e)},t}(Ye),Mu=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,r)||this;return o._target=i,o}return t.prototype._prepare=function(){},t.prototype.execute=function(){var e=this._actionManager.getScene();e.stopAnimation(this._target)},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"StopAnimationAction",properties:[Ye._GetTargetProperty(this._target)]},e)},t}(Ye),_s=function(n){N(t,n);function t(e,i){return e===void 0&&(e=0),n.call(this,e,i)||this}return t.prototype.execute=function(){},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"DoNothingAction",properties:[]},e)},t}(Ye),Um=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,r)||this;return o.children=i,o}return t.prototype._prepare=function(){for(var e=0;e<this.children.length;e++)this.children[e]._actionManager=this._actionManager,this.children[e]._prepare()},t.prototype.execute=function(e){for(var i=0;i<this.children.length;i++)this.children[i].execute(e)},t.prototype.serialize=function(e){for(var i=n.prototype._serialize.call(this,{name:"CombineAction",properties:[],combine:[]},e),r=0;r<this.children.length;r++)i.combine.push(this.children[r].serialize(null));return i},t}(Ye),Au=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,r)||this;return o.func=i,o}return t.prototype.execute=function(e){this.func(e)},t}(Ye),gs=function(n){N(t,n);function t(e,i,r,o){var a=n.call(this,e,o)||this;return a._target=i,a._parent=r,a}return t.prototype._prepare=function(){},t.prototype.execute=function(){if(this._target.parent!==this._parent){var e=this._parent.getWorldMatrix().clone();e.invert(),this._target.position=_.TransformCoordinates(this._target.position,e),this._target.parent=this._parent}},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"SetParentAction",properties:[Ye._GetTargetProperty(this._target),Ye._GetTargetProperty(this._parent)]},e)},t}(Ye);$.RegisteredTypes["BABYLON.SetParentAction"]=gs;$.RegisteredTypes["BABYLON.ExecuteCodeAction"]=Au;$.RegisteredTypes["BABYLON.DoNothingAction"]=_s;$.RegisteredTypes["BABYLON.StopAnimationAction"]=Mu;$.RegisteredTypes["BABYLON.PlayAnimationAction"]=Ru;$.RegisteredTypes["BABYLON.IncrementValueAction"]=Eu;$.RegisteredTypes["BABYLON.SetValueAction"]=Tu;$.RegisteredTypes["BABYLON.SetStateAction"]=xu;$.RegisteredTypes["BABYLON.SetParentAction"]=gs;var $o=function(n){N(t,n);function t(e){var i=n.call(this)||this;return i._scene=e||Qe.LastCreatedScene,e.actionManagers.push(i),i}return t.prototype.dispose=function(){for(var e=this._scene.actionManagers.indexOf(this),i=0;i<this.actions.length;i++){var r=this.actions[i];t.Triggers[r.trigger]--,t.Triggers[r.trigger]===0&&delete t.Triggers[r.trigger]}e>-1&&this._scene.actionManagers.splice(e,1)},t.prototype.getScene=function(){return this._scene},t.prototype.hasSpecificTriggers=function(e){for(var i=0;i<this.actions.length;i++){var r=this.actions[i];if(e.indexOf(r.trigger)>-1)return!0}return!1},t.prototype.hasSpecificTriggers2=function(e,i){for(var r=0;r<this.actions.length;r++){var o=this.actions[r];if(e==o.trigger||i==o.trigger)return!0}return!1},t.prototype.hasSpecificTrigger=function(e,i){for(var r=0;r<this.actions.length;r++){var o=this.actions[r];if(o.trigger===e)if(i){if(i(o.getTriggerParameter()))return!0}else return!0}return!1},Object.defineProperty(t.prototype,"hasPointerTriggers",{get:function(){for(var e=0;e<this.actions.length;e++){var i=this.actions[e];if(i.trigger>=t.OnPickTrigger&&i.trigger<=t.OnPointerOutTrigger)return!0}return!1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasPickTriggers",{get:function(){for(var e=0;e<this.actions.length;e++){var i=this.actions[e];if(i.trigger>=t.OnPickTrigger&&i.trigger<=t.OnPickUpTrigger)return!0}return!1},enumerable:!1,configurable:!0}),t.prototype.registerAction=function(e){return e.trigger===t.OnEveryFrameTrigger&&this.getScene().actionManager!==this?(Z.Warn("OnEveryFrameTrigger can only be used with scene.actionManager"),null):(this.actions.push(e),t.Triggers[e.trigger]?t.Triggers[e.trigger]++:t.Triggers[e.trigger]=1,e._actionManager=this,e._prepare(),e)},t.prototype.unregisterAction=function(e){var i=this.actions.indexOf(e);return i!==-1?(this.actions.splice(i,1),t.Triggers[e.trigger]-=1,t.Triggers[e.trigger]===0&&delete t.Triggers[e.trigger],e._actionManager=null,!0):!1},t.prototype.processTrigger=function(e,i){for(var r=0;r<this.actions.length;r++){var o=this.actions[r];if(o.trigger===e){if(i&&(e===t.OnKeyUpTrigger||e===t.OnKeyDownTrigger)){var a=o.getTriggerParameter();if(a&&a!==i.sourceEvent.keyCode){if(!a.toLowerCase)continue;var s=a.toLowerCase();if(s!==i.sourceEvent.key){var l=i.sourceEvent.charCode?i.sourceEvent.charCode:i.sourceEvent.keyCode,u=String.fromCharCode(l).toLowerCase();if(u!==s)continue}}}o._executeCurrent(i)}}},t.prototype._getEffectiveTarget=function(e,i){for(var r=i.split("."),o=0;o<r.length-1;o++)e=e[r[o]];return e},t.prototype._getProperty=function(e){var i=e.split(".");return i[i.length-1]},t.prototype.serialize=function(e){for(var i={children:new Array,name:e,type:3,properties:new Array},r=0;r<this.actions.length;r++){var o={type:0,children:new Array,name:t.GetTriggerName(this.actions[r].trigger),properties:new Array},a=this.actions[r].triggerOptions;if(a&&typeof a!="number")if(a.parameter instanceof Node)o.properties.push(Ye._GetTargetProperty(a.parameter));else{var s={};zt.DeepCopy(a.parameter,s,["mesh"]),a.parameter&&a.parameter.mesh&&(s._meshId=a.parameter.mesh.id),o.properties.push({name:"parameter",targetType:null,value:s})}this.actions[r].serialize(o),i.children.push(o)}return i},t.Parse=function(e,i,r){var o=new t(r);i===null?r.actionManager=o:i.actionManager=o;for(var a=function(g,m){var v=$.GetClass("BABYLON."+g);if(v){var b=Object.create(v.prototype);return b.constructor.apply(b,m),b}},s=function(g,m,v,b){if(b===null){var C=parseFloat(m);return m==="true"||m==="false"?m==="true":isNaN(C)?m:C}for(var P=b.split("."),y=m.split(","),x=0;x<P.length;x++)v=v[P[x]];if(typeof v=="boolean")return y[0]==="true";if(typeof v=="string")return y[0];for(var E=new Array,x=0;x<y.length;x++)E.push(parseFloat(y[x]));return v instanceof _?_.FromArray(E):v instanceof at?at.FromArray(E):v instanceof oe?oe.FromArray(E):v instanceof ve?ve.FromArray(E):parseFloat(y[0])},l=function(g,m,v,b,C){if(C===void 0&&(C=null),!g.detached){var P=new Array,y=null,x=null,E=g.combine&&g.combine.length>0;if(g.type===2?P.push(o):P.push(m),E){for(var M=new Array,w=0;w<g.combine.length;w++)l(g.combine[w],t.NothingTrigger,v,b,M);P.push(M)}else for(var A=0;A<g.properties.length;A++){var T=g.properties[A].value,I=g.properties[A].name,H=g.properties[A].targetType;I==="target"?H!==null&&H==="SceneProperties"?T=y=r:T=y=r.getNodeByName(T):I==="parent"?T=r.getNodeByName(T):I==="sound"?r.getSoundByName&&(T=r.getSoundByName(T)):I!=="propertyPath"?g.type===2&&I==="operator"?T=ps[T]:T=s(I,T,y,I==="value"?x:null):x=T,P.push(T)}if(C===null?P.push(v):P.push(null),g.name==="InterpolateValueAction"){var L=P[P.length-2];P[P.length-1]=L,P[P.length-2]=v}var z=a(g.name,P);if(z instanceof Fr&&v!==null){var Y=new _s(m,v);b?b.then(Y):o.registerAction(Y),b=Y}C===null?z instanceof Fr?(v=z,z=b):(v=null,b?b.then(z):o.registerAction(z)):C.push(z);for(var A=0;A<g.children.length;A++)l(g.children[A],m,v,z,null)}},u=0;u<e.children.length;u++){var c,h=e.children[u];if(h.properties.length>0){var f=h.properties[0].value,d=h.properties[0].targetType===null?f:r.getMeshByName(f);d._meshId&&(d.mesh=r.getMeshByID(d._meshId)),c={trigger:t[h.name],parameter:d}}else c=t[h.name];for(var p=0;p<h.children.length;p++)h.detached||l(h.children[p],c,null,null)}},t.GetTriggerName=function(e){switch(e){case 0:return"NothingTrigger";case 1:return"OnPickTrigger";case 2:return"OnLeftPickTrigger";case 3:return"OnRightPickTrigger";case 4:return"OnCenterPickTrigger";case 5:return"OnPickDownTrigger";case 6:return"OnPickUpTrigger";case 7:return"OnLongPressTrigger";case 8:return"OnPointerOverTrigger";case 9:return"OnPointerOutTrigger";case 10:return"OnEveryFrameTrigger";case 11:return"OnIntersectionEnterTrigger";case 12:return"OnIntersectionExitTrigger";case 13:return"OnKeyDownTrigger";case 14:return"OnKeyUpTrigger";case 15:return"OnPickOutTrigger";default:return""}},t.NothingTrigger=0,t.OnPickTrigger=1,t.OnLeftPickTrigger=2,t.OnRightPickTrigger=3,t.OnCenterPickTrigger=4,t.OnPickDownTrigger=5,t.OnDoublePickTrigger=6,t.OnPickUpTrigger=7,t.OnPickOutTrigger=16,t.OnLongPressTrigger=8,t.OnPointerOverTrigger=9,t.OnPointerOutTrigger=10,t.OnEveryFrameTrigger=11,t.OnIntersectionEnterTrigger=12,t.OnIntersectionExitTrigger=13,t.OnKeyDownTrigger=14,t.OnKeyUpTrigger=15,t}(Xl),Gm=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,r)||this;return o._sound=i,o}return t.prototype._prepare=function(){},t.prototype.execute=function(){this._sound!==void 0&&this._sound.play()},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"PlaySoundAction",properties:[{name:"sound",value:this._sound.name}]},e)},t}(Ye),ms=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,r)||this;return o._sound=i,o}return t.prototype._prepare=function(){},t.prototype.execute=function(){this._sound!==void 0&&this._sound.stop()},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"StopSoundAction",properties:[{name:"sound",value:this._sound.name}]},e)},t}(Ye);$.RegisteredTypes["BABYLON.PlaySoundAction"]=ms;$.RegisteredTypes["BABYLON.StopSoundAction"]=ms;var Ou=function(n){N(t,n);function t(e,i,r,o,a,s,l,u){a===void 0&&(a=1e3);var c=n.call(this,e,s)||this;return c.duration=1e3,c.onInterpolationDoneObservable=new J,c.propertyPath=r,c.value=o,c.duration=a,c.stopOtherAnimations=l,c.onInterpolationDone=u,c._target=c._effectiveTarget=i,c}return t.prototype._prepare=function(){this._effectiveTarget=this._getEffectiveTarget(this._effectiveTarget,this.propertyPath),this._property=this._getProperty(this.propertyPath)},t.prototype.execute=function(){var e=this,i=this._actionManager.getScene(),r=[{frame:0,value:this._effectiveTarget[this._property]},{frame:100,value:this.value}],o;if(typeof this.value=="number")o=Be.ANIMATIONTYPE_FLOAT;else if(this.value instanceof oe)o=Be.ANIMATIONTYPE_COLOR3;else if(this.value instanceof _)o=Be.ANIMATIONTYPE_VECTOR3;else if(this.value instanceof q)o=Be.ANIMATIONTYPE_MATRIX;else if(this.value instanceof te)o=Be.ANIMATIONTYPE_QUATERNION;else{Z.Warn("InterpolateValueAction: Unsupported type ("+typeof this.value+")");return}var a=new Be("InterpolateValueAction",this._property,100*(1e3/this.duration),o,Be.ANIMATIONLOOPMODE_CONSTANT);a.setKeys(r),this.stopOtherAnimations&&i.stopAnimation(this._effectiveTarget);var s=function(){e.onInterpolationDoneObservable.notifyObservers(e),e.onInterpolationDone&&e.onInterpolationDone()};i.beginDirectAnimation(this._effectiveTarget,[a],0,100,!1,1,s)},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"InterpolateValueAction",properties:[Ye._GetTargetProperty(this._target),{name:"propertyPath",value:this.propertyPath},{name:"value",value:Ye._SerializeValueAsString(this.value)},{name:"duration",value:Ye._SerializeValueAsString(this.duration)},{name:"stopOtherAnimations",value:Ye._SerializeValueAsString(this.stopOtherAnimations)||!1}]},e)},t}(Ye);$.RegisteredTypes["BABYLON.InterpolateValueAction"]=Ou;var jm=function(){function n(){this.enableBlending=!1,this.blendingSpeed=.01,this.loopMode=Be.ANIMATIONLOOPMODE_CYCLE}return n}(),_r;(function(n){n[n.CW=0]="CW",n[n.CCW=1]="CCW"})(_r||(_r={}));var wu=function(){function n(){}return n.Interpolate=function(t,e,i,r,o){for(var a=1-3*r+3*e,s=3*r-6*e,l=3*e,u=t,c=0;c<5;c++){var h=u*u,f=h*u,d=a*f+s*h+l*u,p=1/(3*a*h+2*s*u+l);u-=(d-t)*p,u=Math.min(1,Math.max(0,u))}return 3*Math.pow(1-u,2)*u*i+3*(1-u)*Math.pow(u,2)*o+Math.pow(u,3)},n}(),Qr=function(){function n(t){this._radians=t,this._radians<0&&(this._radians+=2*Math.PI)}return n.prototype.degrees=function(){return this._radians*180/Math.PI},n.prototype.radians=function(){return this._radians},n.BetweenTwoPoints=function(t,e){var i=e.subtract(t),r=Math.atan2(i.y,i.x);return new n(r)},n.FromRadians=function(t){return new n(t)},n.FromDegrees=function(t){return new n(t*Math.PI/180)},n}(),Du=function(){function n(t,e,i){this.startPoint=t,this.midPoint=e,this.endPoint=i;var r=Math.pow(e.x,2)+Math.pow(e.y,2),o=(Math.pow(t.x,2)+Math.pow(t.y,2)-r)/2,a=(r-Math.pow(i.x,2)-Math.pow(i.y,2))/2,s=(t.x-e.x)*(e.y-i.y)-(e.x-i.x)*(t.y-e.y);this.centerPoint=new ae((o*(e.y-i.y)-a*(t.y-e.y))/s,((t.x-e.x)*a-(e.x-i.x)*o)/s),this.radius=this.centerPoint.subtract(this.startPoint).length(),this.startAngle=Qr.BetweenTwoPoints(this.centerPoint,this.startPoint);var l=this.startAngle.degrees(),u=Qr.BetweenTwoPoints(this.centerPoint,this.midPoint).degrees(),c=Qr.BetweenTwoPoints(this.centerPoint,this.endPoint).degrees();u-l>180&&(u-=360),u-l<-180&&(u+=360),c-u>180&&(c-=360),c-u<-180&&(c+=360),this.orientation=u-l<0?_r.CW:_r.CCW,this.angle=Qr.FromDegrees(this.orientation===_r.CW?l-c:c-l)}return n}(),vs=function(){function n(t,e){this._points=new Array,this._length=0,this.closed=!1,this._points.push(new ae(t,e))}return n.prototype.addLineTo=function(t,e){if(this.closed)return this;var i=new ae(t,e),r=this._points[this._points.length-1];return this._points.push(i),this._length+=i.subtract(r).length(),this},n.prototype.addArcTo=function(t,e,i,r,o){if(o===void 0&&(o=36),this.closed)return this;var a=this._points[this._points.length-1],s=new ae(t,e),l=new ae(i,r),u=new Du(a,s,l),c=u.angle.radians()/o;u.orientation===_r.CW&&(c*=-1);for(var h=u.startAngle.radians()+c,f=0;f<o;f++){var d=Math.cos(h)*u.radius+u.centerPoint.x,p=Math.sin(h)*u.radius+u.centerPoint.y;this.addLineTo(d,p),h+=c}return this},n.prototype.close=function(){return this.closed=!0,this},n.prototype.length=function(){var t=this._length;if(this.closed){var e=this._points[this._points.length-1],i=this._points[0];t+=i.subtract(e).length()}return t},n.prototype.getPoints=function(){return this._points},n.prototype.getPointAtLengthPosition=function(t){if(t<0||t>1)return ae.Zero();for(var e=t*this.length(),i=0,r=0;r<this._points.length;r++){var o=(r+1)%this._points.length,a=this._points[r],s=this._points[o],l=s.subtract(a),u=l.length()+i;if(e>=i&&e<=u){var c=l.normalize(),h=e-i;return new ae(a.x+c.x*h,a.y+c.y*h)}i=u}return ae.Zero()},n.StartingAt=function(t,e){return new n(t,e)},n}(),ys=function(){function n(t,e,i,r){e===void 0&&(e=null),r===void 0&&(r=!1),this.path=t,this._curve=new Array,this._distances=new Array,this._tangents=new Array,this._normals=new Array,this._binormals=new Array,this._pointAtData={id:0,point:_.Zero(),previousPointArrayIndex:0,position:0,subPosition:0,interpolateReady:!1,interpolationMatrix:q.Identity()};for(var o=0;o<t.length;o++)this._curve[o]=t[o].clone();this._raw=i||!1,this._alignTangentsWithPath=r,this._compute(e,r)}return n.prototype.getCurve=function(){return this._curve},n.prototype.getPoints=function(){return this._curve},n.prototype.length=function(){return this._distances[this._distances.length-1]},n.prototype.getTangents=function(){return this._tangents},n.prototype.getNormals=function(){return this._normals},n.prototype.getBinormals=function(){return this._binormals},n.prototype.getDistances=function(){return this._distances},n.prototype.getPointAt=function(t){return this._updatePointAtData(t).point},n.prototype.getTangentAt=function(t,e){return e===void 0&&(e=!1),this._updatePointAtData(t,e),e?_.TransformCoordinates(_.Forward(),this._pointAtData.interpolationMatrix):this._tangents[this._pointAtData.previousPointArrayIndex]},n.prototype.getNormalAt=function(t,e){return e===void 0&&(e=!1),this._updatePointAtData(t,e),e?_.TransformCoordinates(_.Right(),this._pointAtData.interpolationMatrix):this._normals[this._pointAtData.previousPointArrayIndex]},n.prototype.getBinormalAt=function(t,e){return e===void 0&&(e=!1),this._updatePointAtData(t,e),e?_.TransformCoordinates(_.UpReadOnly,this._pointAtData.interpolationMatrix):this._binormals[this._pointAtData.previousPointArrayIndex]},n.prototype.getDistanceAt=function(t){return this.length()*t},n.prototype.getPreviousPointIndexAt=function(t){return this._updatePointAtData(t),this._pointAtData.previousPointArrayIndex},n.prototype.getSubPositionAt=function(t){return this._updatePointAtData(t),this._pointAtData.subPosition},n.prototype.getClosestPositionTo=function(t){for(var e=Number.MAX_VALUE,i=0,r=0;r<this._curve.length-1;r++){var o=this._curve[r+0],a=this._curve[r+1].subtract(o).normalize(),s=this._distances[r+1]-this._distances[r+0],l=Math.min(Math.max(_.Dot(a,t.subtract(o).normalize()),0)*_.Distance(o,t)/s,1),u=_.Distance(o.add(a.scale(l*s)),t);u<e&&(e=u,i=(this._distances[r+0]+s*l)/this.length())}return i},n.prototype.slice=function(t,e){if(t===void 0&&(t=0),e===void 0&&(e=1),t<0&&(t=1-t*-1%1),e<0&&(e=1-e*-1%1),t>e){var i=t;t=e,e=i}var r=this.getCurve(),o=this.getPointAt(t),a=this.getPreviousPointIndexAt(t),s=this.getPointAt(e),l=this.getPreviousPointIndexAt(e)+1,u=[];return t!==0&&(a++,u.push(o)),u.push.apply(u,r.slice(a,l)),(e!==1||t===1)&&u.push(s),new n(u,this.getNormalAt(t),this._raw,this._alignTangentsWithPath)},n.prototype.update=function(t,e,i){e===void 0&&(e=null),i===void 0&&(i=!1);for(var r=0;r<t.length;r++)this._curve[r].x=t[r].x,this._curve[r].y=t[r].y,this._curve[r].z=t[r].z;return this._compute(e,i),this},n.prototype._compute=function(t,e){e===void 0&&(e=!1);var i=this._curve.length;if(!(i<2)){this._tangents[0]=this._getFirstNonNullVector(0),this._raw||this._tangents[0].normalize(),this._tangents[i-1]=this._curve[i-1].subtract(this._curve[i-2]),this._raw||this._tangents[i-1].normalize();var r=this._tangents[0],o=this._normalVector(r,t);this._normals[0]=o,this._raw||this._normals[0].normalize(),this._binormals[0]=_.Cross(r,this._normals[0]),this._raw||this._binormals[0].normalize(),this._distances[0]=0;for(var a,s,l,u,c,h=1;h<i;h++)a=this._getLastNonNullVector(h),h<i-1&&(s=this._getFirstNonNullVector(h),this._tangents[h]=e?s:a.add(s),this._tangents[h].normalize()),this._distances[h]=this._distances[h-1]+this._curve[h].subtract(this._curve[h-1]).length(),l=this._tangents[h],c=this._binormals[h-1],this._normals[h]=_.Cross(c,l),this._raw||(this._normals[h].length()===0?(u=this._normals[h-1],this._normals[h]=u.clone()):this._normals[h].normalize()),this._binormals[h]=_.Cross(l,this._normals[h]),this._raw||this._binormals[h].normalize();this._pointAtData.id=NaN}},n.prototype._getFirstNonNullVector=function(t){for(var e=1,i=this._curve[t+e].subtract(this._curve[t]);i.length()===0&&t+e+1<this._curve.length;)e++,i=this._curve[t+e].subtract(this._curve[t]);return i},n.prototype._getLastNonNullVector=function(t){for(var e=1,i=this._curve[t].subtract(this._curve[t-e]);i.length()===0&&t>e+1;)e++,i=this._curve[t].subtract(this._curve[t-e]);return i},n.prototype._normalVector=function(t,e){var i,r=t.length();if(r===0&&(r=1),e==null){var o;he.WithinEpsilon(Math.abs(t.y)/r,1,ot)?he.WithinEpsilon(Math.abs(t.x)/r,1,ot)?he.WithinEpsilon(Math.abs(t.z)/r,1,ot)?o=_.Zero():o=new _(0,0,1):o=new _(1,0,0):o=new _(0,-1,0),i=_.Cross(t,o)}else i=_.Cross(t,e),_.CrossToRef(i,t,i);return i.normalize(),i},n.prototype._updatePointAtData=function(t,e){if(e===void 0&&(e=!1),this._pointAtData.id===t)return this._pointAtData.interpolateReady||this._updateInterpolationMatrix(),this._pointAtData;this._pointAtData.id=t;var i=this.getPoints();if(t<=0)return this._setPointAtData(0,0,i[0],0,e);if(t>=1)return this._setPointAtData(1,1,i[i.length-1],i.length-1,e);for(var r=i[0],o,a=0,s=t*this.length(),l=1;l<i.length;l++){o=i[l];var u=_.Distance(r,o);if(a+=u,a===s)return this._setPointAtData(t,1,o,l,e);if(a>s){var c=a-s,h=c/u,f=r.subtract(o),d=o.add(f.scaleInPlace(h));return this._setPointAtData(t,1-h,d,l-1,e)}r=o}return this._pointAtData},n.prototype._setPointAtData=function(t,e,i,r,o){return this._pointAtData.point=i,this._pointAtData.position=t,this._pointAtData.subPosition=e,this._pointAtData.previousPointArrayIndex=r,this._pointAtData.interpolateReady=o,o&&this._updateInterpolationMatrix(),this._pointAtData},n.prototype._updateInterpolationMatrix=function(){this._pointAtData.interpolationMatrix=q.Identity();var t=this._pointAtData.previousPointArrayIndex;if(t!==this._tangents.length-1){var e=t+1,i=this._tangents[t].clone(),r=this._normals[t].clone(),o=this._binormals[t].clone(),a=this._tangents[e].clone(),s=this._normals[e].clone(),l=this._binormals[e].clone(),u=te.RotationQuaternionFromAxis(r,o,i),c=te.RotationQuaternionFromAxis(s,l,a),h=te.Slerp(u,c,this._pointAtData.subPosition);h.toRotationMatrix(this._pointAtData.interpolationMatrix)}},n}(),Iu=function(){function n(t){this._length=0,this._points=t,this._length=this._computeLength(t)}return n.CreateQuadraticBezier=function(t,e,i,r){r=r>2?r:3;for(var o=new Array,a=function(l,u,c,h){var f=(1-l)*(1-l)*u+2*l*(1-l)*c+l*l*h;return f},s=0;s<=r;s++)o.push(new _(a(s/r,t.x,e.x,i.x),a(s/r,t.y,e.y,i.y),a(s/r,t.z,e.z,i.z)));return new n(o)},n.CreateCubicBezier=function(t,e,i,r,o){o=o>3?o:4;for(var a=new Array,s=function(u,c,h,f,d){var p=(1-u)*(1-u)*(1-u)*c+3*u*(1-u)*(1-u)*h+3*u*u*(1-u)*f+u*u*u*d;return p},l=0;l<=o;l++)a.push(new _(s(l/o,t.x,e.x,i.x,r.x),s(l/o,t.y,e.y,i.y,r.y),s(l/o,t.z,e.z,i.z,r.z)));return new n(a)},n.CreateHermiteSpline=function(t,e,i,r,o){for(var a=new Array,s=1/o,l=0;l<=o;l++)a.push(_.Hermite(t,e,i,r,l*s));return new n(a)},n.CreateCatmullRomSpline=function(t,e,i){var r=new Array,o=1/e,a=0;if(i){for(var s=t.length,l=0;l<s;l++){a=0;for(var u=0;u<e;u++)r.push(_.CatmullRom(t[l%s],t[(l+1)%s],t[(l+2)%s],t[(l+3)%s],a)),a+=o}r.push(r[0])}else{var c=new Array;c.push(t[0].clone()),Array.prototype.push.apply(c,t),c.push(t[t.length-1].clone());for(var l=0;l<c.length-3;l++){a=0;for(var u=0;u<e;u++)r.push(_.CatmullRom(c[l],c[l+1],c[l+2],c[l+3],a)),a+=o}l--,r.push(_.CatmullRom(c[l],c[l+1],c[l+2],c[l+3],a))}return new n(r)},n.prototype.getPoints=function(){return this._points},n.prototype.length=function(){return this._length},n.prototype.continue=function(t){for(var e=this._points[this._points.length-1],i=this._points.slice(),r=t.getPoints(),o=1;o<r.length;o++)i.push(r[o].subtract(r[0]).add(e));var a=new n(i);return a},n.prototype._computeLength=function(t){for(var e=0,i=1;i<t.length;i++)e+=t[i].subtract(t[i-1]).length();return e},n}(),Pt=function(){function n(){this._easingMode=n.EASINGMODE_EASEIN}return n.prototype.setEasingMode=function(t){var e=Math.min(Math.max(t,0),2);this._easingMode=e},n.prototype.getEasingMode=function(){return this._easingMode},n.prototype.easeInCore=function(t){throw new Error("You must implement this method")},n.prototype.ease=function(t){switch(this._easingMode){case n.EASINGMODE_EASEIN:return this.easeInCore(t);case n.EASINGMODE_EASEOUT:return 1-this.easeInCore(1-t)}return t>=.5?(1-this.easeInCore((1-t)*2))*.5+.5:this.easeInCore(t*2)*.5},n.EASINGMODE_EASEIN=0,n.EASINGMODE_EASEOUT=1,n.EASINGMODE_EASEINOUT=2,n}(),Nu=function(n){N(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.easeInCore=function(e){return e=Math.max(0,Math.min(1,e)),1-Math.sqrt(1-e*e)},t}(Pt),Fu=function(n){N(t,n);function t(e){e===void 0&&(e=1);var i=n.call(this)||this;return i.amplitude=e,i}return t.prototype.easeInCore=function(e){var i=Math.max(0,this.amplitude);return Math.pow(e,3)-e*i*Math.sin(3.141592653589793*e)},t}(Pt),Wm=function(n){N(t,n);function t(e,i){e===void 0&&(e=3),i===void 0&&(i=2);var r=n.call(this)||this;return r.bounces=e,r.bounciness=i,r}return t.prototype.easeInCore=function(e){var i=Math.max(0,this.bounces),r=this.bounciness;r<=1&&(r=1.001);var o=Math.pow(r,i),a=1-r,s=(1-o)/a+o*.5,l=e*s,u=Math.log(-l*(1-r)+1)/Math.log(r),c=Math.floor(u),h=c+1,f=(1-Math.pow(r,c))/(a*s),d=(1-Math.pow(r,h))/(a*s),p=(f+d)*.5,g=e-p,m=p-f;return-Math.pow(1/r,i-c)/(m*m)*(g-m)*(g+m)},t}(Pt),Hm=function(n){N(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.easeInCore=function(e){return e*e*e},t}(Pt),Ym=function(n){N(t,n);function t(e,i){e===void 0&&(e=3),i===void 0&&(i=3);var r=n.call(this)||this;return r.oscillations=e,r.springiness=i,r}return t.prototype.easeInCore=function(e){var i,r=Math.max(0,this.oscillations),o=Math.max(0,this.springiness);return o==0?i=e:i=(Math.exp(o*e)-1)/(Math.exp(o)-1),i*Math.sin((6.283185307179586*r+1.5707963267948966)*e)},t}(Pt),Bu=function(n){N(t,n);function t(e){e===void 0&&(e=2);var i=n.call(this)||this;return i.exponent=e,i}return t.prototype.easeInCore=function(e){return this.exponent<=0?e:(Math.exp(this.exponent*e)-1)/(Math.exp(this.exponent)-1)},t}(Pt),Xm=function(n){N(t,n);function t(e){e===void 0&&(e=2);var i=n.call(this)||this;return i.power=e,i}return t.prototype.easeInCore=function(e){var i=Math.max(0,this.power);return Math.pow(e,i)},t}(Pt),Qm=function(n){N(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.easeInCore=function(e){return e*e},t}(Pt),Km=function(n){N(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.easeInCore=function(e){return e*e*e*e},t}(Pt),Zm=function(n){N(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.easeInCore=function(e){return e*e*e*e*e},t}(Pt),bs=function(n){N(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.easeInCore=function(e){return 1-Math.sin(1.5707963267948966*(1-e))},t}(Pt),qm=function(n){N(t,n);function t(e,i,r,o){e===void 0&&(e=0),i===void 0&&(i=0),r===void 0&&(r=1),o===void 0&&(o=1);var a=n.call(this)||this;return a.x1=e,a.y1=i,a.x2=r,a.y2=o,a}return t.prototype.easeInCore=function(e){return wu.Interpolate(e,this.x1,this.y1,this.x2,this.y2)},t}(Pt),Jm=function(){function n(t){this.SMOOTHING=.75,this.FFT_SIZE=512,this.BARGRAPHAMPLITUDE=256,this.DEBUGCANVASPOS={x:20,y:20},this.DEBUGCANVASSIZE={width:320,height:200},this._scene=t,this._audioEngine=ue.audioEngine,this._audioEngine.canUseWebAudio&&this._audioEngine.audioContext&&(this._webAudioAnalyser=this._audioEngine.audioContext.createAnalyser(),this._webAudioAnalyser.minDecibels=-140,this._webAudioAnalyser.maxDecibels=0,this._byteFreqs=new Uint8Array(this._webAudioAnalyser.frequencyBinCount),this._byteTime=new Uint8Array(this._webAudioAnalyser.frequencyBinCount),this._floatFreqs=new Float32Array(this._webAudioAnalyser.frequencyBinCount))}return n.prototype.getFrequencyBinCount=function(){return this._audioEngine.canUseWebAudio?this._webAudioAnalyser.frequencyBinCount:0},n.prototype.getByteFrequencyData=function(){return this._audioEngine.canUseWebAudio&&(this._webAudioAnalyser.smoothingTimeConstant=this.SMOOTHING,this._webAudioAnalyser.fftSize=this.FFT_SIZE,this._webAudioAnalyser.getByteFrequencyData(this._byteFreqs)),this._byteFreqs},n.prototype.getByteTimeDomainData=function(){return this._audioEngine.canUseWebAudio&&(this._webAudioAnalyser.smoothingTimeConstant=this.SMOOTHING,this._webAudioAnalyser.fftSize=this.FFT_SIZE,this._webAudioAnalyser.getByteTimeDomainData(this._byteTime)),this._byteTime},n.prototype.getFloatFrequencyData=function(){return this._audioEngine.canUseWebAudio&&(this._webAudioAnalyser.smoothingTimeConstant=this.SMOOTHING,this._webAudioAnalyser.fftSize=this.FFT_SIZE,this._webAudioAnalyser.getFloatFrequencyData(this._floatFreqs)),this._floatFreqs},n.prototype.drawDebugCanvas=function(){var t=this;if(this._audioEngine.canUseWebAudio&&(this._debugCanvas||(this._debugCanvas=document.createElement("canvas"),this._debugCanvas.width=this.DEBUGCANVASSIZE.width,this._debugCanvas.height=this.DEBUGCANVASSIZE.height,this._debugCanvas.style.position="absolute",this._debugCanvas.style.top=this.DEBUGCANVASPOS.y+"px",this._debugCanvas.style.left=this.DEBUGCANVASPOS.x+"px",this._debugCanvasContext=this._debugCanvas.getContext("2d"),document.body.appendChild(this._debugCanvas),this._registerFunc=function(){t.drawDebugCanvas()},this._scene.registerBeforeRender(this._registerFunc)),this._registerFunc&&this._debugCanvasContext)){var e=this.getByteFrequencyData();this._debugCanvasContext.fillStyle="rgb(0, 0, 0)",this._debugCanvasContext.fillRect(0,0,this.DEBUGCANVASSIZE.width,this.DEBUGCANVASSIZE.height);for(var i=0;i<this.getFrequencyBinCount();i++){var r=e[i],o=r/this.BARGRAPHAMPLITUDE,a=this.DEBUGCANVASSIZE.height*o,s=this.DEBUGCANVASSIZE.height-a-1,l=this.DEBUGCANVASSIZE.width/this.getFrequencyBinCount(),u=i/this.getFrequencyBinCount()*360;this._debugCanvasContext.fillStyle="hsl("+u+", 100%, 50%)",this._debugCanvasContext.fillRect(i*l,s,l,a)}}},n.prototype.stopDebugCanvas=function(){this._debugCanvas&&(this._registerFunc&&(this._scene.unregisterBeforeRender(this._registerFunc),this._registerFunc=null),document.body.removeChild(this._debugCanvas),this._debugCanvas=null,this._debugCanvasContext=null)},n.prototype.connectAudioNodes=function(t,e){this._audioEngine.canUseWebAudio&&(t.connect(this._webAudioAnalyser),this._webAudioAnalyser.connect(e))},n.prototype.dispose=function(){this._audioEngine.canUseWebAudio&&this._webAudioAnalyser.disconnect()},n}();ue.AudioEngineFactory=function(n){return new Lu(n)};var Lu=function(){function n(t){var e=this;t===void 0&&(t=null),this._audioContext=null,this._audioContextInitialized=!1,this._muteButton=null,this.canUseWebAudio=!1,this.WarnedWebAudioUnsupported=!1,this.isMP3supported=!1,this.isOGGsupported=!1,this.unlocked=!0,this.useCustomUnlockedButton=!1,this.onAudioUnlockedObservable=new J,this.onAudioLockedObservable=new J,this._tryToRun=!1,this._onResize=function(){e._moveButtonToTopLeft()},(typeof window.AudioContext<"u"||typeof window.webkitAudioContext<"u")&&(window.AudioContext=window.AudioContext||window.webkitAudioContext,this.canUseWebAudio=!0);var i=document.createElement("audio");this._hostElement=t;try{i&&i.canPlayType&&(i.canPlayType('audio/mpeg; codecs="mp3"').replace(/^no$/,"")||i.canPlayType("audio/mp3").replace(/^no$/,""))&&(this.isMP3supported=!0)}catch{}try{i&&i.canPlayType&&i.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,"")&&(this.isOGGsupported=!0)}catch{}}return Object.defineProperty(n.prototype,"audioContext",{get:function(){return this._audioContextInitialized?!this.unlocked&&!this._muteButton&&this._displayMuteButton():this._initializeAudioContext(),this._audioContext},enumerable:!1,configurable:!0}),n.prototype.lock=function(){this._triggerSuspendedState()},n.prototype.unlock=function(){this._triggerRunningState()},n.prototype._resumeAudioContext=function(){var t;return this._audioContext.resume!==void 0&&(t=this._audioContext.resume()),t||Promise.resolve()},n.prototype._initializeAudioContext=function(){try{this.canUseWebAudio&&(this._audioContext=new AudioContext,this.masterGain=this._audioContext.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this._audioContext.destination),this._audioContextInitialized=!0,this._audioContext.state==="running"&&this._triggerRunningState())}catch(t){this.canUseWebAudio=!1,Z.Error("Web Audio: "+t.message)}},n.prototype._triggerRunningState=function(){var t=this;this._tryToRun||(this._tryToRun=!0,this._resumeAudioContext().then(function(){t._tryToRun=!1,t._muteButton&&t._hideMuteButton(),t.unlocked=!0,t.onAudioUnlockedObservable.notifyObservers(t)}).catch(function(){t._tryToRun=!1,t.unlocked=!1}))},n.prototype._triggerSuspendedState=function(){this.unlocked=!1,this.onAudioLockedObservable.notifyObservers(this),this._displayMuteButton()},n.prototype._displayMuteButton=function(){var t=this;if(!(this.useCustomUnlockedButton||this._muteButton)){this._muteButton=document.createElement("BUTTON"),this._muteButton.className="babylonUnmuteIcon",this._muteButton.id="babylonUnmuteIconBtn",this._muteButton.title="Unmute";var e=window.SVGSVGElement?"data:image/svg+xml;charset=UTF-8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2239%22%20height%3D%2232%22%20viewBox%3D%220%200%2039%2032%22%3E%3Cpath%20fill%3D%22white%22%20d%3D%22M9.625%2018.938l-0.031%200.016h-4.953q-0.016%200-0.031-0.016v-12.453q0-0.016%200.031-0.016h4.953q0.031%200%200.031%200.016v12.453zM12.125%207.688l8.719-8.703v27.453l-8.719-8.719-0.016-0.047v-9.938zM23.359%207.875l1.406-1.406%204.219%204.203%204.203-4.203%201.422%201.406-4.219%204.219%204.219%204.203-1.484%201.359-4.141-4.156-4.219%204.219-1.406-1.422%204.219-4.203z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E":"https://cdn.babylonjs.com/Assets/audio.png",i=".babylonUnmuteIcon { position: absolute; left: 20px; top: 20px; height: 40px; width: 60px; background-color: rgba(51,51,51,0.7); background-image: url("+e+"); background-size: 80%; background-repeat:no-repeat; background-position: center; background-position-y: 4px; border: none; outline: none; transition: transform 0.125s ease-out; cursor: pointer; z-index: 9999; } .babylonUnmuteIcon:hover { transform: scale(1.05) } .babylonUnmuteIcon:active { background-color: rgba(51,51,51,1) }",r=document.createElement("style");r.appendChild(document.createTextNode(i)),document.getElementsByTagName("head")[0].appendChild(r),document.body.appendChild(this._muteButton),this._moveButtonToTopLeft(),this._muteButton.addEventListener("touchend",function(){t._triggerRunningState()},!0),this._muteButton.addEventListener("click",function(){t._triggerRunningState()},!0),window.addEventListener("resize",this._onResize)}},n.prototype._moveButtonToTopLeft=function(){this._hostElement&&this._muteButton&&(this._muteButton.style.top=this._hostElement.offsetTop+20+"px",this._muteButton.style.left=this._hostElement.offsetLeft+20+"px")},n.prototype._hideMuteButton=function(){this._muteButton&&(document.body.removeChild(this._muteButton),this._muteButton=null)},n.prototype.dispose=function(){this.canUseWebAudio&&this._audioContextInitialized&&(this._connectedAnalyser&&this._audioContext&&(this._connectedAnalyser.stopDebugCanvas(),this._connectedAnalyser.dispose(),this.masterGain.disconnect(),this.masterGain.connect(this._audioContext.destination),this._connectedAnalyser=null),this.masterGain.gain.value=1),this.WarnedWebAudioUnsupported=!1,this._hideMuteButton(),window.removeEventListener("resize",this._onResize),this.onAudioUnlockedObservable.clear(),this.onAudioLockedObservable.clear()},n.prototype.getGlobalVolume=function(){return this.canUseWebAudio&&this._audioContextInitialized?this.masterGain.gain.value:-1},n.prototype.setGlobalVolume=function(t){this.canUseWebAudio&&this._audioContextInitialized&&(this.masterGain.gain.value=t)},n.prototype.connectToAnalyser=function(t){this._connectedAnalyser&&this._connectedAnalyser.stopDebugCanvas(),this.canUseWebAudio&&this._audioContextInitialized&&this._audioContext&&(this._connectedAnalyser=t,this.masterGain.disconnect(),this._connectedAnalyser.connectAudioNodes(this.masterGain,this._audioContext.destination))},n}(),Vu=function(){function n(t,e){e===void 0&&(e={}),this.id=-1,this._isInitialized=!1,this._scene=t,this.soundCollection=new Array,this._options=e,!this._options.mainTrack&&this._scene.soundTracks&&(this._scene.soundTracks.push(this),this.id=this._scene.soundTracks.length-1)}return n.prototype._initializeSoundTrackAudioGraph=function(){ue.audioEngine.canUseWebAudio&&ue.audioEngine.audioContext&&(this._outputAudioNode=ue.audioEngine.audioContext.createGain(),this._outputAudioNode.connect(ue.audioEngine.masterGain),this._options&&this._options.volume&&(this._outputAudioNode.gain.value=this._options.volume),this._isInitialized=!0)},n.prototype.dispose=function(){if(ue.audioEngine&&ue.audioEngine.canUseWebAudio){for(this._connectedAnalyser&&this._connectedAnalyser.stopDebugCanvas();this.soundCollection.length;)this.soundCollection[0].dispose();this._outputAudioNode&&this._outputAudioNode.disconnect(),this._outputAudioNode=null}},n.prototype.addSound=function(t){this._isInitialized||this._initializeSoundTrackAudioGraph(),ue.audioEngine.canUseWebAudio&&this._outputAudioNode&&t.connectToSoundTrackAudioNode(this._outputAudioNode),t.soundTrackId&&(t.soundTrackId===-1?this._scene.mainSoundTrack.removeSound(t):this._scene.soundTracks&&this._scene.soundTracks[t.soundTrackId].removeSound(t)),this.soundCollection.push(t),t.soundTrackId=this.id},n.prototype.removeSound=function(t){var e=this.soundCollection.indexOf(t);e!==-1&&this.soundCollection.splice(e,1)},n.prototype.setVolume=function(t){ue.audioEngine.canUseWebAudio&&this._outputAudioNode&&(this._outputAudioNode.gain.value=t)},n.prototype.switchPanningModelToHRTF=function(){if(ue.audioEngine.canUseWebAudio)for(var t=0;t<this.soundCollection.length;t++)this.soundCollection[t].switchPanningModelToHRTF()},n.prototype.switchPanningModelToEqualPower=function(){if(ue.audioEngine.canUseWebAudio)for(var t=0;t<this.soundCollection.length;t++)this.soundCollection[t].switchPanningModelToEqualPower()},n.prototype.connectToAnalyser=function(t){this._connectedAnalyser&&this._connectedAnalyser.stopDebugCanvas(),this._connectedAnalyser=t,ue.audioEngine.canUseWebAudio&&this._outputAudioNode&&(this._outputAudioNode.disconnect(),this._connectedAnalyser.connectAudioNodes(this._outputAudioNode,ue.audioEngine.masterGain))},n}();ft.AddParser(de.NAME_AUDIO,function(n,t,e,i){var r=[],o;if(e.sounds=e.sounds||[],n.sounds!==void 0&&n.sounds!==null)for(var a=0,s=n.sounds.length;a<s;a++){var l=n.sounds[a];ue.audioEngine.canUseWebAudio?(l.url||(l.url=l.name),r[l.url]?e.sounds.push(Jr.Parse(l,t,i,r[l.url])):(o=Jr.Parse(l,t,i),r[l.url]=o,e.sounds.push(o))):e.sounds.push(new Jr(l.name,null,t))}r=[]});Object.defineProperty(ye.prototype,"mainSoundTrack",{get:function(){var n=this._getComponent(de.NAME_AUDIO);return n||(n=new ii(this),this._addComponent(n)),this._mainSoundTrack||(this._mainSoundTrack=new Vu(this,{mainTrack:!0})),this._mainSoundTrack},enumerable:!0,configurable:!0});ye.prototype.getSoundByName=function(n){var t;for(t=0;t<this.mainSoundTrack.soundCollection.length;t++)if(this.mainSoundTrack.soundCollection[t].name===n)return this.mainSoundTrack.soundCollection[t];if(this.soundTracks){for(var e=0;e<this.soundTracks.length;e++)for(t=0;t<this.soundTracks[e].soundCollection.length;t++)if(this.soundTracks[e].soundCollection[t].name===n)return this.soundTracks[e].soundCollection[t]}return null};Object.defineProperty(ye.prototype,"audioEnabled",{get:function(){var n=this._getComponent(de.NAME_AUDIO);return n||(n=new ii(this),this._addComponent(n)),n.audioEnabled},set:function(n){var t=this._getComponent(de.NAME_AUDIO);t||(t=new ii(this),this._addComponent(t)),n?t.enableAudio():t.disableAudio()},enumerable:!0,configurable:!0});Object.defineProperty(ye.prototype,"headphone",{get:function(){var n=this._getComponent(de.NAME_AUDIO);return n||(n=new ii(this),this._addComponent(n)),n.headphone},set:function(n){var t=this._getComponent(de.NAME_AUDIO);t||(t=new ii(this),this._addComponent(t)),n?t.switchAudioModeForHeadphones():t.switchAudioModeForNormalSpeakers()},enumerable:!0,configurable:!0});Object.defineProperty(ye.prototype,"audioListenerPositionProvider",{get:function(){var n=this._getComponent(de.NAME_AUDIO);return n||(n=new ii(this),this._addComponent(n)),n.audioListenerPositionProvider},set:function(n){var t=this._getComponent(de.NAME_AUDIO);if(t||(t=new ii(this),this._addComponent(t)),typeof n!="function")throw new Error("The value passed to [Scene.audioListenerPositionProvider] must be a function that returns a Vector3");t.audioListenerPositionProvider=n},enumerable:!0,configurable:!0});Object.defineProperty(ye.prototype,"audioPositioningRefreshRate",{get:function(){var n=this._getComponent(de.NAME_AUDIO);return n||(n=new ii(this),this._addComponent(n)),n.audioPositioningRefreshRate},set:function(n){var t=this._getComponent(de.NAME_AUDIO);t||(t=new ii(this),this._addComponent(t)),t.audioPositioningRefreshRate=n},enumerable:!0,configurable:!0});var ii=function(){function n(t){this.name=de.NAME_AUDIO,this._audioEnabled=!0,this._headphone=!1,this.audioPositioningRefreshRate=500,this._audioListenerPositionProvider=null,this._cachedCameraDirection=new _,this._cachedCameraPosition=new _,this._lastCheck=0,this.scene=t,t.soundTracks=new Array,t.sounds=new Array}return Object.defineProperty(n.prototype,"audioEnabled",{get:function(){return this._audioEnabled},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"headphone",{get:function(){return this._headphone},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"audioListenerPositionProvider",{get:function(){return this._audioListenerPositionProvider},set:function(t){this._audioListenerPositionProvider=t},enumerable:!1,configurable:!0}),n.prototype.register=function(){this.scene._afterRenderStage.registerStep(de.STEP_AFTERRENDER_AUDIO,this,this._afterRender)},n.prototype.rebuild=function(){},n.prototype.serialize=function(t){if(t.sounds=[],this.scene.soundTracks)for(var e=0;e<this.scene.soundTracks.length;e++)for(var i=this.scene.soundTracks[e],r=0;r<i.soundCollection.length;r++)t.sounds.push(i.soundCollection[r].serialize())},n.prototype.addFromContainer=function(t){var e=this;t.sounds&&t.sounds.forEach(function(i){i.play(),i.autoplay=!0,e.scene.mainSoundTrack.addSound(i)})},n.prototype.removeFromContainer=function(t,e){var i=this;e===void 0&&(e=!1),t.sounds&&t.sounds.forEach(function(r){r.stop(),r.autoplay=!1,i.scene.mainSoundTrack.removeSound(r),e&&r.dispose()})},n.prototype.dispose=function(){var t=this.scene;if(t._mainSoundTrack&&t.mainSoundTrack.dispose(),t.soundTracks)for(var e=0;e<t.soundTracks.length;e++)t.soundTracks[e].dispose()},n.prototype.disableAudio=function(){var t=this.scene;this._audioEnabled=!1,ue.audioEngine&&ue.audioEngine.audioContext&&ue.audioEngine.audioContext.suspend();var e;for(e=0;e<t.mainSoundTrack.soundCollection.length;e++)t.mainSoundTrack.soundCollection[e].pause();if(t.soundTracks)for(e=0;e<t.soundTracks.length;e++)for(var i=0;i<t.soundTracks[e].soundCollection.length;i++)t.soundTracks[e].soundCollection[i].pause()},n.prototype.enableAudio=function(){var t=this.scene;this._audioEnabled=!0,ue.audioEngine&&ue.audioEngine.audioContext&&ue.audioEngine.audioContext.resume();var e;for(e=0;e<t.mainSoundTrack.soundCollection.length;e++)t.mainSoundTrack.soundCollection[e].isPaused&&t.mainSoundTrack.soundCollection[e].play();if(t.soundTracks)for(e=0;e<t.soundTracks.length;e++)for(var i=0;i<t.soundTracks[e].soundCollection.length;i++)t.soundTracks[e].soundCollection[i].isPaused&&t.soundTracks[e].soundCollection[i].play()},n.prototype.switchAudioModeForHeadphones=function(){var t=this.scene;if(this._headphone=!0,t.mainSoundTrack.switchPanningModelToHRTF(),t.soundTracks)for(var e=0;e<t.soundTracks.length;e++)t.soundTracks[e].switchPanningModelToHRTF()},n.prototype.switchAudioModeForNormalSpeakers=function(){var t=this.scene;if(this._headphone=!1,t.mainSoundTrack.switchPanningModelToEqualPower(),t.soundTracks)for(var e=0;e<t.soundTracks.length;e++)t.soundTracks[e].switchPanningModelToEqualPower()},n.prototype._afterRender=function(){var t=Ir.Now;if(!(this._lastCheck&&t-this._lastCheck<this.audioPositioningRefreshRate)){this._lastCheck=t;var e=this.scene;if(!(!this._audioEnabled||!e._mainSoundTrack||!e.soundTracks||e._mainSoundTrack.soundCollection.length===0&&e.soundTracks.length===1)){var i=ue.audioEngine;if(i&&i.audioContext){if(this._audioListenerPositionProvider){var r=this._audioListenerPositionProvider();r.x=r.x||0,r.y=r.y||0,r.z=r.z||0,i.audioContext.listener.setPosition(r.x,r.y,r.z)}else{var o;if(e.activeCameras&&e.activeCameras.length>0?o=e.activeCameras[0]:o=e.activeCamera,o){this._cachedCameraPosition.equals(o.globalPosition)||(this._cachedCameraPosition.copyFrom(o.globalPosition),i.audioContext.listener.setPosition(o.globalPosition.x,o.globalPosition.y,o.globalPosition.z)),o.rigCameras&&o.rigCameras.length>0&&(o=o.rigCameras[0]);var a=q.Invert(o.getViewMatrix()),s=_.TransformNormal(e.useRightHandedSystem?n._CameraDirectionRH:n._CameraDirectionLH,a);s.normalize(),!isNaN(s.x)&&!isNaN(s.y)&&!isNaN(s.z)&&(this._cachedCameraDirection.equals(s)||(this._cachedCameraDirection.copyFrom(s),i.audioContext.listener.setOrientation(s.x,s.y,s.z,0,1,0)))}else i.audioContext.listener.setPosition(0,0,0)}var l;for(l=0;l<e.mainSoundTrack.soundCollection.length;l++){var u=e.mainSoundTrack.soundCollection[l];u.useCustomAttenuation&&u.updateDistanceFromListener()}if(e.soundTracks)for(l=0;l<e.soundTracks.length;l++)for(var c=0;c<e.soundTracks[l].soundCollection.length;c++)u=e.soundTracks[l].soundCollection[c],u.useCustomAttenuation&&u.updateDistanceFromListener()}}}},n._CameraDirectionLH=new _(0,0,-1),n._CameraDirectionRH=new _(0,0,1),n}();Jr._SceneComponentInitialization=function(n){var t=n._getComponent(de.NAME_AUDIO);t||(t=new ii(n),n._addComponent(t))};var ku=function(){function n(){this._zoomStopsAnimation=!1,this._idleRotationSpeed=.05,this._idleRotationWaitTime=2e3,this._idleRotationSpinupTime=2e3,this._isPointerDown=!1,this._lastFrameTime=null,this._lastInteractionTime=-1/0,this._cameraRotationSpeed=0,this._lastFrameRadius=0}return Object.defineProperty(n.prototype,"name",{get:function(){return"AutoRotation"},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"zoomStopsAnimation",{get:function(){return this._zoomStopsAnimation},set:function(t){this._zoomStopsAnimation=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"idleRotationSpeed",{get:function(){return this._idleRotationSpeed},set:function(t){this._idleRotationSpeed=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"idleRotationWaitTime",{get:function(){return this._idleRotationWaitTime},set:function(t){this._idleRotationWaitTime=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"idleRotationSpinupTime",{get:function(){return this._idleRotationSpinupTime},set:function(t){this._idleRotationSpinupTime=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"rotationInProgress",{get:function(){return Math.abs(this._cameraRotationSpeed)>0},enumerable:!1,configurable:!0}),n.prototype.init=function(){},n.prototype.attach=function(t){var e=this;this._attachedCamera=t;var i=this._attachedCamera.getScene();this._onPrePointerObservableObserver=i.onPrePointerObservable.add(function(r){if(r.type===Ae.POINTERDOWN){e._isPointerDown=!0;return}r.type===Ae.POINTERUP&&(e._isPointerDown=!1)}),this._onAfterCheckInputsObserver=t.onAfterCheckInputsObservable.add(function(){var r=Ir.Now,o=0;e._lastFrameTime!=null&&(o=r-e._lastFrameTime),e._lastFrameTime=r,e._applyUserInteraction();var a=r-e._lastInteractionTime-e._idleRotationWaitTime,s=Math.max(Math.min(a/e._idleRotationSpinupTime,1),0);e._cameraRotationSpeed=e._idleRotationSpeed*s,e._attachedCamera&&(e._attachedCamera.alpha-=e._cameraRotationSpeed*(o/1e3))})},n.prototype.detach=function(){if(this._attachedCamera){var t=this._attachedCamera.getScene();this._onPrePointerObservableObserver&&t.onPrePointerObservable.remove(this._onPrePointerObservableObserver),this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._attachedCamera=null}},n.prototype._userIsZooming=function(){return this._attachedCamera?this._attachedCamera.inertialRadiusOffset!==0:!1},n.prototype._shouldAnimationStopForInteraction=function(){if(!this._attachedCamera)return!1;var t=!1;return this._lastFrameRadius===this._attachedCamera.radius&&this._attachedCamera.inertialRadiusOffset!==0&&(t=!0),this._lastFrameRadius=this._attachedCamera.radius,this._zoomStopsAnimation?t:this._userIsZooming()},n.prototype._applyUserInteraction=function(){this._userIsMoving()&&!this._shouldAnimationStopForInteraction()&&(this._lastInteractionTime=Ir.Now)},n.prototype._userIsMoving=function(){return this._attachedCamera?this._attachedCamera.inertialAlphaOffset!==0||this._attachedCamera.inertialBetaOffset!==0||this._attachedCamera.inertialRadiusOffset!==0||this._attachedCamera.inertialPanningX!==0||this._attachedCamera.inertialPanningY!==0||this._isPointerDown:!1},n}(),zu=function(){function n(){this.transitionDuration=450,this.lowerRadiusTransitionRange=2,this.upperRadiusTransitionRange=-2,this._autoTransitionRange=!1,this._radiusIsAnimating=!1,this._radiusBounceTransition=null,this._animatables=new Array}return Object.defineProperty(n.prototype,"name",{get:function(){return"Bouncing"},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"autoTransitionRange",{get:function(){return this._autoTransitionRange},set:function(t){var e=this;if(this._autoTransitionRange!==t){this._autoTransitionRange=t;var i=this._attachedCamera;i&&(t?this._onMeshTargetChangedObserver=i.onMeshTargetChangedObservable.add(function(r){if(r){r.computeWorldMatrix(!0);var o=r.getBoundingInfo().diagonalLength;e.lowerRadiusTransitionRange=o*.05,e.upperRadiusTransitionRange=o*.05}}):this._onMeshTargetChangedObserver&&i.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver))}},enumerable:!1,configurable:!0}),n.prototype.init=function(){},n.prototype.attach=function(t){var e=this;this._attachedCamera=t,this._onAfterCheckInputsObserver=t.onAfterCheckInputsObservable.add(function(){e._attachedCamera&&(e._isRadiusAtLimit(e._attachedCamera.lowerRadiusLimit)&&e._applyBoundRadiusAnimation(e.lowerRadiusTransitionRange),e._isRadiusAtLimit(e._attachedCamera.upperRadiusLimit)&&e._applyBoundRadiusAnimation(e.upperRadiusTransitionRange))})},n.prototype.detach=function(){this._attachedCamera&&(this._onAfterCheckInputsObserver&&this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._onMeshTargetChangedObserver&&this._attachedCamera.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver),this._attachedCamera=null)},n.prototype._isRadiusAtLimit=function(t){return this._attachedCamera?this._attachedCamera.radius===t&&!this._radiusIsAnimating:!1},n.prototype._applyBoundRadiusAnimation=function(t){var e=this;if(this._attachedCamera){this._radiusBounceTransition||(n.EasingFunction.setEasingMode(n.EasingMode),this._radiusBounceTransition=Be.CreateAnimation("radius",Be.ANIMATIONTYPE_FLOAT,60,n.EasingFunction)),this._cachedWheelPrecision=this._attachedCamera.wheelPrecision,this._attachedCamera.wheelPrecision=1/0,this._attachedCamera.inertialRadiusOffset=0,this.stopAllAnimations(),this._radiusIsAnimating=!0;var i=Be.TransitionTo("radius",this._attachedCamera.radius+t,this._attachedCamera,this._attachedCamera.getScene(),60,this._radiusBounceTransition,this.transitionDuration,function(){return e._clearAnimationLocks()});i&&this._animatables.push(i)}},n.prototype._clearAnimationLocks=function(){this._radiusIsAnimating=!1,this._attachedCamera&&(this._attachedCamera.wheelPrecision=this._cachedWheelPrecision)},n.prototype.stopAllAnimations=function(){for(this._attachedCamera&&(this._attachedCamera.animations=[]);this._animatables.length;)this._animatables[0].onAnimationEnd=null,this._animatables[0].stop(),this._animatables.shift()},n.EasingFunction=new Fu(.3),n.EasingMode=Pt.EASINGMODE_EASEOUT,n}(),Uu=function(){function n(){this._mode=n.FitFrustumSidesMode,this._radiusScale=1,this._positionScale=.5,this._defaultElevation=.3,this._elevationReturnTime=1500,this._elevationReturnWaitTime=1e3,this._zoomStopsAnimation=!1,this._framingTime=1500,this.autoCorrectCameraLimitsAndSensibility=!0,this._isPointerDown=!1,this._lastInteractionTime=-1/0,this._animatables=new Array,this._betaIsAnimating=!1}return Object.defineProperty(n.prototype,"name",{get:function(){return"Framing"},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"mode",{get:function(){return this._mode},set:function(t){this._mode=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"radiusScale",{get:function(){return this._radiusScale},set:function(t){this._radiusScale=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"positionScale",{get:function(){return this._positionScale},set:function(t){this._positionScale=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"defaultElevation",{get:function(){return this._defaultElevation},set:function(t){this._defaultElevation=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"elevationReturnTime",{get:function(){return this._elevationReturnTime},set:function(t){this._elevationReturnTime=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"elevationReturnWaitTime",{get:function(){return this._elevationReturnWaitTime},set:function(t){this._elevationReturnWaitTime=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"zoomStopsAnimation",{get:function(){return this._zoomStopsAnimation},set:function(t){this._zoomStopsAnimation=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"framingTime",{get:function(){return this._framingTime},set:function(t){this._framingTime=t},enumerable:!1,configurable:!0}),n.prototype.init=function(){},n.prototype.attach=function(t){var e=this;this._attachedCamera=t;var i=this._attachedCamera.getScene();n.EasingFunction.setEasingMode(n.EasingMode),this._onPrePointerObservableObserver=i.onPrePointerObservable.add(function(r){if(r.type===Ae.POINTERDOWN){e._isPointerDown=!0;return}r.type===Ae.POINTERUP&&(e._isPointerDown=!1)}),this._onMeshTargetChangedObserver=t.onMeshTargetChangedObservable.add(function(r){r&&e.zoomOnMesh(r)}),this._onAfterCheckInputsObserver=t.onAfterCheckInputsObservable.add(function(){e._applyUserInteraction(),e._maintainCameraAboveGround()})},n.prototype.detach=function(){if(this._attachedCamera){var t=this._attachedCamera.getScene();this._onPrePointerObservableObserver&&t.onPrePointerObservable.remove(this._onPrePointerObservableObserver),this._onAfterCheckInputsObserver&&this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._onMeshTargetChangedObserver&&this._attachedCamera.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver),this._attachedCamera=null}},n.prototype.zoomOnMesh=function(t,e,i){e===void 0&&(e=!1),i===void 0&&(i=null),t.computeWorldMatrix(!0);var r=t.getBoundingInfo().boundingBox;this.zoomOnBoundingInfo(r.minimumWorld,r.maximumWorld,e,i)},n.prototype.zoomOnMeshHierarchy=function(t,e,i){e===void 0&&(e=!1),i===void 0&&(i=null),t.computeWorldMatrix(!0);var r=t.getHierarchyBoundingVectors(!0);this.zoomOnBoundingInfo(r.min,r.max,e,i)},n.prototype.zoomOnMeshesHierarchy=function(t,e,i){e===void 0&&(e=!1),i===void 0&&(i=null);for(var r=new _(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),o=new _(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),a=0;a<t.length;a++){var s=t[a].getHierarchyBoundingVectors(!0);_.CheckExtends(s.min,r,o),_.CheckExtends(s.max,r,o)}this.zoomOnBoundingInfo(r,o,e,i)},n.prototype.zoomOnBoundingInfo=function(t,e,i,r){var o=this;i===void 0&&(i=!1),r===void 0&&(r=null);var a;if(this._attachedCamera){var s=t.y,l=e.y,u=s+(l-s)*this._positionScale,c=e.subtract(t).scale(.5);if(i)a=new _(0,u,0);else{var h=t.add(c);a=new _(h.x,u,h.z)}this._vectorTransition||(this._vectorTransition=Be.CreateAnimation("target",Be.ANIMATIONTYPE_VECTOR3,60,n.EasingFunction)),this._betaIsAnimating=!0;var f=Be.TransitionTo("target",a,this._attachedCamera,this._attachedCamera.getScene(),60,this._vectorTransition,this._framingTime);f&&this._animatables.push(f);var d=0;if(this._mode===n.FitFrustumSidesMode){var p=this._calculateLowerRadiusFromModelBoundingSphere(t,e);this.autoCorrectCameraLimitsAndSensibility&&(this._attachedCamera.lowerRadiusLimit=c.length()+this._attachedCamera.minZ),d=p}else this._mode===n.IgnoreBoundsSizeMode&&(d=this._calculateLowerRadiusFromModelBoundingSphere(t,e),this.autoCorrectCameraLimitsAndSensibility&&this._attachedCamera.lowerRadiusLimit===null&&(this._attachedCamera.lowerRadiusLimit=this._attachedCamera.minZ));if(this.autoCorrectCameraLimitsAndSensibility){var g=e.subtract(t).length();this._attachedCamera.panningSensibility=5e3/g,this._attachedCamera.wheelPrecision=100/d}this._radiusTransition||(this._radiusTransition=Be.CreateAnimation("radius",Be.ANIMATIONTYPE_FLOAT,60,n.EasingFunction)),f=Be.TransitionTo("radius",d,this._attachedCamera,this._attachedCamera.getScene(),60,this._radiusTransition,this._framingTime,function(){o.stopAllAnimations(),r&&r(),o._attachedCamera&&o._attachedCamera.useInputToRestoreState&&o._attachedCamera.storeState()}),f&&this._animatables.push(f)}},n.prototype._calculateLowerRadiusFromModelBoundingSphere=function(t,e){var i=e.subtract(t),r=i.length(),o=this._getFrustumSlope(),a=r*.5,s=a*this._radiusScale,l=s*Math.sqrt(1+1/(o.x*o.x)),u=s*Math.sqrt(1+1/(o.y*o.y)),c=Math.max(l,u),h=this._attachedCamera;return h?(h.lowerRadiusLimit&&this._mode===n.IgnoreBoundsSizeMode&&(c=c<h.lowerRadiusLimit?h.lowerRadiusLimit:c),h.upperRadiusLimit&&(c=c>h.upperRadiusLimit?h.upperRadiusLimit:c),c):0},n.prototype._maintainCameraAboveGround=function(){var t=this;if(!(this._elevationReturnTime<0)){var e=Ir.Now-this._lastInteractionTime,i=Math.PI*.5-this._defaultElevation,r=Math.PI*.5;if(this._attachedCamera&&!this._betaIsAnimating&&this._attachedCamera.beta>r&&e>=this._elevationReturnWaitTime){this._betaIsAnimating=!0,this.stopAllAnimations(),this._betaTransition||(this._betaTransition=Be.CreateAnimation("beta",Be.ANIMATIONTYPE_FLOAT,60,n.EasingFunction));var o=Be.TransitionTo("beta",i,this._attachedCamera,this._attachedCamera.getScene(),60,this._betaTransition,this._elevationReturnTime,function(){t._clearAnimationLocks(),t.stopAllAnimations()});o&&this._animatables.push(o)}}},n.prototype._getFrustumSlope=function(){var t=this._attachedCamera;if(!t)return ae.Zero();var e=t.getScene().getEngine(),i=e.getAspectRatio(t),r=Math.tan(t.fov/2),o=r*i;return new ae(o,r)},n.prototype._clearAnimationLocks=function(){this._betaIsAnimating=!1},n.prototype._applyUserInteraction=function(){this.isUserIsMoving&&(this._lastInteractionTime=Ir.Now,this.stopAllAnimations(),this._clearAnimationLocks())},n.prototype.stopAllAnimations=function(){for(this._attachedCamera&&(this._attachedCamera.animations=[]);this._animatables.length;)this._animatables[0]&&(this._animatables[0].onAnimationEnd=null,this._animatables[0].stop()),this._animatables.shift()},Object.defineProperty(n.prototype,"isUserIsMoving",{get:function(){return this._attachedCamera?this._attachedCamera.inertialAlphaOffset!==0||this._attachedCamera.inertialBetaOffset!==0||this._attachedCamera.inertialRadiusOffset!==0||this._attachedCamera.inertialPanningX!==0||this._attachedCamera.inertialPanningY!==0||this._isPointerDown:!1},enumerable:!1,configurable:!0}),n.EasingFunction=new Bu,n.EasingMode=Pt.EASINGMODE_EASEINOUT,n.IgnoreBoundsSizeMode=0,n.FitFrustumSidesMode=1,n}(),tr=function(){function n(t,e,i,r){e===void 0&&(e=new _),i===void 0&&(i=0),r===void 0&&(r=!1),this.direction=t,this.rotatedDirection=e,this.diff=i,this.ignore=r}return n}(),$m=function(){function n(t){this.ui=t,this.name="AttachToBoxBehavior",this.distanceAwayFromFace=.15,this.distanceAwayFromBottomOfFace=.15,this._faceVectors=[new tr(_.Up()),new tr(_.Down()),new tr(_.Left()),new tr(_.Right()),new tr(_.Forward()),new tr(_.Forward().scaleInPlace(-1))],this._tmpMatrix=new q,this._tmpVector=new _,this._zeroVector=_.Zero(),this._lookAtTmpMatrix=new q}return n.prototype.init=function(){},n.prototype._closestFace=function(t){var e=this;return this._faceVectors.forEach(function(i){e._target.rotationQuaternion||(e._target.rotationQuaternion=te.RotationYawPitchRoll(e._target.rotation.y,e._target.rotation.x,e._target.rotation.z)),e._target.rotationQuaternion.toRotationMatrix(e._tmpMatrix),_.TransformCoordinatesToRef(i.direction,e._tmpMatrix,i.rotatedDirection),i.diff=_.GetAngleBetweenVectors(i.rotatedDirection,t,_.Cross(i.rotatedDirection,t))}),this._faceVectors.reduce(function(i,r){return i.ignore?r:r.ignore||i.diff<r.diff?i:r},this._faceVectors[0])},n.prototype._lookAtToRef=function(t,e,i){e===void 0&&(e=new _(0,1,0)),q.LookAtLHToRef(this._zeroVector,t,e,this._lookAtTmpMatrix),this._lookAtTmpMatrix.invert(),te.FromRotationMatrixToRef(this._lookAtTmpMatrix,i)},n.prototype.attach=function(t){var e=this;this._target=t,this._scene=this._target.getScene(),this._onRenderObserver=this._scene.onBeforeRenderObservable.add(function(){if(e._scene.activeCamera){var i=e._scene.activeCamera.position;e._scene.activeCamera.devicePosition&&(i=e._scene.activeCamera.devicePosition);var r=e._closestFace(i.subtract(t.position));e._scene.activeCamera.leftCamera?e._scene.activeCamera.leftCamera.computeWorldMatrix().getRotationMatrixToRef(e._tmpMatrix):e._scene.activeCamera.computeWorldMatrix().getRotationMatrixToRef(e._tmpMatrix),_.TransformCoordinatesToRef(_.Up(),e._tmpMatrix,e._tmpVector),e._faceVectors.forEach(function(a){r.direction.x&&a.direction.x&&(a.ignore=!0),r.direction.y&&a.direction.y&&(a.ignore=!0),r.direction.z&&a.direction.z&&(a.ignore=!0)});var o=e._closestFace(e._tmpVector);e._faceVectors.forEach(function(a){a.ignore=!1}),e.ui.position.copyFrom(t.position),r.direction.x&&(r.rotatedDirection.scaleToRef(t.scaling.x/2+e.distanceAwayFromFace,e._tmpVector),e.ui.position.addInPlace(e._tmpVector)),r.direction.y&&(r.rotatedDirection.scaleToRef(t.scaling.y/2+e.distanceAwayFromFace,e._tmpVector),e.ui.position.addInPlace(e._tmpVector)),r.direction.z&&(r.rotatedDirection.scaleToRef(t.scaling.z/2+e.distanceAwayFromFace,e._tmpVector),e.ui.position.addInPlace(e._tmpVector)),e.ui.rotationQuaternion||(e.ui.rotationQuaternion=te.RotationYawPitchRoll(e.ui.rotation.y,e.ui.rotation.x,e.ui.rotation.z)),r.rotatedDirection.scaleToRef(-1,e._tmpVector),e._lookAtToRef(e._tmpVector,o.rotatedDirection,e.ui.rotationQuaternion),o.direction.x&&e.ui.up.scaleToRef(e.distanceAwayFromBottomOfFace-t.scaling.x/2,e._tmpVector),o.direction.y&&e.ui.up.scaleToRef(e.distanceAwayFromBottomOfFace-t.scaling.y/2,e._tmpVector),o.direction.z&&e.ui.up.scaleToRef(e.distanceAwayFromBottomOfFace-t.scaling.z/2,e._tmpVector),e.ui.position.addInPlace(e._tmpVector)}})},n.prototype.detach=function(){this._scene.onBeforeRenderObservable.remove(this._onRenderObserver)},n}(),ev=function(){function n(){var t=this;this.delay=0,this.fadeInTime=300,this._millisecondsPerFrame=1e3/60,this._hovered=!1,this._hoverValue=0,this._ownerNode=null,this._update=function(){if(t._ownerNode){if(t._hoverValue+=t._hovered?t._millisecondsPerFrame:-t._millisecondsPerFrame,t._setAllVisibility(t._ownerNode,(t._hoverValue-t.delay)/t.fadeInTime),t._ownerNode.visibility>1){t._setAllVisibility(t._ownerNode,1),t._hoverValue=t.fadeInTime+t.delay;return}else if(t._ownerNode.visibility<0&&(t._setAllVisibility(t._ownerNode,0),t._hoverValue<0)){t._hoverValue=0;return}setTimeout(t._update,t._millisecondsPerFrame)}}}return Object.defineProperty(n.prototype,"name",{get:function(){return"FadeInOut"},enumerable:!1,configurable:!0}),n.prototype.init=function(){},n.prototype.attach=function(t){this._ownerNode=t,this._setAllVisibility(this._ownerNode,0)},n.prototype.detach=function(){this._ownerNode=null},n.prototype.fadeIn=function(t){this._hovered=t,this._update()},n.prototype._setAllVisibility=function(t,e){var i=this;t.visibility=e,t.getChildMeshes().forEach(function(r){i._setAllVisibility(r,e)})},n}(),Ze=function(){function n(t,e,i){i===void 0&&(i=Number.MAX_VALUE),this.origin=t,this.direction=e,this.length=i}return n.prototype.intersectsBoxMinMax=function(t,e,i){i===void 0&&(i=0);var r=n._TmpVector3[0].copyFromFloats(t.x-i,t.y-i,t.z-i),o=n._TmpVector3[1].copyFromFloats(e.x+i,e.y+i,e.z+i),a=0,s=Number.MAX_VALUE,l,u,c,h;if(Math.abs(this.direction.x)<1e-7){if(this.origin.x<r.x||this.origin.x>o.x)return!1}else if(l=1/this.direction.x,u=(r.x-this.origin.x)*l,c=(o.x-this.origin.x)*l,c===-1/0&&(c=1/0),u>c&&(h=u,u=c,c=h),a=Math.max(u,a),s=Math.min(c,s),a>s)return!1;if(Math.abs(this.direction.y)<1e-7){if(this.origin.y<r.y||this.origin.y>o.y)return!1}else if(l=1/this.direction.y,u=(r.y-this.origin.y)*l,c=(o.y-this.origin.y)*l,c===-1/0&&(c=1/0),u>c&&(h=u,u=c,c=h),a=Math.max(u,a),s=Math.min(c,s),a>s)return!1;if(Math.abs(this.direction.z)<1e-7){if(this.origin.z<r.z||this.origin.z>o.z)return!1}else if(l=1/this.direction.z,u=(r.z-this.origin.z)*l,c=(o.z-this.origin.z)*l,c===-1/0&&(c=1/0),u>c&&(h=u,u=c,c=h),a=Math.max(u,a),s=Math.min(c,s),a>s)return!1;return!0},n.prototype.intersectsBox=function(t,e){return e===void 0&&(e=0),this.intersectsBoxMinMax(t.minimum,t.maximum,e)},n.prototype.intersectsSphere=function(t,e){e===void 0&&(e=0);var i=t.center.x-this.origin.x,r=t.center.y-this.origin.y,o=t.center.z-this.origin.z,a=i*i+r*r+o*o,s=t.radius+e,l=s*s;if(a<=l)return!0;var u=i*this.direction.x+r*this.direction.y+o*this.direction.z;if(u<0)return!1;var c=a-u*u;return c<=l},n.prototype.intersectsTriangle=function(t,e,i){var r=n._TmpVector3[0],o=n._TmpVector3[1],a=n._TmpVector3[2],s=n._TmpVector3[3],l=n._TmpVector3[4];e.subtractToRef(t,r),i.subtractToRef(t,o),_.CrossToRef(this.direction,o,a);var u=_.Dot(r,a);if(u===0)return null;var c=1/u;this.origin.subtractToRef(t,s);var h=_.Dot(s,a)*c;if(h<0||h>1)return null;_.CrossToRef(s,r,l);var f=_.Dot(this.direction,l)*c;if(f<0||h+f>1)return null;var d=_.Dot(o,l)*c;return d>this.length?null:new Ql(1-h-f,h,d)},n.prototype.intersectsPlane=function(t){var e,i=_.Dot(t.normal,this.direction);if(Math.abs(i)<999999997475243e-21)return null;var r=_.Dot(t.normal,this.origin);return e=(-t.d-r)/i,e<0?e<-999999997475243e-21?null:0:e},n.prototype.intersectsAxis=function(t,e){switch(e===void 0&&(e=0),t){case"y":var i=(this.origin.y-e)/this.direction.y;return i>0?null:new _(this.origin.x+this.direction.x*-i,e,this.origin.z+this.direction.z*-i);case"x":var i=(this.origin.x-e)/this.direction.x;return i>0?null:new _(e,this.origin.y+this.direction.y*-i,this.origin.z+this.direction.z*-i);case"z":var i=(this.origin.z-e)/this.direction.z;return i>0?null:new _(this.origin.x+this.direction.x*-i,this.origin.y+this.direction.y*-i,e);default:return null}},n.prototype.intersectsMesh=function(t,e){var i=ee.Matrix[0];return t.getWorldMatrix().invertToRef(i),this._tmpRay?n.TransformToRef(this,i,this._tmpRay):this._tmpRay=n.Transform(this,i),t.intersects(this._tmpRay,e)},n.prototype.intersectsMeshes=function(t,e,i){i?i.length=0:i=[];for(var r=0;r<t.length;r++){var o=this.intersectsMesh(t[r],e);o.hit&&i.push(o)}return i.sort(this._comparePickingInfo),i},n.prototype._comparePickingInfo=function(t,e){return t.distance<e.distance?-1:t.distance>e.distance?1:0},n.prototype.intersectionSegment=function(t,e,i){var r=this.origin,o=ee.Vector3[0],a=ee.Vector3[1],s=ee.Vector3[2],l=ee.Vector3[3];e.subtractToRef(t,o),this.direction.scaleToRef(n.rayl,s),r.addToRef(s,a),t.subtractToRef(r,l);var u=_.Dot(o,o),c=_.Dot(o,s),h=_.Dot(s,s),f=_.Dot(o,l),d=_.Dot(s,l),p=u*h-c*c,g,m,v=p,b,C,P=p;p<n.smallnum?(m=0,v=1,C=d,P=h):(m=c*d-h*f,C=u*d-c*f,m<0?(m=0,C=d,P=h):m>v&&(m=v,C=d+c,P=h)),C<0?(C=0,-f<0?m=0:-f>u?m=v:(m=-f,v=u)):C>P&&(C=P,-f+c<0?m=0:-f+c>u?m=v:(m=-f+c,v=u)),g=Math.abs(m)<n.smallnum?0:m/v,b=Math.abs(C)<n.smallnum?0:C/P;var y=ee.Vector3[4];s.scaleToRef(b,y);var x=ee.Vector3[5];o.scaleToRef(g,x),x.addInPlace(l);var E=ee.Vector3[6];x.subtractToRef(y,E);var M=b>0&&b<=this.length&&E.lengthSquared()<i*i;return M?x.length():-1},n.prototype.update=function(t,e,i,r,o,a,s){return this.unprojectRayToRef(t,e,i,r,o,a,s),this},n.Zero=function(){return new n(_.Zero(),_.Zero())},n.CreateNew=function(t,e,i,r,o,a,s){var l=n.Zero();return l.update(t,e,i,r,o,a,s)},n.CreateNewFromTo=function(t,e,i){i===void 0&&(i=q.IdentityReadOnly);var r=e.subtract(t),o=Math.sqrt(r.x*r.x+r.y*r.y+r.z*r.z);return r.normalize(),n.Transform(new n(t,r,o),i)},n.Transform=function(t,e){var i=new n(new _(0,0,0),new _(0,0,0));return n.TransformToRef(t,e,i),i},n.TransformToRef=function(t,e,i){_.TransformCoordinatesToRef(t.origin,e,i.origin),_.TransformNormalToRef(t.direction,e,i.direction),i.length=t.length;var r=i.direction,o=r.length();if(!(o===0||o===1)){var a=1/o;r.x*=a,r.y*=a,r.z*=a,i.length*=o}},n.prototype.unprojectRayToRef=function(t,e,i,r,o,a,s){var l=ee.Matrix[0];o.multiplyToRef(a,l),l.multiplyToRef(s,l),l.invert();var u=ee.Vector3[0];u.x=t/i*2-1,u.y=-(e/r*2-1),u.z=-1;var c=ee.Vector3[1].copyFromFloats(u.x,u.y,1),h=ee.Vector3[2],f=ee.Vector3[3];_._UnprojectFromInvertedMatrixToRef(u,l,h),_._UnprojectFromInvertedMatrixToRef(c,l,f),this.origin.copyFrom(h),f.subtractToRef(h,this.direction),this.direction.normalize()},n._TmpVector3=sn.BuildArray(6,_.Zero),n.smallnum=1e-8,n.rayl=1e9,n}();ye.prototype.createPickingRay=function(n,t,e,i,r){r===void 0&&(r=!1);var o=Ze.Zero();return this.createPickingRayToRef(n,t,e,o,i,r),o};ye.prototype.createPickingRayToRef=function(n,t,e,i,r,o){o===void 0&&(o=!1);var a=this.getEngine();if(!r){if(!this.activeCamera)return this;r=this.activeCamera}var s=r.viewport,l=s.toGlobal(a.getRenderWidth(),a.getRenderHeight());return n=n/a.getHardwareScalingLevel()-l.x,t=t/a.getHardwareScalingLevel()-(a.getRenderHeight()-l.y-l.height),i.update(n,t,l.width,l.height,e||q.IdentityReadOnly,o?q.IdentityReadOnly:r.getViewMatrix(),r.getProjectionMatrix()),this};ye.prototype.createPickingRayInCameraSpace=function(n,t,e){var i=Ze.Zero();return this.createPickingRayInCameraSpaceToRef(n,t,i,e),i};ye.prototype.createPickingRayInCameraSpaceToRef=function(n,t,e,i){if(!Xt)return this;var r=this.getEngine();if(!i){if(!this.activeCamera)throw new Error("Active camera not set");i=this.activeCamera}var o=i.viewport,a=o.toGlobal(r.getRenderWidth(),r.getRenderHeight()),s=q.Identity();return n=n/r.getHardwareScalingLevel()-a.x,t=t/r.getHardwareScalingLevel()-(r.getRenderHeight()-a.y-a.height),e.update(n,t,a.width,a.height,s,s,i.getProjectionMatrix()),this};ye.prototype._internalPickForMesh=function(n,t,e,i,r,o,a,s){var l=t(i),u=e.intersects(l,r,a,o,i,s);return!u||!u.hit||!r&&n!=null&&u.distance>=n.distance?null:u};ye.prototype._internalPick=function(n,t,e,i,r){if(!Xt)return null;for(var o=null,a=0;a<this.meshes.length;a++){var s=this.meshes[a];if(t){if(!t(s))continue}else if(!s.isEnabled()||!s.isVisible||!s.isPickable)continue;var l=s.skeleton&&s.skeleton.overrideMesh?s.skeleton.overrideMesh.getWorldMatrix():s.getWorldMatrix();if(s.hasThinInstances&&s.thinInstanceEnablePicking){var u=this._internalPickForMesh(o,n,s,l,!0,!0,r);if(u){if(i)return o;for(var c=ee.Matrix[1],h=s.thinInstanceGetWorldMatrices(),f=0;f<h.length;f++){var d=h[f];d.multiplyToRef(l,c);var p=this._internalPickForMesh(o,n,s,c,e,i,r,!0);if(p&&(o=p,o.thinInstanceIndex=f,e))return o}}}else{var u=this._internalPickForMesh(o,n,s,l,e,i,r);if(u&&(o=u,e))return o}}return o||new Xt};ye.prototype._internalMultiPick=function(n,t,e){if(!Xt)return null;for(var i=new Array,r=0;r<this.meshes.length;r++){var o=this.meshes[r];if(t){if(!t(o))continue}else if(!o.isEnabled()||!o.isVisible||!o.isPickable)continue;var a=o.skeleton&&o.skeleton.overrideMesh?o.skeleton.overrideMesh.getWorldMatrix():o.getWorldMatrix();if(o.hasThinInstances&&o.thinInstanceEnablePicking){var s=this._internalPickForMesh(null,n,o,a,!0,!0,e);if(s)for(var l=ee.Matrix[1],u=o.thinInstanceGetWorldMatrices(),c=0;c<u.length;c++){var h=u[c];h.multiplyToRef(a,l);var f=this._internalPickForMesh(null,n,o,l,!1,!1,e,!0);f&&(f.thinInstanceIndex=c,i.push(f))}}else{var s=this._internalPickForMesh(null,n,o,a,!1,!1,e);s&&i.push(s)}}return i};ye.prototype.pickWithBoundingInfo=function(n,t,e,i,r){var o=this;if(!Xt)return null;var a=this._internalPick(function(s){return o._tempPickingRay||(o._tempPickingRay=Ze.Zero()),o.createPickingRayToRef(n,t,s,o._tempPickingRay,r||null),o._tempPickingRay},e,i,!0);return a&&(a.ray=this.createPickingRay(n,t,q.Identity(),r||null)),a};ye.prototype.pick=function(n,t,e,i,r,o){var a=this;if(!Xt)return null;var s=this._internalPick(function(l){return a._tempPickingRay||(a._tempPickingRay=Ze.Zero()),a.createPickingRayToRef(n,t,l,a._tempPickingRay,r||null),a._tempPickingRay},e,i,!1,o);return s&&(s.ray=this.createPickingRay(n,t,q.Identity(),r||null)),s};ye.prototype.pickWithRay=function(n,t,e,i){var r=this,o=this._internalPick(function(a){return r._pickWithRayInverseMatrix||(r._pickWithRayInverseMatrix=q.Identity()),a.invertToRef(r._pickWithRayInverseMatrix),r._cachedRayForTransform||(r._cachedRayForTransform=Ze.Zero()),Ze.TransformToRef(n,r._pickWithRayInverseMatrix,r._cachedRayForTransform),r._cachedRayForTransform},t,e,!1,i);return o&&(o.ray=n),o};ye.prototype.multiPick=function(n,t,e,i,r){var o=this;return this._internalMultiPick(function(a){return o.createPickingRay(n,t,a,i||null)},e,r)};ye.prototype.multiPickWithRay=function(n,t,e){var i=this;return this._internalMultiPick(function(r){return i._pickWithRayInverseMatrix||(i._pickWithRayInverseMatrix=q.Identity()),r.invertToRef(i._pickWithRayInverseMatrix),i._cachedRayForTransform||(i._cachedRayForTransform=Ze.Zero()),Ze.TransformToRef(n,i._pickWithRayInverseMatrix,i._cachedRayForTransform),i._cachedRayForTransform},t,e)};Me.prototype.getForwardRay=function(n,t,e){return n===void 0&&(n=100),this.getForwardRayToRef(new Ze(_.Zero(),_.Zero(),n),n,t,e)};Me.prototype.getForwardRayToRef=function(n,t,e,i){return t===void 0&&(t=100),e||(e=this.getWorldMatrix()),n.length=t,i?n.origin.copyFrom(i):n.origin.copyFrom(this.position),ee.Vector3[2].set(0,0,this._scene.useRightHandedSystem?-1:1),_.TransformNormalToRef(ee.Vector3[2],e,ee.Vector3[3]),_.NormalizeToRef(ee.Vector3[3],n.direction),n};var Et=function(){function n(){}return n._RemoveAndStorePivotPoint=function(t){t&&n._PivotCached===0&&(t.getPivotPointToRef(n._OldPivotPoint),n._PivotPostMultiplyPivotMatrix=t._postMultiplyPivotMatrix,n._OldPivotPoint.equalsToFloats(0,0,0)||(t.setPivotMatrix(q.IdentityReadOnly),n._OldPivotPoint.subtractToRef(t.getPivotPoint(),n._PivotTranslation),n._PivotTmpVector.copyFromFloats(1,1,1),n._PivotTmpVector.subtractInPlace(t.scaling),n._PivotTmpVector.multiplyInPlace(n._PivotTranslation),t.position.addInPlace(n._PivotTmpVector))),n._PivotCached++},n._RestorePivotPoint=function(t){t&&!n._OldPivotPoint.equalsToFloats(0,0,0)&&n._PivotCached===1&&(t.setPivotPoint(n._OldPivotPoint),t._postMultiplyPivotMatrix=n._PivotPostMultiplyPivotMatrix,n._PivotTmpVector.copyFromFloats(1,1,1),n._PivotTmpVector.subtractInPlace(t.scaling),n._PivotTmpVector.multiplyInPlace(n._PivotTranslation),t.position.subtractInPlace(n._PivotTmpVector)),this._PivotCached--},n._PivotCached=0,n._OldPivotPoint=new _,n._PivotTranslation=new _,n._PivotTmpVector=new _,n._PivotPostMultiplyPivotMatrix=!1,n}();ce.CreatePlane=function(n){var t=[],e=[],i=[],r=[],o=n.width||n.size||1,a=n.height||n.size||1,s=n.sideOrientation===0?0:n.sideOrientation||ce.DEFAULTSIDE,l=o/2,u=a/2;e.push(-l,-u,0),i.push(0,0,-1),r.push(0,0),e.push(l,-u,0),i.push(0,0,-1),r.push(1,0),e.push(l,u,0),i.push(0,0,-1),r.push(1,1),e.push(-l,u,0),i.push(0,0,-1),r.push(0,1),t.push(0),t.push(1),t.push(2),t.push(0),t.push(2),t.push(3),ce._ComputeSides(s,e,t,i,r,n.frontUVs,n.backUVs);var c=new ce;return c.indices=t,c.positions=e,c.normals=i,c.uvs=r,c};O.CreatePlane=function(n,t,e,i,r){var o={size:t,width:t,height:t,sideOrientation:r,updatable:i};return Oo.CreatePlane(n,o,e)};var Oo=function(){function n(){}return n.CreatePlane=function(t,e,i){i===void 0&&(i=null);var r=new O(t,i);e.sideOrientation=O._GetDefaultSideOrientation(e.sideOrientation),r._originalBuilderSideOrientation=e.sideOrientation;var o=ce.CreatePlane(e);return o.applyToMesh(r,e.updatable),e.sourcePlane&&(r.translate(e.sourcePlane.normal,-e.sourcePlane.d),r.setDirection(e.sourcePlane.normal.scale(-1))),r},n}(),yi=function(){function n(t){this._useAlternatePickedPointAboveMaxDragAngleDragSpeed=-1.1,this.maxDragAngle=0,this._useAlternatePickedPointAboveMaxDragAngle=!1,this.currentDraggingPointerID=-1,this.dragging=!1,this.dragDeltaRatio=.2,this.updateDragPlane=!0,this._debugMode=!1,this._moving=!1,this.onDragObservable=new J,this.onDragStartObservable=new J,this.onDragEndObservable=new J,this.moveAttached=!0,this.enabled=!0,this.startAndReleaseDragOnPointerEvents=!0,this.detachCameraControls=!0,this.useObjectOrientationForDragging=!0,this.validateDrag=function(i){return!0},this._tmpVector=new _(0,0,0),this._alternatePickedPoint=new _(0,0,0),this._worldDragAxis=new _(0,0,0),this._targetPosition=new _(0,0,0),this._attachedToElement=!1,this._startDragRay=new Ze(new _,new _),this._lastPointerRay={},this._dragDelta=new _,this._pointA=new _(0,0,0),this._pointC=new _(0,0,0),this._localAxis=new _(0,0,0),this._lookAt=new _(0,0,0),this._options=t||{};var e=0;if(this._options.dragAxis&&e++,this._options.dragPlaneNormal&&e++,e>1)throw"Multiple drag modes specified in dragBehavior options. Only one expected"}return Object.defineProperty(n.prototype,"options",{get:function(){return this._options},set:function(t){this._options=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"name",{get:function(){return"PointerDrag"},enumerable:!1,configurable:!0}),n.prototype.init=function(){},n.prototype.attach=function(t,e){var i=this;this._scene=t.getScene(),this.attachedNode=t,n._planeScene||(this._debugMode?n._planeScene=this._scene:(n._planeScene=new ye(this._scene.getEngine(),{virtual:!0}),n._planeScene.detachControl(),this._scene.onDisposeObservable.addOnce(function(){n._planeScene.dispose(),n._planeScene=null}))),this._dragPlane=O.CreatePlane("pointerDragPlane",this._debugMode?1:1e4,n._planeScene,!1,O.DOUBLESIDE),this.lastDragPosition=new _(0,0,0);var r=e||function(o){return i.attachedNode==o||o.isDescendantOf(i.attachedNode)};this._pointerObserver=this._scene.onPointerObservable.add(function(o,a){if(i.enabled){if(o.type==Ae.POINTERDOWN)i.startAndReleaseDragOnPointerEvents&&!i.dragging&&o.pickInfo&&o.pickInfo.hit&&o.pickInfo.pickedMesh&&o.pickInfo.pickedPoint&&o.pickInfo.ray&&r(o.pickInfo.pickedMesh)&&i._startDrag(o.event.pointerId,o.pickInfo.ray,o.pickInfo.pickedPoint);else if(o.type==Ae.POINTERUP)i.startAndReleaseDragOnPointerEvents&&i.currentDraggingPointerID==o.event.pointerId&&i.releaseDrag();else if(o.type==Ae.POINTERMOVE){var s=o.event.pointerId;if(i.currentDraggingPointerID===n._AnyMouseID&&s!==n._AnyMouseID){var l=o.event,u=l.pointerType==="mouse"||!i._scene.getEngine().hostInformation.isMobile&&l instanceof MouseEvent;u&&(i._lastPointerRay[i.currentDraggingPointerID]&&(i._lastPointerRay[s]=i._lastPointerRay[i.currentDraggingPointerID],delete i._lastPointerRay[i.currentDraggingPointerID]),i.currentDraggingPointerID=s)}i._lastPointerRay[s]||(i._lastPointerRay[s]=new Ze(new _,new _)),o.pickInfo&&o.pickInfo.ray&&(i._lastPointerRay[s].origin.copyFrom(o.pickInfo.ray.origin),i._lastPointerRay[s].direction.copyFrom(o.pickInfo.ray.direction),i.currentDraggingPointerID==s&&i.dragging&&i._moveDrag(o.pickInfo.ray))}}}),this._beforeRenderObserver=this._scene.onBeforeRenderObservable.add(function(){i._moving&&i.moveAttached&&(Et._RemoveAndStorePivotPoint(i.attachedNode),i._targetPosition.subtractToRef(i.attachedNode.absolutePosition,i._tmpVector),i._tmpVector.scaleInPlace(i.dragDeltaRatio),i.attachedNode.getAbsolutePosition().addToRef(i._tmpVector,i._tmpVector),i.validateDrag(i._tmpVector)&&i.attachedNode.setAbsolutePosition(i._tmpVector),Et._RestorePivotPoint(i.attachedNode))})},n.prototype.releaseDrag=function(){if(this.dragging&&(this.dragging=!1,this.onDragEndObservable.notifyObservers({dragPlanePoint:this.lastDragPosition,pointerId:this.currentDraggingPointerID})),this.currentDraggingPointerID=-1,this._moving=!1,this.detachCameraControls&&this._attachedToElement&&this._scene.activeCamera&&!this._scene.activeCamera.leftCamera){if(this._scene.activeCamera.getClassName()==="ArcRotateCamera"){var t=this._scene.activeCamera;t.attachControl(t.inputs?t.inputs.noPreventDefault:!0,t._useCtrlForPanning,t._panningMouseButton)}else this._scene.activeCamera.attachControl(this._scene.activeCamera.inputs?this._scene.activeCamera.inputs.noPreventDefault:!0);this._attachedToElement=!1}},n.prototype.startDrag=function(t,e,i){t===void 0&&(t=n._AnyMouseID),this._startDrag(t,e,i);var r=this._lastPointerRay[t];t===n._AnyMouseID&&(r=this._lastPointerRay[Object.keys(this._lastPointerRay)[0]]),r&&this._moveDrag(r)},n.prototype._startDrag=function(t,e,i){if(!(!this._scene.activeCamera||this.dragging||!this.attachedNode)){Et._RemoveAndStorePivotPoint(this.attachedNode),e?(this._startDragRay.direction.copyFrom(e.direction),this._startDragRay.origin.copyFrom(e.origin)):(this._startDragRay.origin.copyFrom(this._scene.activeCamera.position),this.attachedNode.getWorldMatrix().getTranslationToRef(this._tmpVector),this._tmpVector.subtractToRef(this._scene.activeCamera.position,this._startDragRay.direction)),this._updateDragPlanePosition(this._startDragRay,i||this._tmpVector);var r=this._pickWithRayOnDragPlane(this._startDragRay);r&&(this.dragging=!0,this.currentDraggingPointerID=t,this.lastDragPosition.copyFrom(r),this.onDragStartObservable.notifyObservers({dragPlanePoint:r,pointerId:this.currentDraggingPointerID}),this._targetPosition.copyFrom(this.attachedNode.absolutePosition),this.detachCameraControls&&this._scene.activeCamera&&this._scene.activeCamera.inputs&&!this._scene.activeCamera.leftCamera&&(this._scene.activeCamera.inputs.attachedToElement?(this._scene.activeCamera.detachControl(),this._attachedToElement=!0):this._attachedToElement=!1)),Et._RestorePivotPoint(this.attachedNode)}},n.prototype._moveDrag=function(t){this._moving=!0;var e=this._pickWithRayOnDragPlane(t);if(e){this.updateDragPlane&&this._updateDragPlanePosition(t,e);var i=0;this._options.dragAxis?(this.useObjectOrientationForDragging?_.TransformCoordinatesToRef(this._options.dragAxis,this.attachedNode.getWorldMatrix().getRotationMatrix(),this._worldDragAxis):this._worldDragAxis.copyFrom(this._options.dragAxis),e.subtractToRef(this.lastDragPosition,this._tmpVector),i=_.Dot(this._tmpVector,this._worldDragAxis),this._worldDragAxis.scaleToRef(i,this._dragDelta)):(i=this._dragDelta.length(),e.subtractToRef(this.lastDragPosition,this._dragDelta)),this._targetPosition.addInPlace(this._dragDelta),this.onDragObservable.notifyObservers({dragDistance:i,delta:this._dragDelta,dragPlanePoint:e,dragPlaneNormal:this._dragPlane.forward,pointerId:this.currentDraggingPointerID}),this.lastDragPosition.copyFrom(e)}},n.prototype._pickWithRayOnDragPlane=function(t){var e=this;if(!t)return null;var i=Math.acos(_.Dot(this._dragPlane.forward,t.direction));if(i>Math.PI/2&&(i=Math.PI-i),this.maxDragAngle>0&&i>this.maxDragAngle)if(this._useAlternatePickedPointAboveMaxDragAngle){this._tmpVector.copyFrom(t.direction),this.attachedNode.absolutePosition.subtractToRef(t.origin,this._alternatePickedPoint),this._alternatePickedPoint.normalize(),this._alternatePickedPoint.scaleInPlace(this._useAlternatePickedPointAboveMaxDragAngleDragSpeed*_.Dot(this._alternatePickedPoint,this._tmpVector)),this._tmpVector.addInPlace(this._alternatePickedPoint);var r=_.Dot(this._dragPlane.forward,this._tmpVector);return this._dragPlane.forward.scaleToRef(-r,this._alternatePickedPoint),this._alternatePickedPoint.addInPlace(this._tmpVector),this._alternatePickedPoint.addInPlace(this.attachedNode.absolutePosition),this._alternatePickedPoint}else return null;var o=n._planeScene.pickWithRay(t,function(a){return a==e._dragPlane});return o&&o.hit&&o.pickedMesh&&o.pickedPoint?o.pickedPoint:null},n.prototype._updateDragPlanePosition=function(t,e){this._pointA.copyFrom(e),this._options.dragAxis?(this.useObjectOrientationForDragging?_.TransformCoordinatesToRef(this._options.dragAxis,this.attachedNode.getWorldMatrix().getRotationMatrix(),this._localAxis):this._localAxis.copyFrom(this._options.dragAxis),t.origin.subtractToRef(this._pointA,this._pointC),this._pointC.normalize(),Math.abs(_.Dot(this._localAxis,this._pointC))>.999?Math.abs(_.Dot(_.UpReadOnly,this._pointC))>.999?this._lookAt.copyFrom(_.Right()):this._lookAt.copyFrom(_.UpReadOnly):(_.CrossToRef(this._localAxis,this._pointC,this._lookAt),_.CrossToRef(this._localAxis,this._lookAt,this._lookAt),this._lookAt.normalize()),this._dragPlane.position.copyFrom(this._pointA),this._pointA.addToRef(this._lookAt,this._lookAt),this._dragPlane.lookAt(this._lookAt)):this._options.dragPlaneNormal?(this.useObjectOrientationForDragging?_.TransformCoordinatesToRef(this._options.dragPlaneNormal,this.attachedNode.getWorldMatrix().getRotationMatrix(),this._localAxis):this._localAxis.copyFrom(this._options.dragPlaneNormal),this._dragPlane.position.copyFrom(this._pointA),this._pointA.addToRef(this._localAxis,this._lookAt),this._dragPlane.lookAt(this._lookAt)):(this._dragPlane.position.copyFrom(this._pointA),this._dragPlane.lookAt(t.origin)),this._dragPlane.position.copyFrom(this.attachedNode.absolutePosition),this._dragPlane.computeWorldMatrix(!0)},n.prototype.detach=function(){this._pointerObserver&&this._scene.onPointerObservable.remove(this._pointerObserver),this._beforeRenderObserver&&this._scene.onBeforeRenderObservable.remove(this._beforeRenderObserver),this.releaseDrag()},n._AnyMouseID=-2,n}(),tv=function(){function n(){this._startDistance=0,this._initialScale=new _(0,0,0),this._targetScale=new _(0,0,0),this._sceneRenderObserver=null,this._dragBehaviorA=new yi({}),this._dragBehaviorA.moveAttached=!1,this._dragBehaviorB=new yi({}),this._dragBehaviorB.moveAttached=!1}return Object.defineProperty(n.prototype,"name",{get:function(){return"MultiPointerScale"},enumerable:!1,configurable:!0}),n.prototype.init=function(){},n.prototype._getCurrentDistance=function(){return this._dragBehaviorA.lastDragPosition.subtract(this._dragBehaviorB.lastDragPosition).length()},n.prototype.attach=function(t){var e=this;this._ownerNode=t,this._dragBehaviorA.onDragStartObservable.add(function(i){e._dragBehaviorA.dragging&&e._dragBehaviorB.dragging&&(e._dragBehaviorA.currentDraggingPointerID==e._dragBehaviorB.currentDraggingPointerID?e._dragBehaviorA.releaseDrag():(e._initialScale.copyFrom(t.scaling),e._startDistance=e._getCurrentDistance()))}),this._dragBehaviorB.onDragStartObservable.add(function(i){e._dragBehaviorA.dragging&&e._dragBehaviorB.dragging&&(e._dragBehaviorA.currentDraggingPointerID==e._dragBehaviorB.currentDraggingPointerID?e._dragBehaviorB.releaseDrag():(e._initialScale.copyFrom(t.scaling),e._startDistance=e._getCurrentDistance()))}),[this._dragBehaviorA,this._dragBehaviorB].forEach(function(i){i.onDragObservable.add(function(){if(e._dragBehaviorA.dragging&&e._dragBehaviorB.dragging){var r=e._getCurrentDistance()/e._startDistance;e._initialScale.scaleToRef(r,e._targetScale)}})}),t.addBehavior(this._dragBehaviorA),t.addBehavior(this._dragBehaviorB),this._sceneRenderObserver=t.getScene().onBeforeRenderObservable.add(function(){if(e._dragBehaviorA.dragging&&e._dragBehaviorB.dragging){var i=e._targetScale.subtract(t.scaling).scaleInPlace(.1);i.length()>.01&&t.scaling.addInPlace(i)}})},n.prototype.detach=function(){var t=this;this._ownerNode.getScene().onBeforeRenderObservable.remove(this._sceneRenderObserver),[this._dragBehaviorA,this._dragBehaviorB].forEach(function(e){e.onDragStartObservable.clear(),e.onDragObservable.clear(),t._ownerNode.removeBehavior(e)})},n}(),Gu=function(){function n(){this._sceneRenderObserver=null,this._targetPosition=new _(0,0,0),this._moving=!1,this._startingOrientation=new te,this._attachedToElement=!1,this.zDragFactor=3,this.rotateDraggedObject=!0,this.dragging=!1,this.dragDeltaRatio=.2,this.currentDraggingPointerID=-1,this.detachCameraControls=!0,this.onDragStartObservable=new J,this.onDragObservable=new J,this.onDragEndObservable=new J}return Object.defineProperty(n.prototype,"name",{get:function(){return"SixDofDrag"},enumerable:!1,configurable:!0}),n.prototype.init=function(){},Object.defineProperty(n.prototype,"_pointerCamera",{get:function(){return this._scene.cameraToUseForPointers?this._scene.cameraToUseForPointers:this._scene.activeCamera},enumerable:!1,configurable:!0}),n.prototype.attach=function(t){var e=this;this._ownerNode=t,this._scene=this._ownerNode.getScene(),n._virtualScene||(n._virtualScene=new ye(this._scene.getEngine(),{virtual:!0}),n._virtualScene.detachControl(),this._scene.getEngine().scenes.pop());var i=null,r=new _(0,0,0);this._virtualOriginMesh=new Ue("",n._virtualScene),this._virtualOriginMesh.rotationQuaternion=new te,this._virtualDragMesh=new Ue("",n._virtualScene),this._virtualDragMesh.rotationQuaternion=new te;var o=function(s){return e._ownerNode==s||s.isDescendantOf(e._ownerNode)};this._pointerObserver=this._scene.onPointerObservable.add(function(s,l){if(s.type==Ae.POINTERDOWN){if(!e.dragging&&s.pickInfo&&s.pickInfo.hit&&s.pickInfo.pickedMesh&&s.pickInfo.ray&&o(s.pickInfo.pickedMesh)){e._pointerCamera&&e._pointerCamera.cameraRigMode==Me.RIG_MODE_NONE&&s.pickInfo.ray.origin.copyFrom(e._pointerCamera.globalPosition),i=e._ownerNode,Et._RemoveAndStorePivotPoint(i),r.copyFrom(s.pickInfo.ray.origin),e._virtualOriginMesh.position.copyFrom(s.pickInfo.ray.origin),e._virtualOriginMesh.lookAt(s.pickInfo.ray.origin.add(s.pickInfo.ray.direction)),e._virtualOriginMesh.removeChild(e._virtualDragMesh),i.computeWorldMatrix(),e._virtualDragMesh.position.copyFrom(i.absolutePosition),i.rotationQuaternion||(i.rotationQuaternion=te.RotationYawPitchRoll(i.rotation.y,i.rotation.x,i.rotation.z));var u=i.parent;i.setParent(null),e._virtualDragMesh.rotationQuaternion.copyFrom(i.rotationQuaternion),i.setParent(u),e._virtualOriginMesh.addChild(e._virtualDragMesh),e._targetPosition.copyFrom(e._virtualDragMesh.absolutePosition),e.dragging=!0,e.currentDraggingPointerID=s.event.pointerId,e.detachCameraControls&&e._pointerCamera&&!e._pointerCamera.leftCamera&&(e._pointerCamera.inputs.attachedToElement?(e._pointerCamera.detachControl(),e._attachedToElement=!0):e._attachedToElement=!1),Et._RestorePivotPoint(i),e.onDragStartObservable.notifyObservers({})}}else if(s.type==Ae.POINTERUP||s.type==Ae.POINTERDOUBLETAP)e.currentDraggingPointerID==s.event.pointerId&&(e.dragging=!1,e._moving=!1,e.currentDraggingPointerID=-1,i=null,e._virtualOriginMesh.removeChild(e._virtualDragMesh),e.detachCameraControls&&e._attachedToElement&&e._pointerCamera&&!e._pointerCamera.leftCamera&&(e._pointerCamera.attachControl(!0),e._attachedToElement=!1),e.onDragEndObservable.notifyObservers({}));else if(s.type==Ae.POINTERMOVE&&e.currentDraggingPointerID==s.event.pointerId&&e.dragging&&s.pickInfo&&s.pickInfo.ray&&i){var c=e.zDragFactor;e._pointerCamera&&e._pointerCamera.cameraRigMode==Me.RIG_MODE_NONE&&(s.pickInfo.ray.origin.copyFrom(e._pointerCamera.globalPosition),c=0);var h=s.pickInfo.ray.origin.subtract(r);r.copyFrom(s.pickInfo.ray.origin);var f=-_.Dot(h,s.pickInfo.ray.direction);e._virtualOriginMesh.addChild(e._virtualDragMesh),e._virtualDragMesh.position.z-=e._virtualDragMesh.position.z<1?f*e.zDragFactor:f*c*e._virtualDragMesh.position.z,e._virtualDragMesh.position.z<0&&(e._virtualDragMesh.position.z=0),e._virtualOriginMesh.position.copyFrom(s.pickInfo.ray.origin),e._virtualOriginMesh.lookAt(s.pickInfo.ray.origin.add(s.pickInfo.ray.direction)),e._virtualOriginMesh.removeChild(e._virtualDragMesh),e._targetPosition.copyFrom(e._virtualDragMesh.absolutePosition),i.parent&&_.TransformCoordinatesToRef(e._targetPosition,q.Invert(i.parent.getWorldMatrix()),e._targetPosition),e._moving||e._startingOrientation.copyFrom(e._virtualDragMesh.rotationQuaternion),e._moving=!0}});var a=new te;this._sceneRenderObserver=t.getScene().onBeforeRenderObservable.add(function(){if(e.dragging&&e._moving&&i){if(Et._RemoveAndStorePivotPoint(i),i.position.addInPlace(e._targetPosition.subtract(i.position).scale(e.dragDeltaRatio)),e.rotateDraggedObject){a.copyFrom(e._startingOrientation),a.x=-a.x,a.y=-a.y,a.z=-a.z,e._virtualDragMesh.rotationQuaternion.multiplyToRef(a,a),te.RotationYawPitchRollToRef(a.toEulerAngles("xyz").y,0,0,a),a.multiplyToRef(e._startingOrientation,a);var s=i.parent;(!s||s.scaling&&!s.scaling.isNonUniformWithinEpsilon(.001))&&(i.setParent(null),te.SlerpToRef(i.rotationQuaternion,a,e.dragDeltaRatio,i.rotationQuaternion),i.setParent(s))}Et._RestorePivotPoint(i),e.onDragObservable.notifyObservers()}})},n.prototype.detach=function(){this._scene&&(this.detachCameraControls&&this._attachedToElement&&this._pointerCamera&&!this._pointerCamera.leftCamera&&(this._pointerCamera.attachControl(!0),this._attachedToElement=!1),this._scene.onPointerObservable.remove(this._pointerObserver)),this._ownerNode&&this._ownerNode.getScene().onBeforeRenderObservable.remove(this._sceneRenderObserver),this._virtualOriginMesh&&this._virtualOriginMesh.dispose(),this._virtualDragMesh&&this._virtualDragMesh.dispose(),this.onDragEndObservable.clear(),this.onDragObservable.clear(),this.onDragStartObservable.clear()},n}(),iv=function(){function n(t,e,i){if(this.targetPosition=_.Zero(),this.poleTargetPosition=_.Zero(),this.poleTargetLocalOffset=_.Zero(),this.poleAngle=0,this.slerpAmount=1,this._bone1Quat=te.Identity(),this._bone1Mat=q.Identity(),this._bone2Ang=Math.PI,this._maxAngle=Math.PI,this._rightHandedSystem=!1,this._bendAxis=_.Right(),this._slerping=!1,this._adjustRoll=0,this._bone2=e,this._bone1=e.getParent(),!!this._bone1){this.mesh=t;var r=e.getPosition();if(e.getAbsoluteTransform().determinant()>0&&(this._rightHandedSystem=!0,this._bendAxis.x=0,this._bendAxis.y=0,this._bendAxis.z=-1,r.x>r.y&&r.x>r.z&&(this._adjustRoll=Math.PI*.5,this._bendAxis.z=1)),this._bone1.length){var o=this._bone1.getScale(),a=this._bone2.getScale();this._bone1Length=this._bone1.length*o.y*this.mesh.scaling.y,this._bone2Length=this._bone2.length*a.y*this.mesh.scaling.y}else if(this._bone1.children[0]){t.computeWorldMatrix(!0);var s=this._bone2.children[0].getAbsolutePosition(t),l=this._bone2.getAbsolutePosition(t),u=this._bone1.getAbsolutePosition(t);this._bone1Length=_.Distance(s,l),this._bone2Length=_.Distance(l,u)}this._bone1.getRotationMatrixToRef(lt.WORLD,t,this._bone1Mat),this.maxAngle=Math.PI,i&&(i.targetMesh&&(this.targetMesh=i.targetMesh,this.targetMesh.computeWorldMatrix(!0)),i.poleTargetMesh?(this.poleTargetMesh=i.poleTargetMesh,this.poleTargetMesh.computeWorldMatrix(!0)):i.poleTargetBone?this.poleTargetBone=i.poleTargetBone:this._bone1.getParent()&&(this.poleTargetBone=this._bone1.getParent()),i.poleTargetLocalOffset&&this.poleTargetLocalOffset.copyFrom(i.poleTargetLocalOffset),i.poleAngle&&(this.poleAngle=i.poleAngle),i.bendAxis&&this._bendAxis.copyFrom(i.bendAxis),i.maxAngle&&(this.maxAngle=i.maxAngle),i.slerpAmount&&(this.slerpAmount=i.slerpAmount))}}return Object.defineProperty(n.prototype,"maxAngle",{get:function(){return this._maxAngle},set:function(t){this._setMaxAngle(t)},enumerable:!1,configurable:!0}),n.prototype._setMaxAngle=function(t){t<0&&(t=0),(t>Math.PI||t==null)&&(t=Math.PI),this._maxAngle=t;var e=this._bone1Length,i=this._bone2Length;this._maxReach=Math.sqrt(e*e+i*i-2*e*i*Math.cos(t))},n.prototype.update=function(){var t=this._bone1;if(t){var e=this.targetPosition,i=this.poleTargetPosition,r=n._tmpMats[0],o=n._tmpMats[1];this.targetMesh&&e.copyFrom(this.targetMesh.getAbsolutePosition()),this.poleTargetBone?this.poleTargetBone.getAbsolutePositionFromLocalToRef(this.poleTargetLocalOffset,this.mesh,i):this.poleTargetMesh&&_.TransformCoordinatesToRef(this.poleTargetLocalOffset,this.poleTargetMesh.getWorldMatrix(),i);var a=n._tmpVecs[0],s=n._tmpVecs[1],l=n._tmpVecs[2],u=n._tmpVecs[3],c=n._tmpVecs[4],h=n._tmpQuat;t.getAbsolutePositionToRef(this.mesh,a),i.subtractToRef(a,c),c.x==0&&c.y==0&&c.z==0?c.y=1:c.normalize(),e.subtractToRef(a,u),u.normalize(),_.CrossToRef(u,c,s),s.normalize(),_.CrossToRef(u,s,l),l.normalize(),q.FromXYZAxesToRef(l,u,s,r);var f=this._bone1Length,d=this._bone2Length,p=_.Distance(a,e);this._maxReach>0&&(p=Math.min(this._maxReach,p));var g=(d*d+p*p-f*f)/(2*d*p),m=(p*p+f*f-d*d)/(2*p*f);g>1&&(g=1),m>1&&(m=1),g<-1&&(g=-1),m<-1&&(m=-1);var v=Math.acos(g),b=Math.acos(m),C=-v-b;if(this._rightHandedSystem)q.RotationYawPitchRollToRef(0,0,this._adjustRoll,o),o.multiplyToRef(r,r),q.RotationAxisToRef(this._bendAxis,b,o),o.multiplyToRef(r,r);else{var P=n._tmpVecs[5];P.copyFrom(this._bendAxis),P.x*=-1,q.RotationAxisToRef(P,-b,o),o.multiplyToRef(r,r)}this.poleAngle&&(q.RotationAxisToRef(u,this.poleAngle,o),r.multiplyToRef(o,r)),this._bone1&&(this.slerpAmount<1?(this._slerping||te.FromRotationMatrixToRef(this._bone1Mat,this._bone1Quat),te.FromRotationMatrixToRef(r,h),te.SlerpToRef(this._bone1Quat,h,this.slerpAmount,this._bone1Quat),C=this._bone2Ang*(1-this.slerpAmount)+C*this.slerpAmount,this._bone1.setRotationQuaternion(this._bone1Quat,lt.WORLD,this.mesh),this._slerping=!0):(this._bone1.setRotationMatrix(r,lt.WORLD,this.mesh),this._bone1Mat.copyFrom(r),this._slerping=!1)),this._bone2.setAxisAngle(this._bendAxis,C,lt.LOCAL),this._bone2Ang=C}},n._tmpVecs=[_.Zero(),_.Zero(),_.Zero(),_.Zero(),_.Zero(),_.Zero()],n._tmpQuat=te.Identity(),n._tmpMats=[q.Identity(),q.Identity()],n}(),rv=function(){function n(t,e,i,r){if(this.upAxis=_.Up(),this.upAxisSpace=lt.LOCAL,this.adjustYaw=0,this.adjustPitch=0,this.adjustRoll=0,this.slerpAmount=1,this._boneQuat=te.Identity(),this._slerping=!1,this._firstFrameSkipped=!1,this._fowardAxis=_.Forward(),this.mesh=t,this.bone=e,this.target=i,r&&(r.adjustYaw&&(this.adjustYaw=r.adjustYaw),r.adjustPitch&&(this.adjustPitch=r.adjustPitch),r.adjustRoll&&(this.adjustRoll=r.adjustRoll),r.maxYaw!=null?this.maxYaw=r.maxYaw:this.maxYaw=Math.PI,r.minYaw!=null?this.minYaw=r.minYaw:this.minYaw=-Math.PI,r.maxPitch!=null?this.maxPitch=r.maxPitch:this.maxPitch=Math.PI,r.minPitch!=null?this.minPitch=r.minPitch:this.minPitch=-Math.PI,r.slerpAmount!=null&&(this.slerpAmount=r.slerpAmount),r.upAxis!=null&&(this.upAxis=r.upAxis),r.upAxisSpace!=null&&(this.upAxisSpace=r.upAxisSpace),r.yawAxis!=null||r.pitchAxis!=null)){var o=ct.Y,a=ct.X;r.yawAxis!=null&&(o=r.yawAxis.clone(),o.normalize()),r.pitchAxis!=null&&(a=r.pitchAxis.clone(),a.normalize());var s=_.Cross(a,o);this._transformYawPitch=q.Identity(),q.FromXYZAxesToRef(a,o,s,this._transformYawPitch),this._transformYawPitchInv=this._transformYawPitch.clone(),this._transformYawPitch.invert()}!e.getParent()&&this.upAxisSpace==lt.BONE&&(this.upAxisSpace=lt.LOCAL)}return Object.defineProperty(n.prototype,"minYaw",{get:function(){return this._minYaw},set:function(t){this._minYaw=t,this._minYawSin=Math.sin(t),this._minYawCos=Math.cos(t),this._maxYaw!=null&&(this._midYawConstraint=this._getAngleDiff(this._minYaw,this._maxYaw)*.5+this._minYaw,this._yawRange=this._maxYaw-this._minYaw)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"maxYaw",{get:function(){return this._maxYaw},set:function(t){this._maxYaw=t,this._maxYawSin=Math.sin(t),this._maxYawCos=Math.cos(t),this._minYaw!=null&&(this._midYawConstraint=this._getAngleDiff(this._minYaw,this._maxYaw)*.5+this._minYaw,this._yawRange=this._maxYaw-this._minYaw)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"minPitch",{get:function(){return this._minPitch},set:function(t){this._minPitch=t,this._minPitchTan=Math.tan(t)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"maxPitch",{get:function(){return this._maxPitch},set:function(t){this._maxPitch=t,this._maxPitchTan=Math.tan(t)},enumerable:!1,configurable:!0}),n.prototype.update=function(){if(this.slerpAmount<1&&!this._firstFrameSkipped){this._firstFrameSkipped=!0;return}var t=this.bone,e=n._tmpVecs[0];t.getAbsolutePositionToRef(this.mesh,e);var i=this.target,r=n._tmpMats[0],o=n._tmpMats[1],a=this.mesh,s=t.getParent(),l=n._tmpVecs[1];l.copyFrom(this.upAxis),this.upAxisSpace==lt.BONE&&s?(this._transformYawPitch&&_.TransformCoordinatesToRef(l,this._transformYawPitchInv,l),s.getDirectionToRef(l,this.mesh,l)):this.upAxisSpace==lt.LOCAL&&(a.getDirectionToRef(l,l),(a.scaling.x!=1||a.scaling.y!=1||a.scaling.z!=1)&&l.normalize());var u=!1,c=!1;if((this._maxYaw!=Math.PI||this._minYaw!=-Math.PI)&&(u=!0),(this._maxPitch!=Math.PI||this._minPitch!=-Math.PI)&&(c=!0),u||c){var h=n._tmpMats[2],f=n._tmpMats[3];if(this.upAxisSpace==lt.BONE&&l.y==1&&s)s.getRotationMatrixToRef(lt.WORLD,this.mesh,h);else if(this.upAxisSpace==lt.LOCAL&&l.y==1&&!s)h.copyFrom(a.getWorldMatrix());else{var p=n._tmpVecs[2];p.copyFrom(this._fowardAxis),this._transformYawPitch&&_.TransformCoordinatesToRef(p,this._transformYawPitchInv,p),s?s.getDirectionToRef(p,this.mesh,p):a.getDirectionToRef(p,p);var d=_.Cross(l,p);d.normalize();var p=_.Cross(d,l);q.FromXYZAxesToRef(d,l,p,h)}h.invertToRef(f);var g=null;if(c){var m=n._tmpVecs[3];i.subtractToRef(e,m),_.TransformCoordinatesToRef(m,f,m),g=Math.sqrt(m.x*m.x+m.z*m.z);var v=Math.atan2(m.y,g),b=v;v>this._maxPitch?(m.y=this._maxPitchTan*g,b=this._maxPitch):v<this._minPitch&&(m.y=this._minPitchTan*g,b=this._minPitch),v!=b&&(_.TransformCoordinatesToRef(m,h,m),m.addInPlace(e),i=m)}if(u){var m=n._tmpVecs[4];i.subtractToRef(e,m),_.TransformCoordinatesToRef(m,f,m);var C=Math.atan2(m.x,m.z),P=C;if((C>this._maxYaw||C<this._minYaw)&&(g==null&&(g=Math.sqrt(m.x*m.x+m.z*m.z)),this._yawRange>Math.PI?this._isAngleBetween(C,this._maxYaw,this._midYawConstraint)?(m.z=this._maxYawCos*g,m.x=this._maxYawSin*g,P=this._maxYaw):this._isAngleBetween(C,this._midYawConstraint,this._minYaw)&&(m.z=this._minYawCos*g,m.x=this._minYawSin*g,P=this._minYaw):C>this._maxYaw?(m.z=this._maxYawCos*g,m.x=this._maxYawSin*g,P=this._maxYaw):C<this._minYaw&&(m.z=this._minYawCos*g,m.x=this._minYawSin*g,P=this._minYaw)),this._slerping&&this._yawRange>Math.PI){var y=n._tmpVecs[8];y.copyFrom(ct.Z),this._transformYawPitch&&_.TransformCoordinatesToRef(y,this._transformYawPitchInv,y);var x=n._tmpMats[4];this._boneQuat.toRotationMatrix(x),this.mesh.getWorldMatrix().multiplyToRef(x,x),_.TransformCoordinatesToRef(y,x,y),_.TransformCoordinatesToRef(y,f,y);var E=Math.atan2(y.x,y.z),M=this._getAngleBetween(E,C),w=this._getAngleBetween(E,this._midYawConstraint);if(M>w){g==null&&(g=Math.sqrt(m.x*m.x+m.z*m.z));var A=this._getAngleBetween(E,this._maxYaw),T=this._getAngleBetween(E,this._minYaw);T<A?(P=E+Math.PI*.75,m.z=Math.cos(P)*g,m.x=Math.sin(P)*g):(P=E-Math.PI*.75,m.z=Math.cos(P)*g,m.x=Math.sin(P)*g)}}C!=P&&(_.TransformCoordinatesToRef(m,h,m),m.addInPlace(e),i=m)}}var I=n._tmpVecs[5],H=n._tmpVecs[6],L=n._tmpVecs[7],z=n._tmpQuat;i.subtractToRef(e,I),I.normalize(),_.CrossToRef(l,I,H),H.normalize(),_.CrossToRef(I,H,L),L.normalize(),q.FromXYZAxesToRef(H,L,I,r),!(H.x===0&&H.y===0&&H.z===0)&&(L.x===0&&L.y===0&&L.z===0||I.x===0&&I.y===0&&I.z===0||((this.adjustYaw||this.adjustPitch||this.adjustRoll)&&(q.RotationYawPitchRollToRef(this.adjustYaw,this.adjustPitch,this.adjustRoll,o),o.multiplyToRef(r,r)),this.slerpAmount<1?(this._slerping||this.bone.getRotationQuaternionToRef(lt.WORLD,this.mesh,this._boneQuat),this._transformYawPitch&&this._transformYawPitch.multiplyToRef(r,r),te.FromRotationMatrixToRef(r,z),te.SlerpToRef(this._boneQuat,z,this.slerpAmount,this._boneQuat),this.bone.setRotationQuaternion(this._boneQuat,lt.WORLD,this.mesh),this._slerping=!0):(this._transformYawPitch&&this._transformYawPitch.multiplyToRef(r,r),this.bone.setRotationMatrix(r,lt.WORLD,this.mesh),this._slerping=!1)))},n.prototype._getAngleDiff=function(t,e){var i=e-t;return i%=Math.PI*2,i>Math.PI?i-=Math.PI*2:i<-Math.PI&&(i+=Math.PI*2),i},n.prototype._getAngleBetween=function(t,e){t%=2*Math.PI,t=t<0?t+2*Math.PI:t,e%=2*Math.PI,e=e<0?e+2*Math.PI:e;var i=0;return t<e?i=e-t:i=t-e,i>Math.PI&&(i=Math.PI*2-i),i},n.prototype._isAngleBetween=function(t,e,i){if(t%=2*Math.PI,t=t<0?t+2*Math.PI:t,e%=2*Math.PI,e=e<0?e+2*Math.PI:e,i%=2*Math.PI,i=i<0?i+2*Math.PI:i,e<i){if(t>e&&t<i)return!0}else if(t>i&&t<e)return!0;return!1},n._tmpVecs=sn.BuildArray(10,_.Zero),n._tmpQuat=te.Identity(),n._tmpMats=sn.BuildArray(5,q.Identity),n}(),nv=function(){function n(t,e){this.x=t,this.y=e}return n}(),_t=function(){function n(t,e,i,r,o,a,s){r===void 0&&(r=0),o===void 0&&(o=1),a===void 0&&(a=2),s===void 0&&(s=3),this.id=t,this.index=e,this.browserGamepad=i,this._leftStick={x:0,y:0},this._rightStick={x:0,y:0},this._isConnected=!0,this._invertLeftStickY=!1,this.type=n.GAMEPAD,this._leftStickAxisX=r,this._leftStickAxisY=o,this._rightStickAxisX=a,this._rightStickAxisY=s,this.browserGamepad.axes.length>=2&&(this._leftStick={x:this.browserGamepad.axes[this._leftStickAxisX],y:this.browserGamepad.axes[this._leftStickAxisY]}),this.browserGamepad.axes.length>=4&&(this._rightStick={x:this.browserGamepad.axes[this._rightStickAxisX],y:this.browserGamepad.axes[this._rightStickAxisY]})}return Object.defineProperty(n.prototype,"isConnected",{get:function(){return this._isConnected},enumerable:!1,configurable:!0}),n.prototype.onleftstickchanged=function(t){this._onleftstickchanged=t},n.prototype.onrightstickchanged=function(t){this._onrightstickchanged=t},Object.defineProperty(n.prototype,"leftStick",{get:function(){return this._leftStick},set:function(t){this._onleftstickchanged&&(this._leftStick.x!==t.x||this._leftStick.y!==t.y)&&this._onleftstickchanged(t),this._leftStick=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"rightStick",{get:function(){return this._rightStick},set:function(t){this._onrightstickchanged&&(this._rightStick.x!==t.x||this._rightStick.y!==t.y)&&this._onrightstickchanged(t),this._rightStick=t},enumerable:!1,configurable:!0}),n.prototype.update=function(){this._leftStick&&(this.leftStick={x:this.browserGamepad.axes[this._leftStickAxisX],y:this.browserGamepad.axes[this._leftStickAxisY]},this._invertLeftStickY&&(this.leftStick.y*=-1)),this._rightStick&&(this.rightStick={x:this.browserGamepad.axes[this._rightStickAxisX],y:this.browserGamepad.axes[this._rightStickAxisY]})},n.prototype.dispose=function(){},n.GAMEPAD=0,n.GENERIC=1,n.XBOX=2,n.POSE_ENABLED=3,n.DUALSHOCK=4,n}(),ju=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,i,r)||this;return o.onButtonDownObservable=new J,o.onButtonUpObservable=new J,o.type=_t.GENERIC,o._buttons=new Array(r.buttons.length),o}return t.prototype.onbuttondown=function(e){this._onbuttondown=e},t.prototype.onbuttonup=function(e){this._onbuttonup=e},t.prototype._setButtonValue=function(e,i,r){return e!==i&&(e===1&&(this._onbuttondown&&this._onbuttondown(r),this.onButtonDownObservable.notifyObservers(r)),e===0&&(this._onbuttonup&&this._onbuttonup(r),this.onButtonUpObservable.notifyObservers(r))),e},t.prototype.update=function(){n.prototype.update.call(this);for(var e=0;e<this._buttons.length;e++)this._buttons[e]=this._setButtonValue(this.browserGamepad.buttons[e].value,this._buttons[e],e)},t.prototype.dispose=function(){n.prototype.dispose.call(this),this.onButtonDownObservable.clear(),this.onButtonUpObservable.clear()},t}(_t),Ps=function(){function n(){this.gamepadRotationSensibility=80,this.gamepadMoveSensibility=40,this._yAxisScale=1}return Object.defineProperty(n.prototype,"invertYAxis",{get:function(){return this._yAxisScale!==1},set:function(t){this._yAxisScale=t?-1:1},enumerable:!1,configurable:!0}),n.prototype.attachControl=function(){var t=this,e=this.camera.getScene().gamepadManager;this._onGamepadConnectedObserver=e.onGamepadConnectedObservable.add(function(i){i.type!==_t.POSE_ENABLED&&(!t.gamepad||i.type===_t.XBOX)&&(t.gamepad=i)}),this._onGamepadDisconnectedObserver=e.onGamepadDisconnectedObservable.add(function(i){t.gamepad===i&&(t.gamepad=null)}),this.gamepad=e.getGamepadByType(_t.XBOX)},n.prototype.detachControl=function(t){this.camera.getScene().gamepadManager.onGamepadConnectedObservable.remove(this._onGamepadConnectedObserver),this.camera.getScene().gamepadManager.onGamepadDisconnectedObservable.remove(this._onGamepadDisconnectedObserver),this.gamepad=null},n.prototype.checkInputs=function(){if(this.gamepad){var t=this.camera,e=this.gamepad.rightStick;if(e){if(e.x!=0){var i=e.x/this.gamepadRotationSensibility;i!=0&&Math.abs(i)>.005&&(t.inertialAlphaOffset+=i)}if(e.y!=0){var r=e.y/this.gamepadRotationSensibility*this._yAxisScale;r!=0&&Math.abs(r)>.005&&(t.inertialBetaOffset+=r)}}var o=this.gamepad.leftStick;if(o&&o.y!=0){var a=o.y/this.gamepadMoveSensibility;a!=0&&Math.abs(a)>.005&&(this.camera.inertialRadiusOffset-=a)}}},n.prototype.getClassName=function(){return"ArcRotateCameraGamepadInput"},n.prototype.getSimpleName=function(){return"gamepad"},R([B()],n.prototype,"gamepadRotationSensibility",void 0),R([B()],n.prototype,"gamepadMoveSensibility",void 0),n}();Ut.ArcRotateCameraGamepadInput=Ps;var Ss=function(){function n(){this.keysUp=[38],this.keysDown=[40],this.keysLeft=[37],this.keysRight=[39],this.keysReset=[220],this.panningSensibility=50,this.zoomingSensibility=25,this.useAltToZoom=!0,this.angularSpeed=.01,this._keys=new Array}return n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments),!this._onCanvasBlurObserver&&(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(function(){e._keys=[]}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(function(i){var r=i.event;if(!r.metaKey){if(i.type===Po.KEYDOWN){if(e._ctrlPressed=r.ctrlKey,e._altPressed=r.altKey,e.keysUp.indexOf(r.keyCode)!==-1||e.keysDown.indexOf(r.keyCode)!==-1||e.keysLeft.indexOf(r.keyCode)!==-1||e.keysRight.indexOf(r.keyCode)!==-1||e.keysReset.indexOf(r.keyCode)!==-1){var o=e._keys.indexOf(r.keyCode);o===-1&&e._keys.push(r.keyCode),r.preventDefault&&(t||r.preventDefault())}}else if(e.keysUp.indexOf(r.keyCode)!==-1||e.keysDown.indexOf(r.keyCode)!==-1||e.keysLeft.indexOf(r.keyCode)!==-1||e.keysRight.indexOf(r.keyCode)!==-1||e.keysReset.indexOf(r.keyCode)!==-1){var o=e._keys.indexOf(r.keyCode);o>=0&&e._keys.splice(o,1),r.preventDefault&&(t||r.preventDefault())}}}))},n.prototype.detachControl=function(t){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys=[]},n.prototype.checkInputs=function(){if(this._onKeyboardObserver)for(var t=this.camera,e=0;e<this._keys.length;e++){var i=this._keys[e];this.keysLeft.indexOf(i)!==-1?this._ctrlPressed&&this.camera._useCtrlForPanning?t.inertialPanningX-=1/this.panningSensibility:t.inertialAlphaOffset-=this.angularSpeed:this.keysUp.indexOf(i)!==-1?this._ctrlPressed&&this.camera._useCtrlForPanning?t.inertialPanningY+=1/this.panningSensibility:this._altPressed&&this.useAltToZoom?t.inertialRadiusOffset+=1/this.zoomingSensibility:t.inertialBetaOffset-=this.angularSpeed:this.keysRight.indexOf(i)!==-1?this._ctrlPressed&&this.camera._useCtrlForPanning?t.inertialPanningX+=1/this.panningSensibility:t.inertialAlphaOffset+=this.angularSpeed:this.keysDown.indexOf(i)!==-1?this._ctrlPressed&&this.camera._useCtrlForPanning?t.inertialPanningY-=1/this.panningSensibility:this._altPressed&&this.useAltToZoom?t.inertialRadiusOffset-=1/this.zoomingSensibility:t.inertialBetaOffset+=this.angularSpeed:this.keysReset.indexOf(i)!==-1&&t.useInputToRestoreState&&t.restoreState()}},n.prototype.getClassName=function(){return"ArcRotateCameraKeyboardMoveInput"},n.prototype.getSimpleName=function(){return"keyboard"},R([B()],n.prototype,"keysUp",void 0),R([B()],n.prototype,"keysDown",void 0),R([B()],n.prototype,"keysLeft",void 0),R([B()],n.prototype,"keysRight",void 0),R([B()],n.prototype,"keysReset",void 0),R([B()],n.prototype,"panningSensibility",void 0),R([B()],n.prototype,"zoomingSensibility",void 0),R([B()],n.prototype,"useAltToZoom",void 0),R([B()],n.prototype,"angularSpeed",void 0),n}();Ut.ArcRotateCameraKeyboardMoveInput=Ss;var Cs=function(){function n(){this.wheelPrecision=3,this.wheelDeltaPercentage=0}return n.prototype.computeDeltaFromMouseWheelLegacyEvent=function(t,e){var i=0,r=t*.01*this.wheelDeltaPercentage*e;return t>0?i=r/(1+this.wheelDeltaPercentage):i=r*(1+this.wheelDeltaPercentage),i},n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments),this._wheel=function(i,r){if(i.type===Ae.POINTERWHEEL){var o=i.event,a=0,s=o,l=0;if(s.wheelDelta?l=s.wheelDelta:l=-(o.deltaY||o.detail)*60,e.wheelDeltaPercentage){if(a=e.computeDeltaFromMouseWheelLegacyEvent(l,e.camera.radius),a>0){for(var u=e.camera.radius,c=e.camera.inertialRadiusOffset+a,h=0;h<20&&Math.abs(c)>.001;h++)u-=c,c*=e.camera.inertia;u=he.Clamp(u,0,Number.MAX_VALUE),a=e.computeDeltaFromMouseWheelLegacyEvent(l,u)}}else a=l/(e.wheelPrecision*40);a&&(e.camera.inertialRadiusOffset+=a),o.preventDefault&&(t||o.preventDefault())}},this._observer=this.camera.getScene().onPointerObservable.add(this._wheel,Ae.POINTERWHEEL)},n.prototype.detachControl=function(t){this._observer&&(this.camera.getScene().onPointerObservable.remove(this._observer),this._observer=null,this._wheel=null)},n.prototype.getClassName=function(){return"ArcRotateCameraMouseWheelInput"},n.prototype.getSimpleName=function(){return"mousewheel"},R([B()],n.prototype,"wheelPrecision",void 0),R([B()],n.prototype,"wheelDeltaPercentage",void 0),n}();Ut.ArcRotateCameraMouseWheelInput=Cs;var xs=function(){function n(){this.buttons=[0,1,2]}return n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments);var i=this.camera.getEngine(),r=i.getInputElement(),o=0,a=null;this.pointA=null,this.pointB=null,this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._buttonsPressed=0,this._pointerInput=function(l,u){var c=l.event,h=c.pointerType==="touch";if(!i.isInVRExclusivePointerMode&&!(l.type!==Ae.POINTERMOVE&&e.buttons.indexOf(c.button)===-1)){var f=c.srcElement||c.target;if(e._altKey=c.altKey,e._ctrlKey=c.ctrlKey,e._metaKey=c.metaKey,e._shiftKey=c.shiftKey,e._buttonsPressed=c.buttons,i.isPointerLock){var d=c.movementX||c.mozMovementX||c.webkitMovementX||c.msMovementX||0,p=c.movementY||c.mozMovementY||c.webkitMovementY||c.msMovementY||0;e.onTouch(null,d,p),e.pointA=null,e.pointB=null}else if(l.type===Ae.POINTERDOWN&&f){try{f.setPointerCapture(c.pointerId)}catch{}e.pointA===null?e.pointA={x:c.clientX,y:c.clientY,pointerId:c.pointerId,type:c.pointerType}:e.pointB===null&&(e.pointB={x:c.clientX,y:c.clientY,pointerId:c.pointerId,type:c.pointerType}),e.onButtonDown(c),t||(c.preventDefault(),r&&r.focus())}else if(l.type===Ae.POINTERDOUBLETAP)e.onDoubleTap(c.pointerType);else if(l.type===Ae.POINTERUP&&f){try{f.releasePointerCapture(c.pointerId)}catch{}h||(e.pointB=null),i._badOS?e.pointA=e.pointB=null:e.pointB&&e.pointA&&e.pointA.pointerId==c.pointerId?(e.pointA=e.pointB,e.pointB=null):e.pointA&&e.pointB&&e.pointB.pointerId==c.pointerId?e.pointB=null:e.pointA=e.pointB=null,(o!==0||a)&&(e.onMultiTouch(e.pointA,e.pointB,o,0,a,null),o=0,a=null),e.onButtonUp(c),t||c.preventDefault()}else if(l.type===Ae.POINTERMOVE){if(t||c.preventDefault(),e.pointA&&e.pointB===null){var d=c.clientX-e.pointA.x,p=c.clientY-e.pointA.y;e.onTouch(e.pointA,d,p),e.pointA.x=c.clientX,e.pointA.y=c.clientY}else if(e.pointA&&e.pointB){var g=e.pointA.pointerId===c.pointerId?e.pointA:e.pointB;g.x=c.clientX,g.y=c.clientY;var m=e.pointA.x-e.pointB.x,v=e.pointA.y-e.pointB.y,b=m*m+v*v,C={x:(e.pointA.x+e.pointB.x)/2,y:(e.pointA.y+e.pointB.y)/2,pointerId:c.pointerId,type:l.type};e.onMultiTouch(e.pointA,e.pointB,o,b,a,C),a=C,o=b}}}},this._observer=this.camera.getScene().onPointerObservable.add(this._pointerInput,Ae.POINTERDOWN|Ae.POINTERUP|Ae.POINTERMOVE),this._onLostFocus=function(){e.pointA=e.pointB=null,o=0,a=null,e.onLostFocus()},r&&r.addEventListener("contextmenu",this.onContextMenu.bind(this),!1);var s=this.camera.getScene().getEngine().getHostWindow();s&&se.RegisterTopRootEvents(s,[{name:"blur",handler:this._onLostFocus}])},n.prototype.detachControl=function(t){if(this._onLostFocus){var e=this.camera.getScene().getEngine().getHostWindow();e&&se.UnregisterTopRootEvents(e,[{name:"blur",handler:this._onLostFocus}])}if(this._observer){if(this.camera.getScene().onPointerObservable.remove(this._observer),this._observer=null,this.onContextMenu){var i=this.camera.getScene().getEngine().getInputElement();i&&i.removeEventListener("contextmenu",this.onContextMenu)}this._onLostFocus=null}this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._buttonsPressed=0},n.prototype.getClassName=function(){return"BaseCameraPointersInput"},n.prototype.getSimpleName=function(){return"pointers"},n.prototype.onDoubleTap=function(t){},n.prototype.onTouch=function(t,e,i){},n.prototype.onMultiTouch=function(t,e,i,r,o,a){},n.prototype.onContextMenu=function(t){t.preventDefault()},n.prototype.onButtonDown=function(t){},n.prototype.onButtonUp=function(t){},n.prototype.onLostFocus=function(){},R([B()],n.prototype,"buttons",void 0),n}(),Ts=function(n){N(t,n);function t(){var e=n!==null&&n.apply(this,arguments)||this;return e.buttons=[0,1,2],e.angularSensibilityX=1e3,e.angularSensibilityY=1e3,e.pinchPrecision=12,e.pinchDeltaPercentage=0,e.useNaturalPinchZoom=!1,e.panningSensibility=1e3,e.multiTouchPanning=!0,e.multiTouchPanAndZoom=!0,e.pinchInwards=!0,e._isPanClick=!1,e._twoFingerActivityCount=0,e._isPinching=!1,e}return t.prototype.getClassName=function(){return"ArcRotateCameraPointersInput"},t.prototype.onTouch=function(e,i,r){this.panningSensibility!==0&&(this._ctrlKey&&this.camera._useCtrlForPanning||this._isPanClick)?(this.camera.inertialPanningX+=-i/this.panningSensibility,this.camera.inertialPanningY+=r/this.panningSensibility):(this.camera.inertialAlphaOffset-=i/this.angularSensibilityX,this.camera.inertialBetaOffset-=r/this.angularSensibilityY)},t.prototype.onDoubleTap=function(e){this.camera.useInputToRestoreState&&this.camera.restoreState()},t.prototype.onMultiTouch=function(e,i,r,o,a,s){if(!(r===0&&a===null)&&!(o===0&&s===null)){var l=this.pinchInwards?1:-1;if(this.multiTouchPanAndZoom){if(this.useNaturalPinchZoom?this.camera.radius=this.camera.radius*Math.sqrt(r)/Math.sqrt(o):this.pinchDeltaPercentage?this.camera.inertialRadiusOffset+=(o-r)*.001*this.camera.radius*this.pinchDeltaPercentage:this.camera.inertialRadiusOffset+=(o-r)/(this.pinchPrecision*l*(this.angularSensibilityX+this.angularSensibilityY)/2),this.panningSensibility!==0&&a&&s){var u=s.x-a.x,c=s.y-a.y;this.camera.inertialPanningX+=-u/this.panningSensibility,this.camera.inertialPanningY+=c/this.panningSensibility}}else{this._twoFingerActivityCount++;var h=Math.sqrt(r),f=Math.sqrt(o);if(this._isPinching||this._twoFingerActivityCount<20&&Math.abs(f-h)>this.camera.pinchToPanMaxDistance)this.pinchDeltaPercentage?this.camera.inertialRadiusOffset+=(o-r)*.001*this.camera.radius*this.pinchDeltaPercentage:this.camera.inertialRadiusOffset+=(o-r)/(this.pinchPrecision*l*(this.angularSensibilityX+this.angularSensibilityY)/2),this._isPinching=!0;else if(this.panningSensibility!==0&&this.multiTouchPanning&&s&&a){var u=s.x-a.x,c=s.y-a.y;this.camera.inertialPanningX+=-u/this.panningSensibility,this.camera.inertialPanningY+=c/this.panningSensibility}}}},t.prototype.onButtonDown=function(e){this._isPanClick=e.button===this.camera._panningMouseButton},t.prototype.onButtonUp=function(e){this._twoFingerActivityCount=0,this._isPinching=!1},t.prototype.onLostFocus=function(){this._isPanClick=!1,this._twoFingerActivityCount=0,this._isPinching=!1},R([B()],t.prototype,"buttons",void 0),R([B()],t.prototype,"angularSensibilityX",void 0),R([B()],t.prototype,"angularSensibilityY",void 0),R([B()],t.prototype,"pinchPrecision",void 0),R([B()],t.prototype,"pinchDeltaPercentage",void 0),R([B()],t.prototype,"useNaturalPinchZoom",void 0),R([B()],t.prototype,"panningSensibility",void 0),R([B()],t.prototype,"multiTouchPanning",void 0),R([B()],t.prototype,"multiTouchPanAndZoom",void 0),t}(xs);Ut.ArcRotateCameraPointersInput=Ts;var wo=function(n){N(t,n);function t(e){return n.call(this,e)||this}return t.prototype.addMouseWheel=function(){return this.add(new Cs),this},t.prototype.addPointers=function(){return this.add(new Ts),this},t.prototype.addKeyboard=function(){return this.add(new Ss),this},t}(So);wo.prototype.addVRDeviceOrientation=function(){return this.add(new Es),this};var Es=function(){function n(){this.alphaCorrection=1,this.gammaCorrection=1,this._alpha=0,this._gamma=0,this._dirty=!1,this._deviceOrientationHandler=this._onOrientationEvent.bind(this)}return n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments),this.camera.attachControl(t);var i=this.camera.getScene().getEngine().getHostWindow();i&&(typeof DeviceOrientationEvent<"u"&&typeof DeviceOrientationEvent.requestPermission=="function"?DeviceOrientationEvent.requestPermission().then(function(r){r==="granted"?i.addEventListener("deviceorientation",e._deviceOrientationHandler):se.Warn("Permission not granted.")}).catch(function(r){se.Error(r)}):i.addEventListener("deviceorientation",this._deviceOrientationHandler))},n.prototype._onOrientationEvent=function(t){t.alpha!==null&&(this._alpha=(+t.alpha|0)*this.alphaCorrection),t.gamma!==null&&(this._gamma=(+t.gamma|0)*this.gammaCorrection),this._dirty=!0},n.prototype.checkInputs=function(){this._dirty&&(this._dirty=!1,this._gamma<0&&(this._gamma=180+this._gamma),this.camera.alpha=-this._alpha/180*Math.PI%Math.PI*2,this.camera.beta=this._gamma/180*Math.PI)},n.prototype.detachControl=function(t){window.removeEventListener("deviceorientation",this._deviceOrientationHandler)},n.prototype.getClassName=function(){return"ArcRotateCameraVRDeviceOrientationInput"},n.prototype.getSimpleName=function(){return"VRDeviceOrientation"},n}();Ut.ArcRotateCameraVRDeviceOrientationInput=Es;var Rs=function(){function n(){this.keysForward=[87],this.keysBackward=[83],this.keysUp=[69],this.keysDown=[81],this.keysRight=[68],this.keysLeft=[65],this._keys=new Array}return n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments),!this._onCanvasBlurObserver&&(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(function(){e._keys=[]}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(function(i){var r=i.event;if(i.type===Po.KEYDOWN){if(e.keysForward.indexOf(r.keyCode)!==-1||e.keysBackward.indexOf(r.keyCode)!==-1||e.keysUp.indexOf(r.keyCode)!==-1||e.keysDown.indexOf(r.keyCode)!==-1||e.keysLeft.indexOf(r.keyCode)!==-1||e.keysRight.indexOf(r.keyCode)!==-1){var o=e._keys.indexOf(r.keyCode);o===-1&&e._keys.push(r.keyCode),t||r.preventDefault()}}else if(e.keysForward.indexOf(r.keyCode)!==-1||e.keysBackward.indexOf(r.keyCode)!==-1||e.keysUp.indexOf(r.keyCode)!==-1||e.keysDown.indexOf(r.keyCode)!==-1||e.keysLeft.indexOf(r.keyCode)!==-1||e.keysRight.indexOf(r.keyCode)!==-1){var o=e._keys.indexOf(r.keyCode);o>=0&&e._keys.splice(o,1),t||r.preventDefault()}}))},n.prototype.detachControl=function(t){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys=[]},n.prototype.getClassName=function(){return"FlyCameraKeyboardInput"},n.prototype._onLostFocus=function(t){this._keys=[]},n.prototype.getSimpleName=function(){return"keyboard"},n.prototype.checkInputs=function(){if(this._onKeyboardObserver)for(var t=this.camera,e=0;e<this._keys.length;e++){var i=this._keys[e],r=t._computeLocalCameraSpeed();this.keysForward.indexOf(i)!==-1?t._localDirection.copyFromFloats(0,0,r):this.keysBackward.indexOf(i)!==-1?t._localDirection.copyFromFloats(0,0,-r):this.keysUp.indexOf(i)!==-1?t._localDirection.copyFromFloats(0,r,0):this.keysDown.indexOf(i)!==-1?t._localDirection.copyFromFloats(0,-r,0):this.keysRight.indexOf(i)!==-1?t._localDirection.copyFromFloats(r,0,0):this.keysLeft.indexOf(i)!==-1&&t._localDirection.copyFromFloats(-r,0,0),t.getScene().useRightHandedSystem&&(t._localDirection.z*=-1),t.getViewMatrix().invertToRef(t._cameraTransformMatrix),_.TransformNormalToRef(t._localDirection,t._cameraTransformMatrix,t._transformedDirection),t.cameraDirection.addInPlace(t._transformedDirection)}},R([B()],n.prototype,"keysForward",void 0),R([B()],n.prototype,"keysBackward",void 0),R([B()],n.prototype,"keysUp",void 0),R([B()],n.prototype,"keysDown",void 0),R([B()],n.prototype,"keysRight",void 0),R([B()],n.prototype,"keysLeft",void 0),n}();Ut.FlyCameraKeyboardInput=Rs;var Ms=function(){function n(t){this.buttons=[0,1,2],this.buttonsYaw=[-1,0,1],this.buttonsPitch=[-1,0,1],this.buttonsRoll=[2],this.activeButton=-1,this.angularSensibility=1e3,this.previousPosition=null}return n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments),this.noPreventDefault=t,this._observer=this.camera.getScene().onPointerObservable.add(function(i,r){e._pointerInput(i,r)},Ae.POINTERDOWN|Ae.POINTERUP|Ae.POINTERMOVE),this._rollObserver=this.camera.getScene().onBeforeRenderObservable.add(function(){e.camera.rollCorrect&&e.camera.restoreRoll(e.camera.rollCorrect)})},n.prototype.detachControl=function(t){this._observer&&(this.camera.getScene().onPointerObservable.remove(this._observer),this.camera.getScene().onBeforeRenderObservable.remove(this._rollObserver),this._observer=null,this._rollObserver=null,this.previousPosition=null,this.noPreventDefault=void 0)},n.prototype.getClassName=function(){return"FlyCameraMouseInput"},n.prototype.getSimpleName=function(){return"mouse"},n.prototype._pointerInput=function(t,e){var i=t.event,r=this.camera,o=r.getEngine();if(!o.isInVRExclusivePointerMode&&!(!this.touchEnabled&&i.pointerType==="touch")&&!(t.type!==Ae.POINTERMOVE&&this.buttons.indexOf(i.button)===-1)){var a=i.srcElement||i.target;if(t.type===Ae.POINTERDOWN&&a){try{a.setPointerCapture(i.pointerId)}catch{}this.previousPosition={x:i.clientX,y:i.clientY},this.activeButton=i.button,this.noPreventDefault||(i.preventDefault(),this.element.focus()),o.isPointerLock&&this._onMouseMove(t.event)}else if(t.type===Ae.POINTERUP&&a){try{a.releasePointerCapture(i.pointerId)}catch{}this.activeButton=-1,this.previousPosition=null,this.noPreventDefault||i.preventDefault()}else if(t.type===Ae.POINTERMOVE){if(!this.previousPosition){o.isPointerLock&&this._onMouseMove(t.event);return}var s=i.clientX-this.previousPosition.x,l=i.clientY-this.previousPosition.y;this.rotateCamera(s,l),this.previousPosition={x:i.clientX,y:i.clientY},this.noPreventDefault||i.preventDefault()}}},n.prototype._onMouseMove=function(t){var e=this.camera,i=e.getEngine();if(!(!i.isPointerLock||i.isInVRExclusivePointerMode)){var r=t.movementX||t.mozMovementX||t.webkitMovementX||t.msMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||t.msMovementY||0;this.rotateCamera(r,o),this.previousPosition=null,this.noPreventDefault||t.preventDefault()}},n.prototype.rotateCamera=function(t,e){var i=this,r=this.camera,o=this.camera.getScene();o.useRightHandedSystem&&(t*=-1),r.parent&&r.parent._getWorldMatrixDeterminant()<0&&(t*=-1);var a=t/this.angularSensibility,s=e/this.angularSensibility,l=te.RotationYawPitchRoll(r.rotation.y,r.rotation.x,r.rotation.z),u;if(this.buttonsPitch.some(function(f){return f===i.activeButton})&&(u=te.RotationAxis(ct.X,s),l.multiplyInPlace(u)),this.buttonsYaw.some(function(f){return f===i.activeButton})){u=te.RotationAxis(ct.Y,a),l.multiplyInPlace(u);var c=r.bankedTurnLimit+r._trackRoll;if(r.bankedTurn&&-c<r.rotation.z&&r.rotation.z<c){var h=r.bankedTurnMultiplier*-a;u=te.RotationAxis(ct.Z,h),l.multiplyInPlace(u)}}this.buttonsRoll.some(function(f){return f===i.activeButton})&&(u=te.RotationAxis(ct.Z,-a),r._trackRoll-=a,l.multiplyInPlace(u)),l.toEulerAnglesToRef(r.rotation)},R([B()],n.prototype,"buttons",void 0),R([B()],n.prototype,"angularSensibility",void 0),n}();Ut.FlyCameraMouseInput=Ms;var As=function(){function n(){this.keysHeightOffsetIncr=[38],this.keysHeightOffsetDecr=[40],this.keysHeightOffsetModifierAlt=!1,this.keysHeightOffsetModifierCtrl=!1,this.keysHeightOffsetModifierShift=!1,this.keysRotationOffsetIncr=[37],this.keysRotationOffsetDecr=[39],this.keysRotationOffsetModifierAlt=!1,this.keysRotationOffsetModifierCtrl=!1,this.keysRotationOffsetModifierShift=!1,this.keysRadiusIncr=[40],this.keysRadiusDecr=[38],this.keysRadiusModifierAlt=!0,this.keysRadiusModifierCtrl=!1,this.keysRadiusModifierShift=!1,this.heightSensibility=1,this.rotationSensibility=1,this.radiusSensibility=1,this._keys=new Array}return n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments),!this._onCanvasBlurObserver&&(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(function(){e._keys=[]}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(function(i){var r=i.event;if(!r.metaKey){if(i.type===Po.KEYDOWN){if(e._ctrlPressed=r.ctrlKey,e._altPressed=r.altKey,e._shiftPressed=r.shiftKey,e.keysHeightOffsetIncr.indexOf(r.keyCode)!==-1||e.keysHeightOffsetDecr.indexOf(r.keyCode)!==-1||e.keysRotationOffsetIncr.indexOf(r.keyCode)!==-1||e.keysRotationOffsetDecr.indexOf(r.keyCode)!==-1||e.keysRadiusIncr.indexOf(r.keyCode)!==-1||e.keysRadiusDecr.indexOf(r.keyCode)!==-1){var o=e._keys.indexOf(r.keyCode);o===-1&&e._keys.push(r.keyCode),r.preventDefault&&(t||r.preventDefault())}}else if(e.keysHeightOffsetIncr.indexOf(r.keyCode)!==-1||e.keysHeightOffsetDecr.indexOf(r.keyCode)!==-1||e.keysRotationOffsetIncr.indexOf(r.keyCode)!==-1||e.keysRotationOffsetDecr.indexOf(r.keyCode)!==-1||e.keysRadiusIncr.indexOf(r.keyCode)!==-1||e.keysRadiusDecr.indexOf(r.keyCode)!==-1){var o=e._keys.indexOf(r.keyCode);o>=0&&e._keys.splice(o,1),r.preventDefault&&(t||r.preventDefault())}}}))},n.prototype.detachControl=function(t){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys=[]},n.prototype.checkInputs=function(){var t=this;this._onKeyboardObserver&&this._keys.forEach(function(e){t.keysHeightOffsetIncr.indexOf(e)!==-1&&t._modifierHeightOffset()?t.camera.heightOffset+=t.heightSensibility:t.keysHeightOffsetDecr.indexOf(e)!==-1&&t._modifierHeightOffset()?t.camera.heightOffset-=t.heightSensibility:t.keysRotationOffsetIncr.indexOf(e)!==-1&&t._modifierRotationOffset()?(t.camera.rotationOffset+=t.rotationSensibility,t.camera.rotationOffset%=360):t.keysRotationOffsetDecr.indexOf(e)!==-1&&t._modifierRotationOffset()?(t.camera.rotationOffset-=t.rotationSensibility,t.camera.rotationOffset%=360):t.keysRadiusIncr.indexOf(e)!==-1&&t._modifierRadius()?t.camera.radius+=t.radiusSensibility:t.keysRadiusDecr.indexOf(e)!==-1&&t._modifierRadius()&&(t.camera.radius-=t.radiusSensibility)})},n.prototype.getClassName=function(){return"FollowCameraKeyboardMoveInput"},n.prototype.getSimpleName=function(){return"keyboard"},n.prototype._modifierHeightOffset=function(){return this.keysHeightOffsetModifierAlt===this._altPressed&&this.keysHeightOffsetModifierCtrl===this._ctrlPressed&&this.keysHeightOffsetModifierShift===this._shiftPressed},n.prototype._modifierRotationOffset=function(){return this.keysRotationOffsetModifierAlt===this._altPressed&&this.keysRotationOffsetModifierCtrl===this._ctrlPressed&&this.keysRotationOffsetModifierShift===this._shiftPressed},n.prototype._modifierRadius=function(){return this.keysRadiusModifierAlt===this._altPressed&&this.keysRadiusModifierCtrl===this._ctrlPressed&&this.keysRadiusModifierShift===this._shiftPressed},R([B()],n.prototype,"keysHeightOffsetIncr",void 0),R([B()],n.prototype,"keysHeightOffsetDecr",void 0),R([B()],n.prototype,"keysHeightOffsetModifierAlt",void 0),R([B()],n.prototype,"keysHeightOffsetModifierCtrl",void 0),R([B()],n.prototype,"keysHeightOffsetModifierShift",void 0),R([B()],n.prototype,"keysRotationOffsetIncr",void 0),R([B()],n.prototype,"keysRotationOffsetDecr",void 0),R([B()],n.prototype,"keysRotationOffsetModifierAlt",void 0),R([B()],n.prototype,"keysRotationOffsetModifierCtrl",void 0),R([B()],n.prototype,"keysRotationOffsetModifierShift",void 0),R([B()],n.prototype,"keysRadiusIncr",void 0),R([B()],n.prototype,"keysRadiusDecr",void 0),R([B()],n.prototype,"keysRadiusModifierAlt",void 0),R([B()],n.prototype,"keysRadiusModifierCtrl",void 0),R([B()],n.prototype,"keysRadiusModifierShift",void 0),R([B()],n.prototype,"heightSensibility",void 0),R([B()],n.prototype,"rotationSensibility",void 0),R([B()],n.prototype,"radiusSensibility",void 0),n}();Ut.FollowCameraKeyboardMoveInput=As;var Os=function(){function n(){this.axisControlRadius=!0,this.axisControlHeight=!1,this.axisControlRotation=!1,this.wheelPrecision=3,this.wheelDeltaPercentage=0}return n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments),this._wheel=function(i,r){if(i.type===Ae.POINTERWHEEL){var o=i.event,a=0,s=Math.max(-1,Math.min(1,o.deltaY||o.wheelDelta||-o.detail));e.wheelDeltaPercentage?(console.assert(e.axisControlRadius+e.axisControlHeight+e.axisControlRotation<=1,"wheelDeltaPercentage only usable when mouse wheel controlls ONE axis. Currently enabled: axisControlRadius: "+e.axisControlRadius+", axisControlHeightOffset: "+e.axisControlHeight+", axisControlRotationOffset: "+e.axisControlRotation),e.axisControlRadius?a=s*.01*e.wheelDeltaPercentage*e.camera.radius:e.axisControlHeight?a=s*.01*e.wheelDeltaPercentage*e.camera.heightOffset:e.axisControlRotation&&(a=s*.01*e.wheelDeltaPercentage*e.camera.rotationOffset)):a=s*e.wheelPrecision,a&&(e.axisControlRadius?e.camera.radius+=a:e.axisControlHeight?e.camera.heightOffset-=a:e.axisControlRotation&&(e.camera.rotationOffset-=a)),o.preventDefault&&(t||o.preventDefault())}},this._observer=this.camera.getScene().onPointerObservable.add(this._wheel,Ae.POINTERWHEEL)},n.prototype.detachControl=function(t){this._observer&&(this.camera.getScene().onPointerObservable.remove(this._observer),this._observer=null,this._wheel=null)},n.prototype.getClassName=function(){return"ArcRotateCameraMouseWheelInput"},n.prototype.getSimpleName=function(){return"mousewheel"},R([B()],n.prototype,"axisControlRadius",void 0),R([B()],n.prototype,"axisControlHeight",void 0),R([B()],n.prototype,"axisControlRotation",void 0),R([B()],n.prototype,"wheelPrecision",void 0),R([B()],n.prototype,"wheelDeltaPercentage",void 0),n}();Ut.FollowCameraMouseWheelInput=Os;var ws=function(n){N(t,n);function t(){var e=n!==null&&n.apply(this,arguments)||this;return e.angularSensibilityX=1,e.angularSensibilityY=1,e.pinchPrecision=1e4,e.pinchDeltaPercentage=0,e.axisXControlRadius=!1,e.axisXControlHeight=!1,e.axisXControlRotation=!0,e.axisYControlRadius=!1,e.axisYControlHeight=!0,e.axisYControlRotation=!1,e.axisPinchControlRadius=!0,e.axisPinchControlHeight=!1,e.axisPinchControlRotation=!1,e.warningEnable=!0,e._warningCounter=0,e}return t.prototype.getClassName=function(){return"FollowCameraPointersInput"},t.prototype.onTouch=function(e,i,r){this._warning(),this.axisXControlRotation?this.camera.rotationOffset+=i/this.angularSensibilityX:this.axisYControlRotation&&(this.camera.rotationOffset+=r/this.angularSensibilityX),this.axisXControlHeight?this.camera.heightOffset+=i/this.angularSensibilityY:this.axisYControlHeight&&(this.camera.heightOffset+=r/this.angularSensibilityY),this.axisXControlRadius?this.camera.radius-=i/this.angularSensibilityY:this.axisYControlRadius&&(this.camera.radius-=r/this.angularSensibilityY)},t.prototype.onMultiTouch=function(e,i,r,o,a,s){if(!(r===0&&a===null)&&!(o===0&&s===null)){var l=(o-r)/(this.pinchPrecision*(this.angularSensibilityX+this.angularSensibilityY)/2);this.pinchDeltaPercentage?(l*=.01*this.pinchDeltaPercentage,this.axisPinchControlRotation&&(this.camera.rotationOffset+=l*this.camera.rotationOffset),this.axisPinchControlHeight&&(this.camera.heightOffset+=l*this.camera.heightOffset),this.axisPinchControlRadius&&(this.camera.radius-=l*this.camera.radius)):(this.axisPinchControlRotation&&(this.camera.rotationOffset+=l),this.axisPinchControlHeight&&(this.camera.heightOffset+=l),this.axisPinchControlRadius&&(this.camera.radius-=l))}},t.prototype._warning=function(){if(!(!this.warningEnable||this._warningCounter++%100!==0)){var e="It probably only makes sense to control ONE camera property with each pointer axis. Set 'warningEnable = false' if you are sure. Currently enabled: ";console.assert(this.axisXControlRotation+this.axisXControlHeight+this.axisXControlRadius<=1,e+"axisXControlRotation: "+this.axisXControlRotation+", axisXControlHeight: "+this.axisXControlHeight+", axisXControlRadius: "+this.axisXControlRadius),console.assert(this.axisYControlRotation+this.axisYControlHeight+this.axisYControlRadius<=1,e+"axisYControlRotation: "+this.axisYControlRotation+", axisYControlHeight: "+this.axisYControlHeight+", axisYControlRadius: "+this.axisYControlRadius),console.assert(this.axisPinchControlRotation+this.axisPinchControlHeight+this.axisPinchControlRadius<=1,e+"axisPinchControlRotation: "+this.axisPinchControlRotation+", axisPinchControlHeight: "+this.axisPinchControlHeight+", axisPinchControlRadius: "+this.axisPinchControlRadius)}},R([B()],t.prototype,"angularSensibilityX",void 0),R([B()],t.prototype,"angularSensibilityY",void 0),R([B()],t.prototype,"pinchPrecision",void 0),R([B()],t.prototype,"pinchDeltaPercentage",void 0),R([B()],t.prototype,"axisXControlRadius",void 0),R([B()],t.prototype,"axisXControlHeight",void 0),R([B()],t.prototype,"axisXControlRotation",void 0),R([B()],t.prototype,"axisYControlRadius",void 0),R([B()],t.prototype,"axisYControlHeight",void 0),R([B()],t.prototype,"axisYControlRotation",void 0),R([B()],t.prototype,"axisPinchControlRadius",void 0),R([B()],t.prototype,"axisPinchControlHeight",void 0),R([B()],t.prototype,"axisPinchControlRotation",void 0),t}(xs);Ut.FollowCameraPointersInput=ws;Co.prototype.addDeviceOrientation=function(){return this._deviceOrientationInput||(this._deviceOrientationInput=new Ds,this.add(this._deviceOrientationInput)),this};var Ds=function(){function n(){var t=this;this._screenOrientationAngle=0,this._screenQuaternion=new te,this._alpha=0,this._beta=0,this._gamma=0,this._onDeviceOrientationChangedObservable=new J,this._orientationChanged=function(){t._screenOrientationAngle=window.orientation!==void 0?+window.orientation:window.screen.orientation&&window.screen.orientation.angle?window.screen.orientation.angle:0,t._screenOrientationAngle=-se.ToRadians(t._screenOrientationAngle/2),t._screenQuaternion.copyFromFloats(0,Math.sin(t._screenOrientationAngle),0,Math.cos(t._screenOrientationAngle))},this._deviceOrientation=function(e){t._alpha=e.alpha!==null?e.alpha:0,t._beta=e.beta!==null?e.beta:0,t._gamma=e.gamma!==null?e.gamma:0,e.alpha!==null&&t._onDeviceOrientationChangedObservable.notifyObservers()},this._constantTranform=new te(-Math.sqrt(.5),0,0,Math.sqrt(.5)),this._orientationChanged()}return n.WaitForOrientationChangeAsync=function(t){return new Promise(function(e,i){var r=!1,o=function(){window.removeEventListener("deviceorientation",o),r=!0,e()};t&&setTimeout(function(){r||(window.removeEventListener("deviceorientation",o),i("WaitForOrientationChangeAsync timed out"))},t),typeof DeviceOrientationEvent<"u"&&typeof DeviceOrientationEvent.requestPermission=="function"?DeviceOrientationEvent.requestPermission().then(function(a){a=="granted"?window.addEventListener("deviceorientation",o):se.Warn("Permission not granted.")}).catch(function(a){se.Error(a)}):window.addEventListener("deviceorientation",o)})},Object.defineProperty(n.prototype,"camera",{get:function(){return this._camera},set:function(t){var e=this;this._camera=t,this._camera!=null&&!this._camera.rotationQuaternion&&(this._camera.rotationQuaternion=new te),this._camera&&this._camera.onDisposeObservable.add(function(){e._onDeviceOrientationChangedObservable.clear()})},enumerable:!1,configurable:!0}),n.prototype.attachControl=function(){var t=this,e=this.camera.getScene().getEngine().getHostWindow();if(e){var i=function(){e.addEventListener("orientationchange",t._orientationChanged),e.addEventListener("deviceorientation",t._deviceOrientation),t._orientationChanged()};typeof DeviceOrientationEvent<"u"&&typeof DeviceOrientationEvent.requestPermission=="function"?DeviceOrientationEvent.requestPermission().then(function(r){r==="granted"?i():se.Warn("Permission not granted.")}).catch(function(r){se.Error(r)}):i()}},n.prototype.detachControl=function(t){window.removeEventListener("orientationchange",this._orientationChanged),window.removeEventListener("deviceorientation",this._deviceOrientation),this._alpha=0},n.prototype.checkInputs=function(){this._alpha&&(te.RotationYawPitchRollToRef(se.ToRadians(this._alpha),se.ToRadians(this._beta),-se.ToRadians(this._gamma),this.camera.rotationQuaternion),this._camera.rotationQuaternion.multiplyInPlace(this._screenQuaternion),this._camera.rotationQuaternion.multiplyInPlace(this._constantTranform),this._camera.rotationQuaternion.z*=-1,this._camera.rotationQuaternion.w*=-1)},n.prototype.getClassName=function(){return"FreeCameraDeviceOrientationInput"},n.prototype.getSimpleName=function(){return"deviceOrientation"},n}();Ut.FreeCameraDeviceOrientationInput=Ds;var Is=function(){function n(){this.gamepadAngularSensibility=200,this.gamepadMoveSensibility=40,this._yAxisScale=1,this._cameraTransform=q.Identity(),this._deltaTransform=_.Zero(),this._vector3=_.Zero(),this._vector2=ae.Zero()}return Object.defineProperty(n.prototype,"invertYAxis",{get:function(){return this._yAxisScale!==1},set:function(t){this._yAxisScale=t?-1:1},enumerable:!1,configurable:!0}),n.prototype.attachControl=function(){var t=this,e=this.camera.getScene().gamepadManager;this._onGamepadConnectedObserver=e.onGamepadConnectedObservable.add(function(i){i.type!==_t.POSE_ENABLED&&(!t.gamepad||i.type===_t.XBOX)&&(t.gamepad=i)}),this._onGamepadDisconnectedObserver=e.onGamepadDisconnectedObservable.add(function(i){t.gamepad===i&&(t.gamepad=null)}),this.gamepad=e.getGamepadByType(_t.XBOX),!this.gamepad&&e.gamepads.length&&(this.gamepad=e.gamepads[0])},n.prototype.detachControl=function(t){this.camera.getScene().gamepadManager.onGamepadConnectedObservable.remove(this._onGamepadConnectedObserver),this.camera.getScene().gamepadManager.onGamepadDisconnectedObservable.remove(this._onGamepadDisconnectedObserver),this.gamepad=null},n.prototype.checkInputs=function(){if(this.gamepad&&this.gamepad.leftStick){var t=this.camera,e=this.gamepad.leftStick,i=e.x/this.gamepadMoveSensibility,r=e.y/this.gamepadMoveSensibility;e.x=Math.abs(i)>.005?0+i:0,e.y=Math.abs(r)>.005?0+r:0;var o=this.gamepad.rightStick;if(o){var a=o.x/this.gamepadAngularSensibility,s=o.y/this.gamepadAngularSensibility*this._yAxisScale;o.x=Math.abs(a)>.001?0+a:0,o.y=Math.abs(s)>.001?0+s:0}else o={x:0,y:0};t.rotationQuaternion?t.rotationQuaternion.toRotationMatrix(this._cameraTransform):q.RotationYawPitchRollToRef(t.rotation.y,t.rotation.x,0,this._cameraTransform);var l=t._computeLocalCameraSpeed()*50;this._vector3.copyFromFloats(e.x*l,0,-e.y*l),_.TransformCoordinatesToRef(this._vector3,this._cameraTransform,this._deltaTransform),t.cameraDirection.addInPlace(this._deltaTransform),this._vector2.copyFromFloats(o.y,o.x),t.cameraRotation.addInPlace(this._vector2)}},n.prototype.getClassName=function(){return"FreeCameraGamepadInput"},n.prototype.getSimpleName=function(){return"gamepad"},R([B()],n.prototype,"gamepadAngularSensibility",void 0),R([B()],n.prototype,"gamepadMoveSensibility",void 0),n}();Ut.FreeCameraGamepadInput=Is;var rt;(function(n){n[n.X=0]="X",n[n.Y=1]="Y",n[n.Z=2]="Z"})(rt||(rt={}));var ea=function(){function n(t,e){var i=this,r=ze(ze({},n._GetDefaultOptions()),e);if(t?this._leftJoystick=!0:this._leftJoystick=!1,n._globalJoystickIndex++,this._axisTargetedByLeftAndRight=rt.X,this._axisTargetedByUpAndDown=rt.Y,this.reverseLeftRight=!1,this.reverseUpDown=!1,this._touches=new Kl,this.deltaPosition=_.Zero(),this._joystickSensibility=25,this._inversedSensibility=1/(this._joystickSensibility/1e3),this._onResize=function(a){n.vjCanvasWidth=window.innerWidth,n.vjCanvasHeight=window.innerHeight,n.Canvas&&(n.Canvas.width=n.vjCanvasWidth,n.Canvas.height=n.vjCanvasHeight),n.halfWidth=n.vjCanvasWidth/2},!n.Canvas){window.addEventListener("resize",this._onResize,!1),n.Canvas=document.createElement("canvas"),n.vjCanvasWidth=window.innerWidth,n.vjCanvasHeight=window.innerHeight,n.Canvas.width=window.innerWidth,n.Canvas.height=window.innerHeight,n.Canvas.style.width="100%",n.Canvas.style.height="100%",n.Canvas.style.position="absolute",n.Canvas.style.backgroundColor="transparent",n.Canvas.style.top="0px",n.Canvas.style.left="0px",n.Canvas.style.zIndex="5",n.Canvas.style.msTouchAction="none",n.Canvas.style.touchAction="none",n.Canvas.setAttribute("touch-action","none");var o=n.Canvas.getContext("2d");if(!o)throw new Error("Unable to create canvas for virtual joystick");n.vjCanvasContext=o,n.vjCanvasContext.strokeStyle="#ffffff",n.vjCanvasContext.lineWidth=2,document.body.appendChild(n.Canvas)}n.halfWidth=n.Canvas.width/2,this.pressed=!1,this.limitToContainer=r.limitToContainer,this._joystickColor=r.color,this.containerSize=r.containerSize,this.puckSize=r.puckSize,r.position&&this.setPosition(r.position.x,r.position.y),r.puckImage&&this.setPuckImage(r.puckImage),r.containerImage&&this.setContainerImage(r.containerImage),r.alwaysVisible&&n._alwaysVisibleSticks++,this.alwaysVisible=r.alwaysVisible,this._joystickPointerID=-1,this._joystickPointerPos=new ae(0,0),this._joystickPreviousPointerPos=new ae(0,0),this._joystickPointerStartPos=new ae(0,0),this._deltaJoystickVector=new ae(0,0),this._onPointerDownHandlerRef=function(a){i._onPointerDown(a)},this._onPointerMoveHandlerRef=function(a){i._onPointerMove(a)},this._onPointerUpHandlerRef=function(a){i._onPointerUp(a)},n.Canvas.addEventListener("pointerdown",this._onPointerDownHandlerRef,!1),n.Canvas.addEventListener("pointermove",this._onPointerMoveHandlerRef,!1),n.Canvas.addEventListener("pointerup",this._onPointerUpHandlerRef,!1),n.Canvas.addEventListener("pointerout",this._onPointerUpHandlerRef,!1),n.Canvas.addEventListener("contextmenu",function(a){a.preventDefault()},!1),requestAnimationFrame(function(){i._drawVirtualJoystick()})}return n._GetDefaultOptions=function(){return{puckSize:40,containerSize:60,color:"cyan",puckImage:void 0,containerImage:void 0,position:void 0,alwaysVisible:!1,limitToContainer:!1}},n.prototype.setJoystickSensibility=function(t){this._joystickSensibility=t,this._inversedSensibility=1/(this._joystickSensibility/1e3)},n.prototype._onPointerDown=function(t){var e;t.preventDefault(),this._leftJoystick===!0?e=t.clientX<n.halfWidth:e=t.clientX>n.halfWidth,e&&this._joystickPointerID<0?(this._joystickPointerID=t.pointerId,this._joystickPosition?(this._joystickPointerStartPos=this._joystickPosition.clone(),this._joystickPointerPos=this._joystickPosition.clone(),this._joystickPreviousPointerPos=this._joystickPosition.clone(),this._onPointerMove(t)):(this._joystickPointerStartPos.x=t.clientX,this._joystickPointerStartPos.y=t.clientY,this._joystickPointerPos=this._joystickPointerStartPos.clone(),this._joystickPreviousPointerPos=this._joystickPointerStartPos.clone()),this._deltaJoystickVector.x=0,this._deltaJoystickVector.y=0,this.pressed=!0,this._touches.add(t.pointerId.toString(),t)):n._globalJoystickIndex<2&&this._action&&(this._action(),this._touches.add(t.pointerId.toString(),{x:t.clientX,y:t.clientY,prevX:t.clientX,prevY:t.clientY}))},n.prototype._onPointerMove=function(t){if(this._joystickPointerID==t.pointerId){if(this.limitToContainer){var e=new ae(t.clientX-this._joystickPointerStartPos.x,t.clientY-this._joystickPointerStartPos.y),i=e.length();i>this.containerSize&&e.scaleInPlace(this.containerSize/i),this._joystickPointerPos.x=this._joystickPointerStartPos.x+e.x,this._joystickPointerPos.y=this._joystickPointerStartPos.y+e.y}else this._joystickPointerPos.x=t.clientX,this._joystickPointerPos.y=t.clientY;this._deltaJoystickVector=this._joystickPointerPos.clone(),this._deltaJoystickVector=this._deltaJoystickVector.subtract(this._joystickPointerStartPos),0<n._alwaysVisibleSticks&&(this._leftJoystick?this._joystickPointerPos.x=Math.min(n.halfWidth,this._joystickPointerPos.x):this._joystickPointerPos.x=Math.max(n.halfWidth,this._joystickPointerPos.x));var r=this.reverseLeftRight?-1:1,o=r*this._deltaJoystickVector.x/this._inversedSensibility;switch(this._axisTargetedByLeftAndRight){case rt.X:this.deltaPosition.x=Math.min(1,Math.max(-1,o));break;case rt.Y:this.deltaPosition.y=Math.min(1,Math.max(-1,o));break;case rt.Z:this.deltaPosition.z=Math.min(1,Math.max(-1,o));break}var a=this.reverseUpDown?1:-1,s=a*this._deltaJoystickVector.y/this._inversedSensibility;switch(this._axisTargetedByUpAndDown){case rt.X:this.deltaPosition.x=Math.min(1,Math.max(-1,s));break;case rt.Y:this.deltaPosition.y=Math.min(1,Math.max(-1,s));break;case rt.Z:this.deltaPosition.z=Math.min(1,Math.max(-1,s));break}}else{var l=this._touches.get(t.pointerId.toString());l&&(l.x=t.clientX,l.y=t.clientY)}},n.prototype._onPointerUp=function(t){if(this._joystickPointerID==t.pointerId)this._clearPreviousDraw(),this._joystickPointerID=-1,this.pressed=!1;else{var e=this._touches.get(t.pointerId.toString());e&&n.vjCanvasContext.clearRect(e.prevX-44,e.prevY-44,88,88)}this._deltaJoystickVector.x=0,this._deltaJoystickVector.y=0,this._touches.remove(t.pointerId.toString())},n.prototype.setJoystickColor=function(t){this._joystickColor=t},Object.defineProperty(n.prototype,"containerSize",{get:function(){return this._joystickContainerSize},set:function(t){this._joystickContainerSize=t,this._clearContainerSize=~~(this._joystickContainerSize*2.1),this._clearContainerSizeOffset=~~(this._clearContainerSize/2)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"puckSize",{get:function(){return this._joystickPuckSize},set:function(t){this._joystickPuckSize=t,this._clearPuckSize=~~(this._joystickPuckSize*2.1),this._clearPuckSizeOffset=~~(this._clearPuckSize/2)},enumerable:!1,configurable:!0}),n.prototype.clearPosition=function(){this.alwaysVisible=!1,this._joystickPosition=null},Object.defineProperty(n.prototype,"alwaysVisible",{get:function(){return this._alwaysVisible},set:function(t){this._alwaysVisible!==t&&(t&&this._joystickPosition?(n._alwaysVisibleSticks++,this._alwaysVisible=!0):(n._alwaysVisibleSticks--,this._alwaysVisible=!1))},enumerable:!1,configurable:!0}),n.prototype.setPosition=function(t,e){this._joystickPointerStartPos&&this._clearPreviousDraw(),this._joystickPosition=new ae(t,e)},n.prototype.setActionOnTouch=function(t){this._action=t},n.prototype.setAxisForLeftRight=function(t){switch(t){case rt.X:case rt.Y:case rt.Z:this._axisTargetedByLeftAndRight=t;break;default:this._axisTargetedByLeftAndRight=rt.X;break}},n.prototype.setAxisForUpDown=function(t){switch(t){case rt.X:case rt.Y:case rt.Z:this._axisTargetedByUpAndDown=t;break;default:this._axisTargetedByUpAndDown=rt.Y;break}},n.prototype._clearPreviousDraw=function(){var t=this._joystickPosition||this._joystickPointerStartPos;n.vjCanvasContext.clearRect(t.x-this._clearContainerSizeOffset,t.y-this._clearContainerSizeOffset,this._clearContainerSize,this._clearContainerSize),n.vjCanvasContext.clearRect(this._joystickPreviousPointerPos.x-this._clearPuckSizeOffset,this._joystickPreviousPointerPos.y-this._clearPuckSizeOffset,this._clearPuckSize,this._clearPuckSize)},n.prototype.setContainerImage=function(t){var e=this,i=new Image;i.src=t,i.onload=function(){return e._containerImage=i}},n.prototype.setPuckImage=function(t){var e=this,i=new Image;i.src=t,i.onload=function(){return e._puckImage=i}},n.prototype._drawContainer=function(){var t=this._joystickPosition||this._joystickPointerStartPos;this._clearPreviousDraw(),this._containerImage?n.vjCanvasContext.drawImage(this._containerImage,t.x-this.containerSize,t.y-this.containerSize,this.containerSize*2,this.containerSize*2):(n.vjCanvasContext.beginPath(),n.vjCanvasContext.strokeStyle=this._joystickColor,n.vjCanvasContext.lineWidth=2,n.vjCanvasContext.arc(t.x,t.y,this.containerSize,0,Math.PI*2,!0),n.vjCanvasContext.stroke(),n.vjCanvasContext.closePath(),n.vjCanvasContext.beginPath(),n.vjCanvasContext.lineWidth=6,n.vjCanvasContext.strokeStyle=this._joystickColor,n.vjCanvasContext.arc(t.x,t.y,this.puckSize,0,Math.PI*2,!0),n.vjCanvasContext.stroke(),n.vjCanvasContext.closePath())},n.prototype._drawPuck=function(){this._puckImage?n.vjCanvasContext.drawImage(this._puckImage,this._joystickPointerPos.x-this.puckSize,this._joystickPointerPos.y-this.puckSize,this.puckSize*2,this.puckSize*2):(n.vjCanvasContext.beginPath(),n.vjCanvasContext.strokeStyle=this._joystickColor,n.vjCanvasContext.lineWidth=2,n.vjCanvasContext.arc(this._joystickPointerPos.x,this._joystickPointerPos.y,this.puckSize,0,Math.PI*2,!0),n.vjCanvasContext.stroke(),n.vjCanvasContext.closePath())},n.prototype._drawVirtualJoystick=function(){var t=this;this.alwaysVisible&&this._drawContainer(),this.pressed&&this._touches.forEach(function(e,i){i.pointerId===t._joystickPointerID?(t.alwaysVisible||t._drawContainer(),t._drawPuck(),t._joystickPreviousPointerPos=t._joystickPointerPos.clone()):(n.vjCanvasContext.clearRect(i.prevX-44,i.prevY-44,88,88),n.vjCanvasContext.beginPath(),n.vjCanvasContext.fillStyle="white",n.vjCanvasContext.beginPath(),n.vjCanvasContext.strokeStyle="red",n.vjCanvasContext.lineWidth=6,n.vjCanvasContext.arc(i.x,i.y,40,0,Math.PI*2,!0),n.vjCanvasContext.stroke(),n.vjCanvasContext.closePath(),i.prevX=i.x,i.prevY=i.y)}),requestAnimationFrame(function(){t._drawVirtualJoystick()})},n.prototype.releaseCanvas=function(){n.Canvas&&(n.Canvas.removeEventListener("pointerdown",this._onPointerDownHandlerRef),n.Canvas.removeEventListener("pointermove",this._onPointerMoveHandlerRef),n.Canvas.removeEventListener("pointerup",this._onPointerUpHandlerRef),n.Canvas.removeEventListener("pointerout",this._onPointerUpHandlerRef),window.removeEventListener("resize",this._onResize),document.body.removeChild(n.Canvas),n.Canvas=null)},n._globalJoystickIndex=0,n._alwaysVisibleSticks=0,n}();Co.prototype.addVirtualJoystick=function(){return this.add(new Ns),this};var Ns=function(){function n(){}return n.prototype.getLeftJoystick=function(){return this._leftjoystick},n.prototype.getRightJoystick=function(){return this._rightjoystick},n.prototype.checkInputs=function(){if(this._leftjoystick){var t=this.camera,e=t._computeLocalCameraSpeed()*50,i=q.RotationYawPitchRoll(t.rotation.y,t.rotation.x,0),r=_.TransformCoordinates(new _(this._leftjoystick.deltaPosition.x*e,this._leftjoystick.deltaPosition.y*e,this._leftjoystick.deltaPosition.z*e),i);t.cameraDirection=t.cameraDirection.add(r),t.cameraRotation=t.cameraRotation.addVector3(this._rightjoystick.deltaPosition),this._leftjoystick.pressed||(this._leftjoystick.deltaPosition=this._leftjoystick.deltaPosition.scale(.9)),this._rightjoystick.pressed||(this._rightjoystick.deltaPosition=this._rightjoystick.deltaPosition.scale(.9))}},n.prototype.attachControl=function(){this._leftjoystick=new ea(!0),this._leftjoystick.setAxisForUpDown(rt.Z),this._leftjoystick.setAxisForLeftRight(rt.X),this._leftjoystick.setJoystickSensibility(.15),this._rightjoystick=new ea(!1),this._rightjoystick.setAxisForUpDown(rt.X),this._rightjoystick.setAxisForLeftRight(rt.Y),this._rightjoystick.reverseUpDown=!0,this._rightjoystick.setJoystickSensibility(.05),this._rightjoystick.setJoystickColor("yellow")},n.prototype.detachControl=function(t){this._leftjoystick.releaseCanvas(),this._rightjoystick.releaseCanvas()},n.prototype.getClassName=function(){return"FreeCameraVirtualJoystickInput"},n.prototype.getSimpleName=function(){return"virtualJoystick"},n}();Ut.FreeCameraVirtualJoystickInput=Ns;st.AddNodeConstructor("TouchCamera",function(n,t){return function(){return new Fs(n,_.Zero(),t)}});var Fs=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,i,r)||this;return o.inputs.addTouch(),o._setupInputs(),o}return Object.defineProperty(t.prototype,"touchAngularSensibility",{get:function(){var e=this.inputs.attached.touch;return e?e.touchAngularSensibility:0},set:function(e){var i=this.inputs.attached.touch;i&&(i.touchAngularSensibility=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"touchMoveSensibility",{get:function(){var e=this.inputs.attached.touch;return e?e.touchMoveSensibility:0},set:function(e){var i=this.inputs.attached.touch;i&&(i.touchMoveSensibility=e)},enumerable:!1,configurable:!0}),t.prototype.getClassName=function(){return"TouchCamera"},t.prototype._setupInputs=function(){var e=this.inputs.attached.touch,i=this.inputs.attached.mouse;i?i.touchEnabled=!1:e.allowMouse=!0},t}(Jt);st.AddNodeConstructor("ArcRotateCamera",function(n,t){return function(){return new xr(n,0,0,1,_.Zero(),t)}});var xr=function(n){N(t,n);function t(e,i,r,o,a,s,l){l===void 0&&(l=!0);var u=n.call(this,e,_.Zero(),s,l)||this;return u.inertialAlphaOffset=0,u.inertialBetaOffset=0,u.inertialRadiusOffset=0,u.lowerAlphaLimit=null,u.upperAlphaLimit=null,u.lowerBetaLimit=.01,u.upperBetaLimit=Math.PI-.01,u.lowerRadiusLimit=null,u.upperRadiusLimit=null,u.inertialPanningX=0,u.inertialPanningY=0,u.pinchToPanMaxDistance=20,u.panningDistanceLimit=null,u.panningOriginTarget=_.Zero(),u.panningInertia=.9,u.zoomOnFactor=1,u.targetScreenOffset=ae.Zero(),u.allowUpsideDown=!0,u.useInputToRestoreState=!0,u._viewMatrix=new q,u.panningAxis=new _(1,1,0),u.onMeshTargetChangedObservable=new J,u.checkCollisions=!1,u.collisionRadius=new _(.5,.5,.5),u._previousPosition=_.Zero(),u._collisionVelocity=_.Zero(),u._newPosition=_.Zero(),u._computationVector=_.Zero(),u._onCollisionPositionChange=function(c,h,f){f===void 0&&(f=null),f?(u.setPosition(h),u.onCollide&&u.onCollide(f)):u._previousPosition.copyFrom(u._position);var d=Math.cos(u.alpha),p=Math.sin(u.alpha),g=Math.cos(u.beta),m=Math.sin(u.beta);m===0&&(m=1e-4);var v=u._getTargetPosition();u._computationVector.copyFromFloats(u.radius*d*m,u.radius*g,u.radius*p*m),v.addToRef(u._computationVector,u._newPosition),u._position.copyFrom(u._newPosition);var b=u.upVector;u.allowUpsideDown&&u.beta<0&&(b=b.clone(),b=b.negate()),u._computeViewMatrix(u._position,v,b),u._viewMatrix.addAtIndex(12,u.targetScreenOffset.x),u._viewMatrix.addAtIndex(13,u.targetScreenOffset.y),u._collisionTriggered=!1},u._target=_.Zero(),a&&u.setTarget(a),u.alpha=i,u.beta=r,u.radius=o,u.getViewMatrix(),u.inputs=new wo(u),u.inputs.addKeyboard().addMouseWheel().addPointers(),u}return Object.defineProperty(t.prototype,"target",{get:function(){return this._target},set:function(e){this.setTarget(e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"position",{get:function(){return this._position},set:function(e){this.setPosition(e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"upVector",{get:function(){return this._upVector},set:function(e){this._upToYMatrix||(this._YToUpMatrix=new q,this._upToYMatrix=new q,this._upVector=_.Zero()),e.normalize(),this._upVector.copyFrom(e),this.setMatUp()},enumerable:!1,configurable:!0}),t.prototype.setMatUp=function(){q.RotationAlignToRef(_.UpReadOnly,this._upVector,this._YToUpMatrix),q.RotationAlignToRef(this._upVector,_.UpReadOnly,this._upToYMatrix)},Object.defineProperty(t.prototype,"angularSensibilityX",{get:function(){var e=this.inputs.attached.pointers;return e?e.angularSensibilityX:0},set:function(e){var i=this.inputs.attached.pointers;i&&(i.angularSensibilityX=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"angularSensibilityY",{get:function(){var e=this.inputs.attached.pointers;return e?e.angularSensibilityY:0},set:function(e){var i=this.inputs.attached.pointers;i&&(i.angularSensibilityY=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"pinchPrecision",{get:function(){var e=this.inputs.attached.pointers;return e?e.pinchPrecision:0},set:function(e){var i=this.inputs.attached.pointers;i&&(i.pinchPrecision=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"pinchDeltaPercentage",{get:function(){var e=this.inputs.attached.pointers;return e?e.pinchDeltaPercentage:0},set:function(e){var i=this.inputs.attached.pointers;i&&(i.pinchDeltaPercentage=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"useNaturalPinchZoom",{get:function(){var e=this.inputs.attached.pointers;return e?e.useNaturalPinchZoom:!1},set:function(e){var i=this.inputs.attached.pointers;i&&(i.useNaturalPinchZoom=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"panningSensibility",{get:function(){var e=this.inputs.attached.pointers;return e?e.panningSensibility:0},set:function(e){var i=this.inputs.attached.pointers;i&&(i.panningSensibility=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysUp",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysUp:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysUp=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysDown",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysDown:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysDown=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysLeft",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysLeft:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysLeft=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysRight",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysRight:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysRight=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"wheelPrecision",{get:function(){var e=this.inputs.attached.mousewheel;return e?e.wheelPrecision:0},set:function(e){var i=this.inputs.attached.mousewheel;i&&(i.wheelPrecision=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"wheelDeltaPercentage",{get:function(){var e=this.inputs.attached.mousewheel;return e?e.wheelDeltaPercentage:0},set:function(e){var i=this.inputs.attached.mousewheel;i&&(i.wheelDeltaPercentage=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bouncingBehavior",{get:function(){return this._bouncingBehavior},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"useBouncingBehavior",{get:function(){return this._bouncingBehavior!=null},set:function(e){e!==this.useBouncingBehavior&&(e?(this._bouncingBehavior=new zu,this.addBehavior(this._bouncingBehavior)):this._bouncingBehavior&&(this.removeBehavior(this._bouncingBehavior),this._bouncingBehavior=null))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"framingBehavior",{get:function(){return this._framingBehavior},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"useFramingBehavior",{get:function(){return this._framingBehavior!=null},set:function(e){e!==this.useFramingBehavior&&(e?(this._framingBehavior=new Uu,this.addBehavior(this._framingBehavior)):this._framingBehavior&&(this.removeBehavior(this._framingBehavior),this._framingBehavior=null))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"autoRotationBehavior",{get:function(){return this._autoRotationBehavior},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"useAutoRotationBehavior",{get:function(){return this._autoRotationBehavior!=null},set:function(e){e!==this.useAutoRotationBehavior&&(e?(this._autoRotationBehavior=new ku,this.addBehavior(this._autoRotationBehavior)):this._autoRotationBehavior&&(this.removeBehavior(this._autoRotationBehavior),this._autoRotationBehavior=null))},enumerable:!1,configurable:!0}),t.prototype._initCache=function(){n.prototype._initCache.call(this),this._cache._target=new _(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.alpha=void 0,this._cache.beta=void 0,this._cache.radius=void 0,this._cache.targetScreenOffset=ae.Zero()},t.prototype._updateCache=function(e){e||n.prototype._updateCache.call(this),this._cache._target.copyFrom(this._getTargetPosition()),this._cache.alpha=this.alpha,this._cache.beta=this.beta,this._cache.radius=this.radius,this._cache.targetScreenOffset.copyFrom(this.targetScreenOffset)},t.prototype._getTargetPosition=function(){if(this._targetHost&&this._targetHost.getAbsolutePosition){var e=this._targetHost.absolutePosition;this._targetBoundingCenter?e.addToRef(this._targetBoundingCenter,this._target):this._target.copyFrom(e)}var i=this._getLockedTargetPosition();return i||this._target},t.prototype.storeState=function(){return this._storedAlpha=this.alpha,this._storedBeta=this.beta,this._storedRadius=this.radius,this._storedTarget=this._getTargetPosition().clone(),this._storedTargetScreenOffset=this.targetScreenOffset.clone(),n.prototype.storeState.call(this)},t.prototype._restoreStateValues=function(){return n.prototype._restoreStateValues.call(this)?(this.setTarget(this._storedTarget.clone()),this.alpha=this._storedAlpha,this.beta=this._storedBeta,this.radius=this._storedRadius,this.targetScreenOffset=this._storedTargetScreenOffset.clone(),this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0,!0):!1},t.prototype._isSynchronizedViewMatrix=function(){return n.prototype._isSynchronizedViewMatrix.call(this)?this._cache._target.equals(this._getTargetPosition())&&this._cache.alpha===this.alpha&&this._cache.beta===this.beta&&this._cache.radius===this.radius&&this._cache.targetScreenOffset.equals(this.targetScreenOffset):!1},t.prototype.attachControl=function(e,i,r,o){var a=this;r===void 0&&(r=!0),o===void 0&&(o=2),i=se.BackCompatCameraNoPreventDefault(arguments),this._useCtrlForPanning=r,this._panningMouseButton=o,typeof arguments[0]=="boolean"&&(arguments.length>1&&(this._useCtrlForPanning=arguments[1]),arguments.length>2&&(this._panningMouseButton=arguments[2])),this.inputs.attachElement(i),this._reset=function(){a.inertialAlphaOffset=0,a.inertialBetaOffset=0,a.inertialRadiusOffset=0,a.inertialPanningX=0,a.inertialPanningY=0}},t.prototype.detachControl=function(e){this.inputs.detachElement(),this._reset&&this._reset()},t.prototype._checkInputs=function(){if(!this._collisionTriggered){if(this.inputs.checkInputs(),this.inertialAlphaOffset!==0||this.inertialBetaOffset!==0||this.inertialRadiusOffset!==0){var e=this.inertialAlphaOffset;this.beta<=0&&(e*=-1),this.getScene().useRightHandedSystem&&(e*=-1),this.parent&&this.parent._getWorldMatrixDeterminant()<0&&(e*=-1),this.alpha+=e,this.beta+=this.inertialBetaOffset,this.radius-=this.inertialRadiusOffset,this.inertialAlphaOffset*=this.inertia,this.inertialBetaOffset*=this.inertia,this.inertialRadiusOffset*=this.inertia,Math.abs(this.inertialAlphaOffset)<ot&&(this.inertialAlphaOffset=0),Math.abs(this.inertialBetaOffset)<ot&&(this.inertialBetaOffset=0),Math.abs(this.inertialRadiusOffset)<this.speed*ot&&(this.inertialRadiusOffset=0)}if(this.inertialPanningX!==0||this.inertialPanningY!==0){if(this._localDirection||(this._localDirection=_.Zero(),this._transformedDirection=_.Zero()),this._localDirection.copyFromFloats(this.inertialPanningX,this.inertialPanningY,this.inertialPanningY),this._localDirection.multiplyInPlace(this.panningAxis),this._viewMatrix.invertToRef(this._cameraTransformMatrix),_.TransformNormalToRef(this._localDirection,this._cameraTransformMatrix,this._transformedDirection),this.panningAxis.y||(this._transformedDirection.y=0),!this._targetHost)if(this.panningDistanceLimit){this._transformedDirection.addInPlace(this._target);var i=_.DistanceSquared(this._transformedDirection,this.panningOriginTarget);i<=this.panningDistanceLimit*this.panningDistanceLimit&&this._target.copyFrom(this._transformedDirection)}else this._target.addInPlace(this._transformedDirection);this.inertialPanningX*=this.panningInertia,this.inertialPanningY*=this.panningInertia,Math.abs(this.inertialPanningX)<this.speed*ot&&(this.inertialPanningX=0),Math.abs(this.inertialPanningY)<this.speed*ot&&(this.inertialPanningY=0)}this._checkLimits(),n.prototype._checkInputs.call(this)}},t.prototype._checkLimits=function(){this.lowerBetaLimit===null||this.lowerBetaLimit===void 0?this.allowUpsideDown&&this.beta>Math.PI&&(this.beta=this.beta-2*Math.PI):this.beta<this.lowerBetaLimit&&(this.beta=this.lowerBetaLimit),this.upperBetaLimit===null||this.upperBetaLimit===void 0?this.allowUpsideDown&&this.beta<-Math.PI&&(this.beta=this.beta+2*Math.PI):this.beta>this.upperBetaLimit&&(this.beta=this.upperBetaLimit),this.lowerAlphaLimit!==null&&this.alpha<this.lowerAlphaLimit&&(this.alpha=this.lowerAlphaLimit),this.upperAlphaLimit!==null&&this.alpha>this.upperAlphaLimit&&(this.alpha=this.upperAlphaLimit),this.lowerRadiusLimit!==null&&this.radius<this.lowerRadiusLimit&&(this.radius=this.lowerRadiusLimit,this.inertialRadiusOffset=0),this.upperRadiusLimit!==null&&this.radius>this.upperRadiusLimit&&(this.radius=this.upperRadiusLimit,this.inertialRadiusOffset=0)},t.prototype.rebuildAnglesAndRadius=function(){this._position.subtractToRef(this._getTargetPosition(),this._computationVector),(this._upVector.x!==0||this._upVector.y!==1||this._upVector.z!==0)&&_.TransformCoordinatesToRef(this._computationVector,this._upToYMatrix,this._computationVector),this.radius=this._computationVector.length(),this.radius===0&&(this.radius=1e-4);var e=this.alpha;this._computationVector.x===0&&this._computationVector.z===0?this.alpha=Math.PI/2:this.alpha=Math.acos(this._computationVector.x/Math.sqrt(Math.pow(this._computationVector.x,2)+Math.pow(this._computationVector.z,2))),this._computationVector.z<0&&(this.alpha=2*Math.PI-this.alpha);var i=Math.round((e-this.alpha)/(2*Math.PI));this.alpha+=i*2*Math.PI,this.beta=Math.acos(this._computationVector.y/this.radius),this._checkLimits()},t.prototype.setPosition=function(e){this._position.equals(e)||(this._position.copyFrom(e),this.rebuildAnglesAndRadius())},t.prototype.setTarget=function(e,i,r){if(i===void 0&&(i=!1),r===void 0&&(r=!1),e.getBoundingInfo)i?this._targetBoundingCenter=e.getBoundingInfo().boundingBox.centerWorld.clone():this._targetBoundingCenter=null,e.computeWorldMatrix(),this._targetHost=e,this._target=this._getTargetPosition(),this.onMeshTargetChangedObservable.notifyObservers(this._targetHost);else{var o=e,a=this._getTargetPosition();if(a&&!r&&a.equals(o))return;this._targetHost=null,this._target=o,this._targetBoundingCenter=null,this.onMeshTargetChangedObservable.notifyObservers(null)}this.rebuildAnglesAndRadius()},t.prototype._getViewMatrix=function(){var e=Math.cos(this.alpha),i=Math.sin(this.alpha),r=Math.cos(this.beta),o=Math.sin(this.beta);o===0&&(o=1e-4),this.radius===0&&(this.radius=1e-4);var a=this._getTargetPosition();if(this._computationVector.copyFromFloats(this.radius*e*o,this.radius*r,this.radius*i*o),(this._upVector.x!==0||this._upVector.y!==1||this._upVector.z!==0)&&_.TransformCoordinatesToRef(this._computationVector,this._YToUpMatrix,this._computationVector),a.addToRef(this._computationVector,this._newPosition),this.getScene().collisionsEnabled&&this.checkCollisions){var s=this.getScene().collisionCoordinator;this._collider||(this._collider=s.createCollider()),this._collider._radius=this.collisionRadius,this._newPosition.subtractToRef(this._position,this._collisionVelocity),this._collisionTriggered=!0,s.getNewPosition(this._position,this._collisionVelocity,this._collider,3,null,this._onCollisionPositionChange,this.uniqueId)}else{this._position.copyFrom(this._newPosition);var l=this.upVector;this.allowUpsideDown&&o<0&&(l=l.negate()),this._computeViewMatrix(this._position,a,l),this._viewMatrix.addAtIndex(12,this.targetScreenOffset.x),this._viewMatrix.addAtIndex(13,this.targetScreenOffset.y)}return this._currentTarget=a,this._viewMatrix},t.prototype.zoomOn=function(e,i){i===void 0&&(i=!1),e=e||this.getScene().meshes;var r=O.MinMax(e),o=_.Distance(r.min,r.max);this.radius=o*this.zoomOnFactor,this.focusOn({min:r.min,max:r.max,distance:o},i)},t.prototype.focusOn=function(e,i){i===void 0&&(i=!1);var r,o;if(e.min===void 0){var a=e||this.getScene().meshes;r=O.MinMax(a),o=_.Distance(r.min,r.max)}else{var s=e;r=s,o=s.distance}this._target=O.Center(r),i||(this.maxZ=o*2)},t.prototype.createRigCamera=function(e,i){var r=0;switch(this.cameraRigMode){case Me.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case Me.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case Me.RIG_MODE_STEREOSCOPIC_OVERUNDER:case Me.RIG_MODE_STEREOSCOPIC_INTERLACED:case Me.RIG_MODE_VR:r=this._cameraRigParams.stereoHalfAngle*(i===0?1:-1);break;case Me.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:r=this._cameraRigParams.stereoHalfAngle*(i===0?-1:1);break}var o=new t(e,this.alpha+r,this.beta,this.radius,this._target,this.getScene());return o._cameraRigParams={},o.isRigCamera=!0,o.rigParent=this,o.upVector=this.upVector,o},t.prototype._updateRigCameras=function(){var e=this._rigCameras[0],i=this._rigCameras[1];switch(e.beta=i.beta=this.beta,this.cameraRigMode){case Me.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case Me.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case Me.RIG_MODE_STEREOSCOPIC_OVERUNDER:case Me.RIG_MODE_STEREOSCOPIC_INTERLACED:case Me.RIG_MODE_VR:e.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle,i.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle;break;case Me.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:e.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle,i.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle;break}n.prototype._updateRigCameras.call(this)},t.prototype.dispose=function(){this.inputs.clear(),n.prototype.dispose.call(this)},t.prototype.getClassName=function(){return"ArcRotateCamera"},R([B()],t.prototype,"alpha",void 0),R([B()],t.prototype,"beta",void 0),R([B()],t.prototype,"radius",void 0),R([Yi("target")],t.prototype,"_target",void 0),R([B()],t.prototype,"inertialAlphaOffset",void 0),R([B()],t.prototype,"inertialBetaOffset",void 0),R([B()],t.prototype,"inertialRadiusOffset",void 0),R([B()],t.prototype,"lowerAlphaLimit",void 0),R([B()],t.prototype,"upperAlphaLimit",void 0),R([B()],t.prototype,"lowerBetaLimit",void 0),R([B()],t.prototype,"upperBetaLimit",void 0),R([B()],t.prototype,"lowerRadiusLimit",void 0),R([B()],t.prototype,"upperRadiusLimit",void 0),R([B()],t.prototype,"inertialPanningX",void 0),R([B()],t.prototype,"inertialPanningY",void 0),R([B()],t.prototype,"pinchToPanMaxDistance",void 0),R([B()],t.prototype,"panningDistanceLimit",void 0),R([Yi()],t.prototype,"panningOriginTarget",void 0),R([B()],t.prototype,"panningInertia",void 0),R([B()],t.prototype,"zoomOnFactor",void 0),R([B()],t.prototype,"targetScreenOffset",void 0),R([B()],t.prototype,"allowUpsideDown",void 0),R([B()],t.prototype,"useInputToRestoreState",void 0),t}(Cr);st.AddNodeConstructor("DeviceOrientationCamera",function(n,t){return function(){return new Do(n,_.Zero(),t)}});var Do=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,i,r)||this;return o._tmpDragQuaternion=new te,o._disablePointerInputWhenUsingDeviceOrientation=!0,o._dragFactor=0,o._quaternionCache=new te,o.inputs.addDeviceOrientation(),o.inputs._deviceOrientationInput&&o.inputs._deviceOrientationInput._onDeviceOrientationChangedObservable.addOnce(function(){o._disablePointerInputWhenUsingDeviceOrientation&&o.inputs._mouseInput&&(o.inputs._mouseInput._allowCameraRotation=!1,o.inputs._mouseInput.onPointerMovedObservable.add(function(a){o._dragFactor!=0&&(o._initialQuaternion||(o._initialQuaternion=new te),te.FromEulerAnglesToRef(0,a.offsetX*o._dragFactor,0,o._tmpDragQuaternion),o._initialQuaternion.multiplyToRef(o._tmpDragQuaternion,o._initialQuaternion))}))}),o}return Object.defineProperty(t.prototype,"disablePointerInputWhenUsingDeviceOrientation",{get:function(){return this._disablePointerInputWhenUsingDeviceOrientation},set:function(e){this._disablePointerInputWhenUsingDeviceOrientation=e},enumerable:!1,configurable:!0}),t.prototype.enableHorizontalDragging=function(e){e===void 0&&(e=1/300),this._dragFactor=e},t.prototype.getClassName=function(){return"DeviceOrientationCamera"},t.prototype._checkInputs=function(){n.prototype._checkInputs.call(this),this._quaternionCache.copyFrom(this.rotationQuaternion),this._initialQuaternion&&this._initialQuaternion.multiplyToRef(this.rotationQuaternion,this.rotationQuaternion)},t.prototype.resetToCurrentRotation=function(e){var i=this;e===void 0&&(e=ct.Y),this.rotationQuaternion&&(this._initialQuaternion||(this._initialQuaternion=new te),this._initialQuaternion.copyFrom(this._quaternionCache||this.rotationQuaternion),["x","y","z"].forEach(function(r){e[r]?i._initialQuaternion[r]*=-1:i._initialQuaternion[r]=0}),this._initialQuaternion.normalize(),this._initialQuaternion.multiplyToRef(this.rotationQuaternion,this.rotationQuaternion))},t}(Jt),Wu=function(n){N(t,n);function t(e){return n.call(this,e)||this}return t.prototype.addKeyboard=function(){return this.add(new Rs),this},t.prototype.addMouse=function(e){return e===void 0&&(e=!0),this.add(new Ms(e)),this},t}(So),ov=function(n){N(t,n);function t(e,i,r,o){o===void 0&&(o=!0);var a=n.call(this,e,i,r,o)||this;return a.ellipsoid=new _(1,1,1),a.ellipsoidOffset=new _(0,0,0),a.checkCollisions=!1,a.applyGravity=!1,a.cameraDirection=_.Zero(),a._trackRoll=0,a.rollCorrect=100,a.bankedTurn=!1,a.bankedTurnLimit=Math.PI/2,a.bankedTurnMultiplier=1,a._needMoveForGravity=!1,a._oldPosition=_.Zero(),a._diffPosition=_.Zero(),a._newPosition=_.Zero(),a._collisionMask=-1,a._onCollisionPositionChange=function(s,l,u){u===void 0&&(u=null);var c=function(h){a._newPosition.copyFrom(h),a._newPosition.subtractToRef(a._oldPosition,a._diffPosition),a._diffPosition.length()>ue.CollisionsEpsilon&&(a.position.addInPlace(a._diffPosition),a.onCollide&&u&&a.onCollide(u))};c(l)},a.inputs=new Wu(a),a.inputs.addKeyboard().addMouse(),a}return Object.defineProperty(t.prototype,"angularSensibility",{get:function(){var e=this.inputs.attached.mouse;return e?e.angularSensibility:0},set:function(e){var i=this.inputs.attached.mouse;i&&(i.angularSensibility=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysForward",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysForward:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysForward=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysBackward",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysBackward:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysBackward=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysUp",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysUp:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysUp=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysDown",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysDown:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysDown=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysLeft",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysLeft:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysLeft=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysRight",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysRight:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysRight=e)},enumerable:!1,configurable:!0}),t.prototype.attachControl=function(e,i){i=se.BackCompatCameraNoPreventDefault(arguments),this.inputs.attachElement(i)},t.prototype.detachControl=function(){this.inputs.detachElement(),this.cameraDirection=new _(0,0,0)},Object.defineProperty(t.prototype,"collisionMask",{get:function(){return this._collisionMask},set:function(e){this._collisionMask=isNaN(e)?-1:e},enumerable:!1,configurable:!0}),t.prototype._collideWithWorld=function(e){var i;this.parent?i=_.TransformCoordinates(this.position,this.parent.getWorldMatrix()):i=this.position,i.subtractFromFloatsToRef(0,this.ellipsoid.y,0,this._oldPosition),this._oldPosition.addInPlace(this.ellipsoidOffset);var r=this.getScene().collisionCoordinator;this._collider||(this._collider=r.createCollider()),this._collider._radius=this.ellipsoid,this._collider.collisionMask=this._collisionMask;var o=e;this.applyGravity&&(o=e.add(this.getScene().gravity)),r.getNewPosition(this._oldPosition,o,this._collider,3,null,this._onCollisionPositionChange,this.uniqueId)},t.prototype._checkInputs=function(){this._localDirection||(this._localDirection=_.Zero(),this._transformedDirection=_.Zero()),this.inputs.checkInputs(),n.prototype._checkInputs.call(this)},t.prototype._decideIfNeedsToMove=function(){return this._needMoveForGravity||Math.abs(this.cameraDirection.x)>0||Math.abs(this.cameraDirection.y)>0||Math.abs(this.cameraDirection.z)>0},t.prototype._updatePosition=function(){this.checkCollisions&&this.getScene().collisionsEnabled?this._collideWithWorld(this.cameraDirection):n.prototype._updatePosition.call(this)},t.prototype.restoreRoll=function(e){var i=this._trackRoll,r=this.rotation.z,o=i-r,a=.001;Math.abs(o)>=a&&(this.rotation.z+=o/e,Math.abs(i-this.rotation.z)<=a&&(this.rotation.z=i))},t.prototype.dispose=function(){this.inputs.clear(),n.prototype.dispose.call(this)},t.prototype.getClassName=function(){return"FlyCamera"},R([Yi()],t.prototype,"ellipsoid",void 0),R([Yi()],t.prototype,"ellipsoidOffset",void 0),R([B()],t.prototype,"checkCollisions",void 0),R([B()],t.prototype,"applyGravity",void 0),t}(Cr),Hu=function(n){N(t,n);function t(e){return n.call(this,e)||this}return t.prototype.addKeyboard=function(){return this.add(new As),this},t.prototype.addMouseWheel=function(){return this.add(new Os),this},t.prototype.addPointers=function(){return this.add(new ws),this},t.prototype.addVRDeviceOrientation=function(){return console.warn("DeviceOrientation support not yet implemented for FollowCamera."),this},t}(So);st.AddNodeConstructor("FollowCamera",function(n,t){return function(){return new Yu(n,_.Zero(),t)}});st.AddNodeConstructor("ArcFollowCamera",function(n,t){return function(){return new Xu(n,0,0,1,null,t)}});var Yu=function(n){N(t,n);function t(e,i,r,o){o===void 0&&(o=null);var a=n.call(this,e,i,r)||this;return a.radius=12,a.lowerRadiusLimit=null,a.upperRadiusLimit=null,a.rotationOffset=0,a.lowerRotationOffsetLimit=null,a.upperRotationOffsetLimit=null,a.heightOffset=4,a.lowerHeightOffsetLimit=null,a.upperHeightOffsetLimit=null,a.cameraAcceleration=.05,a.maxCameraSpeed=20,a.lockedTarget=o,a.inputs=new Hu(a),a.inputs.addKeyboard().addMouseWheel().addPointers(),a}return t.prototype._follow=function(e){if(e){var i;if(e.rotationQuaternion){var r=new q;e.rotationQuaternion.toRotationMatrix(r),i=Math.atan2(r.m[8],r.m[10])}else i=e.rotation.y;var o=se.ToRadians(this.rotationOffset)+i,a=e.getAbsolutePosition(),s=a.x+Math.sin(o)*this.radius,l=a.z+Math.cos(o)*this.radius,u=s-this.position.x,c=a.y+this.heightOffset-this.position.y,h=l-this.position.z,f=u*this.cameraAcceleration*2,d=c*this.cameraAcceleration,p=h*this.cameraAcceleration*2;(f>this.maxCameraSpeed||f<-this.maxCameraSpeed)&&(f=f<1?-this.maxCameraSpeed:this.maxCameraSpeed),(d>this.maxCameraSpeed||d<-this.maxCameraSpeed)&&(d=d<1?-this.maxCameraSpeed:this.maxCameraSpeed),(p>this.maxCameraSpeed||p<-this.maxCameraSpeed)&&(p=p<1?-this.maxCameraSpeed:this.maxCameraSpeed),this.position=new _(this.position.x+f,this.position.y+d,this.position.z+p),this.setTarget(a)}},t.prototype.attachControl=function(e,i){i=se.BackCompatCameraNoPreventDefault(arguments),this.inputs.attachElement(i),this._reset=function(){}},t.prototype.detachControl=function(e){this.inputs.detachElement(),this._reset&&this._reset()},t.prototype._checkInputs=function(){this.inputs.checkInputs(),this._checkLimits(),n.prototype._checkInputs.call(this),this.lockedTarget&&this._follow(this.lockedTarget)},t.prototype._checkLimits=function(){this.lowerRadiusLimit!==null&&this.radius<this.lowerRadiusLimit&&(this.radius=this.lowerRadiusLimit),this.upperRadiusLimit!==null&&this.radius>this.upperRadiusLimit&&(this.radius=this.upperRadiusLimit),this.lowerHeightOffsetLimit!==null&&this.heightOffset<this.lowerHeightOffsetLimit&&(this.heightOffset=this.lowerHeightOffsetLimit),this.upperHeightOffsetLimit!==null&&this.heightOffset>this.upperHeightOffsetLimit&&(this.heightOffset=this.upperHeightOffsetLimit),this.lowerRotationOffsetLimit!==null&&this.rotationOffset<this.lowerRotationOffsetLimit&&(this.rotationOffset=this.lowerRotationOffsetLimit),this.upperRotationOffsetLimit!==null&&this.rotationOffset>this.upperRotationOffsetLimit&&(this.rotationOffset=this.upperRotationOffsetLimit)},t.prototype.getClassName=function(){return"FollowCamera"},R([B()],t.prototype,"radius",void 0),R([B()],t.prototype,"lowerRadiusLimit",void 0),R([B()],t.prototype,"upperRadiusLimit",void 0),R([B()],t.prototype,"rotationOffset",void 0),R([B()],t.prototype,"lowerRotationOffsetLimit",void 0),R([B()],t.prototype,"upperRotationOffsetLimit",void 0),R([B()],t.prototype,"heightOffset",void 0),R([B()],t.prototype,"lowerHeightOffsetLimit",void 0),R([B()],t.prototype,"upperHeightOffsetLimit",void 0),R([B()],t.prototype,"cameraAcceleration",void 0),R([B()],t.prototype,"maxCameraSpeed",void 0),R([xo("lockedTargetId")],t.prototype,"lockedTarget",void 0),t}(Cr),Xu=function(n){N(t,n);function t(e,i,r,o,a,s){var l=n.call(this,e,_.Zero(),s)||this;return l.alpha=i,l.beta=r,l.radius=o,l._cartesianCoordinates=_.Zero(),l._meshTarget=a,l._follow(),l}return t.prototype._follow=function(){if(this._meshTarget){this._cartesianCoordinates.x=this.radius*Math.cos(this.alpha)*Math.cos(this.beta),this._cartesianCoordinates.y=this.radius*Math.sin(this.beta),this._cartesianCoordinates.z=this.radius*Math.sin(this.alpha)*Math.cos(this.beta);var e=this._meshTarget.getAbsolutePosition();this.position=e.add(this._cartesianCoordinates),this.setTarget(e)}},t.prototype._checkInputs=function(){n.prototype._checkInputs.call(this),this._follow()},t.prototype.getClassName=function(){return"ArcFollowCamera"},t}(Cr),ri;(function(n){n[n.VIVE=0]="VIVE",n[n.OCULUS=1]="OCULUS",n[n.WINDOWS=2]="WINDOWS",n[n.GEAR_VR=3]="GEAR_VR",n[n.DAYDREAM=4]="DAYDREAM",n[n.GENERIC=5]="GENERIC"})(ri||(ri={}));var Ki=function(){function n(){}return n.InitiateController=function(t){for(var e=0,i=this._ControllerFactories;e<i.length;e++){var r=i[e];if(r.canCreate(t))return r.create(t)}if(this._DefaultControllerFactory)return this._DefaultControllerFactory(t);throw"The type of gamepad you are trying to load needs to be imported first or is not supported."},n._ControllerFactories=[],n._DefaultControllerFactory=null,n}(),Br=function(n){N(t,n);function t(e){var i=n.call(this,e.id,e.index,e)||this;return i.isXR=!1,i._deviceRoomPosition=_.Zero(),i._deviceRoomRotationQuaternion=new te,i.devicePosition=_.Zero(),i.deviceRotationQuaternion=new te,i.deviceScaleFactor=1,i._trackPosition=!0,i._maxRotationDistFromHeadset=Math.PI/5,i._draggedRoomRotation=0,i._leftHandSystemQuaternion=new te,i._deviceToWorld=q.Identity(),i._pointingPoseNode=null,i._workingMatrix=q.Identity(),i._meshAttachedObservable=new J,i.type=_t.POSE_ENABLED,i.controllerType=ri.GENERIC,i.position=_.Zero(),i.rotationQuaternion=new te,i._calculatedPosition=_.Zero(),i._calculatedRotation=new te,te.RotationYawPitchRollToRef(Math.PI,0,0,i._leftHandSystemQuaternion),i}return t.prototype._disableTrackPosition=function(e){this._trackPosition&&(this._calculatedPosition.copyFrom(e),this._trackPosition=!1)},t.prototype.update=function(){n.prototype.update.call(this),this._updatePoseAndMesh()},t.prototype._updatePoseAndMesh=function(){if(!this.isXR){var e=this.browserGamepad.pose;if(this.updateFromDevice(e),!this._trackPosition&&Qe.LastCreatedScene&&Qe.LastCreatedScene.activeCamera&&Qe.LastCreatedScene.activeCamera.devicePosition){var i=Qe.LastCreatedScene.activeCamera;if(i._computeDevicePosition(),this._deviceToWorld.setTranslation(i.devicePosition),i.deviceRotationQuaternion){var i=i;i._deviceRoomRotationQuaternion.toEulerAnglesToRef(ee.Vector3[0]);var r=Math.atan2(Math.sin(ee.Vector3[0].y-this._draggedRoomRotation),Math.cos(ee.Vector3[0].y-this._draggedRoomRotation));if(Math.abs(r)>this._maxRotationDistFromHeadset){var o=r-(r<0?-this._maxRotationDistFromHeadset:this._maxRotationDistFromHeadset);this._draggedRoomRotation+=o;var a=Math.sin(-o),s=Math.cos(-o);this._calculatedPosition.x=this._calculatedPosition.x*s-this._calculatedPosition.z*a,this._calculatedPosition.z=this._calculatedPosition.x*a+this._calculatedPosition.z*s}}}_.TransformCoordinatesToRef(this._calculatedPosition,this._deviceToWorld,this.devicePosition),this._deviceToWorld.getRotationMatrixToRef(this._workingMatrix),te.FromRotationMatrixToRef(this._workingMatrix,this.deviceRotationQuaternion),this.deviceRotationQuaternion.multiplyInPlace(this._calculatedRotation),this._mesh&&(this._mesh.position.copyFrom(this.devicePosition),this._mesh.rotationQuaternion&&this._mesh.rotationQuaternion.copyFrom(this.deviceRotationQuaternion))}},t.prototype.updateFromDevice=function(e){if(!this.isXR&&e){this.rawPose=e,e.position&&(this._deviceRoomPosition.copyFromFloats(e.position[0],e.position[1],-e.position[2]),this._mesh&&this._mesh.getScene().useRightHandedSystem&&(this._deviceRoomPosition.z*=-1),this._trackPosition&&this._deviceRoomPosition.scaleToRef(this.deviceScaleFactor,this._calculatedPosition),this._calculatedPosition.addInPlace(this.position));var i=this.rawPose;e.orientation&&i.orientation&&i.orientation.length===4&&(this._deviceRoomRotationQuaternion.copyFromFloats(i.orientation[0],i.orientation[1],-i.orientation[2],-i.orientation[3]),this._mesh&&(this._mesh.getScene().useRightHandedSystem?(this._deviceRoomRotationQuaternion.z*=-1,this._deviceRoomRotationQuaternion.w*=-1):this._deviceRoomRotationQuaternion.multiplyToRef(this._leftHandSystemQuaternion,this._deviceRoomRotationQuaternion)),this._deviceRoomRotationQuaternion.multiplyToRef(this.rotationQuaternion,this._calculatedRotation))}},t.prototype.attachToMesh=function(e){if(this._mesh&&(this._mesh.parent=null),this._mesh=e,this._poseControlledCamera&&(this._mesh.parent=this._poseControlledCamera),this._mesh.rotationQuaternion||(this._mesh.rotationQuaternion=new te),!this.isXR&&(this._updatePoseAndMesh(),this._pointingPoseNode)){for(var i=[],r=this._pointingPoseNode;r.parent;)i.push(r.parent),r=r.parent;i.reverse().forEach(function(o){o.computeWorldMatrix(!0)})}this._meshAttachedObservable.notifyObservers(e)},t.prototype.attachToPoseControlledCamera=function(e){this._poseControlledCamera=e,this._mesh&&(this._mesh.parent=this._poseControlledCamera)},t.prototype.dispose=function(){this._mesh&&this._mesh.dispose(),this._mesh=null,n.prototype.dispose.call(this)},Object.defineProperty(t.prototype,"mesh",{get:function(){return this._mesh},enumerable:!1,configurable:!0}),t.prototype.getForwardRay=function(e){if(e===void 0&&(e=100),!this.mesh)return new Ze(_.Zero(),new _(0,0,1),e);var i=this._pointingPoseNode?this._pointingPoseNode.getWorldMatrix():this.mesh.getWorldMatrix(),r=i.getTranslation(),o=new _(0,0,-1),a=_.TransformNormal(o,i),s=_.Normalize(a);return new Ze(r,s,e)},t.POINTING_POSE="POINTING_POSE",t}(_t),Nt;(function(n){n[n.A=0]="A",n[n.B=1]="B",n[n.X=2]="X",n[n.Y=3]="Y",n[n.LB=4]="LB",n[n.RB=5]="RB",n[n.Back=8]="Back",n[n.Start=9]="Start",n[n.LeftStick=10]="LeftStick",n[n.RightStick=11]="RightStick"})(Nt||(Nt={}));var or;(function(n){n[n.Up=12]="Up",n[n.Down=13]="Down",n[n.Left=14]="Left",n[n.Right=15]="Right"})(or||(or={}));var Qu=function(n){N(t,n);function t(e,i,r,o){o===void 0&&(o=!1);var a=n.call(this,e,i,r,0,1,2,3)||this;return a._leftTrigger=0,a._rightTrigger=0,a.onButtonDownObservable=new J,a.onButtonUpObservable=new J,a.onPadDownObservable=new J,a.onPadUpObservable=new J,a._buttonA=0,a._buttonB=0,a._buttonX=0,a._buttonY=0,a._buttonBack=0,a._buttonStart=0,a._buttonLB=0,a._buttonRB=0,a._buttonLeftStick=0,a._buttonRightStick=0,a._dPadUp=0,a._dPadDown=0,a._dPadLeft=0,a._dPadRight=0,a._isXboxOnePad=!1,a.type=_t.XBOX,a._isXboxOnePad=o,a}return t.prototype.onlefttriggerchanged=function(e){this._onlefttriggerchanged=e},t.prototype.onrighttriggerchanged=function(e){this._onrighttriggerchanged=e},Object.defineProperty(t.prototype,"leftTrigger",{get:function(){return this._leftTrigger},set:function(e){this._onlefttriggerchanged&&this._leftTrigger!==e&&this._onlefttriggerchanged(e),this._leftTrigger=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"rightTrigger",{get:function(){return this._rightTrigger},set:function(e){this._onrighttriggerchanged&&this._rightTrigger!==e&&this._onrighttriggerchanged(e),this._rightTrigger=e},enumerable:!1,configurable:!0}),t.prototype.onbuttondown=function(e){this._onbuttondown=e},t.prototype.onbuttonup=function(e){this._onbuttonup=e},t.prototype.ondpaddown=function(e){this._ondpaddown=e},t.prototype.ondpadup=function(e){this._ondpadup=e},t.prototype._setButtonValue=function(e,i,r){return e!==i&&(e===1&&(this._onbuttondown&&this._onbuttondown(r),this.onButtonDownObservable.notifyObservers(r)),e===0&&(this._onbuttonup&&this._onbuttonup(r),this.onButtonUpObservable.notifyObservers(r))),e},t.prototype._setDPadValue=function(e,i,r){return e!==i&&(e===1&&(this._ondpaddown&&this._ondpaddown(r),this.onPadDownObservable.notifyObservers(r)),e===0&&(this._ondpadup&&this._ondpadup(r),this.onPadUpObservable.notifyObservers(r))),e},Object.defineProperty(t.prototype,"buttonA",{get:function(){return this._buttonA},set:function(e){this._buttonA=this._setButtonValue(e,this._buttonA,Nt.A)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonB",{get:function(){return this._buttonB},set:function(e){this._buttonB=this._setButtonValue(e,this._buttonB,Nt.B)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonX",{get:function(){return this._buttonX},set:function(e){this._buttonX=this._setButtonValue(e,this._buttonX,Nt.X)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonY",{get:function(){return this._buttonY},set:function(e){this._buttonY=this._setButtonValue(e,this._buttonY,Nt.Y)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonStart",{get:function(){return this._buttonStart},set:function(e){this._buttonStart=this._setButtonValue(e,this._buttonStart,Nt.Start)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonBack",{get:function(){return this._buttonBack},set:function(e){this._buttonBack=this._setButtonValue(e,this._buttonBack,Nt.Back)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonLB",{get:function(){return this._buttonLB},set:function(e){this._buttonLB=this._setButtonValue(e,this._buttonLB,Nt.LB)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonRB",{get:function(){return this._buttonRB},set:function(e){this._buttonRB=this._setButtonValue(e,this._buttonRB,Nt.RB)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonLeftStick",{get:function(){return this._buttonLeftStick},set:function(e){this._buttonLeftStick=this._setButtonValue(e,this._buttonLeftStick,Nt.LeftStick)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonRightStick",{get:function(){return this._buttonRightStick},set:function(e){this._buttonRightStick=this._setButtonValue(e,this._buttonRightStick,Nt.RightStick)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadUp",{get:function(){return this._dPadUp},set:function(e){this._dPadUp=this._setDPadValue(e,this._dPadUp,or.Up)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadDown",{get:function(){return this._dPadDown},set:function(e){this._dPadDown=this._setDPadValue(e,this._dPadDown,or.Down)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadLeft",{get:function(){return this._dPadLeft},set:function(e){this._dPadLeft=this._setDPadValue(e,this._dPadLeft,or.Left)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadRight",{get:function(){return this._dPadRight},set:function(e){this._dPadRight=this._setDPadValue(e,this._dPadRight,or.Right)},enumerable:!1,configurable:!0}),t.prototype.update=function(){n.prototype.update.call(this),this._isXboxOnePad?(this.buttonA=this.browserGamepad.buttons[0].value,this.buttonB=this.browserGamepad.buttons[1].value,this.buttonX=this.browserGamepad.buttons[2].value,this.buttonY=this.browserGamepad.buttons[3].value,this.buttonLB=this.browserGamepad.buttons[4].value,this.buttonRB=this.browserGamepad.buttons[5].value,this.leftTrigger=this.browserGamepad.buttons[6].value,this.rightTrigger=this.browserGamepad.buttons[7].value,this.buttonBack=this.browserGamepad.buttons[8].value,this.buttonStart=this.browserGamepad.buttons[9].value,this.buttonLeftStick=this.browserGamepad.buttons[10].value,this.buttonRightStick=this.browserGamepad.buttons[11].value,this.dPadUp=this.browserGamepad.buttons[12].value,this.dPadDown=this.browserGamepad.buttons[13].value,this.dPadLeft=this.browserGamepad.buttons[14].value,this.dPadRight=this.browserGamepad.buttons[15].value):(this.buttonA=this.browserGamepad.buttons[0].value,this.buttonB=this.browserGamepad.buttons[1].value,this.buttonX=this.browserGamepad.buttons[2].value,this.buttonY=this.browserGamepad.buttons[3].value,this.buttonLB=this.browserGamepad.buttons[4].value,this.buttonRB=this.browserGamepad.buttons[5].value,this.leftTrigger=this.browserGamepad.buttons[6].value,this.rightTrigger=this.browserGamepad.buttons[7].value,this.buttonBack=this.browserGamepad.buttons[8].value,this.buttonStart=this.browserGamepad.buttons[9].value,this.buttonLeftStick=this.browserGamepad.buttons[10].value,this.buttonRightStick=this.browserGamepad.buttons[11].value,this.dPadUp=this.browserGamepad.buttons[12].value,this.dPadDown=this.browserGamepad.buttons[13].value,this.dPadLeft=this.browserGamepad.buttons[14].value,this.dPadRight=this.browserGamepad.buttons[15].value)},t.prototype.dispose=function(){n.prototype.dispose.call(this),this.onButtonDownObservable.clear(),this.onButtonUpObservable.clear(),this.onPadDownObservable.clear(),this.onPadUpObservable.clear()},t}(_t),Wt;(function(n){n[n.Cross=0]="Cross",n[n.Circle=1]="Circle",n[n.Square=2]="Square",n[n.Triangle=3]="Triangle",n[n.L1=4]="L1",n[n.R1=5]="R1",n[n.Share=8]="Share",n[n.Options=9]="Options",n[n.LeftStick=10]="LeftStick",n[n.RightStick=11]="RightStick"})(Wt||(Wt={}));var ar;(function(n){n[n.Up=12]="Up",n[n.Down=13]="Down",n[n.Left=14]="Left",n[n.Right=15]="Right"})(ar||(ar={}));var Ku=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e.replace("STANDARD GAMEPAD","SONY PLAYSTATION DUALSHOCK"),i,r,0,1,2,3)||this;return o._leftTrigger=0,o._rightTrigger=0,o.onButtonDownObservable=new J,o.onButtonUpObservable=new J,o.onPadDownObservable=new J,o.onPadUpObservable=new J,o._buttonCross=0,o._buttonCircle=0,o._buttonSquare=0,o._buttonTriangle=0,o._buttonShare=0,o._buttonOptions=0,o._buttonL1=0,o._buttonR1=0,o._buttonLeftStick=0,o._buttonRightStick=0,o._dPadUp=0,o._dPadDown=0,o._dPadLeft=0,o._dPadRight=0,o.type=_t.DUALSHOCK,o}return t.prototype.onlefttriggerchanged=function(e){this._onlefttriggerchanged=e},t.prototype.onrighttriggerchanged=function(e){this._onrighttriggerchanged=e},Object.defineProperty(t.prototype,"leftTrigger",{get:function(){return this._leftTrigger},set:function(e){this._onlefttriggerchanged&&this._leftTrigger!==e&&this._onlefttriggerchanged(e),this._leftTrigger=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"rightTrigger",{get:function(){return this._rightTrigger},set:function(e){this._onrighttriggerchanged&&this._rightTrigger!==e&&this._onrighttriggerchanged(e),this._rightTrigger=e},enumerable:!1,configurable:!0}),t.prototype.onbuttondown=function(e){this._onbuttondown=e},t.prototype.onbuttonup=function(e){this._onbuttonup=e},t.prototype.ondpaddown=function(e){this._ondpaddown=e},t.prototype.ondpadup=function(e){this._ondpadup=e},t.prototype._setButtonValue=function(e,i,r){return e!==i&&(e===1&&(this._onbuttondown&&this._onbuttondown(r),this.onButtonDownObservable.notifyObservers(r)),e===0&&(this._onbuttonup&&this._onbuttonup(r),this.onButtonUpObservable.notifyObservers(r))),e},t.prototype._setDPadValue=function(e,i,r){return e!==i&&(e===1&&(this._ondpaddown&&this._ondpaddown(r),this.onPadDownObservable.notifyObservers(r)),e===0&&(this._ondpadup&&this._ondpadup(r),this.onPadUpObservable.notifyObservers(r))),e},Object.defineProperty(t.prototype,"buttonCross",{get:function(){return this._buttonCross},set:function(e){this._buttonCross=this._setButtonValue(e,this._buttonCross,Wt.Cross)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonCircle",{get:function(){return this._buttonCircle},set:function(e){this._buttonCircle=this._setButtonValue(e,this._buttonCircle,Wt.Circle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonSquare",{get:function(){return this._buttonSquare},set:function(e){this._buttonSquare=this._setButtonValue(e,this._buttonSquare,Wt.Square)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonTriangle",{get:function(){return this._buttonTriangle},set:function(e){this._buttonTriangle=this._setButtonValue(e,this._buttonTriangle,Wt.Triangle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonOptions",{get:function(){return this._buttonOptions},set:function(e){this._buttonOptions=this._setButtonValue(e,this._buttonOptions,Wt.Options)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonShare",{get:function(){return this._buttonShare},set:function(e){this._buttonShare=this._setButtonValue(e,this._buttonShare,Wt.Share)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonL1",{get:function(){return this._buttonL1},set:function(e){this._buttonL1=this._setButtonValue(e,this._buttonL1,Wt.L1)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonR1",{get:function(){return this._buttonR1},set:function(e){this._buttonR1=this._setButtonValue(e,this._buttonR1,Wt.R1)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonLeftStick",{get:function(){return this._buttonLeftStick},set:function(e){this._buttonLeftStick=this._setButtonValue(e,this._buttonLeftStick,Wt.LeftStick)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonRightStick",{get:function(){return this._buttonRightStick},set:function(e){this._buttonRightStick=this._setButtonValue(e,this._buttonRightStick,Wt.RightStick)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadUp",{get:function(){return this._dPadUp},set:function(e){this._dPadUp=this._setDPadValue(e,this._dPadUp,ar.Up)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadDown",{get:function(){return this._dPadDown},set:function(e){this._dPadDown=this._setDPadValue(e,this._dPadDown,ar.Down)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadLeft",{get:function(){return this._dPadLeft},set:function(e){this._dPadLeft=this._setDPadValue(e,this._dPadLeft,ar.Left)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadRight",{get:function(){return this._dPadRight},set:function(e){this._dPadRight=this._setDPadValue(e,this._dPadRight,ar.Right)},enumerable:!1,configurable:!0}),t.prototype.update=function(){n.prototype.update.call(this),this.buttonCross=this.browserGamepad.buttons[0].value,this.buttonCircle=this.browserGamepad.buttons[1].value,this.buttonSquare=this.browserGamepad.buttons[2].value,this.buttonTriangle=this.browserGamepad.buttons[3].value,this.buttonL1=this.browserGamepad.buttons[4].value,this.buttonR1=this.browserGamepad.buttons[5].value,this.leftTrigger=this.browserGamepad.buttons[6].value,this.rightTrigger=this.browserGamepad.buttons[7].value,this.buttonShare=this.browserGamepad.buttons[8].value,this.buttonOptions=this.browserGamepad.buttons[9].value,this.buttonLeftStick=this.browserGamepad.buttons[10].value,this.buttonRightStick=this.browserGamepad.buttons[11].value,this.dPadUp=this.browserGamepad.buttons[12].value,this.dPadDown=this.browserGamepad.buttons[13].value,this.dPadLeft=this.browserGamepad.buttons[14].value,this.dPadRight=this.browserGamepad.buttons[15].value},t.prototype.dispose=function(){n.prototype.dispose.call(this),this.onButtonDownObservable.clear(),this.onButtonUpObservable.clear(),this.onPadDownObservable.clear(),this.onPadUpObservable.clear()},t}(_t),Zu=function(){function n(t){var e=this;if(this._scene=t,this._babylonGamepads=[],this._oneGamepadConnected=!1,this._isMonitoring=!1,this.onGamepadDisconnectedObservable=new J,To.IsWindowObjectExist()?(this._gamepadEventSupported="GamepadEvent"in window,this._gamepadSupport=navigator.getGamepads||navigator.webkitGetGamepads||navigator.msGetGamepads||navigator.webkitGamepads):this._gamepadEventSupported=!1,this.onGamepadConnectedObservable=new J(function(r){for(var o in e._babylonGamepads){var a=e._babylonGamepads[o];a&&a._isConnected&&e.onGamepadConnectedObservable.notifyObserver(r,a)}}),this._onGamepadConnectedEvent=function(r){var o=r.gamepad;if(!(o.index in e._babylonGamepads&&e._babylonGamepads[o.index].isConnected)){var a;e._babylonGamepads[o.index]?(a=e._babylonGamepads[o.index],a.browserGamepad=o,a._isConnected=!0):a=e._addNewGamepad(o),e.onGamepadConnectedObservable.notifyObservers(a),e._startMonitoringGamepads()}},this._onGamepadDisconnectedEvent=function(r){var o=r.gamepad;for(var a in e._babylonGamepads)if(e._babylonGamepads[a].index===o.index){var s=e._babylonGamepads[a];s._isConnected=!1,e.onGamepadDisconnectedObservable.notifyObservers(s),s.dispose&&s.dispose();break}},this._gamepadSupport)if(this._updateGamepadObjects(),this._babylonGamepads.length&&this._startMonitoringGamepads(),this._gamepadEventSupported){var i=this._scene?this._scene.getEngine().getHostWindow():window;i&&(i.addEventListener("gamepadconnected",this._onGamepadConnectedEvent,!1),i.addEventListener("gamepaddisconnected",this._onGamepadDisconnectedEvent,!1))}else this._startMonitoringGamepads()}return Object.defineProperty(n.prototype,"gamepads",{get:function(){return this._babylonGamepads},enumerable:!1,configurable:!0}),n.prototype.getGamepadByType=function(t){t===void 0&&(t=_t.XBOX);for(var e=0,i=this._babylonGamepads;e<i.length;e++){var r=i[e];if(r&&r.type===t)return r}return null},n.prototype.dispose=function(){this._gamepadEventSupported&&(this._onGamepadConnectedEvent&&window.removeEventListener("gamepadconnected",this._onGamepadConnectedEvent),this._onGamepadDisconnectedEvent&&window.removeEventListener("gamepaddisconnected",this._onGamepadDisconnectedEvent),this._onGamepadConnectedEvent=null,this._onGamepadDisconnectedEvent=null),this._babylonGamepads.forEach(function(t){t.dispose()}),this.onGamepadConnectedObservable.clear(),this.onGamepadDisconnectedObservable.clear(),this._oneGamepadConnected=!1,this._stopMonitoringGamepads(),this._babylonGamepads=[]},n.prototype._addNewGamepad=function(t){this._oneGamepadConnected||(this._oneGamepadConnected=!0);var e,i=t.id.search("054c")!==-1,r=t.id.search("Xbox One")!==-1;return r||t.id.search("Xbox 360")!==-1||t.id.search("xinput")!==-1?e=new Qu(t.id,t.index,t,r):i?e=new Ku(t.id,t.index,t):t.pose?e=Ki.InitiateController(t):e=new ju(t.id,t.index,t),this._babylonGamepads[e.index]=e,e},n.prototype._startMonitoringGamepads=function(){this._isMonitoring||(this._isMonitoring=!0,this._scene||this._checkGamepadsStatus())},n.prototype._stopMonitoringGamepads=function(){this._isMonitoring=!1},n.prototype._checkGamepadsStatus=function(){var t=this;this._updateGamepadObjects();for(var e in this._babylonGamepads){var i=this._babylonGamepads[e];!i||!i.isConnected||i.update()}this._isMonitoring&&!this._scene&&ue.QueueNewFrame(function(){t._checkGamepadsStatus()})},n.prototype._updateGamepadObjects=function(){for(var t=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():[],e=0;e<t.length;e++){var i=t[e];if(i)if(this._babylonGamepads[i.index])this._babylonGamepads[e].browserGamepad=i,this._babylonGamepads[e].isConnected||(this._babylonGamepads[e]._isConnected=!0,this.onGamepadConnectedObservable.notifyObservers(this._babylonGamepads[e]));else{var r=this._addNewGamepad(i);this.onGamepadConnectedObservable.notifyObservers(r)}}},n}();Object.defineProperty(ye.prototype,"gamepadManager",{get:function(){if(!this._gamepadManager){this._gamepadManager=new Zu(this);var n=this._getComponent(de.NAME_GAMEPAD);n||(n=new qu(this),this._addComponent(n))}return this._gamepadManager},enumerable:!0,configurable:!0});Co.prototype.addGamepad=function(){return this.add(new Is),this};wo.prototype.addGamepad=function(){return this.add(new Ps),this};var qu=function(){function n(t){this.name=de.NAME_GAMEPAD,this.scene=t}return n.prototype.register=function(){this.scene._beforeCameraUpdateStage.registerStep(de.STEP_BEFORECAMERAUPDATE_GAMEPAD,this,this._beforeCameraUpdate)},n.prototype.rebuild=function(){},n.prototype.dispose=function(){var t=this.scene._gamepadManager;t&&(t.dispose(),this.scene._gamepadManager=null)},n.prototype._beforeCameraUpdate=function(){var t=this.scene._gamepadManager;t&&t._isMonitoring&&t._checkGamepadsStatus()},n}();st.AddNodeConstructor("FreeCamera",function(n,t){return function(){return new Gr(n,_.Zero(),t)}});var Gr=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,i,r)||this;return o.inputs.addGamepad(),o}return Object.defineProperty(t.prototype,"gamepadAngularSensibility",{get:function(){var e=this.inputs.attached.gamepad;return e?e.gamepadAngularSensibility:0},set:function(e){var i=this.inputs.attached.gamepad;i&&(i.gamepadAngularSensibility=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"gamepadMoveSensibility",{get:function(){var e=this.inputs.attached.gamepad;return e?e.gamepadMoveSensibility:0},set:function(e){var i=this.inputs.attached.gamepad;i&&(i.gamepadMoveSensibility=e)},enumerable:!1,configurable:!0}),t.prototype.getClassName=function(){return"UniversalCamera"},t}(Fs);Me._createDefaultParsedCamera=function(n,t){return new Gr(n,_.Zero(),t)};st.AddNodeConstructor("GamepadCamera",function(n,t){return function(){return new Io(n,_.Zero(),t)}});var Io=function(n){N(t,n);function t(e,i,r){return n.call(this,e,i,r)||this}return t.prototype.getClassName=function(){return"GamepadCamera"},t}(Gr),Ju="passPixelShader",$u=`
1
+ import{V as ae,a as _,C as oe,b as ve,_ as $,O as J,L as Z,D as zt,E as Qe,A as Xl,c as at,d as Be,M as q,Q as te,S as he,e as ot,f as ue,g as ft,h as de,i as Jr,j as ye,P as Ir,k as Ae,I as Ql,T as ee,l as sn,m as Xt,n as Me,o as ce,p as O,q as Ue,r as lt,s as ct,t as B,u as Ut,v as se,K as Po,w as So,F as Co,x as Kl,N as st,y as Jt,z as Yi,B as Cr,G as xo,H as To,J as re,R as Ie,U as Pe,W as $t,X,Y as Dt,Z as ht,$ as Qt,a0 as Zl,a1 as ql,a2 as Jl,a3 as yn,a4 as Mt,a5 as Eo,a6 as Yt,a7 as F,a8 as ke,a9 as Nr,aa as Ko,ab as $l,ac as On,ad as Ni,ae as _i,af as Ee,ag as Ke,ah as mr,ai as ss,aj as eu,ak as $r,al as ls,am as tu,an as fr,ao as We,ap as iu,aq as ru,ar as nu,as as zi,at as vr,au as Ve,av as wt,aw as ou,ax as us,ay as cs,az as Ro,aA as bn,aB as gi,aC as Xi,aD as hs,aE as fs,aF as Pi,aG as au,aH as ao,aI as jt,aJ as ni,aK as su,aL as lu,aM as Zo,aN as ln,aO as uu,aP as en,aQ as ds,aR as yr,aS as Mo,aT as Ao,aU as cu,aV as hu,aW as Ui,aX as mi,aY as fu,aZ as He,a_ as du,a$ as qo,b0 as pu,b1 as Jo,b2 as _u,b3 as gu,b4 as un,b5 as wi,b6 as vi,b7 as Di,b8 as mu,b9 as vu,ba as yu,bb as fi,bc as bu}from"./dataReader-Cpr013wV.js";import{bT as Cy,bW as xy,bd as Ty,bh as Ey,bi as Ry,bj as My,bn as Ay,bC as Oy,bt as wy,bI as Dy,ce as Iy,cd as Ny,b_ as Fy,bU as By,bL as Ly,b$ as Vy,cc as ky,bo as zy,bp as Uy,bq as Gy,br as jy,bl as Wy,bk as Hy,bv as Yy,bw as Xy,c9 as Qy,bN as Ky,bP as Zy,c1 as qy,c0 as Jy,bD as $y,c2 as eb,bx as tb,by as ib,c4 as rb,c7 as nb,bF as ob,cb as ab,bQ as sb,bR as lb,ca as ub,c8 as cb,c3 as hb,bg as fb,bA as db,bB as pb,bz as _b,bK as gb,bS as mb,bE as vb,bV as yb,c5 as bb,bf as Pb,bJ as Sb,bO as Cb,bu as xb,bm as Tb,be as Eb,bM as Rb,bs as Mb,c6 as Ab,bH as Ob,bG as wb,bY as Db,bX as Ib,bZ as Nb}from"./dataReader-Cpr013wV.js";import{hO as N,hP as R,hQ as ze,hR as dr,hS as pr,hT as Pu}from"./index-YPAJmkCB.js";var Ye=function(){function n(t,e){this.triggerOptions=t,this.onBeforeExecuteObservable=new J,t.parameter?(this.trigger=t.trigger,this._triggerParameter=t.parameter):t.trigger?this.trigger=t.trigger:this.trigger=t,this._nextActiveAction=this,this._condition=e}return n.prototype._prepare=function(){},n.prototype.getTriggerParameter=function(){return this._triggerParameter},n.prototype._executeCurrent=function(t){if(this._nextActiveAction._condition){var e=this._nextActiveAction._condition,i=this._actionManager.getScene().getRenderId();if(e._evaluationId===i){if(!e._currentResult)return}else{if(e._evaluationId=i,!e.isValid()){e._currentResult=!1;return}e._currentResult=!0}}this.onBeforeExecuteObservable.notifyObservers(this),this._nextActiveAction.execute(t),this.skipToNextActiveAction()},n.prototype.execute=function(t){},n.prototype.skipToNextActiveAction=function(){this._nextActiveAction._child?(this._nextActiveAction._child._actionManager||(this._nextActiveAction._child._actionManager=this._actionManager),this._nextActiveAction=this._nextActiveAction._child):this._nextActiveAction=this},n.prototype.then=function(t){return this._child=t,t._actionManager=this._actionManager,t._prepare(),t},n.prototype._getProperty=function(t){return this._actionManager._getProperty(t)},n.prototype._getEffectiveTarget=function(t,e){return this._actionManager._getEffectiveTarget(t,e)},n.prototype.serialize=function(t){},n.prototype._serialize=function(t,e){var i={type:1,children:[],name:t.name,properties:t.properties||[]};if(this._child&&this._child.serialize(i),this._condition){var r=this._condition.serialize();return r.children.push(i),e&&e.children.push(r),r}return e&&e.children.push(i),i},n._SerializeValueAsString=function(t){return typeof t=="number"?t.toString():typeof t=="boolean"?t?"true":"false":t instanceof ae?t.x+", "+t.y:t instanceof _?t.x+", "+t.y+", "+t.z:t instanceof oe?t.r+", "+t.g+", "+t.b:t instanceof ve?t.r+", "+t.g+", "+t.b+", "+t.a:t},n._GetTargetProperty=function(t){return{name:"target",targetType:t._isMesh?"MeshProperties":t._isLight?"LightProperties":t._isCamera?"CameraProperties":"SceneProperties",value:t._isScene?"Scene":t.name}},n}();$.RegisteredTypes["BABYLON.Action"]=Ye;var Fr=function(){function n(t){this._actionManager=t}return n.prototype.isValid=function(){return!0},n.prototype._getProperty=function(t){return this._actionManager._getProperty(t)},n.prototype._getEffectiveTarget=function(t,e){return this._actionManager._getEffectiveTarget(t,e)},n.prototype.serialize=function(){},n.prototype._serialize=function(t){return{type:2,children:[],name:t.name,properties:t.properties}},n}(),ps=function(n){N(t,n);function t(e,i,r,o,a){a===void 0&&(a=t.IsEqual);var s=n.call(this,e)||this;return s.propertyPath=r,s.value=o,s.operator=a,s._target=i,s._effectiveTarget=s._getEffectiveTarget(i,s.propertyPath),s._property=s._getProperty(s.propertyPath),s}return Object.defineProperty(t,"IsEqual",{get:function(){return t._IsEqual},enumerable:!1,configurable:!0}),Object.defineProperty(t,"IsDifferent",{get:function(){return t._IsDifferent},enumerable:!1,configurable:!0}),Object.defineProperty(t,"IsGreater",{get:function(){return t._IsGreater},enumerable:!1,configurable:!0}),Object.defineProperty(t,"IsLesser",{get:function(){return t._IsLesser},enumerable:!1,configurable:!0}),t.prototype.isValid=function(){switch(this.operator){case t.IsGreater:return this._effectiveTarget[this._property]>this.value;case t.IsLesser:return this._effectiveTarget[this._property]<this.value;case t.IsEqual:case t.IsDifferent:var e;return this.value.equals?e=this.value.equals(this._effectiveTarget[this._property]):e=this.value===this._effectiveTarget[this._property],this.operator===t.IsEqual?e:!e}return!1},t.prototype.serialize=function(){return this._serialize({name:"ValueCondition",properties:[Ye._GetTargetProperty(this._target),{name:"propertyPath",value:this.propertyPath},{name:"value",value:Ye._SerializeValueAsString(this.value)},{name:"operator",value:t.GetOperatorName(this.operator)}]})},t.GetOperatorName=function(e){switch(e){case t._IsEqual:return"IsEqual";case t._IsDifferent:return"IsDifferent";case t._IsGreater:return"IsGreater";case t._IsLesser:return"IsLesser";default:return""}},t._IsEqual=0,t._IsDifferent=1,t._IsGreater=2,t._IsLesser=3,t}(Fr),Su=function(n){N(t,n);function t(e,i){var r=n.call(this,e)||this;return r.predicate=i,r}return t.prototype.isValid=function(){return this.predicate()},t}(Fr),Cu=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e)||this;return o.value=r,o._target=i,o}return t.prototype.isValid=function(){return this._target.state===this.value},t.prototype.serialize=function(){return this._serialize({name:"StateCondition",properties:[Ye._GetTargetProperty(this._target),{name:"value",value:this.value}]})},t}(Fr);$.RegisteredTypes["BABYLON.ValueCondition"]=ps;$.RegisteredTypes["BABYLON.PredicateCondition"]=Su;$.RegisteredTypes["BABYLON.StateCondition"]=Cu;var zm=function(n){N(t,n);function t(e,i,r,o){var a=n.call(this,e,o)||this;return a.propertyPath=r,a._target=a._effectiveTarget=i,a}return t.prototype._prepare=function(){this._effectiveTarget=this._getEffectiveTarget(this._effectiveTarget,this.propertyPath),this._property=this._getProperty(this.propertyPath)},t.prototype.execute=function(){this._effectiveTarget[this._property]=!this._effectiveTarget[this._property]},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"SwitchBooleanAction",properties:[Ye._GetTargetProperty(this._target),{name:"propertyPath",value:this.propertyPath}]},e)},t}(Ye),xu=function(n){N(t,n);function t(e,i,r,o){var a=n.call(this,e,o)||this;return a.value=r,a._target=i,a}return t.prototype.execute=function(){this._target.state=this.value},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"SetStateAction",properties:[Ye._GetTargetProperty(this._target),{name:"value",value:this.value}]},e)},t}(Ye),Tu=function(n){N(t,n);function t(e,i,r,o,a){var s=n.call(this,e,a)||this;return s.propertyPath=r,s.value=o,s._target=s._effectiveTarget=i,s}return t.prototype._prepare=function(){this._effectiveTarget=this._getEffectiveTarget(this._effectiveTarget,this.propertyPath),this._property=this._getProperty(this.propertyPath)},t.prototype.execute=function(){this._effectiveTarget[this._property]=this.value,this._target.markAsDirty&&this._target.markAsDirty(this._property)},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"SetValueAction",properties:[Ye._GetTargetProperty(this._target),{name:"propertyPath",value:this.propertyPath},{name:"value",value:Ye._SerializeValueAsString(this.value)}]},e)},t}(Ye),Eu=function(n){N(t,n);function t(e,i,r,o,a){var s=n.call(this,e,a)||this;return s.propertyPath=r,s.value=o,s._target=s._effectiveTarget=i,s}return t.prototype._prepare=function(){this._effectiveTarget=this._getEffectiveTarget(this._effectiveTarget,this.propertyPath),this._property=this._getProperty(this.propertyPath),typeof this._effectiveTarget[this._property]!="number"&&Z.Warn("Warning: IncrementValueAction can only be used with number values")},t.prototype.execute=function(){this._effectiveTarget[this._property]+=this.value,this._target.markAsDirty&&this._target.markAsDirty(this._property)},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"IncrementValueAction",properties:[Ye._GetTargetProperty(this._target),{name:"propertyPath",value:this.propertyPath},{name:"value",value:Ye._SerializeValueAsString(this.value)}]},e)},t}(Ye),Ru=function(n){N(t,n);function t(e,i,r,o,a,s){var l=n.call(this,e,s)||this;return l.from=r,l.to=o,l.loop=a,l._target=i,l}return t.prototype._prepare=function(){},t.prototype.execute=function(){var e=this._actionManager.getScene();e.beginAnimation(this._target,this.from,this.to,this.loop)},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"PlayAnimationAction",properties:[Ye._GetTargetProperty(this._target),{name:"from",value:String(this.from)},{name:"to",value:String(this.to)},{name:"loop",value:Ye._SerializeValueAsString(this.loop)||!1}]},e)},t}(Ye),Mu=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,r)||this;return o._target=i,o}return t.prototype._prepare=function(){},t.prototype.execute=function(){var e=this._actionManager.getScene();e.stopAnimation(this._target)},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"StopAnimationAction",properties:[Ye._GetTargetProperty(this._target)]},e)},t}(Ye),_s=function(n){N(t,n);function t(e,i){return e===void 0&&(e=0),n.call(this,e,i)||this}return t.prototype.execute=function(){},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"DoNothingAction",properties:[]},e)},t}(Ye),Um=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,r)||this;return o.children=i,o}return t.prototype._prepare=function(){for(var e=0;e<this.children.length;e++)this.children[e]._actionManager=this._actionManager,this.children[e]._prepare()},t.prototype.execute=function(e){for(var i=0;i<this.children.length;i++)this.children[i].execute(e)},t.prototype.serialize=function(e){for(var i=n.prototype._serialize.call(this,{name:"CombineAction",properties:[],combine:[]},e),r=0;r<this.children.length;r++)i.combine.push(this.children[r].serialize(null));return i},t}(Ye),Au=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,r)||this;return o.func=i,o}return t.prototype.execute=function(e){this.func(e)},t}(Ye),gs=function(n){N(t,n);function t(e,i,r,o){var a=n.call(this,e,o)||this;return a._target=i,a._parent=r,a}return t.prototype._prepare=function(){},t.prototype.execute=function(){if(this._target.parent!==this._parent){var e=this._parent.getWorldMatrix().clone();e.invert(),this._target.position=_.TransformCoordinates(this._target.position,e),this._target.parent=this._parent}},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"SetParentAction",properties:[Ye._GetTargetProperty(this._target),Ye._GetTargetProperty(this._parent)]},e)},t}(Ye);$.RegisteredTypes["BABYLON.SetParentAction"]=gs;$.RegisteredTypes["BABYLON.ExecuteCodeAction"]=Au;$.RegisteredTypes["BABYLON.DoNothingAction"]=_s;$.RegisteredTypes["BABYLON.StopAnimationAction"]=Mu;$.RegisteredTypes["BABYLON.PlayAnimationAction"]=Ru;$.RegisteredTypes["BABYLON.IncrementValueAction"]=Eu;$.RegisteredTypes["BABYLON.SetValueAction"]=Tu;$.RegisteredTypes["BABYLON.SetStateAction"]=xu;$.RegisteredTypes["BABYLON.SetParentAction"]=gs;var $o=function(n){N(t,n);function t(e){var i=n.call(this)||this;return i._scene=e||Qe.LastCreatedScene,e.actionManagers.push(i),i}return t.prototype.dispose=function(){for(var e=this._scene.actionManagers.indexOf(this),i=0;i<this.actions.length;i++){var r=this.actions[i];t.Triggers[r.trigger]--,t.Triggers[r.trigger]===0&&delete t.Triggers[r.trigger]}e>-1&&this._scene.actionManagers.splice(e,1)},t.prototype.getScene=function(){return this._scene},t.prototype.hasSpecificTriggers=function(e){for(var i=0;i<this.actions.length;i++){var r=this.actions[i];if(e.indexOf(r.trigger)>-1)return!0}return!1},t.prototype.hasSpecificTriggers2=function(e,i){for(var r=0;r<this.actions.length;r++){var o=this.actions[r];if(e==o.trigger||i==o.trigger)return!0}return!1},t.prototype.hasSpecificTrigger=function(e,i){for(var r=0;r<this.actions.length;r++){var o=this.actions[r];if(o.trigger===e)if(i){if(i(o.getTriggerParameter()))return!0}else return!0}return!1},Object.defineProperty(t.prototype,"hasPointerTriggers",{get:function(){for(var e=0;e<this.actions.length;e++){var i=this.actions[e];if(i.trigger>=t.OnPickTrigger&&i.trigger<=t.OnPointerOutTrigger)return!0}return!1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasPickTriggers",{get:function(){for(var e=0;e<this.actions.length;e++){var i=this.actions[e];if(i.trigger>=t.OnPickTrigger&&i.trigger<=t.OnPickUpTrigger)return!0}return!1},enumerable:!1,configurable:!0}),t.prototype.registerAction=function(e){return e.trigger===t.OnEveryFrameTrigger&&this.getScene().actionManager!==this?(Z.Warn("OnEveryFrameTrigger can only be used with scene.actionManager"),null):(this.actions.push(e),t.Triggers[e.trigger]?t.Triggers[e.trigger]++:t.Triggers[e.trigger]=1,e._actionManager=this,e._prepare(),e)},t.prototype.unregisterAction=function(e){var i=this.actions.indexOf(e);return i!==-1?(this.actions.splice(i,1),t.Triggers[e.trigger]-=1,t.Triggers[e.trigger]===0&&delete t.Triggers[e.trigger],e._actionManager=null,!0):!1},t.prototype.processTrigger=function(e,i){for(var r=0;r<this.actions.length;r++){var o=this.actions[r];if(o.trigger===e){if(i&&(e===t.OnKeyUpTrigger||e===t.OnKeyDownTrigger)){var a=o.getTriggerParameter();if(a&&a!==i.sourceEvent.keyCode){if(!a.toLowerCase)continue;var s=a.toLowerCase();if(s!==i.sourceEvent.key){var l=i.sourceEvent.charCode?i.sourceEvent.charCode:i.sourceEvent.keyCode,u=String.fromCharCode(l).toLowerCase();if(u!==s)continue}}}o._executeCurrent(i)}}},t.prototype._getEffectiveTarget=function(e,i){for(var r=i.split("."),o=0;o<r.length-1;o++)e=e[r[o]];return e},t.prototype._getProperty=function(e){var i=e.split(".");return i[i.length-1]},t.prototype.serialize=function(e){for(var i={children:new Array,name:e,type:3,properties:new Array},r=0;r<this.actions.length;r++){var o={type:0,children:new Array,name:t.GetTriggerName(this.actions[r].trigger),properties:new Array},a=this.actions[r].triggerOptions;if(a&&typeof a!="number")if(a.parameter instanceof Node)o.properties.push(Ye._GetTargetProperty(a.parameter));else{var s={};zt.DeepCopy(a.parameter,s,["mesh"]),a.parameter&&a.parameter.mesh&&(s._meshId=a.parameter.mesh.id),o.properties.push({name:"parameter",targetType:null,value:s})}this.actions[r].serialize(o),i.children.push(o)}return i},t.Parse=function(e,i,r){var o=new t(r);i===null?r.actionManager=o:i.actionManager=o;for(var a=function(g,m){var v=$.GetClass("BABYLON."+g);if(v){var b=Object.create(v.prototype);return b.constructor.apply(b,m),b}},s=function(g,m,v,b){if(b===null){var C=parseFloat(m);return m==="true"||m==="false"?m==="true":isNaN(C)?m:C}for(var P=b.split("."),y=m.split(","),x=0;x<P.length;x++)v=v[P[x]];if(typeof v=="boolean")return y[0]==="true";if(typeof v=="string")return y[0];for(var E=new Array,x=0;x<y.length;x++)E.push(parseFloat(y[x]));return v instanceof _?_.FromArray(E):v instanceof at?at.FromArray(E):v instanceof oe?oe.FromArray(E):v instanceof ve?ve.FromArray(E):parseFloat(y[0])},l=function(g,m,v,b,C){if(C===void 0&&(C=null),!g.detached){var P=new Array,y=null,x=null,E=g.combine&&g.combine.length>0;if(g.type===2?P.push(o):P.push(m),E){for(var M=new Array,w=0;w<g.combine.length;w++)l(g.combine[w],t.NothingTrigger,v,b,M);P.push(M)}else for(var A=0;A<g.properties.length;A++){var T=g.properties[A].value,I=g.properties[A].name,H=g.properties[A].targetType;I==="target"?H!==null&&H==="SceneProperties"?T=y=r:T=y=r.getNodeByName(T):I==="parent"?T=r.getNodeByName(T):I==="sound"?r.getSoundByName&&(T=r.getSoundByName(T)):I!=="propertyPath"?g.type===2&&I==="operator"?T=ps[T]:T=s(I,T,y,I==="value"?x:null):x=T,P.push(T)}if(C===null?P.push(v):P.push(null),g.name==="InterpolateValueAction"){var L=P[P.length-2];P[P.length-1]=L,P[P.length-2]=v}var z=a(g.name,P);if(z instanceof Fr&&v!==null){var Y=new _s(m,v);b?b.then(Y):o.registerAction(Y),b=Y}C===null?z instanceof Fr?(v=z,z=b):(v=null,b?b.then(z):o.registerAction(z)):C.push(z);for(var A=0;A<g.children.length;A++)l(g.children[A],m,v,z,null)}},u=0;u<e.children.length;u++){var c,h=e.children[u];if(h.properties.length>0){var f=h.properties[0].value,d=h.properties[0].targetType===null?f:r.getMeshByName(f);d._meshId&&(d.mesh=r.getMeshByID(d._meshId)),c={trigger:t[h.name],parameter:d}}else c=t[h.name];for(var p=0;p<h.children.length;p++)h.detached||l(h.children[p],c,null,null)}},t.GetTriggerName=function(e){switch(e){case 0:return"NothingTrigger";case 1:return"OnPickTrigger";case 2:return"OnLeftPickTrigger";case 3:return"OnRightPickTrigger";case 4:return"OnCenterPickTrigger";case 5:return"OnPickDownTrigger";case 6:return"OnPickUpTrigger";case 7:return"OnLongPressTrigger";case 8:return"OnPointerOverTrigger";case 9:return"OnPointerOutTrigger";case 10:return"OnEveryFrameTrigger";case 11:return"OnIntersectionEnterTrigger";case 12:return"OnIntersectionExitTrigger";case 13:return"OnKeyDownTrigger";case 14:return"OnKeyUpTrigger";case 15:return"OnPickOutTrigger";default:return""}},t.NothingTrigger=0,t.OnPickTrigger=1,t.OnLeftPickTrigger=2,t.OnRightPickTrigger=3,t.OnCenterPickTrigger=4,t.OnPickDownTrigger=5,t.OnDoublePickTrigger=6,t.OnPickUpTrigger=7,t.OnPickOutTrigger=16,t.OnLongPressTrigger=8,t.OnPointerOverTrigger=9,t.OnPointerOutTrigger=10,t.OnEveryFrameTrigger=11,t.OnIntersectionEnterTrigger=12,t.OnIntersectionExitTrigger=13,t.OnKeyDownTrigger=14,t.OnKeyUpTrigger=15,t}(Xl),Gm=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,r)||this;return o._sound=i,o}return t.prototype._prepare=function(){},t.prototype.execute=function(){this._sound!==void 0&&this._sound.play()},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"PlaySoundAction",properties:[{name:"sound",value:this._sound.name}]},e)},t}(Ye),ms=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,r)||this;return o._sound=i,o}return t.prototype._prepare=function(){},t.prototype.execute=function(){this._sound!==void 0&&this._sound.stop()},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"StopSoundAction",properties:[{name:"sound",value:this._sound.name}]},e)},t}(Ye);$.RegisteredTypes["BABYLON.PlaySoundAction"]=ms;$.RegisteredTypes["BABYLON.StopSoundAction"]=ms;var Ou=function(n){N(t,n);function t(e,i,r,o,a,s,l,u){a===void 0&&(a=1e3);var c=n.call(this,e,s)||this;return c.duration=1e3,c.onInterpolationDoneObservable=new J,c.propertyPath=r,c.value=o,c.duration=a,c.stopOtherAnimations=l,c.onInterpolationDone=u,c._target=c._effectiveTarget=i,c}return t.prototype._prepare=function(){this._effectiveTarget=this._getEffectiveTarget(this._effectiveTarget,this.propertyPath),this._property=this._getProperty(this.propertyPath)},t.prototype.execute=function(){var e=this,i=this._actionManager.getScene(),r=[{frame:0,value:this._effectiveTarget[this._property]},{frame:100,value:this.value}],o;if(typeof this.value=="number")o=Be.ANIMATIONTYPE_FLOAT;else if(this.value instanceof oe)o=Be.ANIMATIONTYPE_COLOR3;else if(this.value instanceof _)o=Be.ANIMATIONTYPE_VECTOR3;else if(this.value instanceof q)o=Be.ANIMATIONTYPE_MATRIX;else if(this.value instanceof te)o=Be.ANIMATIONTYPE_QUATERNION;else{Z.Warn("InterpolateValueAction: Unsupported type ("+typeof this.value+")");return}var a=new Be("InterpolateValueAction",this._property,100*(1e3/this.duration),o,Be.ANIMATIONLOOPMODE_CONSTANT);a.setKeys(r),this.stopOtherAnimations&&i.stopAnimation(this._effectiveTarget);var s=function(){e.onInterpolationDoneObservable.notifyObservers(e),e.onInterpolationDone&&e.onInterpolationDone()};i.beginDirectAnimation(this._effectiveTarget,[a],0,100,!1,1,s)},t.prototype.serialize=function(e){return n.prototype._serialize.call(this,{name:"InterpolateValueAction",properties:[Ye._GetTargetProperty(this._target),{name:"propertyPath",value:this.propertyPath},{name:"value",value:Ye._SerializeValueAsString(this.value)},{name:"duration",value:Ye._SerializeValueAsString(this.duration)},{name:"stopOtherAnimations",value:Ye._SerializeValueAsString(this.stopOtherAnimations)||!1}]},e)},t}(Ye);$.RegisteredTypes["BABYLON.InterpolateValueAction"]=Ou;var jm=function(){function n(){this.enableBlending=!1,this.blendingSpeed=.01,this.loopMode=Be.ANIMATIONLOOPMODE_CYCLE}return n}(),_r;(function(n){n[n.CW=0]="CW",n[n.CCW=1]="CCW"})(_r||(_r={}));var wu=function(){function n(){}return n.Interpolate=function(t,e,i,r,o){for(var a=1-3*r+3*e,s=3*r-6*e,l=3*e,u=t,c=0;c<5;c++){var h=u*u,f=h*u,d=a*f+s*h+l*u,p=1/(3*a*h+2*s*u+l);u-=(d-t)*p,u=Math.min(1,Math.max(0,u))}return 3*Math.pow(1-u,2)*u*i+3*(1-u)*Math.pow(u,2)*o+Math.pow(u,3)},n}(),Qr=function(){function n(t){this._radians=t,this._radians<0&&(this._radians+=2*Math.PI)}return n.prototype.degrees=function(){return this._radians*180/Math.PI},n.prototype.radians=function(){return this._radians},n.BetweenTwoPoints=function(t,e){var i=e.subtract(t),r=Math.atan2(i.y,i.x);return new n(r)},n.FromRadians=function(t){return new n(t)},n.FromDegrees=function(t){return new n(t*Math.PI/180)},n}(),Du=function(){function n(t,e,i){this.startPoint=t,this.midPoint=e,this.endPoint=i;var r=Math.pow(e.x,2)+Math.pow(e.y,2),o=(Math.pow(t.x,2)+Math.pow(t.y,2)-r)/2,a=(r-Math.pow(i.x,2)-Math.pow(i.y,2))/2,s=(t.x-e.x)*(e.y-i.y)-(e.x-i.x)*(t.y-e.y);this.centerPoint=new ae((o*(e.y-i.y)-a*(t.y-e.y))/s,((t.x-e.x)*a-(e.x-i.x)*o)/s),this.radius=this.centerPoint.subtract(this.startPoint).length(),this.startAngle=Qr.BetweenTwoPoints(this.centerPoint,this.startPoint);var l=this.startAngle.degrees(),u=Qr.BetweenTwoPoints(this.centerPoint,this.midPoint).degrees(),c=Qr.BetweenTwoPoints(this.centerPoint,this.endPoint).degrees();u-l>180&&(u-=360),u-l<-180&&(u+=360),c-u>180&&(c-=360),c-u<-180&&(c+=360),this.orientation=u-l<0?_r.CW:_r.CCW,this.angle=Qr.FromDegrees(this.orientation===_r.CW?l-c:c-l)}return n}(),vs=function(){function n(t,e){this._points=new Array,this._length=0,this.closed=!1,this._points.push(new ae(t,e))}return n.prototype.addLineTo=function(t,e){if(this.closed)return this;var i=new ae(t,e),r=this._points[this._points.length-1];return this._points.push(i),this._length+=i.subtract(r).length(),this},n.prototype.addArcTo=function(t,e,i,r,o){if(o===void 0&&(o=36),this.closed)return this;var a=this._points[this._points.length-1],s=new ae(t,e),l=new ae(i,r),u=new Du(a,s,l),c=u.angle.radians()/o;u.orientation===_r.CW&&(c*=-1);for(var h=u.startAngle.radians()+c,f=0;f<o;f++){var d=Math.cos(h)*u.radius+u.centerPoint.x,p=Math.sin(h)*u.radius+u.centerPoint.y;this.addLineTo(d,p),h+=c}return this},n.prototype.close=function(){return this.closed=!0,this},n.prototype.length=function(){var t=this._length;if(this.closed){var e=this._points[this._points.length-1],i=this._points[0];t+=i.subtract(e).length()}return t},n.prototype.getPoints=function(){return this._points},n.prototype.getPointAtLengthPosition=function(t){if(t<0||t>1)return ae.Zero();for(var e=t*this.length(),i=0,r=0;r<this._points.length;r++){var o=(r+1)%this._points.length,a=this._points[r],s=this._points[o],l=s.subtract(a),u=l.length()+i;if(e>=i&&e<=u){var c=l.normalize(),h=e-i;return new ae(a.x+c.x*h,a.y+c.y*h)}i=u}return ae.Zero()},n.StartingAt=function(t,e){return new n(t,e)},n}(),ys=function(){function n(t,e,i,r){e===void 0&&(e=null),r===void 0&&(r=!1),this.path=t,this._curve=new Array,this._distances=new Array,this._tangents=new Array,this._normals=new Array,this._binormals=new Array,this._pointAtData={id:0,point:_.Zero(),previousPointArrayIndex:0,position:0,subPosition:0,interpolateReady:!1,interpolationMatrix:q.Identity()};for(var o=0;o<t.length;o++)this._curve[o]=t[o].clone();this._raw=i||!1,this._alignTangentsWithPath=r,this._compute(e,r)}return n.prototype.getCurve=function(){return this._curve},n.prototype.getPoints=function(){return this._curve},n.prototype.length=function(){return this._distances[this._distances.length-1]},n.prototype.getTangents=function(){return this._tangents},n.prototype.getNormals=function(){return this._normals},n.prototype.getBinormals=function(){return this._binormals},n.prototype.getDistances=function(){return this._distances},n.prototype.getPointAt=function(t){return this._updatePointAtData(t).point},n.prototype.getTangentAt=function(t,e){return e===void 0&&(e=!1),this._updatePointAtData(t,e),e?_.TransformCoordinates(_.Forward(),this._pointAtData.interpolationMatrix):this._tangents[this._pointAtData.previousPointArrayIndex]},n.prototype.getNormalAt=function(t,e){return e===void 0&&(e=!1),this._updatePointAtData(t,e),e?_.TransformCoordinates(_.Right(),this._pointAtData.interpolationMatrix):this._normals[this._pointAtData.previousPointArrayIndex]},n.prototype.getBinormalAt=function(t,e){return e===void 0&&(e=!1),this._updatePointAtData(t,e),e?_.TransformCoordinates(_.UpReadOnly,this._pointAtData.interpolationMatrix):this._binormals[this._pointAtData.previousPointArrayIndex]},n.prototype.getDistanceAt=function(t){return this.length()*t},n.prototype.getPreviousPointIndexAt=function(t){return this._updatePointAtData(t),this._pointAtData.previousPointArrayIndex},n.prototype.getSubPositionAt=function(t){return this._updatePointAtData(t),this._pointAtData.subPosition},n.prototype.getClosestPositionTo=function(t){for(var e=Number.MAX_VALUE,i=0,r=0;r<this._curve.length-1;r++){var o=this._curve[r+0],a=this._curve[r+1].subtract(o).normalize(),s=this._distances[r+1]-this._distances[r+0],l=Math.min(Math.max(_.Dot(a,t.subtract(o).normalize()),0)*_.Distance(o,t)/s,1),u=_.Distance(o.add(a.scale(l*s)),t);u<e&&(e=u,i=(this._distances[r+0]+s*l)/this.length())}return i},n.prototype.slice=function(t,e){if(t===void 0&&(t=0),e===void 0&&(e=1),t<0&&(t=1-t*-1%1),e<0&&(e=1-e*-1%1),t>e){var i=t;t=e,e=i}var r=this.getCurve(),o=this.getPointAt(t),a=this.getPreviousPointIndexAt(t),s=this.getPointAt(e),l=this.getPreviousPointIndexAt(e)+1,u=[];return t!==0&&(a++,u.push(o)),u.push.apply(u,r.slice(a,l)),(e!==1||t===1)&&u.push(s),new n(u,this.getNormalAt(t),this._raw,this._alignTangentsWithPath)},n.prototype.update=function(t,e,i){e===void 0&&(e=null),i===void 0&&(i=!1);for(var r=0;r<t.length;r++)this._curve[r].x=t[r].x,this._curve[r].y=t[r].y,this._curve[r].z=t[r].z;return this._compute(e,i),this},n.prototype._compute=function(t,e){e===void 0&&(e=!1);var i=this._curve.length;if(!(i<2)){this._tangents[0]=this._getFirstNonNullVector(0),this._raw||this._tangents[0].normalize(),this._tangents[i-1]=this._curve[i-1].subtract(this._curve[i-2]),this._raw||this._tangents[i-1].normalize();var r=this._tangents[0],o=this._normalVector(r,t);this._normals[0]=o,this._raw||this._normals[0].normalize(),this._binormals[0]=_.Cross(r,this._normals[0]),this._raw||this._binormals[0].normalize(),this._distances[0]=0;for(var a,s,l,u,c,h=1;h<i;h++)a=this._getLastNonNullVector(h),h<i-1&&(s=this._getFirstNonNullVector(h),this._tangents[h]=e?s:a.add(s),this._tangents[h].normalize()),this._distances[h]=this._distances[h-1]+this._curve[h].subtract(this._curve[h-1]).length(),l=this._tangents[h],c=this._binormals[h-1],this._normals[h]=_.Cross(c,l),this._raw||(this._normals[h].length()===0?(u=this._normals[h-1],this._normals[h]=u.clone()):this._normals[h].normalize()),this._binormals[h]=_.Cross(l,this._normals[h]),this._raw||this._binormals[h].normalize();this._pointAtData.id=NaN}},n.prototype._getFirstNonNullVector=function(t){for(var e=1,i=this._curve[t+e].subtract(this._curve[t]);i.length()===0&&t+e+1<this._curve.length;)e++,i=this._curve[t+e].subtract(this._curve[t]);return i},n.prototype._getLastNonNullVector=function(t){for(var e=1,i=this._curve[t].subtract(this._curve[t-e]);i.length()===0&&t>e+1;)e++,i=this._curve[t].subtract(this._curve[t-e]);return i},n.prototype._normalVector=function(t,e){var i,r=t.length();if(r===0&&(r=1),e==null){var o;he.WithinEpsilon(Math.abs(t.y)/r,1,ot)?he.WithinEpsilon(Math.abs(t.x)/r,1,ot)?he.WithinEpsilon(Math.abs(t.z)/r,1,ot)?o=_.Zero():o=new _(0,0,1):o=new _(1,0,0):o=new _(0,-1,0),i=_.Cross(t,o)}else i=_.Cross(t,e),_.CrossToRef(i,t,i);return i.normalize(),i},n.prototype._updatePointAtData=function(t,e){if(e===void 0&&(e=!1),this._pointAtData.id===t)return this._pointAtData.interpolateReady||this._updateInterpolationMatrix(),this._pointAtData;this._pointAtData.id=t;var i=this.getPoints();if(t<=0)return this._setPointAtData(0,0,i[0],0,e);if(t>=1)return this._setPointAtData(1,1,i[i.length-1],i.length-1,e);for(var r=i[0],o,a=0,s=t*this.length(),l=1;l<i.length;l++){o=i[l];var u=_.Distance(r,o);if(a+=u,a===s)return this._setPointAtData(t,1,o,l,e);if(a>s){var c=a-s,h=c/u,f=r.subtract(o),d=o.add(f.scaleInPlace(h));return this._setPointAtData(t,1-h,d,l-1,e)}r=o}return this._pointAtData},n.prototype._setPointAtData=function(t,e,i,r,o){return this._pointAtData.point=i,this._pointAtData.position=t,this._pointAtData.subPosition=e,this._pointAtData.previousPointArrayIndex=r,this._pointAtData.interpolateReady=o,o&&this._updateInterpolationMatrix(),this._pointAtData},n.prototype._updateInterpolationMatrix=function(){this._pointAtData.interpolationMatrix=q.Identity();var t=this._pointAtData.previousPointArrayIndex;if(t!==this._tangents.length-1){var e=t+1,i=this._tangents[t].clone(),r=this._normals[t].clone(),o=this._binormals[t].clone(),a=this._tangents[e].clone(),s=this._normals[e].clone(),l=this._binormals[e].clone(),u=te.RotationQuaternionFromAxis(r,o,i),c=te.RotationQuaternionFromAxis(s,l,a),h=te.Slerp(u,c,this._pointAtData.subPosition);h.toRotationMatrix(this._pointAtData.interpolationMatrix)}},n}(),Iu=function(){function n(t){this._length=0,this._points=t,this._length=this._computeLength(t)}return n.CreateQuadraticBezier=function(t,e,i,r){r=r>2?r:3;for(var o=new Array,a=function(l,u,c,h){var f=(1-l)*(1-l)*u+2*l*(1-l)*c+l*l*h;return f},s=0;s<=r;s++)o.push(new _(a(s/r,t.x,e.x,i.x),a(s/r,t.y,e.y,i.y),a(s/r,t.z,e.z,i.z)));return new n(o)},n.CreateCubicBezier=function(t,e,i,r,o){o=o>3?o:4;for(var a=new Array,s=function(u,c,h,f,d){var p=(1-u)*(1-u)*(1-u)*c+3*u*(1-u)*(1-u)*h+3*u*u*(1-u)*f+u*u*u*d;return p},l=0;l<=o;l++)a.push(new _(s(l/o,t.x,e.x,i.x,r.x),s(l/o,t.y,e.y,i.y,r.y),s(l/o,t.z,e.z,i.z,r.z)));return new n(a)},n.CreateHermiteSpline=function(t,e,i,r,o){for(var a=new Array,s=1/o,l=0;l<=o;l++)a.push(_.Hermite(t,e,i,r,l*s));return new n(a)},n.CreateCatmullRomSpline=function(t,e,i){var r=new Array,o=1/e,a=0;if(i){for(var s=t.length,l=0;l<s;l++){a=0;for(var u=0;u<e;u++)r.push(_.CatmullRom(t[l%s],t[(l+1)%s],t[(l+2)%s],t[(l+3)%s],a)),a+=o}r.push(r[0])}else{var c=new Array;c.push(t[0].clone()),Array.prototype.push.apply(c,t),c.push(t[t.length-1].clone());for(var l=0;l<c.length-3;l++){a=0;for(var u=0;u<e;u++)r.push(_.CatmullRom(c[l],c[l+1],c[l+2],c[l+3],a)),a+=o}l--,r.push(_.CatmullRom(c[l],c[l+1],c[l+2],c[l+3],a))}return new n(r)},n.prototype.getPoints=function(){return this._points},n.prototype.length=function(){return this._length},n.prototype.continue=function(t){for(var e=this._points[this._points.length-1],i=this._points.slice(),r=t.getPoints(),o=1;o<r.length;o++)i.push(r[o].subtract(r[0]).add(e));var a=new n(i);return a},n.prototype._computeLength=function(t){for(var e=0,i=1;i<t.length;i++)e+=t[i].subtract(t[i-1]).length();return e},n}(),Pt=function(){function n(){this._easingMode=n.EASINGMODE_EASEIN}return n.prototype.setEasingMode=function(t){var e=Math.min(Math.max(t,0),2);this._easingMode=e},n.prototype.getEasingMode=function(){return this._easingMode},n.prototype.easeInCore=function(t){throw new Error("You must implement this method")},n.prototype.ease=function(t){switch(this._easingMode){case n.EASINGMODE_EASEIN:return this.easeInCore(t);case n.EASINGMODE_EASEOUT:return 1-this.easeInCore(1-t)}return t>=.5?(1-this.easeInCore((1-t)*2))*.5+.5:this.easeInCore(t*2)*.5},n.EASINGMODE_EASEIN=0,n.EASINGMODE_EASEOUT=1,n.EASINGMODE_EASEINOUT=2,n}(),Nu=function(n){N(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.easeInCore=function(e){return e=Math.max(0,Math.min(1,e)),1-Math.sqrt(1-e*e)},t}(Pt),Fu=function(n){N(t,n);function t(e){e===void 0&&(e=1);var i=n.call(this)||this;return i.amplitude=e,i}return t.prototype.easeInCore=function(e){var i=Math.max(0,this.amplitude);return Math.pow(e,3)-e*i*Math.sin(3.141592653589793*e)},t}(Pt),Wm=function(n){N(t,n);function t(e,i){e===void 0&&(e=3),i===void 0&&(i=2);var r=n.call(this)||this;return r.bounces=e,r.bounciness=i,r}return t.prototype.easeInCore=function(e){var i=Math.max(0,this.bounces),r=this.bounciness;r<=1&&(r=1.001);var o=Math.pow(r,i),a=1-r,s=(1-o)/a+o*.5,l=e*s,u=Math.log(-l*(1-r)+1)/Math.log(r),c=Math.floor(u),h=c+1,f=(1-Math.pow(r,c))/(a*s),d=(1-Math.pow(r,h))/(a*s),p=(f+d)*.5,g=e-p,m=p-f;return-Math.pow(1/r,i-c)/(m*m)*(g-m)*(g+m)},t}(Pt),Hm=function(n){N(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.easeInCore=function(e){return e*e*e},t}(Pt),Ym=function(n){N(t,n);function t(e,i){e===void 0&&(e=3),i===void 0&&(i=3);var r=n.call(this)||this;return r.oscillations=e,r.springiness=i,r}return t.prototype.easeInCore=function(e){var i,r=Math.max(0,this.oscillations),o=Math.max(0,this.springiness);return o==0?i=e:i=(Math.exp(o*e)-1)/(Math.exp(o)-1),i*Math.sin((6.283185307179586*r+1.5707963267948966)*e)},t}(Pt),Bu=function(n){N(t,n);function t(e){e===void 0&&(e=2);var i=n.call(this)||this;return i.exponent=e,i}return t.prototype.easeInCore=function(e){return this.exponent<=0?e:(Math.exp(this.exponent*e)-1)/(Math.exp(this.exponent)-1)},t}(Pt),Xm=function(n){N(t,n);function t(e){e===void 0&&(e=2);var i=n.call(this)||this;return i.power=e,i}return t.prototype.easeInCore=function(e){var i=Math.max(0,this.power);return Math.pow(e,i)},t}(Pt),Qm=function(n){N(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.easeInCore=function(e){return e*e},t}(Pt),Km=function(n){N(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.easeInCore=function(e){return e*e*e*e},t}(Pt),Zm=function(n){N(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.easeInCore=function(e){return e*e*e*e*e},t}(Pt),bs=function(n){N(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.easeInCore=function(e){return 1-Math.sin(1.5707963267948966*(1-e))},t}(Pt),qm=function(n){N(t,n);function t(e,i,r,o){e===void 0&&(e=0),i===void 0&&(i=0),r===void 0&&(r=1),o===void 0&&(o=1);var a=n.call(this)||this;return a.x1=e,a.y1=i,a.x2=r,a.y2=o,a}return t.prototype.easeInCore=function(e){return wu.Interpolate(e,this.x1,this.y1,this.x2,this.y2)},t}(Pt),Jm=function(){function n(t){this.SMOOTHING=.75,this.FFT_SIZE=512,this.BARGRAPHAMPLITUDE=256,this.DEBUGCANVASPOS={x:20,y:20},this.DEBUGCANVASSIZE={width:320,height:200},this._scene=t,this._audioEngine=ue.audioEngine,this._audioEngine.canUseWebAudio&&this._audioEngine.audioContext&&(this._webAudioAnalyser=this._audioEngine.audioContext.createAnalyser(),this._webAudioAnalyser.minDecibels=-140,this._webAudioAnalyser.maxDecibels=0,this._byteFreqs=new Uint8Array(this._webAudioAnalyser.frequencyBinCount),this._byteTime=new Uint8Array(this._webAudioAnalyser.frequencyBinCount),this._floatFreqs=new Float32Array(this._webAudioAnalyser.frequencyBinCount))}return n.prototype.getFrequencyBinCount=function(){return this._audioEngine.canUseWebAudio?this._webAudioAnalyser.frequencyBinCount:0},n.prototype.getByteFrequencyData=function(){return this._audioEngine.canUseWebAudio&&(this._webAudioAnalyser.smoothingTimeConstant=this.SMOOTHING,this._webAudioAnalyser.fftSize=this.FFT_SIZE,this._webAudioAnalyser.getByteFrequencyData(this._byteFreqs)),this._byteFreqs},n.prototype.getByteTimeDomainData=function(){return this._audioEngine.canUseWebAudio&&(this._webAudioAnalyser.smoothingTimeConstant=this.SMOOTHING,this._webAudioAnalyser.fftSize=this.FFT_SIZE,this._webAudioAnalyser.getByteTimeDomainData(this._byteTime)),this._byteTime},n.prototype.getFloatFrequencyData=function(){return this._audioEngine.canUseWebAudio&&(this._webAudioAnalyser.smoothingTimeConstant=this.SMOOTHING,this._webAudioAnalyser.fftSize=this.FFT_SIZE,this._webAudioAnalyser.getFloatFrequencyData(this._floatFreqs)),this._floatFreqs},n.prototype.drawDebugCanvas=function(){var t=this;if(this._audioEngine.canUseWebAudio&&(this._debugCanvas||(this._debugCanvas=document.createElement("canvas"),this._debugCanvas.width=this.DEBUGCANVASSIZE.width,this._debugCanvas.height=this.DEBUGCANVASSIZE.height,this._debugCanvas.style.position="absolute",this._debugCanvas.style.top=this.DEBUGCANVASPOS.y+"px",this._debugCanvas.style.left=this.DEBUGCANVASPOS.x+"px",this._debugCanvasContext=this._debugCanvas.getContext("2d"),document.body.appendChild(this._debugCanvas),this._registerFunc=function(){t.drawDebugCanvas()},this._scene.registerBeforeRender(this._registerFunc)),this._registerFunc&&this._debugCanvasContext)){var e=this.getByteFrequencyData();this._debugCanvasContext.fillStyle="rgb(0, 0, 0)",this._debugCanvasContext.fillRect(0,0,this.DEBUGCANVASSIZE.width,this.DEBUGCANVASSIZE.height);for(var i=0;i<this.getFrequencyBinCount();i++){var r=e[i],o=r/this.BARGRAPHAMPLITUDE,a=this.DEBUGCANVASSIZE.height*o,s=this.DEBUGCANVASSIZE.height-a-1,l=this.DEBUGCANVASSIZE.width/this.getFrequencyBinCount(),u=i/this.getFrequencyBinCount()*360;this._debugCanvasContext.fillStyle="hsl("+u+", 100%, 50%)",this._debugCanvasContext.fillRect(i*l,s,l,a)}}},n.prototype.stopDebugCanvas=function(){this._debugCanvas&&(this._registerFunc&&(this._scene.unregisterBeforeRender(this._registerFunc),this._registerFunc=null),document.body.removeChild(this._debugCanvas),this._debugCanvas=null,this._debugCanvasContext=null)},n.prototype.connectAudioNodes=function(t,e){this._audioEngine.canUseWebAudio&&(t.connect(this._webAudioAnalyser),this._webAudioAnalyser.connect(e))},n.prototype.dispose=function(){this._audioEngine.canUseWebAudio&&this._webAudioAnalyser.disconnect()},n}();ue.AudioEngineFactory=function(n){return new Lu(n)};var Lu=function(){function n(t){var e=this;t===void 0&&(t=null),this._audioContext=null,this._audioContextInitialized=!1,this._muteButton=null,this.canUseWebAudio=!1,this.WarnedWebAudioUnsupported=!1,this.isMP3supported=!1,this.isOGGsupported=!1,this.unlocked=!0,this.useCustomUnlockedButton=!1,this.onAudioUnlockedObservable=new J,this.onAudioLockedObservable=new J,this._tryToRun=!1,this._onResize=function(){e._moveButtonToTopLeft()},(typeof window.AudioContext<"u"||typeof window.webkitAudioContext<"u")&&(window.AudioContext=window.AudioContext||window.webkitAudioContext,this.canUseWebAudio=!0);var i=document.createElement("audio");this._hostElement=t;try{i&&i.canPlayType&&(i.canPlayType('audio/mpeg; codecs="mp3"').replace(/^no$/,"")||i.canPlayType("audio/mp3").replace(/^no$/,""))&&(this.isMP3supported=!0)}catch{}try{i&&i.canPlayType&&i.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,"")&&(this.isOGGsupported=!0)}catch{}}return Object.defineProperty(n.prototype,"audioContext",{get:function(){return this._audioContextInitialized?!this.unlocked&&!this._muteButton&&this._displayMuteButton():this._initializeAudioContext(),this._audioContext},enumerable:!1,configurable:!0}),n.prototype.lock=function(){this._triggerSuspendedState()},n.prototype.unlock=function(){this._triggerRunningState()},n.prototype._resumeAudioContext=function(){var t;return this._audioContext.resume!==void 0&&(t=this._audioContext.resume()),t||Promise.resolve()},n.prototype._initializeAudioContext=function(){try{this.canUseWebAudio&&(this._audioContext=new AudioContext,this.masterGain=this._audioContext.createGain(),this.masterGain.gain.value=1,this.masterGain.connect(this._audioContext.destination),this._audioContextInitialized=!0,this._audioContext.state==="running"&&this._triggerRunningState())}catch(t){this.canUseWebAudio=!1,Z.Error("Web Audio: "+t.message)}},n.prototype._triggerRunningState=function(){var t=this;this._tryToRun||(this._tryToRun=!0,this._resumeAudioContext().then(function(){t._tryToRun=!1,t._muteButton&&t._hideMuteButton(),t.unlocked=!0,t.onAudioUnlockedObservable.notifyObservers(t)}).catch(function(){t._tryToRun=!1,t.unlocked=!1}))},n.prototype._triggerSuspendedState=function(){this.unlocked=!1,this.onAudioLockedObservable.notifyObservers(this),this._displayMuteButton()},n.prototype._displayMuteButton=function(){var t=this;if(!(this.useCustomUnlockedButton||this._muteButton)){this._muteButton=document.createElement("BUTTON"),this._muteButton.className="babylonUnmuteIcon",this._muteButton.id="babylonUnmuteIconBtn",this._muteButton.title="Unmute";var e=window.SVGSVGElement?"data:image/svg+xml;charset=UTF-8,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2239%22%20height%3D%2232%22%20viewBox%3D%220%200%2039%2032%22%3E%3Cpath%20fill%3D%22white%22%20d%3D%22M9.625%2018.938l-0.031%200.016h-4.953q-0.016%200-0.031-0.016v-12.453q0-0.016%200.031-0.016h4.953q0.031%200%200.031%200.016v12.453zM12.125%207.688l8.719-8.703v27.453l-8.719-8.719-0.016-0.047v-9.938zM23.359%207.875l1.406-1.406%204.219%204.203%204.203-4.203%201.422%201.406-4.219%204.219%204.219%204.203-1.484%201.359-4.141-4.156-4.219%204.219-1.406-1.422%204.219-4.203z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E":"https://cdn.babylonjs.com/Assets/audio.png",i=".babylonUnmuteIcon { position: absolute; left: 20px; top: 20px; height: 40px; width: 60px; background-color: rgba(51,51,51,0.7); background-image: url("+e+"); background-size: 80%; background-repeat:no-repeat; background-position: center; background-position-y: 4px; border: none; outline: none; transition: transform 0.125s ease-out; cursor: pointer; z-index: 9999; } .babylonUnmuteIcon:hover { transform: scale(1.05) } .babylonUnmuteIcon:active { background-color: rgba(51,51,51,1) }",r=document.createElement("style");r.appendChild(document.createTextNode(i)),document.getElementsByTagName("head")[0].appendChild(r),document.body.appendChild(this._muteButton),this._moveButtonToTopLeft(),this._muteButton.addEventListener("touchend",function(){t._triggerRunningState()},!0),this._muteButton.addEventListener("click",function(){t._triggerRunningState()},!0),window.addEventListener("resize",this._onResize)}},n.prototype._moveButtonToTopLeft=function(){this._hostElement&&this._muteButton&&(this._muteButton.style.top=this._hostElement.offsetTop+20+"px",this._muteButton.style.left=this._hostElement.offsetLeft+20+"px")},n.prototype._hideMuteButton=function(){this._muteButton&&(document.body.removeChild(this._muteButton),this._muteButton=null)},n.prototype.dispose=function(){this.canUseWebAudio&&this._audioContextInitialized&&(this._connectedAnalyser&&this._audioContext&&(this._connectedAnalyser.stopDebugCanvas(),this._connectedAnalyser.dispose(),this.masterGain.disconnect(),this.masterGain.connect(this._audioContext.destination),this._connectedAnalyser=null),this.masterGain.gain.value=1),this.WarnedWebAudioUnsupported=!1,this._hideMuteButton(),window.removeEventListener("resize",this._onResize),this.onAudioUnlockedObservable.clear(),this.onAudioLockedObservable.clear()},n.prototype.getGlobalVolume=function(){return this.canUseWebAudio&&this._audioContextInitialized?this.masterGain.gain.value:-1},n.prototype.setGlobalVolume=function(t){this.canUseWebAudio&&this._audioContextInitialized&&(this.masterGain.gain.value=t)},n.prototype.connectToAnalyser=function(t){this._connectedAnalyser&&this._connectedAnalyser.stopDebugCanvas(),this.canUseWebAudio&&this._audioContextInitialized&&this._audioContext&&(this._connectedAnalyser=t,this.masterGain.disconnect(),this._connectedAnalyser.connectAudioNodes(this.masterGain,this._audioContext.destination))},n}(),Vu=function(){function n(t,e){e===void 0&&(e={}),this.id=-1,this._isInitialized=!1,this._scene=t,this.soundCollection=new Array,this._options=e,!this._options.mainTrack&&this._scene.soundTracks&&(this._scene.soundTracks.push(this),this.id=this._scene.soundTracks.length-1)}return n.prototype._initializeSoundTrackAudioGraph=function(){ue.audioEngine.canUseWebAudio&&ue.audioEngine.audioContext&&(this._outputAudioNode=ue.audioEngine.audioContext.createGain(),this._outputAudioNode.connect(ue.audioEngine.masterGain),this._options&&this._options.volume&&(this._outputAudioNode.gain.value=this._options.volume),this._isInitialized=!0)},n.prototype.dispose=function(){if(ue.audioEngine&&ue.audioEngine.canUseWebAudio){for(this._connectedAnalyser&&this._connectedAnalyser.stopDebugCanvas();this.soundCollection.length;)this.soundCollection[0].dispose();this._outputAudioNode&&this._outputAudioNode.disconnect(),this._outputAudioNode=null}},n.prototype.addSound=function(t){this._isInitialized||this._initializeSoundTrackAudioGraph(),ue.audioEngine.canUseWebAudio&&this._outputAudioNode&&t.connectToSoundTrackAudioNode(this._outputAudioNode),t.soundTrackId&&(t.soundTrackId===-1?this._scene.mainSoundTrack.removeSound(t):this._scene.soundTracks&&this._scene.soundTracks[t.soundTrackId].removeSound(t)),this.soundCollection.push(t),t.soundTrackId=this.id},n.prototype.removeSound=function(t){var e=this.soundCollection.indexOf(t);e!==-1&&this.soundCollection.splice(e,1)},n.prototype.setVolume=function(t){ue.audioEngine.canUseWebAudio&&this._outputAudioNode&&(this._outputAudioNode.gain.value=t)},n.prototype.switchPanningModelToHRTF=function(){if(ue.audioEngine.canUseWebAudio)for(var t=0;t<this.soundCollection.length;t++)this.soundCollection[t].switchPanningModelToHRTF()},n.prototype.switchPanningModelToEqualPower=function(){if(ue.audioEngine.canUseWebAudio)for(var t=0;t<this.soundCollection.length;t++)this.soundCollection[t].switchPanningModelToEqualPower()},n.prototype.connectToAnalyser=function(t){this._connectedAnalyser&&this._connectedAnalyser.stopDebugCanvas(),this._connectedAnalyser=t,ue.audioEngine.canUseWebAudio&&this._outputAudioNode&&(this._outputAudioNode.disconnect(),this._connectedAnalyser.connectAudioNodes(this._outputAudioNode,ue.audioEngine.masterGain))},n}();ft.AddParser(de.NAME_AUDIO,function(n,t,e,i){var r=[],o;if(e.sounds=e.sounds||[],n.sounds!==void 0&&n.sounds!==null)for(var a=0,s=n.sounds.length;a<s;a++){var l=n.sounds[a];ue.audioEngine.canUseWebAudio?(l.url||(l.url=l.name),r[l.url]?e.sounds.push(Jr.Parse(l,t,i,r[l.url])):(o=Jr.Parse(l,t,i),r[l.url]=o,e.sounds.push(o))):e.sounds.push(new Jr(l.name,null,t))}r=[]});Object.defineProperty(ye.prototype,"mainSoundTrack",{get:function(){var n=this._getComponent(de.NAME_AUDIO);return n||(n=new ii(this),this._addComponent(n)),this._mainSoundTrack||(this._mainSoundTrack=new Vu(this,{mainTrack:!0})),this._mainSoundTrack},enumerable:!0,configurable:!0});ye.prototype.getSoundByName=function(n){var t;for(t=0;t<this.mainSoundTrack.soundCollection.length;t++)if(this.mainSoundTrack.soundCollection[t].name===n)return this.mainSoundTrack.soundCollection[t];if(this.soundTracks){for(var e=0;e<this.soundTracks.length;e++)for(t=0;t<this.soundTracks[e].soundCollection.length;t++)if(this.soundTracks[e].soundCollection[t].name===n)return this.soundTracks[e].soundCollection[t]}return null};Object.defineProperty(ye.prototype,"audioEnabled",{get:function(){var n=this._getComponent(de.NAME_AUDIO);return n||(n=new ii(this),this._addComponent(n)),n.audioEnabled},set:function(n){var t=this._getComponent(de.NAME_AUDIO);t||(t=new ii(this),this._addComponent(t)),n?t.enableAudio():t.disableAudio()},enumerable:!0,configurable:!0});Object.defineProperty(ye.prototype,"headphone",{get:function(){var n=this._getComponent(de.NAME_AUDIO);return n||(n=new ii(this),this._addComponent(n)),n.headphone},set:function(n){var t=this._getComponent(de.NAME_AUDIO);t||(t=new ii(this),this._addComponent(t)),n?t.switchAudioModeForHeadphones():t.switchAudioModeForNormalSpeakers()},enumerable:!0,configurable:!0});Object.defineProperty(ye.prototype,"audioListenerPositionProvider",{get:function(){var n=this._getComponent(de.NAME_AUDIO);return n||(n=new ii(this),this._addComponent(n)),n.audioListenerPositionProvider},set:function(n){var t=this._getComponent(de.NAME_AUDIO);if(t||(t=new ii(this),this._addComponent(t)),typeof n!="function")throw new Error("The value passed to [Scene.audioListenerPositionProvider] must be a function that returns a Vector3");t.audioListenerPositionProvider=n},enumerable:!0,configurable:!0});Object.defineProperty(ye.prototype,"audioPositioningRefreshRate",{get:function(){var n=this._getComponent(de.NAME_AUDIO);return n||(n=new ii(this),this._addComponent(n)),n.audioPositioningRefreshRate},set:function(n){var t=this._getComponent(de.NAME_AUDIO);t||(t=new ii(this),this._addComponent(t)),t.audioPositioningRefreshRate=n},enumerable:!0,configurable:!0});var ii=function(){function n(t){this.name=de.NAME_AUDIO,this._audioEnabled=!0,this._headphone=!1,this.audioPositioningRefreshRate=500,this._audioListenerPositionProvider=null,this._cachedCameraDirection=new _,this._cachedCameraPosition=new _,this._lastCheck=0,this.scene=t,t.soundTracks=new Array,t.sounds=new Array}return Object.defineProperty(n.prototype,"audioEnabled",{get:function(){return this._audioEnabled},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"headphone",{get:function(){return this._headphone},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"audioListenerPositionProvider",{get:function(){return this._audioListenerPositionProvider},set:function(t){this._audioListenerPositionProvider=t},enumerable:!1,configurable:!0}),n.prototype.register=function(){this.scene._afterRenderStage.registerStep(de.STEP_AFTERRENDER_AUDIO,this,this._afterRender)},n.prototype.rebuild=function(){},n.prototype.serialize=function(t){if(t.sounds=[],this.scene.soundTracks)for(var e=0;e<this.scene.soundTracks.length;e++)for(var i=this.scene.soundTracks[e],r=0;r<i.soundCollection.length;r++)t.sounds.push(i.soundCollection[r].serialize())},n.prototype.addFromContainer=function(t){var e=this;t.sounds&&t.sounds.forEach(function(i){i.play(),i.autoplay=!0,e.scene.mainSoundTrack.addSound(i)})},n.prototype.removeFromContainer=function(t,e){var i=this;e===void 0&&(e=!1),t.sounds&&t.sounds.forEach(function(r){r.stop(),r.autoplay=!1,i.scene.mainSoundTrack.removeSound(r),e&&r.dispose()})},n.prototype.dispose=function(){var t=this.scene;if(t._mainSoundTrack&&t.mainSoundTrack.dispose(),t.soundTracks)for(var e=0;e<t.soundTracks.length;e++)t.soundTracks[e].dispose()},n.prototype.disableAudio=function(){var t=this.scene;this._audioEnabled=!1,ue.audioEngine&&ue.audioEngine.audioContext&&ue.audioEngine.audioContext.suspend();var e;for(e=0;e<t.mainSoundTrack.soundCollection.length;e++)t.mainSoundTrack.soundCollection[e].pause();if(t.soundTracks)for(e=0;e<t.soundTracks.length;e++)for(var i=0;i<t.soundTracks[e].soundCollection.length;i++)t.soundTracks[e].soundCollection[i].pause()},n.prototype.enableAudio=function(){var t=this.scene;this._audioEnabled=!0,ue.audioEngine&&ue.audioEngine.audioContext&&ue.audioEngine.audioContext.resume();var e;for(e=0;e<t.mainSoundTrack.soundCollection.length;e++)t.mainSoundTrack.soundCollection[e].isPaused&&t.mainSoundTrack.soundCollection[e].play();if(t.soundTracks)for(e=0;e<t.soundTracks.length;e++)for(var i=0;i<t.soundTracks[e].soundCollection.length;i++)t.soundTracks[e].soundCollection[i].isPaused&&t.soundTracks[e].soundCollection[i].play()},n.prototype.switchAudioModeForHeadphones=function(){var t=this.scene;if(this._headphone=!0,t.mainSoundTrack.switchPanningModelToHRTF(),t.soundTracks)for(var e=0;e<t.soundTracks.length;e++)t.soundTracks[e].switchPanningModelToHRTF()},n.prototype.switchAudioModeForNormalSpeakers=function(){var t=this.scene;if(this._headphone=!1,t.mainSoundTrack.switchPanningModelToEqualPower(),t.soundTracks)for(var e=0;e<t.soundTracks.length;e++)t.soundTracks[e].switchPanningModelToEqualPower()},n.prototype._afterRender=function(){var t=Ir.Now;if(!(this._lastCheck&&t-this._lastCheck<this.audioPositioningRefreshRate)){this._lastCheck=t;var e=this.scene;if(!(!this._audioEnabled||!e._mainSoundTrack||!e.soundTracks||e._mainSoundTrack.soundCollection.length===0&&e.soundTracks.length===1)){var i=ue.audioEngine;if(i&&i.audioContext){if(this._audioListenerPositionProvider){var r=this._audioListenerPositionProvider();r.x=r.x||0,r.y=r.y||0,r.z=r.z||0,i.audioContext.listener.setPosition(r.x,r.y,r.z)}else{var o;if(e.activeCameras&&e.activeCameras.length>0?o=e.activeCameras[0]:o=e.activeCamera,o){this._cachedCameraPosition.equals(o.globalPosition)||(this._cachedCameraPosition.copyFrom(o.globalPosition),i.audioContext.listener.setPosition(o.globalPosition.x,o.globalPosition.y,o.globalPosition.z)),o.rigCameras&&o.rigCameras.length>0&&(o=o.rigCameras[0]);var a=q.Invert(o.getViewMatrix()),s=_.TransformNormal(e.useRightHandedSystem?n._CameraDirectionRH:n._CameraDirectionLH,a);s.normalize(),!isNaN(s.x)&&!isNaN(s.y)&&!isNaN(s.z)&&(this._cachedCameraDirection.equals(s)||(this._cachedCameraDirection.copyFrom(s),i.audioContext.listener.setOrientation(s.x,s.y,s.z,0,1,0)))}else i.audioContext.listener.setPosition(0,0,0)}var l;for(l=0;l<e.mainSoundTrack.soundCollection.length;l++){var u=e.mainSoundTrack.soundCollection[l];u.useCustomAttenuation&&u.updateDistanceFromListener()}if(e.soundTracks)for(l=0;l<e.soundTracks.length;l++)for(var c=0;c<e.soundTracks[l].soundCollection.length;c++)u=e.soundTracks[l].soundCollection[c],u.useCustomAttenuation&&u.updateDistanceFromListener()}}}},n._CameraDirectionLH=new _(0,0,-1),n._CameraDirectionRH=new _(0,0,1),n}();Jr._SceneComponentInitialization=function(n){var t=n._getComponent(de.NAME_AUDIO);t||(t=new ii(n),n._addComponent(t))};var ku=function(){function n(){this._zoomStopsAnimation=!1,this._idleRotationSpeed=.05,this._idleRotationWaitTime=2e3,this._idleRotationSpinupTime=2e3,this._isPointerDown=!1,this._lastFrameTime=null,this._lastInteractionTime=-1/0,this._cameraRotationSpeed=0,this._lastFrameRadius=0}return Object.defineProperty(n.prototype,"name",{get:function(){return"AutoRotation"},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"zoomStopsAnimation",{get:function(){return this._zoomStopsAnimation},set:function(t){this._zoomStopsAnimation=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"idleRotationSpeed",{get:function(){return this._idleRotationSpeed},set:function(t){this._idleRotationSpeed=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"idleRotationWaitTime",{get:function(){return this._idleRotationWaitTime},set:function(t){this._idleRotationWaitTime=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"idleRotationSpinupTime",{get:function(){return this._idleRotationSpinupTime},set:function(t){this._idleRotationSpinupTime=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"rotationInProgress",{get:function(){return Math.abs(this._cameraRotationSpeed)>0},enumerable:!1,configurable:!0}),n.prototype.init=function(){},n.prototype.attach=function(t){var e=this;this._attachedCamera=t;var i=this._attachedCamera.getScene();this._onPrePointerObservableObserver=i.onPrePointerObservable.add(function(r){if(r.type===Ae.POINTERDOWN){e._isPointerDown=!0;return}r.type===Ae.POINTERUP&&(e._isPointerDown=!1)}),this._onAfterCheckInputsObserver=t.onAfterCheckInputsObservable.add(function(){var r=Ir.Now,o=0;e._lastFrameTime!=null&&(o=r-e._lastFrameTime),e._lastFrameTime=r,e._applyUserInteraction();var a=r-e._lastInteractionTime-e._idleRotationWaitTime,s=Math.max(Math.min(a/e._idleRotationSpinupTime,1),0);e._cameraRotationSpeed=e._idleRotationSpeed*s,e._attachedCamera&&(e._attachedCamera.alpha-=e._cameraRotationSpeed*(o/1e3))})},n.prototype.detach=function(){if(this._attachedCamera){var t=this._attachedCamera.getScene();this._onPrePointerObservableObserver&&t.onPrePointerObservable.remove(this._onPrePointerObservableObserver),this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._attachedCamera=null}},n.prototype._userIsZooming=function(){return this._attachedCamera?this._attachedCamera.inertialRadiusOffset!==0:!1},n.prototype._shouldAnimationStopForInteraction=function(){if(!this._attachedCamera)return!1;var t=!1;return this._lastFrameRadius===this._attachedCamera.radius&&this._attachedCamera.inertialRadiusOffset!==0&&(t=!0),this._lastFrameRadius=this._attachedCamera.radius,this._zoomStopsAnimation?t:this._userIsZooming()},n.prototype._applyUserInteraction=function(){this._userIsMoving()&&!this._shouldAnimationStopForInteraction()&&(this._lastInteractionTime=Ir.Now)},n.prototype._userIsMoving=function(){return this._attachedCamera?this._attachedCamera.inertialAlphaOffset!==0||this._attachedCamera.inertialBetaOffset!==0||this._attachedCamera.inertialRadiusOffset!==0||this._attachedCamera.inertialPanningX!==0||this._attachedCamera.inertialPanningY!==0||this._isPointerDown:!1},n}(),zu=function(){function n(){this.transitionDuration=450,this.lowerRadiusTransitionRange=2,this.upperRadiusTransitionRange=-2,this._autoTransitionRange=!1,this._radiusIsAnimating=!1,this._radiusBounceTransition=null,this._animatables=new Array}return Object.defineProperty(n.prototype,"name",{get:function(){return"Bouncing"},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"autoTransitionRange",{get:function(){return this._autoTransitionRange},set:function(t){var e=this;if(this._autoTransitionRange!==t){this._autoTransitionRange=t;var i=this._attachedCamera;i&&(t?this._onMeshTargetChangedObserver=i.onMeshTargetChangedObservable.add(function(r){if(r){r.computeWorldMatrix(!0);var o=r.getBoundingInfo().diagonalLength;e.lowerRadiusTransitionRange=o*.05,e.upperRadiusTransitionRange=o*.05}}):this._onMeshTargetChangedObserver&&i.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver))}},enumerable:!1,configurable:!0}),n.prototype.init=function(){},n.prototype.attach=function(t){var e=this;this._attachedCamera=t,this._onAfterCheckInputsObserver=t.onAfterCheckInputsObservable.add(function(){e._attachedCamera&&(e._isRadiusAtLimit(e._attachedCamera.lowerRadiusLimit)&&e._applyBoundRadiusAnimation(e.lowerRadiusTransitionRange),e._isRadiusAtLimit(e._attachedCamera.upperRadiusLimit)&&e._applyBoundRadiusAnimation(e.upperRadiusTransitionRange))})},n.prototype.detach=function(){this._attachedCamera&&(this._onAfterCheckInputsObserver&&this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._onMeshTargetChangedObserver&&this._attachedCamera.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver),this._attachedCamera=null)},n.prototype._isRadiusAtLimit=function(t){return this._attachedCamera?this._attachedCamera.radius===t&&!this._radiusIsAnimating:!1},n.prototype._applyBoundRadiusAnimation=function(t){var e=this;if(this._attachedCamera){this._radiusBounceTransition||(n.EasingFunction.setEasingMode(n.EasingMode),this._radiusBounceTransition=Be.CreateAnimation("radius",Be.ANIMATIONTYPE_FLOAT,60,n.EasingFunction)),this._cachedWheelPrecision=this._attachedCamera.wheelPrecision,this._attachedCamera.wheelPrecision=1/0,this._attachedCamera.inertialRadiusOffset=0,this.stopAllAnimations(),this._radiusIsAnimating=!0;var i=Be.TransitionTo("radius",this._attachedCamera.radius+t,this._attachedCamera,this._attachedCamera.getScene(),60,this._radiusBounceTransition,this.transitionDuration,function(){return e._clearAnimationLocks()});i&&this._animatables.push(i)}},n.prototype._clearAnimationLocks=function(){this._radiusIsAnimating=!1,this._attachedCamera&&(this._attachedCamera.wheelPrecision=this._cachedWheelPrecision)},n.prototype.stopAllAnimations=function(){for(this._attachedCamera&&(this._attachedCamera.animations=[]);this._animatables.length;)this._animatables[0].onAnimationEnd=null,this._animatables[0].stop(),this._animatables.shift()},n.EasingFunction=new Fu(.3),n.EasingMode=Pt.EASINGMODE_EASEOUT,n}(),Uu=function(){function n(){this._mode=n.FitFrustumSidesMode,this._radiusScale=1,this._positionScale=.5,this._defaultElevation=.3,this._elevationReturnTime=1500,this._elevationReturnWaitTime=1e3,this._zoomStopsAnimation=!1,this._framingTime=1500,this.autoCorrectCameraLimitsAndSensibility=!0,this._isPointerDown=!1,this._lastInteractionTime=-1/0,this._animatables=new Array,this._betaIsAnimating=!1}return Object.defineProperty(n.prototype,"name",{get:function(){return"Framing"},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"mode",{get:function(){return this._mode},set:function(t){this._mode=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"radiusScale",{get:function(){return this._radiusScale},set:function(t){this._radiusScale=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"positionScale",{get:function(){return this._positionScale},set:function(t){this._positionScale=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"defaultElevation",{get:function(){return this._defaultElevation},set:function(t){this._defaultElevation=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"elevationReturnTime",{get:function(){return this._elevationReturnTime},set:function(t){this._elevationReturnTime=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"elevationReturnWaitTime",{get:function(){return this._elevationReturnWaitTime},set:function(t){this._elevationReturnWaitTime=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"zoomStopsAnimation",{get:function(){return this._zoomStopsAnimation},set:function(t){this._zoomStopsAnimation=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"framingTime",{get:function(){return this._framingTime},set:function(t){this._framingTime=t},enumerable:!1,configurable:!0}),n.prototype.init=function(){},n.prototype.attach=function(t){var e=this;this._attachedCamera=t;var i=this._attachedCamera.getScene();n.EasingFunction.setEasingMode(n.EasingMode),this._onPrePointerObservableObserver=i.onPrePointerObservable.add(function(r){if(r.type===Ae.POINTERDOWN){e._isPointerDown=!0;return}r.type===Ae.POINTERUP&&(e._isPointerDown=!1)}),this._onMeshTargetChangedObserver=t.onMeshTargetChangedObservable.add(function(r){r&&e.zoomOnMesh(r)}),this._onAfterCheckInputsObserver=t.onAfterCheckInputsObservable.add(function(){e._applyUserInteraction(),e._maintainCameraAboveGround()})},n.prototype.detach=function(){if(this._attachedCamera){var t=this._attachedCamera.getScene();this._onPrePointerObservableObserver&&t.onPrePointerObservable.remove(this._onPrePointerObservableObserver),this._onAfterCheckInputsObserver&&this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._onMeshTargetChangedObserver&&this._attachedCamera.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver),this._attachedCamera=null}},n.prototype.zoomOnMesh=function(t,e,i){e===void 0&&(e=!1),i===void 0&&(i=null),t.computeWorldMatrix(!0);var r=t.getBoundingInfo().boundingBox;this.zoomOnBoundingInfo(r.minimumWorld,r.maximumWorld,e,i)},n.prototype.zoomOnMeshHierarchy=function(t,e,i){e===void 0&&(e=!1),i===void 0&&(i=null),t.computeWorldMatrix(!0);var r=t.getHierarchyBoundingVectors(!0);this.zoomOnBoundingInfo(r.min,r.max,e,i)},n.prototype.zoomOnMeshesHierarchy=function(t,e,i){e===void 0&&(e=!1),i===void 0&&(i=null);for(var r=new _(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),o=new _(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),a=0;a<t.length;a++){var s=t[a].getHierarchyBoundingVectors(!0);_.CheckExtends(s.min,r,o),_.CheckExtends(s.max,r,o)}this.zoomOnBoundingInfo(r,o,e,i)},n.prototype.zoomOnBoundingInfo=function(t,e,i,r){var o=this;i===void 0&&(i=!1),r===void 0&&(r=null);var a;if(this._attachedCamera){var s=t.y,l=e.y,u=s+(l-s)*this._positionScale,c=e.subtract(t).scale(.5);if(i)a=new _(0,u,0);else{var h=t.add(c);a=new _(h.x,u,h.z)}this._vectorTransition||(this._vectorTransition=Be.CreateAnimation("target",Be.ANIMATIONTYPE_VECTOR3,60,n.EasingFunction)),this._betaIsAnimating=!0;var f=Be.TransitionTo("target",a,this._attachedCamera,this._attachedCamera.getScene(),60,this._vectorTransition,this._framingTime);f&&this._animatables.push(f);var d=0;if(this._mode===n.FitFrustumSidesMode){var p=this._calculateLowerRadiusFromModelBoundingSphere(t,e);this.autoCorrectCameraLimitsAndSensibility&&(this._attachedCamera.lowerRadiusLimit=c.length()+this._attachedCamera.minZ),d=p}else this._mode===n.IgnoreBoundsSizeMode&&(d=this._calculateLowerRadiusFromModelBoundingSphere(t,e),this.autoCorrectCameraLimitsAndSensibility&&this._attachedCamera.lowerRadiusLimit===null&&(this._attachedCamera.lowerRadiusLimit=this._attachedCamera.minZ));if(this.autoCorrectCameraLimitsAndSensibility){var g=e.subtract(t).length();this._attachedCamera.panningSensibility=5e3/g,this._attachedCamera.wheelPrecision=100/d}this._radiusTransition||(this._radiusTransition=Be.CreateAnimation("radius",Be.ANIMATIONTYPE_FLOAT,60,n.EasingFunction)),f=Be.TransitionTo("radius",d,this._attachedCamera,this._attachedCamera.getScene(),60,this._radiusTransition,this._framingTime,function(){o.stopAllAnimations(),r&&r(),o._attachedCamera&&o._attachedCamera.useInputToRestoreState&&o._attachedCamera.storeState()}),f&&this._animatables.push(f)}},n.prototype._calculateLowerRadiusFromModelBoundingSphere=function(t,e){var i=e.subtract(t),r=i.length(),o=this._getFrustumSlope(),a=r*.5,s=a*this._radiusScale,l=s*Math.sqrt(1+1/(o.x*o.x)),u=s*Math.sqrt(1+1/(o.y*o.y)),c=Math.max(l,u),h=this._attachedCamera;return h?(h.lowerRadiusLimit&&this._mode===n.IgnoreBoundsSizeMode&&(c=c<h.lowerRadiusLimit?h.lowerRadiusLimit:c),h.upperRadiusLimit&&(c=c>h.upperRadiusLimit?h.upperRadiusLimit:c),c):0},n.prototype._maintainCameraAboveGround=function(){var t=this;if(!(this._elevationReturnTime<0)){var e=Ir.Now-this._lastInteractionTime,i=Math.PI*.5-this._defaultElevation,r=Math.PI*.5;if(this._attachedCamera&&!this._betaIsAnimating&&this._attachedCamera.beta>r&&e>=this._elevationReturnWaitTime){this._betaIsAnimating=!0,this.stopAllAnimations(),this._betaTransition||(this._betaTransition=Be.CreateAnimation("beta",Be.ANIMATIONTYPE_FLOAT,60,n.EasingFunction));var o=Be.TransitionTo("beta",i,this._attachedCamera,this._attachedCamera.getScene(),60,this._betaTransition,this._elevationReturnTime,function(){t._clearAnimationLocks(),t.stopAllAnimations()});o&&this._animatables.push(o)}}},n.prototype._getFrustumSlope=function(){var t=this._attachedCamera;if(!t)return ae.Zero();var e=t.getScene().getEngine(),i=e.getAspectRatio(t),r=Math.tan(t.fov/2),o=r*i;return new ae(o,r)},n.prototype._clearAnimationLocks=function(){this._betaIsAnimating=!1},n.prototype._applyUserInteraction=function(){this.isUserIsMoving&&(this._lastInteractionTime=Ir.Now,this.stopAllAnimations(),this._clearAnimationLocks())},n.prototype.stopAllAnimations=function(){for(this._attachedCamera&&(this._attachedCamera.animations=[]);this._animatables.length;)this._animatables[0]&&(this._animatables[0].onAnimationEnd=null,this._animatables[0].stop()),this._animatables.shift()},Object.defineProperty(n.prototype,"isUserIsMoving",{get:function(){return this._attachedCamera?this._attachedCamera.inertialAlphaOffset!==0||this._attachedCamera.inertialBetaOffset!==0||this._attachedCamera.inertialRadiusOffset!==0||this._attachedCamera.inertialPanningX!==0||this._attachedCamera.inertialPanningY!==0||this._isPointerDown:!1},enumerable:!1,configurable:!0}),n.EasingFunction=new Bu,n.EasingMode=Pt.EASINGMODE_EASEINOUT,n.IgnoreBoundsSizeMode=0,n.FitFrustumSidesMode=1,n}(),tr=function(){function n(t,e,i,r){e===void 0&&(e=new _),i===void 0&&(i=0),r===void 0&&(r=!1),this.direction=t,this.rotatedDirection=e,this.diff=i,this.ignore=r}return n}(),$m=function(){function n(t){this.ui=t,this.name="AttachToBoxBehavior",this.distanceAwayFromFace=.15,this.distanceAwayFromBottomOfFace=.15,this._faceVectors=[new tr(_.Up()),new tr(_.Down()),new tr(_.Left()),new tr(_.Right()),new tr(_.Forward()),new tr(_.Forward().scaleInPlace(-1))],this._tmpMatrix=new q,this._tmpVector=new _,this._zeroVector=_.Zero(),this._lookAtTmpMatrix=new q}return n.prototype.init=function(){},n.prototype._closestFace=function(t){var e=this;return this._faceVectors.forEach(function(i){e._target.rotationQuaternion||(e._target.rotationQuaternion=te.RotationYawPitchRoll(e._target.rotation.y,e._target.rotation.x,e._target.rotation.z)),e._target.rotationQuaternion.toRotationMatrix(e._tmpMatrix),_.TransformCoordinatesToRef(i.direction,e._tmpMatrix,i.rotatedDirection),i.diff=_.GetAngleBetweenVectors(i.rotatedDirection,t,_.Cross(i.rotatedDirection,t))}),this._faceVectors.reduce(function(i,r){return i.ignore?r:r.ignore||i.diff<r.diff?i:r},this._faceVectors[0])},n.prototype._lookAtToRef=function(t,e,i){e===void 0&&(e=new _(0,1,0)),q.LookAtLHToRef(this._zeroVector,t,e,this._lookAtTmpMatrix),this._lookAtTmpMatrix.invert(),te.FromRotationMatrixToRef(this._lookAtTmpMatrix,i)},n.prototype.attach=function(t){var e=this;this._target=t,this._scene=this._target.getScene(),this._onRenderObserver=this._scene.onBeforeRenderObservable.add(function(){if(e._scene.activeCamera){var i=e._scene.activeCamera.position;e._scene.activeCamera.devicePosition&&(i=e._scene.activeCamera.devicePosition);var r=e._closestFace(i.subtract(t.position));e._scene.activeCamera.leftCamera?e._scene.activeCamera.leftCamera.computeWorldMatrix().getRotationMatrixToRef(e._tmpMatrix):e._scene.activeCamera.computeWorldMatrix().getRotationMatrixToRef(e._tmpMatrix),_.TransformCoordinatesToRef(_.Up(),e._tmpMatrix,e._tmpVector),e._faceVectors.forEach(function(a){r.direction.x&&a.direction.x&&(a.ignore=!0),r.direction.y&&a.direction.y&&(a.ignore=!0),r.direction.z&&a.direction.z&&(a.ignore=!0)});var o=e._closestFace(e._tmpVector);e._faceVectors.forEach(function(a){a.ignore=!1}),e.ui.position.copyFrom(t.position),r.direction.x&&(r.rotatedDirection.scaleToRef(t.scaling.x/2+e.distanceAwayFromFace,e._tmpVector),e.ui.position.addInPlace(e._tmpVector)),r.direction.y&&(r.rotatedDirection.scaleToRef(t.scaling.y/2+e.distanceAwayFromFace,e._tmpVector),e.ui.position.addInPlace(e._tmpVector)),r.direction.z&&(r.rotatedDirection.scaleToRef(t.scaling.z/2+e.distanceAwayFromFace,e._tmpVector),e.ui.position.addInPlace(e._tmpVector)),e.ui.rotationQuaternion||(e.ui.rotationQuaternion=te.RotationYawPitchRoll(e.ui.rotation.y,e.ui.rotation.x,e.ui.rotation.z)),r.rotatedDirection.scaleToRef(-1,e._tmpVector),e._lookAtToRef(e._tmpVector,o.rotatedDirection,e.ui.rotationQuaternion),o.direction.x&&e.ui.up.scaleToRef(e.distanceAwayFromBottomOfFace-t.scaling.x/2,e._tmpVector),o.direction.y&&e.ui.up.scaleToRef(e.distanceAwayFromBottomOfFace-t.scaling.y/2,e._tmpVector),o.direction.z&&e.ui.up.scaleToRef(e.distanceAwayFromBottomOfFace-t.scaling.z/2,e._tmpVector),e.ui.position.addInPlace(e._tmpVector)}})},n.prototype.detach=function(){this._scene.onBeforeRenderObservable.remove(this._onRenderObserver)},n}(),ev=function(){function n(){var t=this;this.delay=0,this.fadeInTime=300,this._millisecondsPerFrame=1e3/60,this._hovered=!1,this._hoverValue=0,this._ownerNode=null,this._update=function(){if(t._ownerNode){if(t._hoverValue+=t._hovered?t._millisecondsPerFrame:-t._millisecondsPerFrame,t._setAllVisibility(t._ownerNode,(t._hoverValue-t.delay)/t.fadeInTime),t._ownerNode.visibility>1){t._setAllVisibility(t._ownerNode,1),t._hoverValue=t.fadeInTime+t.delay;return}else if(t._ownerNode.visibility<0&&(t._setAllVisibility(t._ownerNode,0),t._hoverValue<0)){t._hoverValue=0;return}setTimeout(t._update,t._millisecondsPerFrame)}}}return Object.defineProperty(n.prototype,"name",{get:function(){return"FadeInOut"},enumerable:!1,configurable:!0}),n.prototype.init=function(){},n.prototype.attach=function(t){this._ownerNode=t,this._setAllVisibility(this._ownerNode,0)},n.prototype.detach=function(){this._ownerNode=null},n.prototype.fadeIn=function(t){this._hovered=t,this._update()},n.prototype._setAllVisibility=function(t,e){var i=this;t.visibility=e,t.getChildMeshes().forEach(function(r){i._setAllVisibility(r,e)})},n}(),Ze=function(){function n(t,e,i){i===void 0&&(i=Number.MAX_VALUE),this.origin=t,this.direction=e,this.length=i}return n.prototype.intersectsBoxMinMax=function(t,e,i){i===void 0&&(i=0);var r=n._TmpVector3[0].copyFromFloats(t.x-i,t.y-i,t.z-i),o=n._TmpVector3[1].copyFromFloats(e.x+i,e.y+i,e.z+i),a=0,s=Number.MAX_VALUE,l,u,c,h;if(Math.abs(this.direction.x)<1e-7){if(this.origin.x<r.x||this.origin.x>o.x)return!1}else if(l=1/this.direction.x,u=(r.x-this.origin.x)*l,c=(o.x-this.origin.x)*l,c===-1/0&&(c=1/0),u>c&&(h=u,u=c,c=h),a=Math.max(u,a),s=Math.min(c,s),a>s)return!1;if(Math.abs(this.direction.y)<1e-7){if(this.origin.y<r.y||this.origin.y>o.y)return!1}else if(l=1/this.direction.y,u=(r.y-this.origin.y)*l,c=(o.y-this.origin.y)*l,c===-1/0&&(c=1/0),u>c&&(h=u,u=c,c=h),a=Math.max(u,a),s=Math.min(c,s),a>s)return!1;if(Math.abs(this.direction.z)<1e-7){if(this.origin.z<r.z||this.origin.z>o.z)return!1}else if(l=1/this.direction.z,u=(r.z-this.origin.z)*l,c=(o.z-this.origin.z)*l,c===-1/0&&(c=1/0),u>c&&(h=u,u=c,c=h),a=Math.max(u,a),s=Math.min(c,s),a>s)return!1;return!0},n.prototype.intersectsBox=function(t,e){return e===void 0&&(e=0),this.intersectsBoxMinMax(t.minimum,t.maximum,e)},n.prototype.intersectsSphere=function(t,e){e===void 0&&(e=0);var i=t.center.x-this.origin.x,r=t.center.y-this.origin.y,o=t.center.z-this.origin.z,a=i*i+r*r+o*o,s=t.radius+e,l=s*s;if(a<=l)return!0;var u=i*this.direction.x+r*this.direction.y+o*this.direction.z;if(u<0)return!1;var c=a-u*u;return c<=l},n.prototype.intersectsTriangle=function(t,e,i){var r=n._TmpVector3[0],o=n._TmpVector3[1],a=n._TmpVector3[2],s=n._TmpVector3[3],l=n._TmpVector3[4];e.subtractToRef(t,r),i.subtractToRef(t,o),_.CrossToRef(this.direction,o,a);var u=_.Dot(r,a);if(u===0)return null;var c=1/u;this.origin.subtractToRef(t,s);var h=_.Dot(s,a)*c;if(h<0||h>1)return null;_.CrossToRef(s,r,l);var f=_.Dot(this.direction,l)*c;if(f<0||h+f>1)return null;var d=_.Dot(o,l)*c;return d>this.length?null:new Ql(1-h-f,h,d)},n.prototype.intersectsPlane=function(t){var e,i=_.Dot(t.normal,this.direction);if(Math.abs(i)<999999997475243e-21)return null;var r=_.Dot(t.normal,this.origin);return e=(-t.d-r)/i,e<0?e<-999999997475243e-21?null:0:e},n.prototype.intersectsAxis=function(t,e){switch(e===void 0&&(e=0),t){case"y":var i=(this.origin.y-e)/this.direction.y;return i>0?null:new _(this.origin.x+this.direction.x*-i,e,this.origin.z+this.direction.z*-i);case"x":var i=(this.origin.x-e)/this.direction.x;return i>0?null:new _(e,this.origin.y+this.direction.y*-i,this.origin.z+this.direction.z*-i);case"z":var i=(this.origin.z-e)/this.direction.z;return i>0?null:new _(this.origin.x+this.direction.x*-i,this.origin.y+this.direction.y*-i,e);default:return null}},n.prototype.intersectsMesh=function(t,e){var i=ee.Matrix[0];return t.getWorldMatrix().invertToRef(i),this._tmpRay?n.TransformToRef(this,i,this._tmpRay):this._tmpRay=n.Transform(this,i),t.intersects(this._tmpRay,e)},n.prototype.intersectsMeshes=function(t,e,i){i?i.length=0:i=[];for(var r=0;r<t.length;r++){var o=this.intersectsMesh(t[r],e);o.hit&&i.push(o)}return i.sort(this._comparePickingInfo),i},n.prototype._comparePickingInfo=function(t,e){return t.distance<e.distance?-1:t.distance>e.distance?1:0},n.prototype.intersectionSegment=function(t,e,i){var r=this.origin,o=ee.Vector3[0],a=ee.Vector3[1],s=ee.Vector3[2],l=ee.Vector3[3];e.subtractToRef(t,o),this.direction.scaleToRef(n.rayl,s),r.addToRef(s,a),t.subtractToRef(r,l);var u=_.Dot(o,o),c=_.Dot(o,s),h=_.Dot(s,s),f=_.Dot(o,l),d=_.Dot(s,l),p=u*h-c*c,g,m,v=p,b,C,P=p;p<n.smallnum?(m=0,v=1,C=d,P=h):(m=c*d-h*f,C=u*d-c*f,m<0?(m=0,C=d,P=h):m>v&&(m=v,C=d+c,P=h)),C<0?(C=0,-f<0?m=0:-f>u?m=v:(m=-f,v=u)):C>P&&(C=P,-f+c<0?m=0:-f+c>u?m=v:(m=-f+c,v=u)),g=Math.abs(m)<n.smallnum?0:m/v,b=Math.abs(C)<n.smallnum?0:C/P;var y=ee.Vector3[4];s.scaleToRef(b,y);var x=ee.Vector3[5];o.scaleToRef(g,x),x.addInPlace(l);var E=ee.Vector3[6];x.subtractToRef(y,E);var M=b>0&&b<=this.length&&E.lengthSquared()<i*i;return M?x.length():-1},n.prototype.update=function(t,e,i,r,o,a,s){return this.unprojectRayToRef(t,e,i,r,o,a,s),this},n.Zero=function(){return new n(_.Zero(),_.Zero())},n.CreateNew=function(t,e,i,r,o,a,s){var l=n.Zero();return l.update(t,e,i,r,o,a,s)},n.CreateNewFromTo=function(t,e,i){i===void 0&&(i=q.IdentityReadOnly);var r=e.subtract(t),o=Math.sqrt(r.x*r.x+r.y*r.y+r.z*r.z);return r.normalize(),n.Transform(new n(t,r,o),i)},n.Transform=function(t,e){var i=new n(new _(0,0,0),new _(0,0,0));return n.TransformToRef(t,e,i),i},n.TransformToRef=function(t,e,i){_.TransformCoordinatesToRef(t.origin,e,i.origin),_.TransformNormalToRef(t.direction,e,i.direction),i.length=t.length;var r=i.direction,o=r.length();if(!(o===0||o===1)){var a=1/o;r.x*=a,r.y*=a,r.z*=a,i.length*=o}},n.prototype.unprojectRayToRef=function(t,e,i,r,o,a,s){var l=ee.Matrix[0];o.multiplyToRef(a,l),l.multiplyToRef(s,l),l.invert();var u=ee.Vector3[0];u.x=t/i*2-1,u.y=-(e/r*2-1),u.z=-1;var c=ee.Vector3[1].copyFromFloats(u.x,u.y,1),h=ee.Vector3[2],f=ee.Vector3[3];_._UnprojectFromInvertedMatrixToRef(u,l,h),_._UnprojectFromInvertedMatrixToRef(c,l,f),this.origin.copyFrom(h),f.subtractToRef(h,this.direction),this.direction.normalize()},n._TmpVector3=sn.BuildArray(6,_.Zero),n.smallnum=1e-8,n.rayl=1e9,n}();ye.prototype.createPickingRay=function(n,t,e,i,r){r===void 0&&(r=!1);var o=Ze.Zero();return this.createPickingRayToRef(n,t,e,o,i,r),o};ye.prototype.createPickingRayToRef=function(n,t,e,i,r,o){o===void 0&&(o=!1);var a=this.getEngine();if(!r){if(!this.activeCamera)return this;r=this.activeCamera}var s=r.viewport,l=s.toGlobal(a.getRenderWidth(),a.getRenderHeight());return n=n/a.getHardwareScalingLevel()-l.x,t=t/a.getHardwareScalingLevel()-(a.getRenderHeight()-l.y-l.height),i.update(n,t,l.width,l.height,e||q.IdentityReadOnly,o?q.IdentityReadOnly:r.getViewMatrix(),r.getProjectionMatrix()),this};ye.prototype.createPickingRayInCameraSpace=function(n,t,e){var i=Ze.Zero();return this.createPickingRayInCameraSpaceToRef(n,t,i,e),i};ye.prototype.createPickingRayInCameraSpaceToRef=function(n,t,e,i){if(!Xt)return this;var r=this.getEngine();if(!i){if(!this.activeCamera)throw new Error("Active camera not set");i=this.activeCamera}var o=i.viewport,a=o.toGlobal(r.getRenderWidth(),r.getRenderHeight()),s=q.Identity();return n=n/r.getHardwareScalingLevel()-a.x,t=t/r.getHardwareScalingLevel()-(r.getRenderHeight()-a.y-a.height),e.update(n,t,a.width,a.height,s,s,i.getProjectionMatrix()),this};ye.prototype._internalPickForMesh=function(n,t,e,i,r,o,a,s){var l=t(i),u=e.intersects(l,r,a,o,i,s);return!u||!u.hit||!r&&n!=null&&u.distance>=n.distance?null:u};ye.prototype._internalPick=function(n,t,e,i,r){if(!Xt)return null;for(var o=null,a=0;a<this.meshes.length;a++){var s=this.meshes[a];if(t){if(!t(s))continue}else if(!s.isEnabled()||!s.isVisible||!s.isPickable)continue;var l=s.skeleton&&s.skeleton.overrideMesh?s.skeleton.overrideMesh.getWorldMatrix():s.getWorldMatrix();if(s.hasThinInstances&&s.thinInstanceEnablePicking){var u=this._internalPickForMesh(o,n,s,l,!0,!0,r);if(u){if(i)return o;for(var c=ee.Matrix[1],h=s.thinInstanceGetWorldMatrices(),f=0;f<h.length;f++){var d=h[f];d.multiplyToRef(l,c);var p=this._internalPickForMesh(o,n,s,c,e,i,r,!0);if(p&&(o=p,o.thinInstanceIndex=f,e))return o}}}else{var u=this._internalPickForMesh(o,n,s,l,e,i,r);if(u&&(o=u,e))return o}}return o||new Xt};ye.prototype._internalMultiPick=function(n,t,e){if(!Xt)return null;for(var i=new Array,r=0;r<this.meshes.length;r++){var o=this.meshes[r];if(t){if(!t(o))continue}else if(!o.isEnabled()||!o.isVisible||!o.isPickable)continue;var a=o.skeleton&&o.skeleton.overrideMesh?o.skeleton.overrideMesh.getWorldMatrix():o.getWorldMatrix();if(o.hasThinInstances&&o.thinInstanceEnablePicking){var s=this._internalPickForMesh(null,n,o,a,!0,!0,e);if(s)for(var l=ee.Matrix[1],u=o.thinInstanceGetWorldMatrices(),c=0;c<u.length;c++){var h=u[c];h.multiplyToRef(a,l);var f=this._internalPickForMesh(null,n,o,l,!1,!1,e,!0);f&&(f.thinInstanceIndex=c,i.push(f))}}else{var s=this._internalPickForMesh(null,n,o,a,!1,!1,e);s&&i.push(s)}}return i};ye.prototype.pickWithBoundingInfo=function(n,t,e,i,r){var o=this;if(!Xt)return null;var a=this._internalPick(function(s){return o._tempPickingRay||(o._tempPickingRay=Ze.Zero()),o.createPickingRayToRef(n,t,s,o._tempPickingRay,r||null),o._tempPickingRay},e,i,!0);return a&&(a.ray=this.createPickingRay(n,t,q.Identity(),r||null)),a};ye.prototype.pick=function(n,t,e,i,r,o){var a=this;if(!Xt)return null;var s=this._internalPick(function(l){return a._tempPickingRay||(a._tempPickingRay=Ze.Zero()),a.createPickingRayToRef(n,t,l,a._tempPickingRay,r||null),a._tempPickingRay},e,i,!1,o);return s&&(s.ray=this.createPickingRay(n,t,q.Identity(),r||null)),s};ye.prototype.pickWithRay=function(n,t,e,i){var r=this,o=this._internalPick(function(a){return r._pickWithRayInverseMatrix||(r._pickWithRayInverseMatrix=q.Identity()),a.invertToRef(r._pickWithRayInverseMatrix),r._cachedRayForTransform||(r._cachedRayForTransform=Ze.Zero()),Ze.TransformToRef(n,r._pickWithRayInverseMatrix,r._cachedRayForTransform),r._cachedRayForTransform},t,e,!1,i);return o&&(o.ray=n),o};ye.prototype.multiPick=function(n,t,e,i,r){var o=this;return this._internalMultiPick(function(a){return o.createPickingRay(n,t,a,i||null)},e,r)};ye.prototype.multiPickWithRay=function(n,t,e){var i=this;return this._internalMultiPick(function(r){return i._pickWithRayInverseMatrix||(i._pickWithRayInverseMatrix=q.Identity()),r.invertToRef(i._pickWithRayInverseMatrix),i._cachedRayForTransform||(i._cachedRayForTransform=Ze.Zero()),Ze.TransformToRef(n,i._pickWithRayInverseMatrix,i._cachedRayForTransform),i._cachedRayForTransform},t,e)};Me.prototype.getForwardRay=function(n,t,e){return n===void 0&&(n=100),this.getForwardRayToRef(new Ze(_.Zero(),_.Zero(),n),n,t,e)};Me.prototype.getForwardRayToRef=function(n,t,e,i){return t===void 0&&(t=100),e||(e=this.getWorldMatrix()),n.length=t,i?n.origin.copyFrom(i):n.origin.copyFrom(this.position),ee.Vector3[2].set(0,0,this._scene.useRightHandedSystem?-1:1),_.TransformNormalToRef(ee.Vector3[2],e,ee.Vector3[3]),_.NormalizeToRef(ee.Vector3[3],n.direction),n};var Et=function(){function n(){}return n._RemoveAndStorePivotPoint=function(t){t&&n._PivotCached===0&&(t.getPivotPointToRef(n._OldPivotPoint),n._PivotPostMultiplyPivotMatrix=t._postMultiplyPivotMatrix,n._OldPivotPoint.equalsToFloats(0,0,0)||(t.setPivotMatrix(q.IdentityReadOnly),n._OldPivotPoint.subtractToRef(t.getPivotPoint(),n._PivotTranslation),n._PivotTmpVector.copyFromFloats(1,1,1),n._PivotTmpVector.subtractInPlace(t.scaling),n._PivotTmpVector.multiplyInPlace(n._PivotTranslation),t.position.addInPlace(n._PivotTmpVector))),n._PivotCached++},n._RestorePivotPoint=function(t){t&&!n._OldPivotPoint.equalsToFloats(0,0,0)&&n._PivotCached===1&&(t.setPivotPoint(n._OldPivotPoint),t._postMultiplyPivotMatrix=n._PivotPostMultiplyPivotMatrix,n._PivotTmpVector.copyFromFloats(1,1,1),n._PivotTmpVector.subtractInPlace(t.scaling),n._PivotTmpVector.multiplyInPlace(n._PivotTranslation),t.position.subtractInPlace(n._PivotTmpVector)),this._PivotCached--},n._PivotCached=0,n._OldPivotPoint=new _,n._PivotTranslation=new _,n._PivotTmpVector=new _,n._PivotPostMultiplyPivotMatrix=!1,n}();ce.CreatePlane=function(n){var t=[],e=[],i=[],r=[],o=n.width||n.size||1,a=n.height||n.size||1,s=n.sideOrientation===0?0:n.sideOrientation||ce.DEFAULTSIDE,l=o/2,u=a/2;e.push(-l,-u,0),i.push(0,0,-1),r.push(0,0),e.push(l,-u,0),i.push(0,0,-1),r.push(1,0),e.push(l,u,0),i.push(0,0,-1),r.push(1,1),e.push(-l,u,0),i.push(0,0,-1),r.push(0,1),t.push(0),t.push(1),t.push(2),t.push(0),t.push(2),t.push(3),ce._ComputeSides(s,e,t,i,r,n.frontUVs,n.backUVs);var c=new ce;return c.indices=t,c.positions=e,c.normals=i,c.uvs=r,c};O.CreatePlane=function(n,t,e,i,r){var o={size:t,width:t,height:t,sideOrientation:r,updatable:i};return Oo.CreatePlane(n,o,e)};var Oo=function(){function n(){}return n.CreatePlane=function(t,e,i){i===void 0&&(i=null);var r=new O(t,i);e.sideOrientation=O._GetDefaultSideOrientation(e.sideOrientation),r._originalBuilderSideOrientation=e.sideOrientation;var o=ce.CreatePlane(e);return o.applyToMesh(r,e.updatable),e.sourcePlane&&(r.translate(e.sourcePlane.normal,-e.sourcePlane.d),r.setDirection(e.sourcePlane.normal.scale(-1))),r},n}(),yi=function(){function n(t){this._useAlternatePickedPointAboveMaxDragAngleDragSpeed=-1.1,this.maxDragAngle=0,this._useAlternatePickedPointAboveMaxDragAngle=!1,this.currentDraggingPointerID=-1,this.dragging=!1,this.dragDeltaRatio=.2,this.updateDragPlane=!0,this._debugMode=!1,this._moving=!1,this.onDragObservable=new J,this.onDragStartObservable=new J,this.onDragEndObservable=new J,this.moveAttached=!0,this.enabled=!0,this.startAndReleaseDragOnPointerEvents=!0,this.detachCameraControls=!0,this.useObjectOrientationForDragging=!0,this.validateDrag=function(i){return!0},this._tmpVector=new _(0,0,0),this._alternatePickedPoint=new _(0,0,0),this._worldDragAxis=new _(0,0,0),this._targetPosition=new _(0,0,0),this._attachedToElement=!1,this._startDragRay=new Ze(new _,new _),this._lastPointerRay={},this._dragDelta=new _,this._pointA=new _(0,0,0),this._pointC=new _(0,0,0),this._localAxis=new _(0,0,0),this._lookAt=new _(0,0,0),this._options=t||{};var e=0;if(this._options.dragAxis&&e++,this._options.dragPlaneNormal&&e++,e>1)throw"Multiple drag modes specified in dragBehavior options. Only one expected"}return Object.defineProperty(n.prototype,"options",{get:function(){return this._options},set:function(t){this._options=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"name",{get:function(){return"PointerDrag"},enumerable:!1,configurable:!0}),n.prototype.init=function(){},n.prototype.attach=function(t,e){var i=this;this._scene=t.getScene(),this.attachedNode=t,n._planeScene||(this._debugMode?n._planeScene=this._scene:(n._planeScene=new ye(this._scene.getEngine(),{virtual:!0}),n._planeScene.detachControl(),this._scene.onDisposeObservable.addOnce(function(){n._planeScene.dispose(),n._planeScene=null}))),this._dragPlane=O.CreatePlane("pointerDragPlane",this._debugMode?1:1e4,n._planeScene,!1,O.DOUBLESIDE),this.lastDragPosition=new _(0,0,0);var r=e||function(o){return i.attachedNode==o||o.isDescendantOf(i.attachedNode)};this._pointerObserver=this._scene.onPointerObservable.add(function(o,a){if(i.enabled){if(o.type==Ae.POINTERDOWN)i.startAndReleaseDragOnPointerEvents&&!i.dragging&&o.pickInfo&&o.pickInfo.hit&&o.pickInfo.pickedMesh&&o.pickInfo.pickedPoint&&o.pickInfo.ray&&r(o.pickInfo.pickedMesh)&&i._startDrag(o.event.pointerId,o.pickInfo.ray,o.pickInfo.pickedPoint);else if(o.type==Ae.POINTERUP)i.startAndReleaseDragOnPointerEvents&&i.currentDraggingPointerID==o.event.pointerId&&i.releaseDrag();else if(o.type==Ae.POINTERMOVE){var s=o.event.pointerId;if(i.currentDraggingPointerID===n._AnyMouseID&&s!==n._AnyMouseID){var l=o.event,u=l.pointerType==="mouse"||!i._scene.getEngine().hostInformation.isMobile&&l instanceof MouseEvent;u&&(i._lastPointerRay[i.currentDraggingPointerID]&&(i._lastPointerRay[s]=i._lastPointerRay[i.currentDraggingPointerID],delete i._lastPointerRay[i.currentDraggingPointerID]),i.currentDraggingPointerID=s)}i._lastPointerRay[s]||(i._lastPointerRay[s]=new Ze(new _,new _)),o.pickInfo&&o.pickInfo.ray&&(i._lastPointerRay[s].origin.copyFrom(o.pickInfo.ray.origin),i._lastPointerRay[s].direction.copyFrom(o.pickInfo.ray.direction),i.currentDraggingPointerID==s&&i.dragging&&i._moveDrag(o.pickInfo.ray))}}}),this._beforeRenderObserver=this._scene.onBeforeRenderObservable.add(function(){i._moving&&i.moveAttached&&(Et._RemoveAndStorePivotPoint(i.attachedNode),i._targetPosition.subtractToRef(i.attachedNode.absolutePosition,i._tmpVector),i._tmpVector.scaleInPlace(i.dragDeltaRatio),i.attachedNode.getAbsolutePosition().addToRef(i._tmpVector,i._tmpVector),i.validateDrag(i._tmpVector)&&i.attachedNode.setAbsolutePosition(i._tmpVector),Et._RestorePivotPoint(i.attachedNode))})},n.prototype.releaseDrag=function(){if(this.dragging&&(this.dragging=!1,this.onDragEndObservable.notifyObservers({dragPlanePoint:this.lastDragPosition,pointerId:this.currentDraggingPointerID})),this.currentDraggingPointerID=-1,this._moving=!1,this.detachCameraControls&&this._attachedToElement&&this._scene.activeCamera&&!this._scene.activeCamera.leftCamera){if(this._scene.activeCamera.getClassName()==="ArcRotateCamera"){var t=this._scene.activeCamera;t.attachControl(t.inputs?t.inputs.noPreventDefault:!0,t._useCtrlForPanning,t._panningMouseButton)}else this._scene.activeCamera.attachControl(this._scene.activeCamera.inputs?this._scene.activeCamera.inputs.noPreventDefault:!0);this._attachedToElement=!1}},n.prototype.startDrag=function(t,e,i){t===void 0&&(t=n._AnyMouseID),this._startDrag(t,e,i);var r=this._lastPointerRay[t];t===n._AnyMouseID&&(r=this._lastPointerRay[Object.keys(this._lastPointerRay)[0]]),r&&this._moveDrag(r)},n.prototype._startDrag=function(t,e,i){if(!(!this._scene.activeCamera||this.dragging||!this.attachedNode)){Et._RemoveAndStorePivotPoint(this.attachedNode),e?(this._startDragRay.direction.copyFrom(e.direction),this._startDragRay.origin.copyFrom(e.origin)):(this._startDragRay.origin.copyFrom(this._scene.activeCamera.position),this.attachedNode.getWorldMatrix().getTranslationToRef(this._tmpVector),this._tmpVector.subtractToRef(this._scene.activeCamera.position,this._startDragRay.direction)),this._updateDragPlanePosition(this._startDragRay,i||this._tmpVector);var r=this._pickWithRayOnDragPlane(this._startDragRay);r&&(this.dragging=!0,this.currentDraggingPointerID=t,this.lastDragPosition.copyFrom(r),this.onDragStartObservable.notifyObservers({dragPlanePoint:r,pointerId:this.currentDraggingPointerID}),this._targetPosition.copyFrom(this.attachedNode.absolutePosition),this.detachCameraControls&&this._scene.activeCamera&&this._scene.activeCamera.inputs&&!this._scene.activeCamera.leftCamera&&(this._scene.activeCamera.inputs.attachedToElement?(this._scene.activeCamera.detachControl(),this._attachedToElement=!0):this._attachedToElement=!1)),Et._RestorePivotPoint(this.attachedNode)}},n.prototype._moveDrag=function(t){this._moving=!0;var e=this._pickWithRayOnDragPlane(t);if(e){this.updateDragPlane&&this._updateDragPlanePosition(t,e);var i=0;this._options.dragAxis?(this.useObjectOrientationForDragging?_.TransformCoordinatesToRef(this._options.dragAxis,this.attachedNode.getWorldMatrix().getRotationMatrix(),this._worldDragAxis):this._worldDragAxis.copyFrom(this._options.dragAxis),e.subtractToRef(this.lastDragPosition,this._tmpVector),i=_.Dot(this._tmpVector,this._worldDragAxis),this._worldDragAxis.scaleToRef(i,this._dragDelta)):(i=this._dragDelta.length(),e.subtractToRef(this.lastDragPosition,this._dragDelta)),this._targetPosition.addInPlace(this._dragDelta),this.onDragObservable.notifyObservers({dragDistance:i,delta:this._dragDelta,dragPlanePoint:e,dragPlaneNormal:this._dragPlane.forward,pointerId:this.currentDraggingPointerID}),this.lastDragPosition.copyFrom(e)}},n.prototype._pickWithRayOnDragPlane=function(t){var e=this;if(!t)return null;var i=Math.acos(_.Dot(this._dragPlane.forward,t.direction));if(i>Math.PI/2&&(i=Math.PI-i),this.maxDragAngle>0&&i>this.maxDragAngle)if(this._useAlternatePickedPointAboveMaxDragAngle){this._tmpVector.copyFrom(t.direction),this.attachedNode.absolutePosition.subtractToRef(t.origin,this._alternatePickedPoint),this._alternatePickedPoint.normalize(),this._alternatePickedPoint.scaleInPlace(this._useAlternatePickedPointAboveMaxDragAngleDragSpeed*_.Dot(this._alternatePickedPoint,this._tmpVector)),this._tmpVector.addInPlace(this._alternatePickedPoint);var r=_.Dot(this._dragPlane.forward,this._tmpVector);return this._dragPlane.forward.scaleToRef(-r,this._alternatePickedPoint),this._alternatePickedPoint.addInPlace(this._tmpVector),this._alternatePickedPoint.addInPlace(this.attachedNode.absolutePosition),this._alternatePickedPoint}else return null;var o=n._planeScene.pickWithRay(t,function(a){return a==e._dragPlane});return o&&o.hit&&o.pickedMesh&&o.pickedPoint?o.pickedPoint:null},n.prototype._updateDragPlanePosition=function(t,e){this._pointA.copyFrom(e),this._options.dragAxis?(this.useObjectOrientationForDragging?_.TransformCoordinatesToRef(this._options.dragAxis,this.attachedNode.getWorldMatrix().getRotationMatrix(),this._localAxis):this._localAxis.copyFrom(this._options.dragAxis),t.origin.subtractToRef(this._pointA,this._pointC),this._pointC.normalize(),Math.abs(_.Dot(this._localAxis,this._pointC))>.999?Math.abs(_.Dot(_.UpReadOnly,this._pointC))>.999?this._lookAt.copyFrom(_.Right()):this._lookAt.copyFrom(_.UpReadOnly):(_.CrossToRef(this._localAxis,this._pointC,this._lookAt),_.CrossToRef(this._localAxis,this._lookAt,this._lookAt),this._lookAt.normalize()),this._dragPlane.position.copyFrom(this._pointA),this._pointA.addToRef(this._lookAt,this._lookAt),this._dragPlane.lookAt(this._lookAt)):this._options.dragPlaneNormal?(this.useObjectOrientationForDragging?_.TransformCoordinatesToRef(this._options.dragPlaneNormal,this.attachedNode.getWorldMatrix().getRotationMatrix(),this._localAxis):this._localAxis.copyFrom(this._options.dragPlaneNormal),this._dragPlane.position.copyFrom(this._pointA),this._pointA.addToRef(this._localAxis,this._lookAt),this._dragPlane.lookAt(this._lookAt)):(this._dragPlane.position.copyFrom(this._pointA),this._dragPlane.lookAt(t.origin)),this._dragPlane.position.copyFrom(this.attachedNode.absolutePosition),this._dragPlane.computeWorldMatrix(!0)},n.prototype.detach=function(){this._pointerObserver&&this._scene.onPointerObservable.remove(this._pointerObserver),this._beforeRenderObserver&&this._scene.onBeforeRenderObservable.remove(this._beforeRenderObserver),this.releaseDrag()},n._AnyMouseID=-2,n}(),tv=function(){function n(){this._startDistance=0,this._initialScale=new _(0,0,0),this._targetScale=new _(0,0,0),this._sceneRenderObserver=null,this._dragBehaviorA=new yi({}),this._dragBehaviorA.moveAttached=!1,this._dragBehaviorB=new yi({}),this._dragBehaviorB.moveAttached=!1}return Object.defineProperty(n.prototype,"name",{get:function(){return"MultiPointerScale"},enumerable:!1,configurable:!0}),n.prototype.init=function(){},n.prototype._getCurrentDistance=function(){return this._dragBehaviorA.lastDragPosition.subtract(this._dragBehaviorB.lastDragPosition).length()},n.prototype.attach=function(t){var e=this;this._ownerNode=t,this._dragBehaviorA.onDragStartObservable.add(function(i){e._dragBehaviorA.dragging&&e._dragBehaviorB.dragging&&(e._dragBehaviorA.currentDraggingPointerID==e._dragBehaviorB.currentDraggingPointerID?e._dragBehaviorA.releaseDrag():(e._initialScale.copyFrom(t.scaling),e._startDistance=e._getCurrentDistance()))}),this._dragBehaviorB.onDragStartObservable.add(function(i){e._dragBehaviorA.dragging&&e._dragBehaviorB.dragging&&(e._dragBehaviorA.currentDraggingPointerID==e._dragBehaviorB.currentDraggingPointerID?e._dragBehaviorB.releaseDrag():(e._initialScale.copyFrom(t.scaling),e._startDistance=e._getCurrentDistance()))}),[this._dragBehaviorA,this._dragBehaviorB].forEach(function(i){i.onDragObservable.add(function(){if(e._dragBehaviorA.dragging&&e._dragBehaviorB.dragging){var r=e._getCurrentDistance()/e._startDistance;e._initialScale.scaleToRef(r,e._targetScale)}})}),t.addBehavior(this._dragBehaviorA),t.addBehavior(this._dragBehaviorB),this._sceneRenderObserver=t.getScene().onBeforeRenderObservable.add(function(){if(e._dragBehaviorA.dragging&&e._dragBehaviorB.dragging){var i=e._targetScale.subtract(t.scaling).scaleInPlace(.1);i.length()>.01&&t.scaling.addInPlace(i)}})},n.prototype.detach=function(){var t=this;this._ownerNode.getScene().onBeforeRenderObservable.remove(this._sceneRenderObserver),[this._dragBehaviorA,this._dragBehaviorB].forEach(function(e){e.onDragStartObservable.clear(),e.onDragObservable.clear(),t._ownerNode.removeBehavior(e)})},n}(),Gu=function(){function n(){this._sceneRenderObserver=null,this._targetPosition=new _(0,0,0),this._moving=!1,this._startingOrientation=new te,this._attachedToElement=!1,this.zDragFactor=3,this.rotateDraggedObject=!0,this.dragging=!1,this.dragDeltaRatio=.2,this.currentDraggingPointerID=-1,this.detachCameraControls=!0,this.onDragStartObservable=new J,this.onDragObservable=new J,this.onDragEndObservable=new J}return Object.defineProperty(n.prototype,"name",{get:function(){return"SixDofDrag"},enumerable:!1,configurable:!0}),n.prototype.init=function(){},Object.defineProperty(n.prototype,"_pointerCamera",{get:function(){return this._scene.cameraToUseForPointers?this._scene.cameraToUseForPointers:this._scene.activeCamera},enumerable:!1,configurable:!0}),n.prototype.attach=function(t){var e=this;this._ownerNode=t,this._scene=this._ownerNode.getScene(),n._virtualScene||(n._virtualScene=new ye(this._scene.getEngine(),{virtual:!0}),n._virtualScene.detachControl(),this._scene.getEngine().scenes.pop());var i=null,r=new _(0,0,0);this._virtualOriginMesh=new Ue("",n._virtualScene),this._virtualOriginMesh.rotationQuaternion=new te,this._virtualDragMesh=new Ue("",n._virtualScene),this._virtualDragMesh.rotationQuaternion=new te;var o=function(s){return e._ownerNode==s||s.isDescendantOf(e._ownerNode)};this._pointerObserver=this._scene.onPointerObservable.add(function(s,l){if(s.type==Ae.POINTERDOWN){if(!e.dragging&&s.pickInfo&&s.pickInfo.hit&&s.pickInfo.pickedMesh&&s.pickInfo.ray&&o(s.pickInfo.pickedMesh)){e._pointerCamera&&e._pointerCamera.cameraRigMode==Me.RIG_MODE_NONE&&s.pickInfo.ray.origin.copyFrom(e._pointerCamera.globalPosition),i=e._ownerNode,Et._RemoveAndStorePivotPoint(i),r.copyFrom(s.pickInfo.ray.origin),e._virtualOriginMesh.position.copyFrom(s.pickInfo.ray.origin),e._virtualOriginMesh.lookAt(s.pickInfo.ray.origin.add(s.pickInfo.ray.direction)),e._virtualOriginMesh.removeChild(e._virtualDragMesh),i.computeWorldMatrix(),e._virtualDragMesh.position.copyFrom(i.absolutePosition),i.rotationQuaternion||(i.rotationQuaternion=te.RotationYawPitchRoll(i.rotation.y,i.rotation.x,i.rotation.z));var u=i.parent;i.setParent(null),e._virtualDragMesh.rotationQuaternion.copyFrom(i.rotationQuaternion),i.setParent(u),e._virtualOriginMesh.addChild(e._virtualDragMesh),e._targetPosition.copyFrom(e._virtualDragMesh.absolutePosition),e.dragging=!0,e.currentDraggingPointerID=s.event.pointerId,e.detachCameraControls&&e._pointerCamera&&!e._pointerCamera.leftCamera&&(e._pointerCamera.inputs.attachedToElement?(e._pointerCamera.detachControl(),e._attachedToElement=!0):e._attachedToElement=!1),Et._RestorePivotPoint(i),e.onDragStartObservable.notifyObservers({})}}else if(s.type==Ae.POINTERUP||s.type==Ae.POINTERDOUBLETAP)e.currentDraggingPointerID==s.event.pointerId&&(e.dragging=!1,e._moving=!1,e.currentDraggingPointerID=-1,i=null,e._virtualOriginMesh.removeChild(e._virtualDragMesh),e.detachCameraControls&&e._attachedToElement&&e._pointerCamera&&!e._pointerCamera.leftCamera&&(e._pointerCamera.attachControl(!0),e._attachedToElement=!1),e.onDragEndObservable.notifyObservers({}));else if(s.type==Ae.POINTERMOVE&&e.currentDraggingPointerID==s.event.pointerId&&e.dragging&&s.pickInfo&&s.pickInfo.ray&&i){var c=e.zDragFactor;e._pointerCamera&&e._pointerCamera.cameraRigMode==Me.RIG_MODE_NONE&&(s.pickInfo.ray.origin.copyFrom(e._pointerCamera.globalPosition),c=0);var h=s.pickInfo.ray.origin.subtract(r);r.copyFrom(s.pickInfo.ray.origin);var f=-_.Dot(h,s.pickInfo.ray.direction);e._virtualOriginMesh.addChild(e._virtualDragMesh),e._virtualDragMesh.position.z-=e._virtualDragMesh.position.z<1?f*e.zDragFactor:f*c*e._virtualDragMesh.position.z,e._virtualDragMesh.position.z<0&&(e._virtualDragMesh.position.z=0),e._virtualOriginMesh.position.copyFrom(s.pickInfo.ray.origin),e._virtualOriginMesh.lookAt(s.pickInfo.ray.origin.add(s.pickInfo.ray.direction)),e._virtualOriginMesh.removeChild(e._virtualDragMesh),e._targetPosition.copyFrom(e._virtualDragMesh.absolutePosition),i.parent&&_.TransformCoordinatesToRef(e._targetPosition,q.Invert(i.parent.getWorldMatrix()),e._targetPosition),e._moving||e._startingOrientation.copyFrom(e._virtualDragMesh.rotationQuaternion),e._moving=!0}});var a=new te;this._sceneRenderObserver=t.getScene().onBeforeRenderObservable.add(function(){if(e.dragging&&e._moving&&i){if(Et._RemoveAndStorePivotPoint(i),i.position.addInPlace(e._targetPosition.subtract(i.position).scale(e.dragDeltaRatio)),e.rotateDraggedObject){a.copyFrom(e._startingOrientation),a.x=-a.x,a.y=-a.y,a.z=-a.z,e._virtualDragMesh.rotationQuaternion.multiplyToRef(a,a),te.RotationYawPitchRollToRef(a.toEulerAngles("xyz").y,0,0,a),a.multiplyToRef(e._startingOrientation,a);var s=i.parent;(!s||s.scaling&&!s.scaling.isNonUniformWithinEpsilon(.001))&&(i.setParent(null),te.SlerpToRef(i.rotationQuaternion,a,e.dragDeltaRatio,i.rotationQuaternion),i.setParent(s))}Et._RestorePivotPoint(i),e.onDragObservable.notifyObservers()}})},n.prototype.detach=function(){this._scene&&(this.detachCameraControls&&this._attachedToElement&&this._pointerCamera&&!this._pointerCamera.leftCamera&&(this._pointerCamera.attachControl(!0),this._attachedToElement=!1),this._scene.onPointerObservable.remove(this._pointerObserver)),this._ownerNode&&this._ownerNode.getScene().onBeforeRenderObservable.remove(this._sceneRenderObserver),this._virtualOriginMesh&&this._virtualOriginMesh.dispose(),this._virtualDragMesh&&this._virtualDragMesh.dispose(),this.onDragEndObservable.clear(),this.onDragObservable.clear(),this.onDragStartObservable.clear()},n}(),iv=function(){function n(t,e,i){if(this.targetPosition=_.Zero(),this.poleTargetPosition=_.Zero(),this.poleTargetLocalOffset=_.Zero(),this.poleAngle=0,this.slerpAmount=1,this._bone1Quat=te.Identity(),this._bone1Mat=q.Identity(),this._bone2Ang=Math.PI,this._maxAngle=Math.PI,this._rightHandedSystem=!1,this._bendAxis=_.Right(),this._slerping=!1,this._adjustRoll=0,this._bone2=e,this._bone1=e.getParent(),!!this._bone1){this.mesh=t;var r=e.getPosition();if(e.getAbsoluteTransform().determinant()>0&&(this._rightHandedSystem=!0,this._bendAxis.x=0,this._bendAxis.y=0,this._bendAxis.z=-1,r.x>r.y&&r.x>r.z&&(this._adjustRoll=Math.PI*.5,this._bendAxis.z=1)),this._bone1.length){var o=this._bone1.getScale(),a=this._bone2.getScale();this._bone1Length=this._bone1.length*o.y*this.mesh.scaling.y,this._bone2Length=this._bone2.length*a.y*this.mesh.scaling.y}else if(this._bone1.children[0]){t.computeWorldMatrix(!0);var s=this._bone2.children[0].getAbsolutePosition(t),l=this._bone2.getAbsolutePosition(t),u=this._bone1.getAbsolutePosition(t);this._bone1Length=_.Distance(s,l),this._bone2Length=_.Distance(l,u)}this._bone1.getRotationMatrixToRef(lt.WORLD,t,this._bone1Mat),this.maxAngle=Math.PI,i&&(i.targetMesh&&(this.targetMesh=i.targetMesh,this.targetMesh.computeWorldMatrix(!0)),i.poleTargetMesh?(this.poleTargetMesh=i.poleTargetMesh,this.poleTargetMesh.computeWorldMatrix(!0)):i.poleTargetBone?this.poleTargetBone=i.poleTargetBone:this._bone1.getParent()&&(this.poleTargetBone=this._bone1.getParent()),i.poleTargetLocalOffset&&this.poleTargetLocalOffset.copyFrom(i.poleTargetLocalOffset),i.poleAngle&&(this.poleAngle=i.poleAngle),i.bendAxis&&this._bendAxis.copyFrom(i.bendAxis),i.maxAngle&&(this.maxAngle=i.maxAngle),i.slerpAmount&&(this.slerpAmount=i.slerpAmount))}}return Object.defineProperty(n.prototype,"maxAngle",{get:function(){return this._maxAngle},set:function(t){this._setMaxAngle(t)},enumerable:!1,configurable:!0}),n.prototype._setMaxAngle=function(t){t<0&&(t=0),(t>Math.PI||t==null)&&(t=Math.PI),this._maxAngle=t;var e=this._bone1Length,i=this._bone2Length;this._maxReach=Math.sqrt(e*e+i*i-2*e*i*Math.cos(t))},n.prototype.update=function(){var t=this._bone1;if(t){var e=this.targetPosition,i=this.poleTargetPosition,r=n._tmpMats[0],o=n._tmpMats[1];this.targetMesh&&e.copyFrom(this.targetMesh.getAbsolutePosition()),this.poleTargetBone?this.poleTargetBone.getAbsolutePositionFromLocalToRef(this.poleTargetLocalOffset,this.mesh,i):this.poleTargetMesh&&_.TransformCoordinatesToRef(this.poleTargetLocalOffset,this.poleTargetMesh.getWorldMatrix(),i);var a=n._tmpVecs[0],s=n._tmpVecs[1],l=n._tmpVecs[2],u=n._tmpVecs[3],c=n._tmpVecs[4],h=n._tmpQuat;t.getAbsolutePositionToRef(this.mesh,a),i.subtractToRef(a,c),c.x==0&&c.y==0&&c.z==0?c.y=1:c.normalize(),e.subtractToRef(a,u),u.normalize(),_.CrossToRef(u,c,s),s.normalize(),_.CrossToRef(u,s,l),l.normalize(),q.FromXYZAxesToRef(l,u,s,r);var f=this._bone1Length,d=this._bone2Length,p=_.Distance(a,e);this._maxReach>0&&(p=Math.min(this._maxReach,p));var g=(d*d+p*p-f*f)/(2*d*p),m=(p*p+f*f-d*d)/(2*p*f);g>1&&(g=1),m>1&&(m=1),g<-1&&(g=-1),m<-1&&(m=-1);var v=Math.acos(g),b=Math.acos(m),C=-v-b;if(this._rightHandedSystem)q.RotationYawPitchRollToRef(0,0,this._adjustRoll,o),o.multiplyToRef(r,r),q.RotationAxisToRef(this._bendAxis,b,o),o.multiplyToRef(r,r);else{var P=n._tmpVecs[5];P.copyFrom(this._bendAxis),P.x*=-1,q.RotationAxisToRef(P,-b,o),o.multiplyToRef(r,r)}this.poleAngle&&(q.RotationAxisToRef(u,this.poleAngle,o),r.multiplyToRef(o,r)),this._bone1&&(this.slerpAmount<1?(this._slerping||te.FromRotationMatrixToRef(this._bone1Mat,this._bone1Quat),te.FromRotationMatrixToRef(r,h),te.SlerpToRef(this._bone1Quat,h,this.slerpAmount,this._bone1Quat),C=this._bone2Ang*(1-this.slerpAmount)+C*this.slerpAmount,this._bone1.setRotationQuaternion(this._bone1Quat,lt.WORLD,this.mesh),this._slerping=!0):(this._bone1.setRotationMatrix(r,lt.WORLD,this.mesh),this._bone1Mat.copyFrom(r),this._slerping=!1)),this._bone2.setAxisAngle(this._bendAxis,C,lt.LOCAL),this._bone2Ang=C}},n._tmpVecs=[_.Zero(),_.Zero(),_.Zero(),_.Zero(),_.Zero(),_.Zero()],n._tmpQuat=te.Identity(),n._tmpMats=[q.Identity(),q.Identity()],n}(),rv=function(){function n(t,e,i,r){if(this.upAxis=_.Up(),this.upAxisSpace=lt.LOCAL,this.adjustYaw=0,this.adjustPitch=0,this.adjustRoll=0,this.slerpAmount=1,this._boneQuat=te.Identity(),this._slerping=!1,this._firstFrameSkipped=!1,this._fowardAxis=_.Forward(),this.mesh=t,this.bone=e,this.target=i,r&&(r.adjustYaw&&(this.adjustYaw=r.adjustYaw),r.adjustPitch&&(this.adjustPitch=r.adjustPitch),r.adjustRoll&&(this.adjustRoll=r.adjustRoll),r.maxYaw!=null?this.maxYaw=r.maxYaw:this.maxYaw=Math.PI,r.minYaw!=null?this.minYaw=r.minYaw:this.minYaw=-Math.PI,r.maxPitch!=null?this.maxPitch=r.maxPitch:this.maxPitch=Math.PI,r.minPitch!=null?this.minPitch=r.minPitch:this.minPitch=-Math.PI,r.slerpAmount!=null&&(this.slerpAmount=r.slerpAmount),r.upAxis!=null&&(this.upAxis=r.upAxis),r.upAxisSpace!=null&&(this.upAxisSpace=r.upAxisSpace),r.yawAxis!=null||r.pitchAxis!=null)){var o=ct.Y,a=ct.X;r.yawAxis!=null&&(o=r.yawAxis.clone(),o.normalize()),r.pitchAxis!=null&&(a=r.pitchAxis.clone(),a.normalize());var s=_.Cross(a,o);this._transformYawPitch=q.Identity(),q.FromXYZAxesToRef(a,o,s,this._transformYawPitch),this._transformYawPitchInv=this._transformYawPitch.clone(),this._transformYawPitch.invert()}!e.getParent()&&this.upAxisSpace==lt.BONE&&(this.upAxisSpace=lt.LOCAL)}return Object.defineProperty(n.prototype,"minYaw",{get:function(){return this._minYaw},set:function(t){this._minYaw=t,this._minYawSin=Math.sin(t),this._minYawCos=Math.cos(t),this._maxYaw!=null&&(this._midYawConstraint=this._getAngleDiff(this._minYaw,this._maxYaw)*.5+this._minYaw,this._yawRange=this._maxYaw-this._minYaw)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"maxYaw",{get:function(){return this._maxYaw},set:function(t){this._maxYaw=t,this._maxYawSin=Math.sin(t),this._maxYawCos=Math.cos(t),this._minYaw!=null&&(this._midYawConstraint=this._getAngleDiff(this._minYaw,this._maxYaw)*.5+this._minYaw,this._yawRange=this._maxYaw-this._minYaw)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"minPitch",{get:function(){return this._minPitch},set:function(t){this._minPitch=t,this._minPitchTan=Math.tan(t)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"maxPitch",{get:function(){return this._maxPitch},set:function(t){this._maxPitch=t,this._maxPitchTan=Math.tan(t)},enumerable:!1,configurable:!0}),n.prototype.update=function(){if(this.slerpAmount<1&&!this._firstFrameSkipped){this._firstFrameSkipped=!0;return}var t=this.bone,e=n._tmpVecs[0];t.getAbsolutePositionToRef(this.mesh,e);var i=this.target,r=n._tmpMats[0],o=n._tmpMats[1],a=this.mesh,s=t.getParent(),l=n._tmpVecs[1];l.copyFrom(this.upAxis),this.upAxisSpace==lt.BONE&&s?(this._transformYawPitch&&_.TransformCoordinatesToRef(l,this._transformYawPitchInv,l),s.getDirectionToRef(l,this.mesh,l)):this.upAxisSpace==lt.LOCAL&&(a.getDirectionToRef(l,l),(a.scaling.x!=1||a.scaling.y!=1||a.scaling.z!=1)&&l.normalize());var u=!1,c=!1;if((this._maxYaw!=Math.PI||this._minYaw!=-Math.PI)&&(u=!0),(this._maxPitch!=Math.PI||this._minPitch!=-Math.PI)&&(c=!0),u||c){var h=n._tmpMats[2],f=n._tmpMats[3];if(this.upAxisSpace==lt.BONE&&l.y==1&&s)s.getRotationMatrixToRef(lt.WORLD,this.mesh,h);else if(this.upAxisSpace==lt.LOCAL&&l.y==1&&!s)h.copyFrom(a.getWorldMatrix());else{var p=n._tmpVecs[2];p.copyFrom(this._fowardAxis),this._transformYawPitch&&_.TransformCoordinatesToRef(p,this._transformYawPitchInv,p),s?s.getDirectionToRef(p,this.mesh,p):a.getDirectionToRef(p,p);var d=_.Cross(l,p);d.normalize();var p=_.Cross(d,l);q.FromXYZAxesToRef(d,l,p,h)}h.invertToRef(f);var g=null;if(c){var m=n._tmpVecs[3];i.subtractToRef(e,m),_.TransformCoordinatesToRef(m,f,m),g=Math.sqrt(m.x*m.x+m.z*m.z);var v=Math.atan2(m.y,g),b=v;v>this._maxPitch?(m.y=this._maxPitchTan*g,b=this._maxPitch):v<this._minPitch&&(m.y=this._minPitchTan*g,b=this._minPitch),v!=b&&(_.TransformCoordinatesToRef(m,h,m),m.addInPlace(e),i=m)}if(u){var m=n._tmpVecs[4];i.subtractToRef(e,m),_.TransformCoordinatesToRef(m,f,m);var C=Math.atan2(m.x,m.z),P=C;if((C>this._maxYaw||C<this._minYaw)&&(g==null&&(g=Math.sqrt(m.x*m.x+m.z*m.z)),this._yawRange>Math.PI?this._isAngleBetween(C,this._maxYaw,this._midYawConstraint)?(m.z=this._maxYawCos*g,m.x=this._maxYawSin*g,P=this._maxYaw):this._isAngleBetween(C,this._midYawConstraint,this._minYaw)&&(m.z=this._minYawCos*g,m.x=this._minYawSin*g,P=this._minYaw):C>this._maxYaw?(m.z=this._maxYawCos*g,m.x=this._maxYawSin*g,P=this._maxYaw):C<this._minYaw&&(m.z=this._minYawCos*g,m.x=this._minYawSin*g,P=this._minYaw)),this._slerping&&this._yawRange>Math.PI){var y=n._tmpVecs[8];y.copyFrom(ct.Z),this._transformYawPitch&&_.TransformCoordinatesToRef(y,this._transformYawPitchInv,y);var x=n._tmpMats[4];this._boneQuat.toRotationMatrix(x),this.mesh.getWorldMatrix().multiplyToRef(x,x),_.TransformCoordinatesToRef(y,x,y),_.TransformCoordinatesToRef(y,f,y);var E=Math.atan2(y.x,y.z),M=this._getAngleBetween(E,C),w=this._getAngleBetween(E,this._midYawConstraint);if(M>w){g==null&&(g=Math.sqrt(m.x*m.x+m.z*m.z));var A=this._getAngleBetween(E,this._maxYaw),T=this._getAngleBetween(E,this._minYaw);T<A?(P=E+Math.PI*.75,m.z=Math.cos(P)*g,m.x=Math.sin(P)*g):(P=E-Math.PI*.75,m.z=Math.cos(P)*g,m.x=Math.sin(P)*g)}}C!=P&&(_.TransformCoordinatesToRef(m,h,m),m.addInPlace(e),i=m)}}var I=n._tmpVecs[5],H=n._tmpVecs[6],L=n._tmpVecs[7],z=n._tmpQuat;i.subtractToRef(e,I),I.normalize(),_.CrossToRef(l,I,H),H.normalize(),_.CrossToRef(I,H,L),L.normalize(),q.FromXYZAxesToRef(H,L,I,r),!(H.x===0&&H.y===0&&H.z===0)&&(L.x===0&&L.y===0&&L.z===0||I.x===0&&I.y===0&&I.z===0||((this.adjustYaw||this.adjustPitch||this.adjustRoll)&&(q.RotationYawPitchRollToRef(this.adjustYaw,this.adjustPitch,this.adjustRoll,o),o.multiplyToRef(r,r)),this.slerpAmount<1?(this._slerping||this.bone.getRotationQuaternionToRef(lt.WORLD,this.mesh,this._boneQuat),this._transformYawPitch&&this._transformYawPitch.multiplyToRef(r,r),te.FromRotationMatrixToRef(r,z),te.SlerpToRef(this._boneQuat,z,this.slerpAmount,this._boneQuat),this.bone.setRotationQuaternion(this._boneQuat,lt.WORLD,this.mesh),this._slerping=!0):(this._transformYawPitch&&this._transformYawPitch.multiplyToRef(r,r),this.bone.setRotationMatrix(r,lt.WORLD,this.mesh),this._slerping=!1)))},n.prototype._getAngleDiff=function(t,e){var i=e-t;return i%=Math.PI*2,i>Math.PI?i-=Math.PI*2:i<-Math.PI&&(i+=Math.PI*2),i},n.prototype._getAngleBetween=function(t,e){t%=2*Math.PI,t=t<0?t+2*Math.PI:t,e%=2*Math.PI,e=e<0?e+2*Math.PI:e;var i=0;return t<e?i=e-t:i=t-e,i>Math.PI&&(i=Math.PI*2-i),i},n.prototype._isAngleBetween=function(t,e,i){if(t%=2*Math.PI,t=t<0?t+2*Math.PI:t,e%=2*Math.PI,e=e<0?e+2*Math.PI:e,i%=2*Math.PI,i=i<0?i+2*Math.PI:i,e<i){if(t>e&&t<i)return!0}else if(t>i&&t<e)return!0;return!1},n._tmpVecs=sn.BuildArray(10,_.Zero),n._tmpQuat=te.Identity(),n._tmpMats=sn.BuildArray(5,q.Identity),n}(),nv=function(){function n(t,e){this.x=t,this.y=e}return n}(),_t=function(){function n(t,e,i,r,o,a,s){r===void 0&&(r=0),o===void 0&&(o=1),a===void 0&&(a=2),s===void 0&&(s=3),this.id=t,this.index=e,this.browserGamepad=i,this._leftStick={x:0,y:0},this._rightStick={x:0,y:0},this._isConnected=!0,this._invertLeftStickY=!1,this.type=n.GAMEPAD,this._leftStickAxisX=r,this._leftStickAxisY=o,this._rightStickAxisX=a,this._rightStickAxisY=s,this.browserGamepad.axes.length>=2&&(this._leftStick={x:this.browserGamepad.axes[this._leftStickAxisX],y:this.browserGamepad.axes[this._leftStickAxisY]}),this.browserGamepad.axes.length>=4&&(this._rightStick={x:this.browserGamepad.axes[this._rightStickAxisX],y:this.browserGamepad.axes[this._rightStickAxisY]})}return Object.defineProperty(n.prototype,"isConnected",{get:function(){return this._isConnected},enumerable:!1,configurable:!0}),n.prototype.onleftstickchanged=function(t){this._onleftstickchanged=t},n.prototype.onrightstickchanged=function(t){this._onrightstickchanged=t},Object.defineProperty(n.prototype,"leftStick",{get:function(){return this._leftStick},set:function(t){this._onleftstickchanged&&(this._leftStick.x!==t.x||this._leftStick.y!==t.y)&&this._onleftstickchanged(t),this._leftStick=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"rightStick",{get:function(){return this._rightStick},set:function(t){this._onrightstickchanged&&(this._rightStick.x!==t.x||this._rightStick.y!==t.y)&&this._onrightstickchanged(t),this._rightStick=t},enumerable:!1,configurable:!0}),n.prototype.update=function(){this._leftStick&&(this.leftStick={x:this.browserGamepad.axes[this._leftStickAxisX],y:this.browserGamepad.axes[this._leftStickAxisY]},this._invertLeftStickY&&(this.leftStick.y*=-1)),this._rightStick&&(this.rightStick={x:this.browserGamepad.axes[this._rightStickAxisX],y:this.browserGamepad.axes[this._rightStickAxisY]})},n.prototype.dispose=function(){},n.GAMEPAD=0,n.GENERIC=1,n.XBOX=2,n.POSE_ENABLED=3,n.DUALSHOCK=4,n}(),ju=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,i,r)||this;return o.onButtonDownObservable=new J,o.onButtonUpObservable=new J,o.type=_t.GENERIC,o._buttons=new Array(r.buttons.length),o}return t.prototype.onbuttondown=function(e){this._onbuttondown=e},t.prototype.onbuttonup=function(e){this._onbuttonup=e},t.prototype._setButtonValue=function(e,i,r){return e!==i&&(e===1&&(this._onbuttondown&&this._onbuttondown(r),this.onButtonDownObservable.notifyObservers(r)),e===0&&(this._onbuttonup&&this._onbuttonup(r),this.onButtonUpObservable.notifyObservers(r))),e},t.prototype.update=function(){n.prototype.update.call(this);for(var e=0;e<this._buttons.length;e++)this._buttons[e]=this._setButtonValue(this.browserGamepad.buttons[e].value,this._buttons[e],e)},t.prototype.dispose=function(){n.prototype.dispose.call(this),this.onButtonDownObservable.clear(),this.onButtonUpObservable.clear()},t}(_t),Ps=function(){function n(){this.gamepadRotationSensibility=80,this.gamepadMoveSensibility=40,this._yAxisScale=1}return Object.defineProperty(n.prototype,"invertYAxis",{get:function(){return this._yAxisScale!==1},set:function(t){this._yAxisScale=t?-1:1},enumerable:!1,configurable:!0}),n.prototype.attachControl=function(){var t=this,e=this.camera.getScene().gamepadManager;this._onGamepadConnectedObserver=e.onGamepadConnectedObservable.add(function(i){i.type!==_t.POSE_ENABLED&&(!t.gamepad||i.type===_t.XBOX)&&(t.gamepad=i)}),this._onGamepadDisconnectedObserver=e.onGamepadDisconnectedObservable.add(function(i){t.gamepad===i&&(t.gamepad=null)}),this.gamepad=e.getGamepadByType(_t.XBOX)},n.prototype.detachControl=function(t){this.camera.getScene().gamepadManager.onGamepadConnectedObservable.remove(this._onGamepadConnectedObserver),this.camera.getScene().gamepadManager.onGamepadDisconnectedObservable.remove(this._onGamepadDisconnectedObserver),this.gamepad=null},n.prototype.checkInputs=function(){if(this.gamepad){var t=this.camera,e=this.gamepad.rightStick;if(e){if(e.x!=0){var i=e.x/this.gamepadRotationSensibility;i!=0&&Math.abs(i)>.005&&(t.inertialAlphaOffset+=i)}if(e.y!=0){var r=e.y/this.gamepadRotationSensibility*this._yAxisScale;r!=0&&Math.abs(r)>.005&&(t.inertialBetaOffset+=r)}}var o=this.gamepad.leftStick;if(o&&o.y!=0){var a=o.y/this.gamepadMoveSensibility;a!=0&&Math.abs(a)>.005&&(this.camera.inertialRadiusOffset-=a)}}},n.prototype.getClassName=function(){return"ArcRotateCameraGamepadInput"},n.prototype.getSimpleName=function(){return"gamepad"},R([B()],n.prototype,"gamepadRotationSensibility",void 0),R([B()],n.prototype,"gamepadMoveSensibility",void 0),n}();Ut.ArcRotateCameraGamepadInput=Ps;var Ss=function(){function n(){this.keysUp=[38],this.keysDown=[40],this.keysLeft=[37],this.keysRight=[39],this.keysReset=[220],this.panningSensibility=50,this.zoomingSensibility=25,this.useAltToZoom=!0,this.angularSpeed=.01,this._keys=new Array}return n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments),!this._onCanvasBlurObserver&&(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(function(){e._keys=[]}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(function(i){var r=i.event;if(!r.metaKey){if(i.type===Po.KEYDOWN){if(e._ctrlPressed=r.ctrlKey,e._altPressed=r.altKey,e.keysUp.indexOf(r.keyCode)!==-1||e.keysDown.indexOf(r.keyCode)!==-1||e.keysLeft.indexOf(r.keyCode)!==-1||e.keysRight.indexOf(r.keyCode)!==-1||e.keysReset.indexOf(r.keyCode)!==-1){var o=e._keys.indexOf(r.keyCode);o===-1&&e._keys.push(r.keyCode),r.preventDefault&&(t||r.preventDefault())}}else if(e.keysUp.indexOf(r.keyCode)!==-1||e.keysDown.indexOf(r.keyCode)!==-1||e.keysLeft.indexOf(r.keyCode)!==-1||e.keysRight.indexOf(r.keyCode)!==-1||e.keysReset.indexOf(r.keyCode)!==-1){var o=e._keys.indexOf(r.keyCode);o>=0&&e._keys.splice(o,1),r.preventDefault&&(t||r.preventDefault())}}}))},n.prototype.detachControl=function(t){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys=[]},n.prototype.checkInputs=function(){if(this._onKeyboardObserver)for(var t=this.camera,e=0;e<this._keys.length;e++){var i=this._keys[e];this.keysLeft.indexOf(i)!==-1?this._ctrlPressed&&this.camera._useCtrlForPanning?t.inertialPanningX-=1/this.panningSensibility:t.inertialAlphaOffset-=this.angularSpeed:this.keysUp.indexOf(i)!==-1?this._ctrlPressed&&this.camera._useCtrlForPanning?t.inertialPanningY+=1/this.panningSensibility:this._altPressed&&this.useAltToZoom?t.inertialRadiusOffset+=1/this.zoomingSensibility:t.inertialBetaOffset-=this.angularSpeed:this.keysRight.indexOf(i)!==-1?this._ctrlPressed&&this.camera._useCtrlForPanning?t.inertialPanningX+=1/this.panningSensibility:t.inertialAlphaOffset+=this.angularSpeed:this.keysDown.indexOf(i)!==-1?this._ctrlPressed&&this.camera._useCtrlForPanning?t.inertialPanningY-=1/this.panningSensibility:this._altPressed&&this.useAltToZoom?t.inertialRadiusOffset-=1/this.zoomingSensibility:t.inertialBetaOffset+=this.angularSpeed:this.keysReset.indexOf(i)!==-1&&t.useInputToRestoreState&&t.restoreState()}},n.prototype.getClassName=function(){return"ArcRotateCameraKeyboardMoveInput"},n.prototype.getSimpleName=function(){return"keyboard"},R([B()],n.prototype,"keysUp",void 0),R([B()],n.prototype,"keysDown",void 0),R([B()],n.prototype,"keysLeft",void 0),R([B()],n.prototype,"keysRight",void 0),R([B()],n.prototype,"keysReset",void 0),R([B()],n.prototype,"panningSensibility",void 0),R([B()],n.prototype,"zoomingSensibility",void 0),R([B()],n.prototype,"useAltToZoom",void 0),R([B()],n.prototype,"angularSpeed",void 0),n}();Ut.ArcRotateCameraKeyboardMoveInput=Ss;var Cs=function(){function n(){this.wheelPrecision=3,this.wheelDeltaPercentage=0}return n.prototype.computeDeltaFromMouseWheelLegacyEvent=function(t,e){var i=0,r=t*.01*this.wheelDeltaPercentage*e;return t>0?i=r/(1+this.wheelDeltaPercentage):i=r*(1+this.wheelDeltaPercentage),i},n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments),this._wheel=function(i,r){if(i.type===Ae.POINTERWHEEL){var o=i.event,a=0,s=o,l=0;if(s.wheelDelta?l=s.wheelDelta:l=-(o.deltaY||o.detail)*60,e.wheelDeltaPercentage){if(a=e.computeDeltaFromMouseWheelLegacyEvent(l,e.camera.radius),a>0){for(var u=e.camera.radius,c=e.camera.inertialRadiusOffset+a,h=0;h<20&&Math.abs(c)>.001;h++)u-=c,c*=e.camera.inertia;u=he.Clamp(u,0,Number.MAX_VALUE),a=e.computeDeltaFromMouseWheelLegacyEvent(l,u)}}else a=l/(e.wheelPrecision*40);a&&(e.camera.inertialRadiusOffset+=a),o.preventDefault&&(t||o.preventDefault())}},this._observer=this.camera.getScene().onPointerObservable.add(this._wheel,Ae.POINTERWHEEL)},n.prototype.detachControl=function(t){this._observer&&(this.camera.getScene().onPointerObservable.remove(this._observer),this._observer=null,this._wheel=null)},n.prototype.getClassName=function(){return"ArcRotateCameraMouseWheelInput"},n.prototype.getSimpleName=function(){return"mousewheel"},R([B()],n.prototype,"wheelPrecision",void 0),R([B()],n.prototype,"wheelDeltaPercentage",void 0),n}();Ut.ArcRotateCameraMouseWheelInput=Cs;var xs=function(){function n(){this.buttons=[0,1,2]}return n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments);var i=this.camera.getEngine(),r=i.getInputElement(),o=0,a=null;this.pointA=null,this.pointB=null,this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._buttonsPressed=0,this._pointerInput=function(l,u){var c=l.event,h=c.pointerType==="touch";if(!i.isInVRExclusivePointerMode&&!(l.type!==Ae.POINTERMOVE&&e.buttons.indexOf(c.button)===-1)){var f=c.srcElement||c.target;if(e._altKey=c.altKey,e._ctrlKey=c.ctrlKey,e._metaKey=c.metaKey,e._shiftKey=c.shiftKey,e._buttonsPressed=c.buttons,i.isPointerLock){var d=c.movementX||c.mozMovementX||c.webkitMovementX||c.msMovementX||0,p=c.movementY||c.mozMovementY||c.webkitMovementY||c.msMovementY||0;e.onTouch(null,d,p),e.pointA=null,e.pointB=null}else if(l.type===Ae.POINTERDOWN&&f){try{f.setPointerCapture(c.pointerId)}catch{}e.pointA===null?e.pointA={x:c.clientX,y:c.clientY,pointerId:c.pointerId,type:c.pointerType}:e.pointB===null&&(e.pointB={x:c.clientX,y:c.clientY,pointerId:c.pointerId,type:c.pointerType}),e.onButtonDown(c),t||(c.preventDefault(),r&&r.focus())}else if(l.type===Ae.POINTERDOUBLETAP)e.onDoubleTap(c.pointerType);else if(l.type===Ae.POINTERUP&&f){try{f.releasePointerCapture(c.pointerId)}catch{}h||(e.pointB=null),i._badOS?e.pointA=e.pointB=null:e.pointB&&e.pointA&&e.pointA.pointerId==c.pointerId?(e.pointA=e.pointB,e.pointB=null):e.pointA&&e.pointB&&e.pointB.pointerId==c.pointerId?e.pointB=null:e.pointA=e.pointB=null,(o!==0||a)&&(e.onMultiTouch(e.pointA,e.pointB,o,0,a,null),o=0,a=null),e.onButtonUp(c),t||c.preventDefault()}else if(l.type===Ae.POINTERMOVE){if(t||c.preventDefault(),e.pointA&&e.pointB===null){var d=c.clientX-e.pointA.x,p=c.clientY-e.pointA.y;e.onTouch(e.pointA,d,p),e.pointA.x=c.clientX,e.pointA.y=c.clientY}else if(e.pointA&&e.pointB){var g=e.pointA.pointerId===c.pointerId?e.pointA:e.pointB;g.x=c.clientX,g.y=c.clientY;var m=e.pointA.x-e.pointB.x,v=e.pointA.y-e.pointB.y,b=m*m+v*v,C={x:(e.pointA.x+e.pointB.x)/2,y:(e.pointA.y+e.pointB.y)/2,pointerId:c.pointerId,type:l.type};e.onMultiTouch(e.pointA,e.pointB,o,b,a,C),a=C,o=b}}}},this._observer=this.camera.getScene().onPointerObservable.add(this._pointerInput,Ae.POINTERDOWN|Ae.POINTERUP|Ae.POINTERMOVE),this._onLostFocus=function(){e.pointA=e.pointB=null,o=0,a=null,e.onLostFocus()},r&&r.addEventListener("contextmenu",this.onContextMenu.bind(this),!1);var s=this.camera.getScene().getEngine().getHostWindow();s&&se.RegisterTopRootEvents(s,[{name:"blur",handler:this._onLostFocus}])},n.prototype.detachControl=function(t){if(this._onLostFocus){var e=this.camera.getScene().getEngine().getHostWindow();e&&se.UnregisterTopRootEvents(e,[{name:"blur",handler:this._onLostFocus}])}if(this._observer){if(this.camera.getScene().onPointerObservable.remove(this._observer),this._observer=null,this.onContextMenu){var i=this.camera.getScene().getEngine().getInputElement();i&&i.removeEventListener("contextmenu",this.onContextMenu)}this._onLostFocus=null}this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._buttonsPressed=0},n.prototype.getClassName=function(){return"BaseCameraPointersInput"},n.prototype.getSimpleName=function(){return"pointers"},n.prototype.onDoubleTap=function(t){},n.prototype.onTouch=function(t,e,i){},n.prototype.onMultiTouch=function(t,e,i,r,o,a){},n.prototype.onContextMenu=function(t){t.preventDefault()},n.prototype.onButtonDown=function(t){},n.prototype.onButtonUp=function(t){},n.prototype.onLostFocus=function(){},R([B()],n.prototype,"buttons",void 0),n}(),Ts=function(n){N(t,n);function t(){var e=n!==null&&n.apply(this,arguments)||this;return e.buttons=[0,1,2],e.angularSensibilityX=1e3,e.angularSensibilityY=1e3,e.pinchPrecision=12,e.pinchDeltaPercentage=0,e.useNaturalPinchZoom=!1,e.panningSensibility=1e3,e.multiTouchPanning=!0,e.multiTouchPanAndZoom=!0,e.pinchInwards=!0,e._isPanClick=!1,e._twoFingerActivityCount=0,e._isPinching=!1,e}return t.prototype.getClassName=function(){return"ArcRotateCameraPointersInput"},t.prototype.onTouch=function(e,i,r){this.panningSensibility!==0&&(this._ctrlKey&&this.camera._useCtrlForPanning||this._isPanClick)?(this.camera.inertialPanningX+=-i/this.panningSensibility,this.camera.inertialPanningY+=r/this.panningSensibility):(this.camera.inertialAlphaOffset-=i/this.angularSensibilityX,this.camera.inertialBetaOffset-=r/this.angularSensibilityY)},t.prototype.onDoubleTap=function(e){this.camera.useInputToRestoreState&&this.camera.restoreState()},t.prototype.onMultiTouch=function(e,i,r,o,a,s){if(!(r===0&&a===null)&&!(o===0&&s===null)){var l=this.pinchInwards?1:-1;if(this.multiTouchPanAndZoom){if(this.useNaturalPinchZoom?this.camera.radius=this.camera.radius*Math.sqrt(r)/Math.sqrt(o):this.pinchDeltaPercentage?this.camera.inertialRadiusOffset+=(o-r)*.001*this.camera.radius*this.pinchDeltaPercentage:this.camera.inertialRadiusOffset+=(o-r)/(this.pinchPrecision*l*(this.angularSensibilityX+this.angularSensibilityY)/2),this.panningSensibility!==0&&a&&s){var u=s.x-a.x,c=s.y-a.y;this.camera.inertialPanningX+=-u/this.panningSensibility,this.camera.inertialPanningY+=c/this.panningSensibility}}else{this._twoFingerActivityCount++;var h=Math.sqrt(r),f=Math.sqrt(o);if(this._isPinching||this._twoFingerActivityCount<20&&Math.abs(f-h)>this.camera.pinchToPanMaxDistance)this.pinchDeltaPercentage?this.camera.inertialRadiusOffset+=(o-r)*.001*this.camera.radius*this.pinchDeltaPercentage:this.camera.inertialRadiusOffset+=(o-r)/(this.pinchPrecision*l*(this.angularSensibilityX+this.angularSensibilityY)/2),this._isPinching=!0;else if(this.panningSensibility!==0&&this.multiTouchPanning&&s&&a){var u=s.x-a.x,c=s.y-a.y;this.camera.inertialPanningX+=-u/this.panningSensibility,this.camera.inertialPanningY+=c/this.panningSensibility}}}},t.prototype.onButtonDown=function(e){this._isPanClick=e.button===this.camera._panningMouseButton},t.prototype.onButtonUp=function(e){this._twoFingerActivityCount=0,this._isPinching=!1},t.prototype.onLostFocus=function(){this._isPanClick=!1,this._twoFingerActivityCount=0,this._isPinching=!1},R([B()],t.prototype,"buttons",void 0),R([B()],t.prototype,"angularSensibilityX",void 0),R([B()],t.prototype,"angularSensibilityY",void 0),R([B()],t.prototype,"pinchPrecision",void 0),R([B()],t.prototype,"pinchDeltaPercentage",void 0),R([B()],t.prototype,"useNaturalPinchZoom",void 0),R([B()],t.prototype,"panningSensibility",void 0),R([B()],t.prototype,"multiTouchPanning",void 0),R([B()],t.prototype,"multiTouchPanAndZoom",void 0),t}(xs);Ut.ArcRotateCameraPointersInput=Ts;var wo=function(n){N(t,n);function t(e){return n.call(this,e)||this}return t.prototype.addMouseWheel=function(){return this.add(new Cs),this},t.prototype.addPointers=function(){return this.add(new Ts),this},t.prototype.addKeyboard=function(){return this.add(new Ss),this},t}(So);wo.prototype.addVRDeviceOrientation=function(){return this.add(new Es),this};var Es=function(){function n(){this.alphaCorrection=1,this.gammaCorrection=1,this._alpha=0,this._gamma=0,this._dirty=!1,this._deviceOrientationHandler=this._onOrientationEvent.bind(this)}return n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments),this.camera.attachControl(t);var i=this.camera.getScene().getEngine().getHostWindow();i&&(typeof DeviceOrientationEvent<"u"&&typeof DeviceOrientationEvent.requestPermission=="function"?DeviceOrientationEvent.requestPermission().then(function(r){r==="granted"?i.addEventListener("deviceorientation",e._deviceOrientationHandler):se.Warn("Permission not granted.")}).catch(function(r){se.Error(r)}):i.addEventListener("deviceorientation",this._deviceOrientationHandler))},n.prototype._onOrientationEvent=function(t){t.alpha!==null&&(this._alpha=(+t.alpha|0)*this.alphaCorrection),t.gamma!==null&&(this._gamma=(+t.gamma|0)*this.gammaCorrection),this._dirty=!0},n.prototype.checkInputs=function(){this._dirty&&(this._dirty=!1,this._gamma<0&&(this._gamma=180+this._gamma),this.camera.alpha=-this._alpha/180*Math.PI%Math.PI*2,this.camera.beta=this._gamma/180*Math.PI)},n.prototype.detachControl=function(t){window.removeEventListener("deviceorientation",this._deviceOrientationHandler)},n.prototype.getClassName=function(){return"ArcRotateCameraVRDeviceOrientationInput"},n.prototype.getSimpleName=function(){return"VRDeviceOrientation"},n}();Ut.ArcRotateCameraVRDeviceOrientationInput=Es;var Rs=function(){function n(){this.keysForward=[87],this.keysBackward=[83],this.keysUp=[69],this.keysDown=[81],this.keysRight=[68],this.keysLeft=[65],this._keys=new Array}return n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments),!this._onCanvasBlurObserver&&(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(function(){e._keys=[]}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(function(i){var r=i.event;if(i.type===Po.KEYDOWN){if(e.keysForward.indexOf(r.keyCode)!==-1||e.keysBackward.indexOf(r.keyCode)!==-1||e.keysUp.indexOf(r.keyCode)!==-1||e.keysDown.indexOf(r.keyCode)!==-1||e.keysLeft.indexOf(r.keyCode)!==-1||e.keysRight.indexOf(r.keyCode)!==-1){var o=e._keys.indexOf(r.keyCode);o===-1&&e._keys.push(r.keyCode),t||r.preventDefault()}}else if(e.keysForward.indexOf(r.keyCode)!==-1||e.keysBackward.indexOf(r.keyCode)!==-1||e.keysUp.indexOf(r.keyCode)!==-1||e.keysDown.indexOf(r.keyCode)!==-1||e.keysLeft.indexOf(r.keyCode)!==-1||e.keysRight.indexOf(r.keyCode)!==-1){var o=e._keys.indexOf(r.keyCode);o>=0&&e._keys.splice(o,1),t||r.preventDefault()}}))},n.prototype.detachControl=function(t){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys=[]},n.prototype.getClassName=function(){return"FlyCameraKeyboardInput"},n.prototype._onLostFocus=function(t){this._keys=[]},n.prototype.getSimpleName=function(){return"keyboard"},n.prototype.checkInputs=function(){if(this._onKeyboardObserver)for(var t=this.camera,e=0;e<this._keys.length;e++){var i=this._keys[e],r=t._computeLocalCameraSpeed();this.keysForward.indexOf(i)!==-1?t._localDirection.copyFromFloats(0,0,r):this.keysBackward.indexOf(i)!==-1?t._localDirection.copyFromFloats(0,0,-r):this.keysUp.indexOf(i)!==-1?t._localDirection.copyFromFloats(0,r,0):this.keysDown.indexOf(i)!==-1?t._localDirection.copyFromFloats(0,-r,0):this.keysRight.indexOf(i)!==-1?t._localDirection.copyFromFloats(r,0,0):this.keysLeft.indexOf(i)!==-1&&t._localDirection.copyFromFloats(-r,0,0),t.getScene().useRightHandedSystem&&(t._localDirection.z*=-1),t.getViewMatrix().invertToRef(t._cameraTransformMatrix),_.TransformNormalToRef(t._localDirection,t._cameraTransformMatrix,t._transformedDirection),t.cameraDirection.addInPlace(t._transformedDirection)}},R([B()],n.prototype,"keysForward",void 0),R([B()],n.prototype,"keysBackward",void 0),R([B()],n.prototype,"keysUp",void 0),R([B()],n.prototype,"keysDown",void 0),R([B()],n.prototype,"keysRight",void 0),R([B()],n.prototype,"keysLeft",void 0),n}();Ut.FlyCameraKeyboardInput=Rs;var Ms=function(){function n(t){this.buttons=[0,1,2],this.buttonsYaw=[-1,0,1],this.buttonsPitch=[-1,0,1],this.buttonsRoll=[2],this.activeButton=-1,this.angularSensibility=1e3,this.previousPosition=null}return n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments),this.noPreventDefault=t,this._observer=this.camera.getScene().onPointerObservable.add(function(i,r){e._pointerInput(i,r)},Ae.POINTERDOWN|Ae.POINTERUP|Ae.POINTERMOVE),this._rollObserver=this.camera.getScene().onBeforeRenderObservable.add(function(){e.camera.rollCorrect&&e.camera.restoreRoll(e.camera.rollCorrect)})},n.prototype.detachControl=function(t){this._observer&&(this.camera.getScene().onPointerObservable.remove(this._observer),this.camera.getScene().onBeforeRenderObservable.remove(this._rollObserver),this._observer=null,this._rollObserver=null,this.previousPosition=null,this.noPreventDefault=void 0)},n.prototype.getClassName=function(){return"FlyCameraMouseInput"},n.prototype.getSimpleName=function(){return"mouse"},n.prototype._pointerInput=function(t,e){var i=t.event,r=this.camera,o=r.getEngine();if(!o.isInVRExclusivePointerMode&&!(!this.touchEnabled&&i.pointerType==="touch")&&!(t.type!==Ae.POINTERMOVE&&this.buttons.indexOf(i.button)===-1)){var a=i.srcElement||i.target;if(t.type===Ae.POINTERDOWN&&a){try{a.setPointerCapture(i.pointerId)}catch{}this.previousPosition={x:i.clientX,y:i.clientY},this.activeButton=i.button,this.noPreventDefault||(i.preventDefault(),this.element.focus()),o.isPointerLock&&this._onMouseMove(t.event)}else if(t.type===Ae.POINTERUP&&a){try{a.releasePointerCapture(i.pointerId)}catch{}this.activeButton=-1,this.previousPosition=null,this.noPreventDefault||i.preventDefault()}else if(t.type===Ae.POINTERMOVE){if(!this.previousPosition){o.isPointerLock&&this._onMouseMove(t.event);return}var s=i.clientX-this.previousPosition.x,l=i.clientY-this.previousPosition.y;this.rotateCamera(s,l),this.previousPosition={x:i.clientX,y:i.clientY},this.noPreventDefault||i.preventDefault()}}},n.prototype._onMouseMove=function(t){var e=this.camera,i=e.getEngine();if(!(!i.isPointerLock||i.isInVRExclusivePointerMode)){var r=t.movementX||t.mozMovementX||t.webkitMovementX||t.msMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||t.msMovementY||0;this.rotateCamera(r,o),this.previousPosition=null,this.noPreventDefault||t.preventDefault()}},n.prototype.rotateCamera=function(t,e){var i=this,r=this.camera,o=this.camera.getScene();o.useRightHandedSystem&&(t*=-1),r.parent&&r.parent._getWorldMatrixDeterminant()<0&&(t*=-1);var a=t/this.angularSensibility,s=e/this.angularSensibility,l=te.RotationYawPitchRoll(r.rotation.y,r.rotation.x,r.rotation.z),u;if(this.buttonsPitch.some(function(f){return f===i.activeButton})&&(u=te.RotationAxis(ct.X,s),l.multiplyInPlace(u)),this.buttonsYaw.some(function(f){return f===i.activeButton})){u=te.RotationAxis(ct.Y,a),l.multiplyInPlace(u);var c=r.bankedTurnLimit+r._trackRoll;if(r.bankedTurn&&-c<r.rotation.z&&r.rotation.z<c){var h=r.bankedTurnMultiplier*-a;u=te.RotationAxis(ct.Z,h),l.multiplyInPlace(u)}}this.buttonsRoll.some(function(f){return f===i.activeButton})&&(u=te.RotationAxis(ct.Z,-a),r._trackRoll-=a,l.multiplyInPlace(u)),l.toEulerAnglesToRef(r.rotation)},R([B()],n.prototype,"buttons",void 0),R([B()],n.prototype,"angularSensibility",void 0),n}();Ut.FlyCameraMouseInput=Ms;var As=function(){function n(){this.keysHeightOffsetIncr=[38],this.keysHeightOffsetDecr=[40],this.keysHeightOffsetModifierAlt=!1,this.keysHeightOffsetModifierCtrl=!1,this.keysHeightOffsetModifierShift=!1,this.keysRotationOffsetIncr=[37],this.keysRotationOffsetDecr=[39],this.keysRotationOffsetModifierAlt=!1,this.keysRotationOffsetModifierCtrl=!1,this.keysRotationOffsetModifierShift=!1,this.keysRadiusIncr=[40],this.keysRadiusDecr=[38],this.keysRadiusModifierAlt=!0,this.keysRadiusModifierCtrl=!1,this.keysRadiusModifierShift=!1,this.heightSensibility=1,this.rotationSensibility=1,this.radiusSensibility=1,this._keys=new Array}return n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments),!this._onCanvasBlurObserver&&(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(function(){e._keys=[]}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(function(i){var r=i.event;if(!r.metaKey){if(i.type===Po.KEYDOWN){if(e._ctrlPressed=r.ctrlKey,e._altPressed=r.altKey,e._shiftPressed=r.shiftKey,e.keysHeightOffsetIncr.indexOf(r.keyCode)!==-1||e.keysHeightOffsetDecr.indexOf(r.keyCode)!==-1||e.keysRotationOffsetIncr.indexOf(r.keyCode)!==-1||e.keysRotationOffsetDecr.indexOf(r.keyCode)!==-1||e.keysRadiusIncr.indexOf(r.keyCode)!==-1||e.keysRadiusDecr.indexOf(r.keyCode)!==-1){var o=e._keys.indexOf(r.keyCode);o===-1&&e._keys.push(r.keyCode),r.preventDefault&&(t||r.preventDefault())}}else if(e.keysHeightOffsetIncr.indexOf(r.keyCode)!==-1||e.keysHeightOffsetDecr.indexOf(r.keyCode)!==-1||e.keysRotationOffsetIncr.indexOf(r.keyCode)!==-1||e.keysRotationOffsetDecr.indexOf(r.keyCode)!==-1||e.keysRadiusIncr.indexOf(r.keyCode)!==-1||e.keysRadiusDecr.indexOf(r.keyCode)!==-1){var o=e._keys.indexOf(r.keyCode);o>=0&&e._keys.splice(o,1),r.preventDefault&&(t||r.preventDefault())}}}))},n.prototype.detachControl=function(t){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys=[]},n.prototype.checkInputs=function(){var t=this;this._onKeyboardObserver&&this._keys.forEach(function(e){t.keysHeightOffsetIncr.indexOf(e)!==-1&&t._modifierHeightOffset()?t.camera.heightOffset+=t.heightSensibility:t.keysHeightOffsetDecr.indexOf(e)!==-1&&t._modifierHeightOffset()?t.camera.heightOffset-=t.heightSensibility:t.keysRotationOffsetIncr.indexOf(e)!==-1&&t._modifierRotationOffset()?(t.camera.rotationOffset+=t.rotationSensibility,t.camera.rotationOffset%=360):t.keysRotationOffsetDecr.indexOf(e)!==-1&&t._modifierRotationOffset()?(t.camera.rotationOffset-=t.rotationSensibility,t.camera.rotationOffset%=360):t.keysRadiusIncr.indexOf(e)!==-1&&t._modifierRadius()?t.camera.radius+=t.radiusSensibility:t.keysRadiusDecr.indexOf(e)!==-1&&t._modifierRadius()&&(t.camera.radius-=t.radiusSensibility)})},n.prototype.getClassName=function(){return"FollowCameraKeyboardMoveInput"},n.prototype.getSimpleName=function(){return"keyboard"},n.prototype._modifierHeightOffset=function(){return this.keysHeightOffsetModifierAlt===this._altPressed&&this.keysHeightOffsetModifierCtrl===this._ctrlPressed&&this.keysHeightOffsetModifierShift===this._shiftPressed},n.prototype._modifierRotationOffset=function(){return this.keysRotationOffsetModifierAlt===this._altPressed&&this.keysRotationOffsetModifierCtrl===this._ctrlPressed&&this.keysRotationOffsetModifierShift===this._shiftPressed},n.prototype._modifierRadius=function(){return this.keysRadiusModifierAlt===this._altPressed&&this.keysRadiusModifierCtrl===this._ctrlPressed&&this.keysRadiusModifierShift===this._shiftPressed},R([B()],n.prototype,"keysHeightOffsetIncr",void 0),R([B()],n.prototype,"keysHeightOffsetDecr",void 0),R([B()],n.prototype,"keysHeightOffsetModifierAlt",void 0),R([B()],n.prototype,"keysHeightOffsetModifierCtrl",void 0),R([B()],n.prototype,"keysHeightOffsetModifierShift",void 0),R([B()],n.prototype,"keysRotationOffsetIncr",void 0),R([B()],n.prototype,"keysRotationOffsetDecr",void 0),R([B()],n.prototype,"keysRotationOffsetModifierAlt",void 0),R([B()],n.prototype,"keysRotationOffsetModifierCtrl",void 0),R([B()],n.prototype,"keysRotationOffsetModifierShift",void 0),R([B()],n.prototype,"keysRadiusIncr",void 0),R([B()],n.prototype,"keysRadiusDecr",void 0),R([B()],n.prototype,"keysRadiusModifierAlt",void 0),R([B()],n.prototype,"keysRadiusModifierCtrl",void 0),R([B()],n.prototype,"keysRadiusModifierShift",void 0),R([B()],n.prototype,"heightSensibility",void 0),R([B()],n.prototype,"rotationSensibility",void 0),R([B()],n.prototype,"radiusSensibility",void 0),n}();Ut.FollowCameraKeyboardMoveInput=As;var Os=function(){function n(){this.axisControlRadius=!0,this.axisControlHeight=!1,this.axisControlRotation=!1,this.wheelPrecision=3,this.wheelDeltaPercentage=0}return n.prototype.attachControl=function(t){var e=this;t=se.BackCompatCameraNoPreventDefault(arguments),this._wheel=function(i,r){if(i.type===Ae.POINTERWHEEL){var o=i.event,a=0,s=Math.max(-1,Math.min(1,o.deltaY||o.wheelDelta||-o.detail));e.wheelDeltaPercentage?(console.assert(e.axisControlRadius+e.axisControlHeight+e.axisControlRotation<=1,"wheelDeltaPercentage only usable when mouse wheel controlls ONE axis. Currently enabled: axisControlRadius: "+e.axisControlRadius+", axisControlHeightOffset: "+e.axisControlHeight+", axisControlRotationOffset: "+e.axisControlRotation),e.axisControlRadius?a=s*.01*e.wheelDeltaPercentage*e.camera.radius:e.axisControlHeight?a=s*.01*e.wheelDeltaPercentage*e.camera.heightOffset:e.axisControlRotation&&(a=s*.01*e.wheelDeltaPercentage*e.camera.rotationOffset)):a=s*e.wheelPrecision,a&&(e.axisControlRadius?e.camera.radius+=a:e.axisControlHeight?e.camera.heightOffset-=a:e.axisControlRotation&&(e.camera.rotationOffset-=a)),o.preventDefault&&(t||o.preventDefault())}},this._observer=this.camera.getScene().onPointerObservable.add(this._wheel,Ae.POINTERWHEEL)},n.prototype.detachControl=function(t){this._observer&&(this.camera.getScene().onPointerObservable.remove(this._observer),this._observer=null,this._wheel=null)},n.prototype.getClassName=function(){return"ArcRotateCameraMouseWheelInput"},n.prototype.getSimpleName=function(){return"mousewheel"},R([B()],n.prototype,"axisControlRadius",void 0),R([B()],n.prototype,"axisControlHeight",void 0),R([B()],n.prototype,"axisControlRotation",void 0),R([B()],n.prototype,"wheelPrecision",void 0),R([B()],n.prototype,"wheelDeltaPercentage",void 0),n}();Ut.FollowCameraMouseWheelInput=Os;var ws=function(n){N(t,n);function t(){var e=n!==null&&n.apply(this,arguments)||this;return e.angularSensibilityX=1,e.angularSensibilityY=1,e.pinchPrecision=1e4,e.pinchDeltaPercentage=0,e.axisXControlRadius=!1,e.axisXControlHeight=!1,e.axisXControlRotation=!0,e.axisYControlRadius=!1,e.axisYControlHeight=!0,e.axisYControlRotation=!1,e.axisPinchControlRadius=!0,e.axisPinchControlHeight=!1,e.axisPinchControlRotation=!1,e.warningEnable=!0,e._warningCounter=0,e}return t.prototype.getClassName=function(){return"FollowCameraPointersInput"},t.prototype.onTouch=function(e,i,r){this._warning(),this.axisXControlRotation?this.camera.rotationOffset+=i/this.angularSensibilityX:this.axisYControlRotation&&(this.camera.rotationOffset+=r/this.angularSensibilityX),this.axisXControlHeight?this.camera.heightOffset+=i/this.angularSensibilityY:this.axisYControlHeight&&(this.camera.heightOffset+=r/this.angularSensibilityY),this.axisXControlRadius?this.camera.radius-=i/this.angularSensibilityY:this.axisYControlRadius&&(this.camera.radius-=r/this.angularSensibilityY)},t.prototype.onMultiTouch=function(e,i,r,o,a,s){if(!(r===0&&a===null)&&!(o===0&&s===null)){var l=(o-r)/(this.pinchPrecision*(this.angularSensibilityX+this.angularSensibilityY)/2);this.pinchDeltaPercentage?(l*=.01*this.pinchDeltaPercentage,this.axisPinchControlRotation&&(this.camera.rotationOffset+=l*this.camera.rotationOffset),this.axisPinchControlHeight&&(this.camera.heightOffset+=l*this.camera.heightOffset),this.axisPinchControlRadius&&(this.camera.radius-=l*this.camera.radius)):(this.axisPinchControlRotation&&(this.camera.rotationOffset+=l),this.axisPinchControlHeight&&(this.camera.heightOffset+=l),this.axisPinchControlRadius&&(this.camera.radius-=l))}},t.prototype._warning=function(){if(!(!this.warningEnable||this._warningCounter++%100!==0)){var e="It probably only makes sense to control ONE camera property with each pointer axis. Set 'warningEnable = false' if you are sure. Currently enabled: ";console.assert(this.axisXControlRotation+this.axisXControlHeight+this.axisXControlRadius<=1,e+"axisXControlRotation: "+this.axisXControlRotation+", axisXControlHeight: "+this.axisXControlHeight+", axisXControlRadius: "+this.axisXControlRadius),console.assert(this.axisYControlRotation+this.axisYControlHeight+this.axisYControlRadius<=1,e+"axisYControlRotation: "+this.axisYControlRotation+", axisYControlHeight: "+this.axisYControlHeight+", axisYControlRadius: "+this.axisYControlRadius),console.assert(this.axisPinchControlRotation+this.axisPinchControlHeight+this.axisPinchControlRadius<=1,e+"axisPinchControlRotation: "+this.axisPinchControlRotation+", axisPinchControlHeight: "+this.axisPinchControlHeight+", axisPinchControlRadius: "+this.axisPinchControlRadius)}},R([B()],t.prototype,"angularSensibilityX",void 0),R([B()],t.prototype,"angularSensibilityY",void 0),R([B()],t.prototype,"pinchPrecision",void 0),R([B()],t.prototype,"pinchDeltaPercentage",void 0),R([B()],t.prototype,"axisXControlRadius",void 0),R([B()],t.prototype,"axisXControlHeight",void 0),R([B()],t.prototype,"axisXControlRotation",void 0),R([B()],t.prototype,"axisYControlRadius",void 0),R([B()],t.prototype,"axisYControlHeight",void 0),R([B()],t.prototype,"axisYControlRotation",void 0),R([B()],t.prototype,"axisPinchControlRadius",void 0),R([B()],t.prototype,"axisPinchControlHeight",void 0),R([B()],t.prototype,"axisPinchControlRotation",void 0),t}(xs);Ut.FollowCameraPointersInput=ws;Co.prototype.addDeviceOrientation=function(){return this._deviceOrientationInput||(this._deviceOrientationInput=new Ds,this.add(this._deviceOrientationInput)),this};var Ds=function(){function n(){var t=this;this._screenOrientationAngle=0,this._screenQuaternion=new te,this._alpha=0,this._beta=0,this._gamma=0,this._onDeviceOrientationChangedObservable=new J,this._orientationChanged=function(){t._screenOrientationAngle=window.orientation!==void 0?+window.orientation:window.screen.orientation&&window.screen.orientation.angle?window.screen.orientation.angle:0,t._screenOrientationAngle=-se.ToRadians(t._screenOrientationAngle/2),t._screenQuaternion.copyFromFloats(0,Math.sin(t._screenOrientationAngle),0,Math.cos(t._screenOrientationAngle))},this._deviceOrientation=function(e){t._alpha=e.alpha!==null?e.alpha:0,t._beta=e.beta!==null?e.beta:0,t._gamma=e.gamma!==null?e.gamma:0,e.alpha!==null&&t._onDeviceOrientationChangedObservable.notifyObservers()},this._constantTranform=new te(-Math.sqrt(.5),0,0,Math.sqrt(.5)),this._orientationChanged()}return n.WaitForOrientationChangeAsync=function(t){return new Promise(function(e,i){var r=!1,o=function(){window.removeEventListener("deviceorientation",o),r=!0,e()};t&&setTimeout(function(){r||(window.removeEventListener("deviceorientation",o),i("WaitForOrientationChangeAsync timed out"))},t),typeof DeviceOrientationEvent<"u"&&typeof DeviceOrientationEvent.requestPermission=="function"?DeviceOrientationEvent.requestPermission().then(function(a){a=="granted"?window.addEventListener("deviceorientation",o):se.Warn("Permission not granted.")}).catch(function(a){se.Error(a)}):window.addEventListener("deviceorientation",o)})},Object.defineProperty(n.prototype,"camera",{get:function(){return this._camera},set:function(t){var e=this;this._camera=t,this._camera!=null&&!this._camera.rotationQuaternion&&(this._camera.rotationQuaternion=new te),this._camera&&this._camera.onDisposeObservable.add(function(){e._onDeviceOrientationChangedObservable.clear()})},enumerable:!1,configurable:!0}),n.prototype.attachControl=function(){var t=this,e=this.camera.getScene().getEngine().getHostWindow();if(e){var i=function(){e.addEventListener("orientationchange",t._orientationChanged),e.addEventListener("deviceorientation",t._deviceOrientation),t._orientationChanged()};typeof DeviceOrientationEvent<"u"&&typeof DeviceOrientationEvent.requestPermission=="function"?DeviceOrientationEvent.requestPermission().then(function(r){r==="granted"?i():se.Warn("Permission not granted.")}).catch(function(r){se.Error(r)}):i()}},n.prototype.detachControl=function(t){window.removeEventListener("orientationchange",this._orientationChanged),window.removeEventListener("deviceorientation",this._deviceOrientation),this._alpha=0},n.prototype.checkInputs=function(){this._alpha&&(te.RotationYawPitchRollToRef(se.ToRadians(this._alpha),se.ToRadians(this._beta),-se.ToRadians(this._gamma),this.camera.rotationQuaternion),this._camera.rotationQuaternion.multiplyInPlace(this._screenQuaternion),this._camera.rotationQuaternion.multiplyInPlace(this._constantTranform),this._camera.rotationQuaternion.z*=-1,this._camera.rotationQuaternion.w*=-1)},n.prototype.getClassName=function(){return"FreeCameraDeviceOrientationInput"},n.prototype.getSimpleName=function(){return"deviceOrientation"},n}();Ut.FreeCameraDeviceOrientationInput=Ds;var Is=function(){function n(){this.gamepadAngularSensibility=200,this.gamepadMoveSensibility=40,this._yAxisScale=1,this._cameraTransform=q.Identity(),this._deltaTransform=_.Zero(),this._vector3=_.Zero(),this._vector2=ae.Zero()}return Object.defineProperty(n.prototype,"invertYAxis",{get:function(){return this._yAxisScale!==1},set:function(t){this._yAxisScale=t?-1:1},enumerable:!1,configurable:!0}),n.prototype.attachControl=function(){var t=this,e=this.camera.getScene().gamepadManager;this._onGamepadConnectedObserver=e.onGamepadConnectedObservable.add(function(i){i.type!==_t.POSE_ENABLED&&(!t.gamepad||i.type===_t.XBOX)&&(t.gamepad=i)}),this._onGamepadDisconnectedObserver=e.onGamepadDisconnectedObservable.add(function(i){t.gamepad===i&&(t.gamepad=null)}),this.gamepad=e.getGamepadByType(_t.XBOX),!this.gamepad&&e.gamepads.length&&(this.gamepad=e.gamepads[0])},n.prototype.detachControl=function(t){this.camera.getScene().gamepadManager.onGamepadConnectedObservable.remove(this._onGamepadConnectedObserver),this.camera.getScene().gamepadManager.onGamepadDisconnectedObservable.remove(this._onGamepadDisconnectedObserver),this.gamepad=null},n.prototype.checkInputs=function(){if(this.gamepad&&this.gamepad.leftStick){var t=this.camera,e=this.gamepad.leftStick,i=e.x/this.gamepadMoveSensibility,r=e.y/this.gamepadMoveSensibility;e.x=Math.abs(i)>.005?0+i:0,e.y=Math.abs(r)>.005?0+r:0;var o=this.gamepad.rightStick;if(o){var a=o.x/this.gamepadAngularSensibility,s=o.y/this.gamepadAngularSensibility*this._yAxisScale;o.x=Math.abs(a)>.001?0+a:0,o.y=Math.abs(s)>.001?0+s:0}else o={x:0,y:0};t.rotationQuaternion?t.rotationQuaternion.toRotationMatrix(this._cameraTransform):q.RotationYawPitchRollToRef(t.rotation.y,t.rotation.x,0,this._cameraTransform);var l=t._computeLocalCameraSpeed()*50;this._vector3.copyFromFloats(e.x*l,0,-e.y*l),_.TransformCoordinatesToRef(this._vector3,this._cameraTransform,this._deltaTransform),t.cameraDirection.addInPlace(this._deltaTransform),this._vector2.copyFromFloats(o.y,o.x),t.cameraRotation.addInPlace(this._vector2)}},n.prototype.getClassName=function(){return"FreeCameraGamepadInput"},n.prototype.getSimpleName=function(){return"gamepad"},R([B()],n.prototype,"gamepadAngularSensibility",void 0),R([B()],n.prototype,"gamepadMoveSensibility",void 0),n}();Ut.FreeCameraGamepadInput=Is;var rt;(function(n){n[n.X=0]="X",n[n.Y=1]="Y",n[n.Z=2]="Z"})(rt||(rt={}));var ea=function(){function n(t,e){var i=this,r=ze(ze({},n._GetDefaultOptions()),e);if(t?this._leftJoystick=!0:this._leftJoystick=!1,n._globalJoystickIndex++,this._axisTargetedByLeftAndRight=rt.X,this._axisTargetedByUpAndDown=rt.Y,this.reverseLeftRight=!1,this.reverseUpDown=!1,this._touches=new Kl,this.deltaPosition=_.Zero(),this._joystickSensibility=25,this._inversedSensibility=1/(this._joystickSensibility/1e3),this._onResize=function(a){n.vjCanvasWidth=window.innerWidth,n.vjCanvasHeight=window.innerHeight,n.Canvas&&(n.Canvas.width=n.vjCanvasWidth,n.Canvas.height=n.vjCanvasHeight),n.halfWidth=n.vjCanvasWidth/2},!n.Canvas){window.addEventListener("resize",this._onResize,!1),n.Canvas=document.createElement("canvas"),n.vjCanvasWidth=window.innerWidth,n.vjCanvasHeight=window.innerHeight,n.Canvas.width=window.innerWidth,n.Canvas.height=window.innerHeight,n.Canvas.style.width="100%",n.Canvas.style.height="100%",n.Canvas.style.position="absolute",n.Canvas.style.backgroundColor="transparent",n.Canvas.style.top="0px",n.Canvas.style.left="0px",n.Canvas.style.zIndex="5",n.Canvas.style.msTouchAction="none",n.Canvas.style.touchAction="none",n.Canvas.setAttribute("touch-action","none");var o=n.Canvas.getContext("2d");if(!o)throw new Error("Unable to create canvas for virtual joystick");n.vjCanvasContext=o,n.vjCanvasContext.strokeStyle="#ffffff",n.vjCanvasContext.lineWidth=2,document.body.appendChild(n.Canvas)}n.halfWidth=n.Canvas.width/2,this.pressed=!1,this.limitToContainer=r.limitToContainer,this._joystickColor=r.color,this.containerSize=r.containerSize,this.puckSize=r.puckSize,r.position&&this.setPosition(r.position.x,r.position.y),r.puckImage&&this.setPuckImage(r.puckImage),r.containerImage&&this.setContainerImage(r.containerImage),r.alwaysVisible&&n._alwaysVisibleSticks++,this.alwaysVisible=r.alwaysVisible,this._joystickPointerID=-1,this._joystickPointerPos=new ae(0,0),this._joystickPreviousPointerPos=new ae(0,0),this._joystickPointerStartPos=new ae(0,0),this._deltaJoystickVector=new ae(0,0),this._onPointerDownHandlerRef=function(a){i._onPointerDown(a)},this._onPointerMoveHandlerRef=function(a){i._onPointerMove(a)},this._onPointerUpHandlerRef=function(a){i._onPointerUp(a)},n.Canvas.addEventListener("pointerdown",this._onPointerDownHandlerRef,!1),n.Canvas.addEventListener("pointermove",this._onPointerMoveHandlerRef,!1),n.Canvas.addEventListener("pointerup",this._onPointerUpHandlerRef,!1),n.Canvas.addEventListener("pointerout",this._onPointerUpHandlerRef,!1),n.Canvas.addEventListener("contextmenu",function(a){a.preventDefault()},!1),requestAnimationFrame(function(){i._drawVirtualJoystick()})}return n._GetDefaultOptions=function(){return{puckSize:40,containerSize:60,color:"cyan",puckImage:void 0,containerImage:void 0,position:void 0,alwaysVisible:!1,limitToContainer:!1}},n.prototype.setJoystickSensibility=function(t){this._joystickSensibility=t,this._inversedSensibility=1/(this._joystickSensibility/1e3)},n.prototype._onPointerDown=function(t){var e;t.preventDefault(),this._leftJoystick===!0?e=t.clientX<n.halfWidth:e=t.clientX>n.halfWidth,e&&this._joystickPointerID<0?(this._joystickPointerID=t.pointerId,this._joystickPosition?(this._joystickPointerStartPos=this._joystickPosition.clone(),this._joystickPointerPos=this._joystickPosition.clone(),this._joystickPreviousPointerPos=this._joystickPosition.clone(),this._onPointerMove(t)):(this._joystickPointerStartPos.x=t.clientX,this._joystickPointerStartPos.y=t.clientY,this._joystickPointerPos=this._joystickPointerStartPos.clone(),this._joystickPreviousPointerPos=this._joystickPointerStartPos.clone()),this._deltaJoystickVector.x=0,this._deltaJoystickVector.y=0,this.pressed=!0,this._touches.add(t.pointerId.toString(),t)):n._globalJoystickIndex<2&&this._action&&(this._action(),this._touches.add(t.pointerId.toString(),{x:t.clientX,y:t.clientY,prevX:t.clientX,prevY:t.clientY}))},n.prototype._onPointerMove=function(t){if(this._joystickPointerID==t.pointerId){if(this.limitToContainer){var e=new ae(t.clientX-this._joystickPointerStartPos.x,t.clientY-this._joystickPointerStartPos.y),i=e.length();i>this.containerSize&&e.scaleInPlace(this.containerSize/i),this._joystickPointerPos.x=this._joystickPointerStartPos.x+e.x,this._joystickPointerPos.y=this._joystickPointerStartPos.y+e.y}else this._joystickPointerPos.x=t.clientX,this._joystickPointerPos.y=t.clientY;this._deltaJoystickVector=this._joystickPointerPos.clone(),this._deltaJoystickVector=this._deltaJoystickVector.subtract(this._joystickPointerStartPos),0<n._alwaysVisibleSticks&&(this._leftJoystick?this._joystickPointerPos.x=Math.min(n.halfWidth,this._joystickPointerPos.x):this._joystickPointerPos.x=Math.max(n.halfWidth,this._joystickPointerPos.x));var r=this.reverseLeftRight?-1:1,o=r*this._deltaJoystickVector.x/this._inversedSensibility;switch(this._axisTargetedByLeftAndRight){case rt.X:this.deltaPosition.x=Math.min(1,Math.max(-1,o));break;case rt.Y:this.deltaPosition.y=Math.min(1,Math.max(-1,o));break;case rt.Z:this.deltaPosition.z=Math.min(1,Math.max(-1,o));break}var a=this.reverseUpDown?1:-1,s=a*this._deltaJoystickVector.y/this._inversedSensibility;switch(this._axisTargetedByUpAndDown){case rt.X:this.deltaPosition.x=Math.min(1,Math.max(-1,s));break;case rt.Y:this.deltaPosition.y=Math.min(1,Math.max(-1,s));break;case rt.Z:this.deltaPosition.z=Math.min(1,Math.max(-1,s));break}}else{var l=this._touches.get(t.pointerId.toString());l&&(l.x=t.clientX,l.y=t.clientY)}},n.prototype._onPointerUp=function(t){if(this._joystickPointerID==t.pointerId)this._clearPreviousDraw(),this._joystickPointerID=-1,this.pressed=!1;else{var e=this._touches.get(t.pointerId.toString());e&&n.vjCanvasContext.clearRect(e.prevX-44,e.prevY-44,88,88)}this._deltaJoystickVector.x=0,this._deltaJoystickVector.y=0,this._touches.remove(t.pointerId.toString())},n.prototype.setJoystickColor=function(t){this._joystickColor=t},Object.defineProperty(n.prototype,"containerSize",{get:function(){return this._joystickContainerSize},set:function(t){this._joystickContainerSize=t,this._clearContainerSize=~~(this._joystickContainerSize*2.1),this._clearContainerSizeOffset=~~(this._clearContainerSize/2)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"puckSize",{get:function(){return this._joystickPuckSize},set:function(t){this._joystickPuckSize=t,this._clearPuckSize=~~(this._joystickPuckSize*2.1),this._clearPuckSizeOffset=~~(this._clearPuckSize/2)},enumerable:!1,configurable:!0}),n.prototype.clearPosition=function(){this.alwaysVisible=!1,this._joystickPosition=null},Object.defineProperty(n.prototype,"alwaysVisible",{get:function(){return this._alwaysVisible},set:function(t){this._alwaysVisible!==t&&(t&&this._joystickPosition?(n._alwaysVisibleSticks++,this._alwaysVisible=!0):(n._alwaysVisibleSticks--,this._alwaysVisible=!1))},enumerable:!1,configurable:!0}),n.prototype.setPosition=function(t,e){this._joystickPointerStartPos&&this._clearPreviousDraw(),this._joystickPosition=new ae(t,e)},n.prototype.setActionOnTouch=function(t){this._action=t},n.prototype.setAxisForLeftRight=function(t){switch(t){case rt.X:case rt.Y:case rt.Z:this._axisTargetedByLeftAndRight=t;break;default:this._axisTargetedByLeftAndRight=rt.X;break}},n.prototype.setAxisForUpDown=function(t){switch(t){case rt.X:case rt.Y:case rt.Z:this._axisTargetedByUpAndDown=t;break;default:this._axisTargetedByUpAndDown=rt.Y;break}},n.prototype._clearPreviousDraw=function(){var t=this._joystickPosition||this._joystickPointerStartPos;n.vjCanvasContext.clearRect(t.x-this._clearContainerSizeOffset,t.y-this._clearContainerSizeOffset,this._clearContainerSize,this._clearContainerSize),n.vjCanvasContext.clearRect(this._joystickPreviousPointerPos.x-this._clearPuckSizeOffset,this._joystickPreviousPointerPos.y-this._clearPuckSizeOffset,this._clearPuckSize,this._clearPuckSize)},n.prototype.setContainerImage=function(t){var e=this,i=new Image;i.src=t,i.onload=function(){return e._containerImage=i}},n.prototype.setPuckImage=function(t){var e=this,i=new Image;i.src=t,i.onload=function(){return e._puckImage=i}},n.prototype._drawContainer=function(){var t=this._joystickPosition||this._joystickPointerStartPos;this._clearPreviousDraw(),this._containerImage?n.vjCanvasContext.drawImage(this._containerImage,t.x-this.containerSize,t.y-this.containerSize,this.containerSize*2,this.containerSize*2):(n.vjCanvasContext.beginPath(),n.vjCanvasContext.strokeStyle=this._joystickColor,n.vjCanvasContext.lineWidth=2,n.vjCanvasContext.arc(t.x,t.y,this.containerSize,0,Math.PI*2,!0),n.vjCanvasContext.stroke(),n.vjCanvasContext.closePath(),n.vjCanvasContext.beginPath(),n.vjCanvasContext.lineWidth=6,n.vjCanvasContext.strokeStyle=this._joystickColor,n.vjCanvasContext.arc(t.x,t.y,this.puckSize,0,Math.PI*2,!0),n.vjCanvasContext.stroke(),n.vjCanvasContext.closePath())},n.prototype._drawPuck=function(){this._puckImage?n.vjCanvasContext.drawImage(this._puckImage,this._joystickPointerPos.x-this.puckSize,this._joystickPointerPos.y-this.puckSize,this.puckSize*2,this.puckSize*2):(n.vjCanvasContext.beginPath(),n.vjCanvasContext.strokeStyle=this._joystickColor,n.vjCanvasContext.lineWidth=2,n.vjCanvasContext.arc(this._joystickPointerPos.x,this._joystickPointerPos.y,this.puckSize,0,Math.PI*2,!0),n.vjCanvasContext.stroke(),n.vjCanvasContext.closePath())},n.prototype._drawVirtualJoystick=function(){var t=this;this.alwaysVisible&&this._drawContainer(),this.pressed&&this._touches.forEach(function(e,i){i.pointerId===t._joystickPointerID?(t.alwaysVisible||t._drawContainer(),t._drawPuck(),t._joystickPreviousPointerPos=t._joystickPointerPos.clone()):(n.vjCanvasContext.clearRect(i.prevX-44,i.prevY-44,88,88),n.vjCanvasContext.beginPath(),n.vjCanvasContext.fillStyle="white",n.vjCanvasContext.beginPath(),n.vjCanvasContext.strokeStyle="red",n.vjCanvasContext.lineWidth=6,n.vjCanvasContext.arc(i.x,i.y,40,0,Math.PI*2,!0),n.vjCanvasContext.stroke(),n.vjCanvasContext.closePath(),i.prevX=i.x,i.prevY=i.y)}),requestAnimationFrame(function(){t._drawVirtualJoystick()})},n.prototype.releaseCanvas=function(){n.Canvas&&(n.Canvas.removeEventListener("pointerdown",this._onPointerDownHandlerRef),n.Canvas.removeEventListener("pointermove",this._onPointerMoveHandlerRef),n.Canvas.removeEventListener("pointerup",this._onPointerUpHandlerRef),n.Canvas.removeEventListener("pointerout",this._onPointerUpHandlerRef),window.removeEventListener("resize",this._onResize),document.body.removeChild(n.Canvas),n.Canvas=null)},n._globalJoystickIndex=0,n._alwaysVisibleSticks=0,n}();Co.prototype.addVirtualJoystick=function(){return this.add(new Ns),this};var Ns=function(){function n(){}return n.prototype.getLeftJoystick=function(){return this._leftjoystick},n.prototype.getRightJoystick=function(){return this._rightjoystick},n.prototype.checkInputs=function(){if(this._leftjoystick){var t=this.camera,e=t._computeLocalCameraSpeed()*50,i=q.RotationYawPitchRoll(t.rotation.y,t.rotation.x,0),r=_.TransformCoordinates(new _(this._leftjoystick.deltaPosition.x*e,this._leftjoystick.deltaPosition.y*e,this._leftjoystick.deltaPosition.z*e),i);t.cameraDirection=t.cameraDirection.add(r),t.cameraRotation=t.cameraRotation.addVector3(this._rightjoystick.deltaPosition),this._leftjoystick.pressed||(this._leftjoystick.deltaPosition=this._leftjoystick.deltaPosition.scale(.9)),this._rightjoystick.pressed||(this._rightjoystick.deltaPosition=this._rightjoystick.deltaPosition.scale(.9))}},n.prototype.attachControl=function(){this._leftjoystick=new ea(!0),this._leftjoystick.setAxisForUpDown(rt.Z),this._leftjoystick.setAxisForLeftRight(rt.X),this._leftjoystick.setJoystickSensibility(.15),this._rightjoystick=new ea(!1),this._rightjoystick.setAxisForUpDown(rt.X),this._rightjoystick.setAxisForLeftRight(rt.Y),this._rightjoystick.reverseUpDown=!0,this._rightjoystick.setJoystickSensibility(.05),this._rightjoystick.setJoystickColor("yellow")},n.prototype.detachControl=function(t){this._leftjoystick.releaseCanvas(),this._rightjoystick.releaseCanvas()},n.prototype.getClassName=function(){return"FreeCameraVirtualJoystickInput"},n.prototype.getSimpleName=function(){return"virtualJoystick"},n}();Ut.FreeCameraVirtualJoystickInput=Ns;st.AddNodeConstructor("TouchCamera",function(n,t){return function(){return new Fs(n,_.Zero(),t)}});var Fs=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,i,r)||this;return o.inputs.addTouch(),o._setupInputs(),o}return Object.defineProperty(t.prototype,"touchAngularSensibility",{get:function(){var e=this.inputs.attached.touch;return e?e.touchAngularSensibility:0},set:function(e){var i=this.inputs.attached.touch;i&&(i.touchAngularSensibility=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"touchMoveSensibility",{get:function(){var e=this.inputs.attached.touch;return e?e.touchMoveSensibility:0},set:function(e){var i=this.inputs.attached.touch;i&&(i.touchMoveSensibility=e)},enumerable:!1,configurable:!0}),t.prototype.getClassName=function(){return"TouchCamera"},t.prototype._setupInputs=function(){var e=this.inputs.attached.touch,i=this.inputs.attached.mouse;i?i.touchEnabled=!1:e.allowMouse=!0},t}(Jt);st.AddNodeConstructor("ArcRotateCamera",function(n,t){return function(){return new xr(n,0,0,1,_.Zero(),t)}});var xr=function(n){N(t,n);function t(e,i,r,o,a,s,l){l===void 0&&(l=!0);var u=n.call(this,e,_.Zero(),s,l)||this;return u.inertialAlphaOffset=0,u.inertialBetaOffset=0,u.inertialRadiusOffset=0,u.lowerAlphaLimit=null,u.upperAlphaLimit=null,u.lowerBetaLimit=.01,u.upperBetaLimit=Math.PI-.01,u.lowerRadiusLimit=null,u.upperRadiusLimit=null,u.inertialPanningX=0,u.inertialPanningY=0,u.pinchToPanMaxDistance=20,u.panningDistanceLimit=null,u.panningOriginTarget=_.Zero(),u.panningInertia=.9,u.zoomOnFactor=1,u.targetScreenOffset=ae.Zero(),u.allowUpsideDown=!0,u.useInputToRestoreState=!0,u._viewMatrix=new q,u.panningAxis=new _(1,1,0),u.onMeshTargetChangedObservable=new J,u.checkCollisions=!1,u.collisionRadius=new _(.5,.5,.5),u._previousPosition=_.Zero(),u._collisionVelocity=_.Zero(),u._newPosition=_.Zero(),u._computationVector=_.Zero(),u._onCollisionPositionChange=function(c,h,f){f===void 0&&(f=null),f?(u.setPosition(h),u.onCollide&&u.onCollide(f)):u._previousPosition.copyFrom(u._position);var d=Math.cos(u.alpha),p=Math.sin(u.alpha),g=Math.cos(u.beta),m=Math.sin(u.beta);m===0&&(m=1e-4);var v=u._getTargetPosition();u._computationVector.copyFromFloats(u.radius*d*m,u.radius*g,u.radius*p*m),v.addToRef(u._computationVector,u._newPosition),u._position.copyFrom(u._newPosition);var b=u.upVector;u.allowUpsideDown&&u.beta<0&&(b=b.clone(),b=b.negate()),u._computeViewMatrix(u._position,v,b),u._viewMatrix.addAtIndex(12,u.targetScreenOffset.x),u._viewMatrix.addAtIndex(13,u.targetScreenOffset.y),u._collisionTriggered=!1},u._target=_.Zero(),a&&u.setTarget(a),u.alpha=i,u.beta=r,u.radius=o,u.getViewMatrix(),u.inputs=new wo(u),u.inputs.addKeyboard().addMouseWheel().addPointers(),u}return Object.defineProperty(t.prototype,"target",{get:function(){return this._target},set:function(e){this.setTarget(e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"position",{get:function(){return this._position},set:function(e){this.setPosition(e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"upVector",{get:function(){return this._upVector},set:function(e){this._upToYMatrix||(this._YToUpMatrix=new q,this._upToYMatrix=new q,this._upVector=_.Zero()),e.normalize(),this._upVector.copyFrom(e),this.setMatUp()},enumerable:!1,configurable:!0}),t.prototype.setMatUp=function(){q.RotationAlignToRef(_.UpReadOnly,this._upVector,this._YToUpMatrix),q.RotationAlignToRef(this._upVector,_.UpReadOnly,this._upToYMatrix)},Object.defineProperty(t.prototype,"angularSensibilityX",{get:function(){var e=this.inputs.attached.pointers;return e?e.angularSensibilityX:0},set:function(e){var i=this.inputs.attached.pointers;i&&(i.angularSensibilityX=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"angularSensibilityY",{get:function(){var e=this.inputs.attached.pointers;return e?e.angularSensibilityY:0},set:function(e){var i=this.inputs.attached.pointers;i&&(i.angularSensibilityY=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"pinchPrecision",{get:function(){var e=this.inputs.attached.pointers;return e?e.pinchPrecision:0},set:function(e){var i=this.inputs.attached.pointers;i&&(i.pinchPrecision=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"pinchDeltaPercentage",{get:function(){var e=this.inputs.attached.pointers;return e?e.pinchDeltaPercentage:0},set:function(e){var i=this.inputs.attached.pointers;i&&(i.pinchDeltaPercentage=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"useNaturalPinchZoom",{get:function(){var e=this.inputs.attached.pointers;return e?e.useNaturalPinchZoom:!1},set:function(e){var i=this.inputs.attached.pointers;i&&(i.useNaturalPinchZoom=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"panningSensibility",{get:function(){var e=this.inputs.attached.pointers;return e?e.panningSensibility:0},set:function(e){var i=this.inputs.attached.pointers;i&&(i.panningSensibility=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysUp",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysUp:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysUp=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysDown",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysDown:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysDown=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysLeft",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysLeft:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysLeft=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysRight",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysRight:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysRight=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"wheelPrecision",{get:function(){var e=this.inputs.attached.mousewheel;return e?e.wheelPrecision:0},set:function(e){var i=this.inputs.attached.mousewheel;i&&(i.wheelPrecision=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"wheelDeltaPercentage",{get:function(){var e=this.inputs.attached.mousewheel;return e?e.wheelDeltaPercentage:0},set:function(e){var i=this.inputs.attached.mousewheel;i&&(i.wheelDeltaPercentage=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bouncingBehavior",{get:function(){return this._bouncingBehavior},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"useBouncingBehavior",{get:function(){return this._bouncingBehavior!=null},set:function(e){e!==this.useBouncingBehavior&&(e?(this._bouncingBehavior=new zu,this.addBehavior(this._bouncingBehavior)):this._bouncingBehavior&&(this.removeBehavior(this._bouncingBehavior),this._bouncingBehavior=null))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"framingBehavior",{get:function(){return this._framingBehavior},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"useFramingBehavior",{get:function(){return this._framingBehavior!=null},set:function(e){e!==this.useFramingBehavior&&(e?(this._framingBehavior=new Uu,this.addBehavior(this._framingBehavior)):this._framingBehavior&&(this.removeBehavior(this._framingBehavior),this._framingBehavior=null))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"autoRotationBehavior",{get:function(){return this._autoRotationBehavior},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"useAutoRotationBehavior",{get:function(){return this._autoRotationBehavior!=null},set:function(e){e!==this.useAutoRotationBehavior&&(e?(this._autoRotationBehavior=new ku,this.addBehavior(this._autoRotationBehavior)):this._autoRotationBehavior&&(this.removeBehavior(this._autoRotationBehavior),this._autoRotationBehavior=null))},enumerable:!1,configurable:!0}),t.prototype._initCache=function(){n.prototype._initCache.call(this),this._cache._target=new _(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.alpha=void 0,this._cache.beta=void 0,this._cache.radius=void 0,this._cache.targetScreenOffset=ae.Zero()},t.prototype._updateCache=function(e){e||n.prototype._updateCache.call(this),this._cache._target.copyFrom(this._getTargetPosition()),this._cache.alpha=this.alpha,this._cache.beta=this.beta,this._cache.radius=this.radius,this._cache.targetScreenOffset.copyFrom(this.targetScreenOffset)},t.prototype._getTargetPosition=function(){if(this._targetHost&&this._targetHost.getAbsolutePosition){var e=this._targetHost.absolutePosition;this._targetBoundingCenter?e.addToRef(this._targetBoundingCenter,this._target):this._target.copyFrom(e)}var i=this._getLockedTargetPosition();return i||this._target},t.prototype.storeState=function(){return this._storedAlpha=this.alpha,this._storedBeta=this.beta,this._storedRadius=this.radius,this._storedTarget=this._getTargetPosition().clone(),this._storedTargetScreenOffset=this.targetScreenOffset.clone(),n.prototype.storeState.call(this)},t.prototype._restoreStateValues=function(){return n.prototype._restoreStateValues.call(this)?(this.setTarget(this._storedTarget.clone()),this.alpha=this._storedAlpha,this.beta=this._storedBeta,this.radius=this._storedRadius,this.targetScreenOffset=this._storedTargetScreenOffset.clone(),this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0,!0):!1},t.prototype._isSynchronizedViewMatrix=function(){return n.prototype._isSynchronizedViewMatrix.call(this)?this._cache._target.equals(this._getTargetPosition())&&this._cache.alpha===this.alpha&&this._cache.beta===this.beta&&this._cache.radius===this.radius&&this._cache.targetScreenOffset.equals(this.targetScreenOffset):!1},t.prototype.attachControl=function(e,i,r,o){var a=this;r===void 0&&(r=!0),o===void 0&&(o=2),i=se.BackCompatCameraNoPreventDefault(arguments),this._useCtrlForPanning=r,this._panningMouseButton=o,typeof arguments[0]=="boolean"&&(arguments.length>1&&(this._useCtrlForPanning=arguments[1]),arguments.length>2&&(this._panningMouseButton=arguments[2])),this.inputs.attachElement(i),this._reset=function(){a.inertialAlphaOffset=0,a.inertialBetaOffset=0,a.inertialRadiusOffset=0,a.inertialPanningX=0,a.inertialPanningY=0}},t.prototype.detachControl=function(e){this.inputs.detachElement(),this._reset&&this._reset()},t.prototype._checkInputs=function(){if(!this._collisionTriggered){if(this.inputs.checkInputs(),this.inertialAlphaOffset!==0||this.inertialBetaOffset!==0||this.inertialRadiusOffset!==0){var e=this.inertialAlphaOffset;this.beta<=0&&(e*=-1),this.getScene().useRightHandedSystem&&(e*=-1),this.parent&&this.parent._getWorldMatrixDeterminant()<0&&(e*=-1),this.alpha+=e,this.beta+=this.inertialBetaOffset,this.radius-=this.inertialRadiusOffset,this.inertialAlphaOffset*=this.inertia,this.inertialBetaOffset*=this.inertia,this.inertialRadiusOffset*=this.inertia,Math.abs(this.inertialAlphaOffset)<ot&&(this.inertialAlphaOffset=0),Math.abs(this.inertialBetaOffset)<ot&&(this.inertialBetaOffset=0),Math.abs(this.inertialRadiusOffset)<this.speed*ot&&(this.inertialRadiusOffset=0)}if(this.inertialPanningX!==0||this.inertialPanningY!==0){if(this._localDirection||(this._localDirection=_.Zero(),this._transformedDirection=_.Zero()),this._localDirection.copyFromFloats(this.inertialPanningX,this.inertialPanningY,this.inertialPanningY),this._localDirection.multiplyInPlace(this.panningAxis),this._viewMatrix.invertToRef(this._cameraTransformMatrix),_.TransformNormalToRef(this._localDirection,this._cameraTransformMatrix,this._transformedDirection),this.panningAxis.y||(this._transformedDirection.y=0),!this._targetHost)if(this.panningDistanceLimit){this._transformedDirection.addInPlace(this._target);var i=_.DistanceSquared(this._transformedDirection,this.panningOriginTarget);i<=this.panningDistanceLimit*this.panningDistanceLimit&&this._target.copyFrom(this._transformedDirection)}else this._target.addInPlace(this._transformedDirection);this.inertialPanningX*=this.panningInertia,this.inertialPanningY*=this.panningInertia,Math.abs(this.inertialPanningX)<this.speed*ot&&(this.inertialPanningX=0),Math.abs(this.inertialPanningY)<this.speed*ot&&(this.inertialPanningY=0)}this._checkLimits(),n.prototype._checkInputs.call(this)}},t.prototype._checkLimits=function(){this.lowerBetaLimit===null||this.lowerBetaLimit===void 0?this.allowUpsideDown&&this.beta>Math.PI&&(this.beta=this.beta-2*Math.PI):this.beta<this.lowerBetaLimit&&(this.beta=this.lowerBetaLimit),this.upperBetaLimit===null||this.upperBetaLimit===void 0?this.allowUpsideDown&&this.beta<-Math.PI&&(this.beta=this.beta+2*Math.PI):this.beta>this.upperBetaLimit&&(this.beta=this.upperBetaLimit),this.lowerAlphaLimit!==null&&this.alpha<this.lowerAlphaLimit&&(this.alpha=this.lowerAlphaLimit),this.upperAlphaLimit!==null&&this.alpha>this.upperAlphaLimit&&(this.alpha=this.upperAlphaLimit),this.lowerRadiusLimit!==null&&this.radius<this.lowerRadiusLimit&&(this.radius=this.lowerRadiusLimit,this.inertialRadiusOffset=0),this.upperRadiusLimit!==null&&this.radius>this.upperRadiusLimit&&(this.radius=this.upperRadiusLimit,this.inertialRadiusOffset=0)},t.prototype.rebuildAnglesAndRadius=function(){this._position.subtractToRef(this._getTargetPosition(),this._computationVector),(this._upVector.x!==0||this._upVector.y!==1||this._upVector.z!==0)&&_.TransformCoordinatesToRef(this._computationVector,this._upToYMatrix,this._computationVector),this.radius=this._computationVector.length(),this.radius===0&&(this.radius=1e-4);var e=this.alpha;this._computationVector.x===0&&this._computationVector.z===0?this.alpha=Math.PI/2:this.alpha=Math.acos(this._computationVector.x/Math.sqrt(Math.pow(this._computationVector.x,2)+Math.pow(this._computationVector.z,2))),this._computationVector.z<0&&(this.alpha=2*Math.PI-this.alpha);var i=Math.round((e-this.alpha)/(2*Math.PI));this.alpha+=i*2*Math.PI,this.beta=Math.acos(this._computationVector.y/this.radius),this._checkLimits()},t.prototype.setPosition=function(e){this._position.equals(e)||(this._position.copyFrom(e),this.rebuildAnglesAndRadius())},t.prototype.setTarget=function(e,i,r){if(i===void 0&&(i=!1),r===void 0&&(r=!1),e.getBoundingInfo)i?this._targetBoundingCenter=e.getBoundingInfo().boundingBox.centerWorld.clone():this._targetBoundingCenter=null,e.computeWorldMatrix(),this._targetHost=e,this._target=this._getTargetPosition(),this.onMeshTargetChangedObservable.notifyObservers(this._targetHost);else{var o=e,a=this._getTargetPosition();if(a&&!r&&a.equals(o))return;this._targetHost=null,this._target=o,this._targetBoundingCenter=null,this.onMeshTargetChangedObservable.notifyObservers(null)}this.rebuildAnglesAndRadius()},t.prototype._getViewMatrix=function(){var e=Math.cos(this.alpha),i=Math.sin(this.alpha),r=Math.cos(this.beta),o=Math.sin(this.beta);o===0&&(o=1e-4),this.radius===0&&(this.radius=1e-4);var a=this._getTargetPosition();if(this._computationVector.copyFromFloats(this.radius*e*o,this.radius*r,this.radius*i*o),(this._upVector.x!==0||this._upVector.y!==1||this._upVector.z!==0)&&_.TransformCoordinatesToRef(this._computationVector,this._YToUpMatrix,this._computationVector),a.addToRef(this._computationVector,this._newPosition),this.getScene().collisionsEnabled&&this.checkCollisions){var s=this.getScene().collisionCoordinator;this._collider||(this._collider=s.createCollider()),this._collider._radius=this.collisionRadius,this._newPosition.subtractToRef(this._position,this._collisionVelocity),this._collisionTriggered=!0,s.getNewPosition(this._position,this._collisionVelocity,this._collider,3,null,this._onCollisionPositionChange,this.uniqueId)}else{this._position.copyFrom(this._newPosition);var l=this.upVector;this.allowUpsideDown&&o<0&&(l=l.negate()),this._computeViewMatrix(this._position,a,l),this._viewMatrix.addAtIndex(12,this.targetScreenOffset.x),this._viewMatrix.addAtIndex(13,this.targetScreenOffset.y)}return this._currentTarget=a,this._viewMatrix},t.prototype.zoomOn=function(e,i){i===void 0&&(i=!1),e=e||this.getScene().meshes;var r=O.MinMax(e),o=_.Distance(r.min,r.max);this.radius=o*this.zoomOnFactor,this.focusOn({min:r.min,max:r.max,distance:o},i)},t.prototype.focusOn=function(e,i){i===void 0&&(i=!1);var r,o;if(e.min===void 0){var a=e||this.getScene().meshes;r=O.MinMax(a),o=_.Distance(r.min,r.max)}else{var s=e;r=s,o=s.distance}this._target=O.Center(r),i||(this.maxZ=o*2)},t.prototype.createRigCamera=function(e,i){var r=0;switch(this.cameraRigMode){case Me.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case Me.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case Me.RIG_MODE_STEREOSCOPIC_OVERUNDER:case Me.RIG_MODE_STEREOSCOPIC_INTERLACED:case Me.RIG_MODE_VR:r=this._cameraRigParams.stereoHalfAngle*(i===0?1:-1);break;case Me.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:r=this._cameraRigParams.stereoHalfAngle*(i===0?-1:1);break}var o=new t(e,this.alpha+r,this.beta,this.radius,this._target,this.getScene());return o._cameraRigParams={},o.isRigCamera=!0,o.rigParent=this,o.upVector=this.upVector,o},t.prototype._updateRigCameras=function(){var e=this._rigCameras[0],i=this._rigCameras[1];switch(e.beta=i.beta=this.beta,this.cameraRigMode){case Me.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case Me.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case Me.RIG_MODE_STEREOSCOPIC_OVERUNDER:case Me.RIG_MODE_STEREOSCOPIC_INTERLACED:case Me.RIG_MODE_VR:e.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle,i.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle;break;case Me.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:e.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle,i.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle;break}n.prototype._updateRigCameras.call(this)},t.prototype.dispose=function(){this.inputs.clear(),n.prototype.dispose.call(this)},t.prototype.getClassName=function(){return"ArcRotateCamera"},R([B()],t.prototype,"alpha",void 0),R([B()],t.prototype,"beta",void 0),R([B()],t.prototype,"radius",void 0),R([Yi("target")],t.prototype,"_target",void 0),R([B()],t.prototype,"inertialAlphaOffset",void 0),R([B()],t.prototype,"inertialBetaOffset",void 0),R([B()],t.prototype,"inertialRadiusOffset",void 0),R([B()],t.prototype,"lowerAlphaLimit",void 0),R([B()],t.prototype,"upperAlphaLimit",void 0),R([B()],t.prototype,"lowerBetaLimit",void 0),R([B()],t.prototype,"upperBetaLimit",void 0),R([B()],t.prototype,"lowerRadiusLimit",void 0),R([B()],t.prototype,"upperRadiusLimit",void 0),R([B()],t.prototype,"inertialPanningX",void 0),R([B()],t.prototype,"inertialPanningY",void 0),R([B()],t.prototype,"pinchToPanMaxDistance",void 0),R([B()],t.prototype,"panningDistanceLimit",void 0),R([Yi()],t.prototype,"panningOriginTarget",void 0),R([B()],t.prototype,"panningInertia",void 0),R([B()],t.prototype,"zoomOnFactor",void 0),R([B()],t.prototype,"targetScreenOffset",void 0),R([B()],t.prototype,"allowUpsideDown",void 0),R([B()],t.prototype,"useInputToRestoreState",void 0),t}(Cr);st.AddNodeConstructor("DeviceOrientationCamera",function(n,t){return function(){return new Do(n,_.Zero(),t)}});var Do=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,i,r)||this;return o._tmpDragQuaternion=new te,o._disablePointerInputWhenUsingDeviceOrientation=!0,o._dragFactor=0,o._quaternionCache=new te,o.inputs.addDeviceOrientation(),o.inputs._deviceOrientationInput&&o.inputs._deviceOrientationInput._onDeviceOrientationChangedObservable.addOnce(function(){o._disablePointerInputWhenUsingDeviceOrientation&&o.inputs._mouseInput&&(o.inputs._mouseInput._allowCameraRotation=!1,o.inputs._mouseInput.onPointerMovedObservable.add(function(a){o._dragFactor!=0&&(o._initialQuaternion||(o._initialQuaternion=new te),te.FromEulerAnglesToRef(0,a.offsetX*o._dragFactor,0,o._tmpDragQuaternion),o._initialQuaternion.multiplyToRef(o._tmpDragQuaternion,o._initialQuaternion))}))}),o}return Object.defineProperty(t.prototype,"disablePointerInputWhenUsingDeviceOrientation",{get:function(){return this._disablePointerInputWhenUsingDeviceOrientation},set:function(e){this._disablePointerInputWhenUsingDeviceOrientation=e},enumerable:!1,configurable:!0}),t.prototype.enableHorizontalDragging=function(e){e===void 0&&(e=1/300),this._dragFactor=e},t.prototype.getClassName=function(){return"DeviceOrientationCamera"},t.prototype._checkInputs=function(){n.prototype._checkInputs.call(this),this._quaternionCache.copyFrom(this.rotationQuaternion),this._initialQuaternion&&this._initialQuaternion.multiplyToRef(this.rotationQuaternion,this.rotationQuaternion)},t.prototype.resetToCurrentRotation=function(e){var i=this;e===void 0&&(e=ct.Y),this.rotationQuaternion&&(this._initialQuaternion||(this._initialQuaternion=new te),this._initialQuaternion.copyFrom(this._quaternionCache||this.rotationQuaternion),["x","y","z"].forEach(function(r){e[r]?i._initialQuaternion[r]*=-1:i._initialQuaternion[r]=0}),this._initialQuaternion.normalize(),this._initialQuaternion.multiplyToRef(this.rotationQuaternion,this.rotationQuaternion))},t}(Jt),Wu=function(n){N(t,n);function t(e){return n.call(this,e)||this}return t.prototype.addKeyboard=function(){return this.add(new Rs),this},t.prototype.addMouse=function(e){return e===void 0&&(e=!0),this.add(new Ms(e)),this},t}(So),ov=function(n){N(t,n);function t(e,i,r,o){o===void 0&&(o=!0);var a=n.call(this,e,i,r,o)||this;return a.ellipsoid=new _(1,1,1),a.ellipsoidOffset=new _(0,0,0),a.checkCollisions=!1,a.applyGravity=!1,a.cameraDirection=_.Zero(),a._trackRoll=0,a.rollCorrect=100,a.bankedTurn=!1,a.bankedTurnLimit=Math.PI/2,a.bankedTurnMultiplier=1,a._needMoveForGravity=!1,a._oldPosition=_.Zero(),a._diffPosition=_.Zero(),a._newPosition=_.Zero(),a._collisionMask=-1,a._onCollisionPositionChange=function(s,l,u){u===void 0&&(u=null);var c=function(h){a._newPosition.copyFrom(h),a._newPosition.subtractToRef(a._oldPosition,a._diffPosition),a._diffPosition.length()>ue.CollisionsEpsilon&&(a.position.addInPlace(a._diffPosition),a.onCollide&&u&&a.onCollide(u))};c(l)},a.inputs=new Wu(a),a.inputs.addKeyboard().addMouse(),a}return Object.defineProperty(t.prototype,"angularSensibility",{get:function(){var e=this.inputs.attached.mouse;return e?e.angularSensibility:0},set:function(e){var i=this.inputs.attached.mouse;i&&(i.angularSensibility=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysForward",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysForward:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysForward=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysBackward",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysBackward:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysBackward=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysUp",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysUp:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysUp=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysDown",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysDown:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysDown=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysLeft",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysLeft:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysLeft=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"keysRight",{get:function(){var e=this.inputs.attached.keyboard;return e?e.keysRight:[]},set:function(e){var i=this.inputs.attached.keyboard;i&&(i.keysRight=e)},enumerable:!1,configurable:!0}),t.prototype.attachControl=function(e,i){i=se.BackCompatCameraNoPreventDefault(arguments),this.inputs.attachElement(i)},t.prototype.detachControl=function(){this.inputs.detachElement(),this.cameraDirection=new _(0,0,0)},Object.defineProperty(t.prototype,"collisionMask",{get:function(){return this._collisionMask},set:function(e){this._collisionMask=isNaN(e)?-1:e},enumerable:!1,configurable:!0}),t.prototype._collideWithWorld=function(e){var i;this.parent?i=_.TransformCoordinates(this.position,this.parent.getWorldMatrix()):i=this.position,i.subtractFromFloatsToRef(0,this.ellipsoid.y,0,this._oldPosition),this._oldPosition.addInPlace(this.ellipsoidOffset);var r=this.getScene().collisionCoordinator;this._collider||(this._collider=r.createCollider()),this._collider._radius=this.ellipsoid,this._collider.collisionMask=this._collisionMask;var o=e;this.applyGravity&&(o=e.add(this.getScene().gravity)),r.getNewPosition(this._oldPosition,o,this._collider,3,null,this._onCollisionPositionChange,this.uniqueId)},t.prototype._checkInputs=function(){this._localDirection||(this._localDirection=_.Zero(),this._transformedDirection=_.Zero()),this.inputs.checkInputs(),n.prototype._checkInputs.call(this)},t.prototype._decideIfNeedsToMove=function(){return this._needMoveForGravity||Math.abs(this.cameraDirection.x)>0||Math.abs(this.cameraDirection.y)>0||Math.abs(this.cameraDirection.z)>0},t.prototype._updatePosition=function(){this.checkCollisions&&this.getScene().collisionsEnabled?this._collideWithWorld(this.cameraDirection):n.prototype._updatePosition.call(this)},t.prototype.restoreRoll=function(e){var i=this._trackRoll,r=this.rotation.z,o=i-r,a=.001;Math.abs(o)>=a&&(this.rotation.z+=o/e,Math.abs(i-this.rotation.z)<=a&&(this.rotation.z=i))},t.prototype.dispose=function(){this.inputs.clear(),n.prototype.dispose.call(this)},t.prototype.getClassName=function(){return"FlyCamera"},R([Yi()],t.prototype,"ellipsoid",void 0),R([Yi()],t.prototype,"ellipsoidOffset",void 0),R([B()],t.prototype,"checkCollisions",void 0),R([B()],t.prototype,"applyGravity",void 0),t}(Cr),Hu=function(n){N(t,n);function t(e){return n.call(this,e)||this}return t.prototype.addKeyboard=function(){return this.add(new As),this},t.prototype.addMouseWheel=function(){return this.add(new Os),this},t.prototype.addPointers=function(){return this.add(new ws),this},t.prototype.addVRDeviceOrientation=function(){return console.warn("DeviceOrientation support not yet implemented for FollowCamera."),this},t}(So);st.AddNodeConstructor("FollowCamera",function(n,t){return function(){return new Yu(n,_.Zero(),t)}});st.AddNodeConstructor("ArcFollowCamera",function(n,t){return function(){return new Xu(n,0,0,1,null,t)}});var Yu=function(n){N(t,n);function t(e,i,r,o){o===void 0&&(o=null);var a=n.call(this,e,i,r)||this;return a.radius=12,a.lowerRadiusLimit=null,a.upperRadiusLimit=null,a.rotationOffset=0,a.lowerRotationOffsetLimit=null,a.upperRotationOffsetLimit=null,a.heightOffset=4,a.lowerHeightOffsetLimit=null,a.upperHeightOffsetLimit=null,a.cameraAcceleration=.05,a.maxCameraSpeed=20,a.lockedTarget=o,a.inputs=new Hu(a),a.inputs.addKeyboard().addMouseWheel().addPointers(),a}return t.prototype._follow=function(e){if(e){var i;if(e.rotationQuaternion){var r=new q;e.rotationQuaternion.toRotationMatrix(r),i=Math.atan2(r.m[8],r.m[10])}else i=e.rotation.y;var o=se.ToRadians(this.rotationOffset)+i,a=e.getAbsolutePosition(),s=a.x+Math.sin(o)*this.radius,l=a.z+Math.cos(o)*this.radius,u=s-this.position.x,c=a.y+this.heightOffset-this.position.y,h=l-this.position.z,f=u*this.cameraAcceleration*2,d=c*this.cameraAcceleration,p=h*this.cameraAcceleration*2;(f>this.maxCameraSpeed||f<-this.maxCameraSpeed)&&(f=f<1?-this.maxCameraSpeed:this.maxCameraSpeed),(d>this.maxCameraSpeed||d<-this.maxCameraSpeed)&&(d=d<1?-this.maxCameraSpeed:this.maxCameraSpeed),(p>this.maxCameraSpeed||p<-this.maxCameraSpeed)&&(p=p<1?-this.maxCameraSpeed:this.maxCameraSpeed),this.position=new _(this.position.x+f,this.position.y+d,this.position.z+p),this.setTarget(a)}},t.prototype.attachControl=function(e,i){i=se.BackCompatCameraNoPreventDefault(arguments),this.inputs.attachElement(i),this._reset=function(){}},t.prototype.detachControl=function(e){this.inputs.detachElement(),this._reset&&this._reset()},t.prototype._checkInputs=function(){this.inputs.checkInputs(),this._checkLimits(),n.prototype._checkInputs.call(this),this.lockedTarget&&this._follow(this.lockedTarget)},t.prototype._checkLimits=function(){this.lowerRadiusLimit!==null&&this.radius<this.lowerRadiusLimit&&(this.radius=this.lowerRadiusLimit),this.upperRadiusLimit!==null&&this.radius>this.upperRadiusLimit&&(this.radius=this.upperRadiusLimit),this.lowerHeightOffsetLimit!==null&&this.heightOffset<this.lowerHeightOffsetLimit&&(this.heightOffset=this.lowerHeightOffsetLimit),this.upperHeightOffsetLimit!==null&&this.heightOffset>this.upperHeightOffsetLimit&&(this.heightOffset=this.upperHeightOffsetLimit),this.lowerRotationOffsetLimit!==null&&this.rotationOffset<this.lowerRotationOffsetLimit&&(this.rotationOffset=this.lowerRotationOffsetLimit),this.upperRotationOffsetLimit!==null&&this.rotationOffset>this.upperRotationOffsetLimit&&(this.rotationOffset=this.upperRotationOffsetLimit)},t.prototype.getClassName=function(){return"FollowCamera"},R([B()],t.prototype,"radius",void 0),R([B()],t.prototype,"lowerRadiusLimit",void 0),R([B()],t.prototype,"upperRadiusLimit",void 0),R([B()],t.prototype,"rotationOffset",void 0),R([B()],t.prototype,"lowerRotationOffsetLimit",void 0),R([B()],t.prototype,"upperRotationOffsetLimit",void 0),R([B()],t.prototype,"heightOffset",void 0),R([B()],t.prototype,"lowerHeightOffsetLimit",void 0),R([B()],t.prototype,"upperHeightOffsetLimit",void 0),R([B()],t.prototype,"cameraAcceleration",void 0),R([B()],t.prototype,"maxCameraSpeed",void 0),R([xo("lockedTargetId")],t.prototype,"lockedTarget",void 0),t}(Cr),Xu=function(n){N(t,n);function t(e,i,r,o,a,s){var l=n.call(this,e,_.Zero(),s)||this;return l.alpha=i,l.beta=r,l.radius=o,l._cartesianCoordinates=_.Zero(),l._meshTarget=a,l._follow(),l}return t.prototype._follow=function(){if(this._meshTarget){this._cartesianCoordinates.x=this.radius*Math.cos(this.alpha)*Math.cos(this.beta),this._cartesianCoordinates.y=this.radius*Math.sin(this.beta),this._cartesianCoordinates.z=this.radius*Math.sin(this.alpha)*Math.cos(this.beta);var e=this._meshTarget.getAbsolutePosition();this.position=e.add(this._cartesianCoordinates),this.setTarget(e)}},t.prototype._checkInputs=function(){n.prototype._checkInputs.call(this),this._follow()},t.prototype.getClassName=function(){return"ArcFollowCamera"},t}(Cr),ri;(function(n){n[n.VIVE=0]="VIVE",n[n.OCULUS=1]="OCULUS",n[n.WINDOWS=2]="WINDOWS",n[n.GEAR_VR=3]="GEAR_VR",n[n.DAYDREAM=4]="DAYDREAM",n[n.GENERIC=5]="GENERIC"})(ri||(ri={}));var Ki=function(){function n(){}return n.InitiateController=function(t){for(var e=0,i=this._ControllerFactories;e<i.length;e++){var r=i[e];if(r.canCreate(t))return r.create(t)}if(this._DefaultControllerFactory)return this._DefaultControllerFactory(t);throw"The type of gamepad you are trying to load needs to be imported first or is not supported."},n._ControllerFactories=[],n._DefaultControllerFactory=null,n}(),Br=function(n){N(t,n);function t(e){var i=n.call(this,e.id,e.index,e)||this;return i.isXR=!1,i._deviceRoomPosition=_.Zero(),i._deviceRoomRotationQuaternion=new te,i.devicePosition=_.Zero(),i.deviceRotationQuaternion=new te,i.deviceScaleFactor=1,i._trackPosition=!0,i._maxRotationDistFromHeadset=Math.PI/5,i._draggedRoomRotation=0,i._leftHandSystemQuaternion=new te,i._deviceToWorld=q.Identity(),i._pointingPoseNode=null,i._workingMatrix=q.Identity(),i._meshAttachedObservable=new J,i.type=_t.POSE_ENABLED,i.controllerType=ri.GENERIC,i.position=_.Zero(),i.rotationQuaternion=new te,i._calculatedPosition=_.Zero(),i._calculatedRotation=new te,te.RotationYawPitchRollToRef(Math.PI,0,0,i._leftHandSystemQuaternion),i}return t.prototype._disableTrackPosition=function(e){this._trackPosition&&(this._calculatedPosition.copyFrom(e),this._trackPosition=!1)},t.prototype.update=function(){n.prototype.update.call(this),this._updatePoseAndMesh()},t.prototype._updatePoseAndMesh=function(){if(!this.isXR){var e=this.browserGamepad.pose;if(this.updateFromDevice(e),!this._trackPosition&&Qe.LastCreatedScene&&Qe.LastCreatedScene.activeCamera&&Qe.LastCreatedScene.activeCamera.devicePosition){var i=Qe.LastCreatedScene.activeCamera;if(i._computeDevicePosition(),this._deviceToWorld.setTranslation(i.devicePosition),i.deviceRotationQuaternion){var i=i;i._deviceRoomRotationQuaternion.toEulerAnglesToRef(ee.Vector3[0]);var r=Math.atan2(Math.sin(ee.Vector3[0].y-this._draggedRoomRotation),Math.cos(ee.Vector3[0].y-this._draggedRoomRotation));if(Math.abs(r)>this._maxRotationDistFromHeadset){var o=r-(r<0?-this._maxRotationDistFromHeadset:this._maxRotationDistFromHeadset);this._draggedRoomRotation+=o;var a=Math.sin(-o),s=Math.cos(-o);this._calculatedPosition.x=this._calculatedPosition.x*s-this._calculatedPosition.z*a,this._calculatedPosition.z=this._calculatedPosition.x*a+this._calculatedPosition.z*s}}}_.TransformCoordinatesToRef(this._calculatedPosition,this._deviceToWorld,this.devicePosition),this._deviceToWorld.getRotationMatrixToRef(this._workingMatrix),te.FromRotationMatrixToRef(this._workingMatrix,this.deviceRotationQuaternion),this.deviceRotationQuaternion.multiplyInPlace(this._calculatedRotation),this._mesh&&(this._mesh.position.copyFrom(this.devicePosition),this._mesh.rotationQuaternion&&this._mesh.rotationQuaternion.copyFrom(this.deviceRotationQuaternion))}},t.prototype.updateFromDevice=function(e){if(!this.isXR&&e){this.rawPose=e,e.position&&(this._deviceRoomPosition.copyFromFloats(e.position[0],e.position[1],-e.position[2]),this._mesh&&this._mesh.getScene().useRightHandedSystem&&(this._deviceRoomPosition.z*=-1),this._trackPosition&&this._deviceRoomPosition.scaleToRef(this.deviceScaleFactor,this._calculatedPosition),this._calculatedPosition.addInPlace(this.position));var i=this.rawPose;e.orientation&&i.orientation&&i.orientation.length===4&&(this._deviceRoomRotationQuaternion.copyFromFloats(i.orientation[0],i.orientation[1],-i.orientation[2],-i.orientation[3]),this._mesh&&(this._mesh.getScene().useRightHandedSystem?(this._deviceRoomRotationQuaternion.z*=-1,this._deviceRoomRotationQuaternion.w*=-1):this._deviceRoomRotationQuaternion.multiplyToRef(this._leftHandSystemQuaternion,this._deviceRoomRotationQuaternion)),this._deviceRoomRotationQuaternion.multiplyToRef(this.rotationQuaternion,this._calculatedRotation))}},t.prototype.attachToMesh=function(e){if(this._mesh&&(this._mesh.parent=null),this._mesh=e,this._poseControlledCamera&&(this._mesh.parent=this._poseControlledCamera),this._mesh.rotationQuaternion||(this._mesh.rotationQuaternion=new te),!this.isXR&&(this._updatePoseAndMesh(),this._pointingPoseNode)){for(var i=[],r=this._pointingPoseNode;r.parent;)i.push(r.parent),r=r.parent;i.reverse().forEach(function(o){o.computeWorldMatrix(!0)})}this._meshAttachedObservable.notifyObservers(e)},t.prototype.attachToPoseControlledCamera=function(e){this._poseControlledCamera=e,this._mesh&&(this._mesh.parent=this._poseControlledCamera)},t.prototype.dispose=function(){this._mesh&&this._mesh.dispose(),this._mesh=null,n.prototype.dispose.call(this)},Object.defineProperty(t.prototype,"mesh",{get:function(){return this._mesh},enumerable:!1,configurable:!0}),t.prototype.getForwardRay=function(e){if(e===void 0&&(e=100),!this.mesh)return new Ze(_.Zero(),new _(0,0,1),e);var i=this._pointingPoseNode?this._pointingPoseNode.getWorldMatrix():this.mesh.getWorldMatrix(),r=i.getTranslation(),o=new _(0,0,-1),a=_.TransformNormal(o,i),s=_.Normalize(a);return new Ze(r,s,e)},t.POINTING_POSE="POINTING_POSE",t}(_t),Nt;(function(n){n[n.A=0]="A",n[n.B=1]="B",n[n.X=2]="X",n[n.Y=3]="Y",n[n.LB=4]="LB",n[n.RB=5]="RB",n[n.Back=8]="Back",n[n.Start=9]="Start",n[n.LeftStick=10]="LeftStick",n[n.RightStick=11]="RightStick"})(Nt||(Nt={}));var or;(function(n){n[n.Up=12]="Up",n[n.Down=13]="Down",n[n.Left=14]="Left",n[n.Right=15]="Right"})(or||(or={}));var Qu=function(n){N(t,n);function t(e,i,r,o){o===void 0&&(o=!1);var a=n.call(this,e,i,r,0,1,2,3)||this;return a._leftTrigger=0,a._rightTrigger=0,a.onButtonDownObservable=new J,a.onButtonUpObservable=new J,a.onPadDownObservable=new J,a.onPadUpObservable=new J,a._buttonA=0,a._buttonB=0,a._buttonX=0,a._buttonY=0,a._buttonBack=0,a._buttonStart=0,a._buttonLB=0,a._buttonRB=0,a._buttonLeftStick=0,a._buttonRightStick=0,a._dPadUp=0,a._dPadDown=0,a._dPadLeft=0,a._dPadRight=0,a._isXboxOnePad=!1,a.type=_t.XBOX,a._isXboxOnePad=o,a}return t.prototype.onlefttriggerchanged=function(e){this._onlefttriggerchanged=e},t.prototype.onrighttriggerchanged=function(e){this._onrighttriggerchanged=e},Object.defineProperty(t.prototype,"leftTrigger",{get:function(){return this._leftTrigger},set:function(e){this._onlefttriggerchanged&&this._leftTrigger!==e&&this._onlefttriggerchanged(e),this._leftTrigger=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"rightTrigger",{get:function(){return this._rightTrigger},set:function(e){this._onrighttriggerchanged&&this._rightTrigger!==e&&this._onrighttriggerchanged(e),this._rightTrigger=e},enumerable:!1,configurable:!0}),t.prototype.onbuttondown=function(e){this._onbuttondown=e},t.prototype.onbuttonup=function(e){this._onbuttonup=e},t.prototype.ondpaddown=function(e){this._ondpaddown=e},t.prototype.ondpadup=function(e){this._ondpadup=e},t.prototype._setButtonValue=function(e,i,r){return e!==i&&(e===1&&(this._onbuttondown&&this._onbuttondown(r),this.onButtonDownObservable.notifyObservers(r)),e===0&&(this._onbuttonup&&this._onbuttonup(r),this.onButtonUpObservable.notifyObservers(r))),e},t.prototype._setDPadValue=function(e,i,r){return e!==i&&(e===1&&(this._ondpaddown&&this._ondpaddown(r),this.onPadDownObservable.notifyObservers(r)),e===0&&(this._ondpadup&&this._ondpadup(r),this.onPadUpObservable.notifyObservers(r))),e},Object.defineProperty(t.prototype,"buttonA",{get:function(){return this._buttonA},set:function(e){this._buttonA=this._setButtonValue(e,this._buttonA,Nt.A)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonB",{get:function(){return this._buttonB},set:function(e){this._buttonB=this._setButtonValue(e,this._buttonB,Nt.B)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonX",{get:function(){return this._buttonX},set:function(e){this._buttonX=this._setButtonValue(e,this._buttonX,Nt.X)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonY",{get:function(){return this._buttonY},set:function(e){this._buttonY=this._setButtonValue(e,this._buttonY,Nt.Y)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonStart",{get:function(){return this._buttonStart},set:function(e){this._buttonStart=this._setButtonValue(e,this._buttonStart,Nt.Start)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonBack",{get:function(){return this._buttonBack},set:function(e){this._buttonBack=this._setButtonValue(e,this._buttonBack,Nt.Back)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonLB",{get:function(){return this._buttonLB},set:function(e){this._buttonLB=this._setButtonValue(e,this._buttonLB,Nt.LB)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonRB",{get:function(){return this._buttonRB},set:function(e){this._buttonRB=this._setButtonValue(e,this._buttonRB,Nt.RB)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonLeftStick",{get:function(){return this._buttonLeftStick},set:function(e){this._buttonLeftStick=this._setButtonValue(e,this._buttonLeftStick,Nt.LeftStick)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonRightStick",{get:function(){return this._buttonRightStick},set:function(e){this._buttonRightStick=this._setButtonValue(e,this._buttonRightStick,Nt.RightStick)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadUp",{get:function(){return this._dPadUp},set:function(e){this._dPadUp=this._setDPadValue(e,this._dPadUp,or.Up)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadDown",{get:function(){return this._dPadDown},set:function(e){this._dPadDown=this._setDPadValue(e,this._dPadDown,or.Down)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadLeft",{get:function(){return this._dPadLeft},set:function(e){this._dPadLeft=this._setDPadValue(e,this._dPadLeft,or.Left)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadRight",{get:function(){return this._dPadRight},set:function(e){this._dPadRight=this._setDPadValue(e,this._dPadRight,or.Right)},enumerable:!1,configurable:!0}),t.prototype.update=function(){n.prototype.update.call(this),this._isXboxOnePad?(this.buttonA=this.browserGamepad.buttons[0].value,this.buttonB=this.browserGamepad.buttons[1].value,this.buttonX=this.browserGamepad.buttons[2].value,this.buttonY=this.browserGamepad.buttons[3].value,this.buttonLB=this.browserGamepad.buttons[4].value,this.buttonRB=this.browserGamepad.buttons[5].value,this.leftTrigger=this.browserGamepad.buttons[6].value,this.rightTrigger=this.browserGamepad.buttons[7].value,this.buttonBack=this.browserGamepad.buttons[8].value,this.buttonStart=this.browserGamepad.buttons[9].value,this.buttonLeftStick=this.browserGamepad.buttons[10].value,this.buttonRightStick=this.browserGamepad.buttons[11].value,this.dPadUp=this.browserGamepad.buttons[12].value,this.dPadDown=this.browserGamepad.buttons[13].value,this.dPadLeft=this.browserGamepad.buttons[14].value,this.dPadRight=this.browserGamepad.buttons[15].value):(this.buttonA=this.browserGamepad.buttons[0].value,this.buttonB=this.browserGamepad.buttons[1].value,this.buttonX=this.browserGamepad.buttons[2].value,this.buttonY=this.browserGamepad.buttons[3].value,this.buttonLB=this.browserGamepad.buttons[4].value,this.buttonRB=this.browserGamepad.buttons[5].value,this.leftTrigger=this.browserGamepad.buttons[6].value,this.rightTrigger=this.browserGamepad.buttons[7].value,this.buttonBack=this.browserGamepad.buttons[8].value,this.buttonStart=this.browserGamepad.buttons[9].value,this.buttonLeftStick=this.browserGamepad.buttons[10].value,this.buttonRightStick=this.browserGamepad.buttons[11].value,this.dPadUp=this.browserGamepad.buttons[12].value,this.dPadDown=this.browserGamepad.buttons[13].value,this.dPadLeft=this.browserGamepad.buttons[14].value,this.dPadRight=this.browserGamepad.buttons[15].value)},t.prototype.dispose=function(){n.prototype.dispose.call(this),this.onButtonDownObservable.clear(),this.onButtonUpObservable.clear(),this.onPadDownObservable.clear(),this.onPadUpObservable.clear()},t}(_t),Wt;(function(n){n[n.Cross=0]="Cross",n[n.Circle=1]="Circle",n[n.Square=2]="Square",n[n.Triangle=3]="Triangle",n[n.L1=4]="L1",n[n.R1=5]="R1",n[n.Share=8]="Share",n[n.Options=9]="Options",n[n.LeftStick=10]="LeftStick",n[n.RightStick=11]="RightStick"})(Wt||(Wt={}));var ar;(function(n){n[n.Up=12]="Up",n[n.Down=13]="Down",n[n.Left=14]="Left",n[n.Right=15]="Right"})(ar||(ar={}));var Ku=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e.replace("STANDARD GAMEPAD","SONY PLAYSTATION DUALSHOCK"),i,r,0,1,2,3)||this;return o._leftTrigger=0,o._rightTrigger=0,o.onButtonDownObservable=new J,o.onButtonUpObservable=new J,o.onPadDownObservable=new J,o.onPadUpObservable=new J,o._buttonCross=0,o._buttonCircle=0,o._buttonSquare=0,o._buttonTriangle=0,o._buttonShare=0,o._buttonOptions=0,o._buttonL1=0,o._buttonR1=0,o._buttonLeftStick=0,o._buttonRightStick=0,o._dPadUp=0,o._dPadDown=0,o._dPadLeft=0,o._dPadRight=0,o.type=_t.DUALSHOCK,o}return t.prototype.onlefttriggerchanged=function(e){this._onlefttriggerchanged=e},t.prototype.onrighttriggerchanged=function(e){this._onrighttriggerchanged=e},Object.defineProperty(t.prototype,"leftTrigger",{get:function(){return this._leftTrigger},set:function(e){this._onlefttriggerchanged&&this._leftTrigger!==e&&this._onlefttriggerchanged(e),this._leftTrigger=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"rightTrigger",{get:function(){return this._rightTrigger},set:function(e){this._onrighttriggerchanged&&this._rightTrigger!==e&&this._onrighttriggerchanged(e),this._rightTrigger=e},enumerable:!1,configurable:!0}),t.prototype.onbuttondown=function(e){this._onbuttondown=e},t.prototype.onbuttonup=function(e){this._onbuttonup=e},t.prototype.ondpaddown=function(e){this._ondpaddown=e},t.prototype.ondpadup=function(e){this._ondpadup=e},t.prototype._setButtonValue=function(e,i,r){return e!==i&&(e===1&&(this._onbuttondown&&this._onbuttondown(r),this.onButtonDownObservable.notifyObservers(r)),e===0&&(this._onbuttonup&&this._onbuttonup(r),this.onButtonUpObservable.notifyObservers(r))),e},t.prototype._setDPadValue=function(e,i,r){return e!==i&&(e===1&&(this._ondpaddown&&this._ondpaddown(r),this.onPadDownObservable.notifyObservers(r)),e===0&&(this._ondpadup&&this._ondpadup(r),this.onPadUpObservable.notifyObservers(r))),e},Object.defineProperty(t.prototype,"buttonCross",{get:function(){return this._buttonCross},set:function(e){this._buttonCross=this._setButtonValue(e,this._buttonCross,Wt.Cross)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonCircle",{get:function(){return this._buttonCircle},set:function(e){this._buttonCircle=this._setButtonValue(e,this._buttonCircle,Wt.Circle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonSquare",{get:function(){return this._buttonSquare},set:function(e){this._buttonSquare=this._setButtonValue(e,this._buttonSquare,Wt.Square)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonTriangle",{get:function(){return this._buttonTriangle},set:function(e){this._buttonTriangle=this._setButtonValue(e,this._buttonTriangle,Wt.Triangle)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonOptions",{get:function(){return this._buttonOptions},set:function(e){this._buttonOptions=this._setButtonValue(e,this._buttonOptions,Wt.Options)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonShare",{get:function(){return this._buttonShare},set:function(e){this._buttonShare=this._setButtonValue(e,this._buttonShare,Wt.Share)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonL1",{get:function(){return this._buttonL1},set:function(e){this._buttonL1=this._setButtonValue(e,this._buttonL1,Wt.L1)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonR1",{get:function(){return this._buttonR1},set:function(e){this._buttonR1=this._setButtonValue(e,this._buttonR1,Wt.R1)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonLeftStick",{get:function(){return this._buttonLeftStick},set:function(e){this._buttonLeftStick=this._setButtonValue(e,this._buttonLeftStick,Wt.LeftStick)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buttonRightStick",{get:function(){return this._buttonRightStick},set:function(e){this._buttonRightStick=this._setButtonValue(e,this._buttonRightStick,Wt.RightStick)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadUp",{get:function(){return this._dPadUp},set:function(e){this._dPadUp=this._setDPadValue(e,this._dPadUp,ar.Up)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadDown",{get:function(){return this._dPadDown},set:function(e){this._dPadDown=this._setDPadValue(e,this._dPadDown,ar.Down)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadLeft",{get:function(){return this._dPadLeft},set:function(e){this._dPadLeft=this._setDPadValue(e,this._dPadLeft,ar.Left)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dPadRight",{get:function(){return this._dPadRight},set:function(e){this._dPadRight=this._setDPadValue(e,this._dPadRight,ar.Right)},enumerable:!1,configurable:!0}),t.prototype.update=function(){n.prototype.update.call(this),this.buttonCross=this.browserGamepad.buttons[0].value,this.buttonCircle=this.browserGamepad.buttons[1].value,this.buttonSquare=this.browserGamepad.buttons[2].value,this.buttonTriangle=this.browserGamepad.buttons[3].value,this.buttonL1=this.browserGamepad.buttons[4].value,this.buttonR1=this.browserGamepad.buttons[5].value,this.leftTrigger=this.browserGamepad.buttons[6].value,this.rightTrigger=this.browserGamepad.buttons[7].value,this.buttonShare=this.browserGamepad.buttons[8].value,this.buttonOptions=this.browserGamepad.buttons[9].value,this.buttonLeftStick=this.browserGamepad.buttons[10].value,this.buttonRightStick=this.browserGamepad.buttons[11].value,this.dPadUp=this.browserGamepad.buttons[12].value,this.dPadDown=this.browserGamepad.buttons[13].value,this.dPadLeft=this.browserGamepad.buttons[14].value,this.dPadRight=this.browserGamepad.buttons[15].value},t.prototype.dispose=function(){n.prototype.dispose.call(this),this.onButtonDownObservable.clear(),this.onButtonUpObservable.clear(),this.onPadDownObservable.clear(),this.onPadUpObservable.clear()},t}(_t),Zu=function(){function n(t){var e=this;if(this._scene=t,this._babylonGamepads=[],this._oneGamepadConnected=!1,this._isMonitoring=!1,this.onGamepadDisconnectedObservable=new J,To.IsWindowObjectExist()?(this._gamepadEventSupported="GamepadEvent"in window,this._gamepadSupport=navigator.getGamepads||navigator.webkitGetGamepads||navigator.msGetGamepads||navigator.webkitGamepads):this._gamepadEventSupported=!1,this.onGamepadConnectedObservable=new J(function(r){for(var o in e._babylonGamepads){var a=e._babylonGamepads[o];a&&a._isConnected&&e.onGamepadConnectedObservable.notifyObserver(r,a)}}),this._onGamepadConnectedEvent=function(r){var o=r.gamepad;if(!(o.index in e._babylonGamepads&&e._babylonGamepads[o.index].isConnected)){var a;e._babylonGamepads[o.index]?(a=e._babylonGamepads[o.index],a.browserGamepad=o,a._isConnected=!0):a=e._addNewGamepad(o),e.onGamepadConnectedObservable.notifyObservers(a),e._startMonitoringGamepads()}},this._onGamepadDisconnectedEvent=function(r){var o=r.gamepad;for(var a in e._babylonGamepads)if(e._babylonGamepads[a].index===o.index){var s=e._babylonGamepads[a];s._isConnected=!1,e.onGamepadDisconnectedObservable.notifyObservers(s),s.dispose&&s.dispose();break}},this._gamepadSupport)if(this._updateGamepadObjects(),this._babylonGamepads.length&&this._startMonitoringGamepads(),this._gamepadEventSupported){var i=this._scene?this._scene.getEngine().getHostWindow():window;i&&(i.addEventListener("gamepadconnected",this._onGamepadConnectedEvent,!1),i.addEventListener("gamepaddisconnected",this._onGamepadDisconnectedEvent,!1))}else this._startMonitoringGamepads()}return Object.defineProperty(n.prototype,"gamepads",{get:function(){return this._babylonGamepads},enumerable:!1,configurable:!0}),n.prototype.getGamepadByType=function(t){t===void 0&&(t=_t.XBOX);for(var e=0,i=this._babylonGamepads;e<i.length;e++){var r=i[e];if(r&&r.type===t)return r}return null},n.prototype.dispose=function(){this._gamepadEventSupported&&(this._onGamepadConnectedEvent&&window.removeEventListener("gamepadconnected",this._onGamepadConnectedEvent),this._onGamepadDisconnectedEvent&&window.removeEventListener("gamepaddisconnected",this._onGamepadDisconnectedEvent),this._onGamepadConnectedEvent=null,this._onGamepadDisconnectedEvent=null),this._babylonGamepads.forEach(function(t){t.dispose()}),this.onGamepadConnectedObservable.clear(),this.onGamepadDisconnectedObservable.clear(),this._oneGamepadConnected=!1,this._stopMonitoringGamepads(),this._babylonGamepads=[]},n.prototype._addNewGamepad=function(t){this._oneGamepadConnected||(this._oneGamepadConnected=!0);var e,i=t.id.search("054c")!==-1,r=t.id.search("Xbox One")!==-1;return r||t.id.search("Xbox 360")!==-1||t.id.search("xinput")!==-1?e=new Qu(t.id,t.index,t,r):i?e=new Ku(t.id,t.index,t):t.pose?e=Ki.InitiateController(t):e=new ju(t.id,t.index,t),this._babylonGamepads[e.index]=e,e},n.prototype._startMonitoringGamepads=function(){this._isMonitoring||(this._isMonitoring=!0,this._scene||this._checkGamepadsStatus())},n.prototype._stopMonitoringGamepads=function(){this._isMonitoring=!1},n.prototype._checkGamepadsStatus=function(){var t=this;this._updateGamepadObjects();for(var e in this._babylonGamepads){var i=this._babylonGamepads[e];!i||!i.isConnected||i.update()}this._isMonitoring&&!this._scene&&ue.QueueNewFrame(function(){t._checkGamepadsStatus()})},n.prototype._updateGamepadObjects=function(){for(var t=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():[],e=0;e<t.length;e++){var i=t[e];if(i)if(this._babylonGamepads[i.index])this._babylonGamepads[e].browserGamepad=i,this._babylonGamepads[e].isConnected||(this._babylonGamepads[e]._isConnected=!0,this.onGamepadConnectedObservable.notifyObservers(this._babylonGamepads[e]));else{var r=this._addNewGamepad(i);this.onGamepadConnectedObservable.notifyObservers(r)}}},n}();Object.defineProperty(ye.prototype,"gamepadManager",{get:function(){if(!this._gamepadManager){this._gamepadManager=new Zu(this);var n=this._getComponent(de.NAME_GAMEPAD);n||(n=new qu(this),this._addComponent(n))}return this._gamepadManager},enumerable:!0,configurable:!0});Co.prototype.addGamepad=function(){return this.add(new Is),this};wo.prototype.addGamepad=function(){return this.add(new Ps),this};var qu=function(){function n(t){this.name=de.NAME_GAMEPAD,this.scene=t}return n.prototype.register=function(){this.scene._beforeCameraUpdateStage.registerStep(de.STEP_BEFORECAMERAUPDATE_GAMEPAD,this,this._beforeCameraUpdate)},n.prototype.rebuild=function(){},n.prototype.dispose=function(){var t=this.scene._gamepadManager;t&&(t.dispose(),this.scene._gamepadManager=null)},n.prototype._beforeCameraUpdate=function(){var t=this.scene._gamepadManager;t&&t._isMonitoring&&t._checkGamepadsStatus()},n}();st.AddNodeConstructor("FreeCamera",function(n,t){return function(){return new Gr(n,_.Zero(),t)}});var Gr=function(n){N(t,n);function t(e,i,r){var o=n.call(this,e,i,r)||this;return o.inputs.addGamepad(),o}return Object.defineProperty(t.prototype,"gamepadAngularSensibility",{get:function(){var e=this.inputs.attached.gamepad;return e?e.gamepadAngularSensibility:0},set:function(e){var i=this.inputs.attached.gamepad;i&&(i.gamepadAngularSensibility=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"gamepadMoveSensibility",{get:function(){var e=this.inputs.attached.gamepad;return e?e.gamepadMoveSensibility:0},set:function(e){var i=this.inputs.attached.gamepad;i&&(i.gamepadMoveSensibility=e)},enumerable:!1,configurable:!0}),t.prototype.getClassName=function(){return"UniversalCamera"},t}(Fs);Me._createDefaultParsedCamera=function(n,t){return new Gr(n,_.Zero(),t)};st.AddNodeConstructor("GamepadCamera",function(n,t){return function(){return new Io(n,_.Zero(),t)}});var Io=function(n){N(t,n);function t(e,i,r){return n.call(this,e,i,r)||this}return t.prototype.getClassName=function(){return"GamepadCamera"},t}(Gr),Ju="passPixelShader",$u=`
2
2
  varying vec2 vUV;
3
3
  uniform sampler2D textureSampler;
4
4
  void main(void)