UNPKG

@awayjs/view

Version:
1 lines 56.9 kB
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@awayjs/core"),require("@awayjs/stage")):"function"==typeof define&&define.amd?define(["exports","@awayjs/core","@awayjs/stage"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).AwayjsView={},t.AwayjsCore,t.AwayjsStage)}(this,(function(t,e,i){"use strict";var o=function(t,e){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])},o(t,e)};function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function i(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}"function"==typeof SuppressedError&&SuppressedError;var r,s=function(t,i){this.normal=new e.Vector3D,this.rayPosition=new e.Vector3D,this.rayDirection=new e.Vector3D,this.containerNode=t,this.pickGroup=i};t.BoundingVolumeType=void 0,(r=t.BoundingVolumeType||(t.BoundingVolumeType={}))[r.SPHERE=0]="SPHERE",r[r.SPHERE_FAST=1]="SPHERE_FAST",r[r.SPHERE_BOUNDS=2]="SPHERE_BOUNDS",r[r.SPHERE_BOUNDS_FAST=3]="SPHERE_BOUNDS_FAST",r[r.BOX=4]="BOX",r[r.BOX_FAST=5]="BOX_FAST",r[r.BOX_BOUNDS=6]="BOX_BOUNDS",r[r.BOX_BOUNDS_FAST=7]="BOX_BOUNDS_FAST",r[r.NULL=8]="NULL";var a,h,l,c,u,_,p,d=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.clone=function(){return new e(this.type)},e.INVALIDATE_MATRIX3D="invalidateMatrix3D",e.INVALIDATE_COLOR_TRANSFORM="invalidateColorTransform",e}(e.EventBase),g=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return n(i,t),i.prototype.init=function(i,o){var n=this;t.prototype.init.call(this,i,o);var r=o.picker;if(this._strokeFlag=o.strokeFlag,this._fastFlag=o.fastFlag,this._onInvalidateMatrix3DDelegate=function(t){return n._onInvalidateMatrix3D(t)},i!=r.node){for(var s=r.node;s&&s!=i;)s.container.transform.addEventListener(e.TransformEvent.INVALIDATE_MATRIX3D,this._onInvalidateMatrix3DDelegate),s=s.parent;s||i.addEventListener(d.INVALIDATE_MATRIX3D,this._onInvalidateMatrix3DDelegate)}},i.prototype._onInvalidateMatrix3D=function(t){this._invalid=!0},i.prototype.onClear=function(){var i,o=this._asset,n=this._pool.picker;if(n&&o!=n.node){for(var r=n.node;r&&r!=o;)null===(i=r.container)||void 0===i||i.transform.removeEventListener(e.TransformEvent.INVALIDATE_MATRIX3D,this._onInvalidateMatrix3DDelegate),r=r.parent;r||o.removeEventListener(d.INVALIDATE_MATRIX3D,this._onInvalidateMatrix3DDelegate)}t.prototype.onClear.call(this)},i.prototype.nullify=function(){throw new e.AbstractMethodError},i.prototype.isInFrustum=function(t,i){throw new e.AbstractMethodError},i.prototype.clone=function(){throw new e.AbstractMethodError},i.prototype.rayIntersection=function(t,e,i){return-1},i.prototype.classifyToPlane=function(t){throw new e.AbstractMethodError},i.prototype._update=function(){this._invalid=!1},i}(e.AbstractionBase),f=function(t){function i(){var e=null!==t&&t.apply(this,arguments)||this;return e._centerX=0,e._centerY=0,e._centerZ=0,e._halfExtentsX=0,e._halfExtentsY=0,e._halfExtentsZ=0,e}return n(i,t),i.prototype.nullify=function(){this._centerX=this._centerY=this._centerZ=0,this._halfExtentsX=this._halfExtentsY=this._halfExtentsZ=0},i.prototype.isInFrustum=function(t,e){if(this._invalid&&this._update(),null!=this._box){for(var i=0;i<e;++i){var o=t[i],n=o.a,r=o.b,s=o.c,a=n<0?-this._halfExtentsX:this._halfExtentsX,h=r<0?-this._halfExtentsY:this._halfExtentsY,l=s<0?-this._halfExtentsZ:this._halfExtentsZ;if(n*(this._centerX+a)+r*(this._centerY+h)+s*(this._centerZ+l)-o.d<0)return!1}return!0}},i.prototype.rayIntersection=function(t,e,i){return this._invalid&&this._update(),null==this._box?-1:this._box.rayIntersection(t,e,i)},i.prototype.getBox=function(){return this._invalid&&this._update(),this._box},i.prototype.classifyToPlane=function(t){var i=t.a,o=t.b,n=t.c,r=i*this._centerX+o*this._centerY+n*this._centerZ-t.d;i<0&&(i=-i),o<0&&(o=-o),n<0&&(n=-n);var s=i*this._halfExtentsX+o*this._halfExtentsY+n*this._halfExtentsZ;return r>s?e.PlaneClassification.FRONT:r<-s?e.PlaneClassification.BACK:e.PlaneClassification.INTERSECT},i.prototype._update=function(){t.prototype._update.call(this);var e=this._asset,i=this._pool.picker,o=e!=i.node?e.getInverseMatrix3D():null;this._box=i._getBoxBoundsInternal(o,this._strokeFlag,this._fastFlag,this._box),null!=this._box&&(this._halfExtentsX=this._box.width/2,this._halfExtentsY=this._box.height/2,this._halfExtentsZ=this._box.depth/2,this._centerX=this._box.x+this._halfExtentsX,this._centerY=this._box.y+this._halfExtentsY,this._centerZ=this._box.z+this._halfExtentsZ)},i}(g),y=function(t){function i(){var e=null!==t&&t.apply(this,arguments)||this;return e._radius=0,e._centerX=0,e._centerY=0,e._centerZ=0,e}return n(i,t),i.prototype.nullify=function(){this._centerX=this._centerY=this._centerZ=0,this._radius=0},i.prototype.isInFrustum=function(t,e){this._invalid&&this._update();for(var i=0;i<e;++i){var o=t[i],n=o.a<0?-this._radius:this._radius,r=o.b<0?-this._radius:this._radius,s=o.c<0?-this._radius:this._radius;if(o.a*(this._centerX+n)+o.b*(this._centerY+r)+o.c*(this._centerZ+s)-o.d<0)return!1}return!0},i.prototype.rayIntersection=function(t,e,i){return this._invalid&&this._update(),this._sphere.rayIntersection(t,e,i)},i.prototype.getSphere=function(){return this._invalid&&this._update(),this._sphere},i.prototype.classifyToPlane=function(t){var i=t.a,o=t.b,n=t.c,r=i*this._centerX+o*this._centerY+n*this._centerZ-t.d;i<0&&(i=-i),o<0&&(o=-o),n<0&&(n=-n);var s=(i+o+n)*this._radius;return r>s?e.PlaneClassification.FRONT:r<-s?e.PlaneClassification.BACK:e.PlaneClassification.INTERSECT},i.prototype._update=function(){t.prototype._update.call(this);var e,i=this._asset,o=this._pool.picker;i==o.node?e=o.node.container.transform.matrix3D:(e=o.node.getMatrix3D().clone(),i.parent&&e.append(i.parent.getInverseMatrix3D())),this._sphere=o._getSphereBoundsInternal(null,e,this._strokeFlag,this._fastFlag,this._sphere);var n=o.node.getMatrix3D(),r=this._sphere.x,s=this._sphere.y,a=this._sphere.z,h=this._sphere.radius,l=n._rawData,c=l[0],u=l[4],_=l[8],p=l[12],d=l[1],g=l[5],f=l[9],y=l[13],v=l[2],b=l[6],m=l[10],D=l[14];this._centerX=r*c+s*u+a*_+p,this._centerY=r*d+s*g+a*f+y,this._centerZ=r*v+s*b+a*m+D;var T=c+u+_,x=d+g+f,N=v+b+m;this._radius=h*Math.sqrt((T*T+x*x+N*N)/3)},i}(g),v=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return n(i,t),i.prototype.isInFrustum=function(t,e){return!0},i.prototype.classifyToPlane=function(t){return e.PlaneClassification.INTERSECT},i}(g),b=function(){function i(t,o){this.id=e.UUID.Next(),this.abstractions=new e.AbstractionSet(this),this.picker=t,this.strokeFlag=i._strokeDict[o],this.fastFlag=i._fastDict[o],this._boundingVolumeClass=i._boundsDict[o],this._store=i._storeDict[o]}return i.prototype.requestAbstraction=function(t){return this._store.length?this._store.pop():new this._boundingVolumeClass},i.prototype.storeAbstraction=function(t){this._store.push(t)},i._boundingBoxStore=[],i._boundingSphereStore=[],i._nullStore=[],i._storeDict=((a={})[t.BoundingVolumeType.BOX]=i._boundingBoxStore,a[t.BoundingVolumeType.BOX_FAST]=i._boundingBoxStore,a[t.BoundingVolumeType.BOX_BOUNDS]=i._boundingBoxStore,a[t.BoundingVolumeType.BOX_BOUNDS_FAST]=i._boundingBoxStore,a[t.BoundingVolumeType.SPHERE]=i._boundingSphereStore,a[t.BoundingVolumeType.SPHERE_FAST]=i._boundingSphereStore,a[t.BoundingVolumeType.SPHERE_BOUNDS]=i._boundingSphereStore,a[t.BoundingVolumeType.SPHERE_BOUNDS_FAST]=i._boundingSphereStore,a[t.BoundingVolumeType.NULL]=i._nullStore,a),i._strokeDict=((h={})[t.BoundingVolumeType.BOX]=!1,h[t.BoundingVolumeType.BOX_FAST]=!1,h[t.BoundingVolumeType.BOX_BOUNDS]=!0,h[t.BoundingVolumeType.BOX_BOUNDS_FAST]=!0,h[t.BoundingVolumeType.SPHERE]=!1,h[t.BoundingVolumeType.SPHERE_FAST]=!1,h[t.BoundingVolumeType.SPHERE_BOUNDS]=!0,h[t.BoundingVolumeType.SPHERE_BOUNDS_FAST]=!0,h[t.BoundingVolumeType.NULL]=!1,h),i._fastDict=((l={})[t.BoundingVolumeType.BOX]=!1,l[t.BoundingVolumeType.BOX_FAST]=!0,l[t.BoundingVolumeType.BOX_BOUNDS]=!1,l[t.BoundingVolumeType.BOX_BOUNDS_FAST]=!0,l[t.BoundingVolumeType.SPHERE]=!1,l[t.BoundingVolumeType.SPHERE_FAST]=!0,l[t.BoundingVolumeType.SPHERE_BOUNDS]=!1,l[t.BoundingVolumeType.SPHERE_BOUNDS_FAST]=!0,l[t.BoundingVolumeType.NULL]=!1,l),i._boundsDict=((c={})[t.BoundingVolumeType.BOX]=f,c[t.BoundingVolumeType.BOX_FAST]=f,c[t.BoundingVolumeType.BOX_BOUNDS]=f,c[t.BoundingVolumeType.BOX_BOUNDS_FAST]=f,c[t.BoundingVolumeType.SPHERE]=y,c[t.BoundingVolumeType.SPHERE_FAST]=y,c[t.BoundingVolumeType.SPHERE_BOUNDS]=y,c[t.BoundingVolumeType.SPHERE_BOUNDS_FAST]=y,c[t.BoundingVolumeType.NULL]=v,c),i}(),m=function(t){function i(){var i=t.call(this)||this;return i._orientedBoxBounds=[],i._orientedBoxBoundsDirty=[!0,!0],i._orientedSphereBounds=[],i._orientedSphereBoundsDirty=[!0,!0],i._activePickables=[],i.shapeFlag=!1,i.abstractions=new e.AbstractionSet(i),i}return n(i,t),Object.defineProperty(i.prototype,"pickingCollision",{get:function(){return this._pickingCollision},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"node",{get:function(){return this._asset},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"pickGroup",{get:function(){return this._pool},enumerable:!1,configurable:!0}),i.prototype.init=function(e,i){t.prototype.init.call(this,e,i),this._pickingCollision=new s(this.node,this.pickGroup),this._boundingVolumePools={}},i.prototype.getBoundingVolume=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=null),null==t&&(t=this._asset),null==e&&(e=this._asset.container.defaultBoundingVolume),(this._boundingVolumePools[e]||(this._boundingVolumePools[e]=new b(this,e))).abstractions.getAbstraction(t)},i.prototype.hitTestPoint=function(t,e,i){return void 0===i&&(i=!1),this._hitTestPointInternal(this._asset,t,e,i,!1)},i.prototype._hitTestPointInternal=function(t,i,o,n,r){void 0===n&&(n=!1),void 0===r&&(r=!1);var s=this._asset;if(!(-1==s.getMaskId()||r&&n))return!1;this._invalid&&this._update();var a=new e.Point(i,o);s.globalToLocal(a,a);var h=this._getBoxBoundsInternal(null,!1,!0);if(null==h||!h.contains(a.x,a.y,0))return!1;if(!n||"[asset TextField]"==s.container.assetType||"[asset Billboard]"==s.container.assetType)return!0;for(var l=!1,c=this._activePickables.length-1;c>=0;c--)if(this._activePickables[c].hitTestPoint(a.x,a.y,0)){l=!0;break}if(!l)return!1;var u=s.getMaskOwners();if(u){var _,p=u.length,d=void 0,g=void 0,f=void 0;for(c=0;c<p;c++)if((_=u[c]).isDescendant(t)){g=(d=_.getMasks()).length,f=!1;for(var y=0;y<g;y++)if((_=d[y]).isDescendant(t)&&this.pickGroup.getBoundsPicker(_)._hitTestPointInternal(t,i,o,n,!0)){f=!0;break}if(!f)return!1}}return!0},i.prototype.isInFrustum=function(t,e){return this._isInFrustumInternal(this._asset,t,e)},i.prototype._isInFrustumInternal=function(t,e,i){return this.getBoundingVolume(t).isInFrustum(e,i)},i.prototype.isIntersectingRay=function(t,e){return this._isIntersectingRayInternal(this._asset,t,e)},i.prototype._isIntersectingRayInternal=function(t,e,i){var o=this._asset.getInverseMatrix3D();o.transformVector(e,this._pickingCollision.rayPosition),o.deltaTransformVector(i,this._pickingCollision.rayDirection);var n=this.getBoundingVolume().rayIntersection(this._pickingCollision.rayPosition,this._pickingCollision.rayDirection,this._pickingCollision.normal);return!(n<0||!this._isIntersectingMasks(t,e,i))&&(this._pickingCollision.rayEntryDistance=n,this._pickingCollision.globalRayPosition=e,this._pickingCollision.globalRayDirection=i,this._pickingCollision.rayOriginIsInsideBounds=0==n,!0)},i.prototype.isIntersectingShape=function(t){for(var e=!1,i=this._activePickables.length-1;i>=0;i--)if(this._activePickables[i].testCollision(this._pickingCollision,t)){if(!t)return!0;e=!0}return e},i.prototype._getBoxBoundsInternal=function(t,e,i,o,n){void 0===t&&(t=null),void 0===e&&(e=!0),void 0===i&&(i=!0),void 0===o&&(o=null),void 0===n&&(n=null),this._invalid&&this._update();var r=this._activePickables.length;if(r){var s=void 0;if(t&&(s=this._asset.getMatrix3D().clone()).append(t),i){var a=void 0,h=e?1:0;if(this._orientedBoxBoundsDirty[h]){this._orientedBoxBoundsDirty[h]=!1;for(var l=0;l<r;l++)a=this._activePickables[l].getBoxBounds(null,e,this._orientedBoxBounds[h],a);this._orientedBoxBounds[h]=a}else a=this._orientedBoxBounds[h];null!=a&&(n=s?s.transformBox(a).union(n,n||o):a.union(n,n||o))}else for(l=0;l<r;l++)n=this._activePickables[l].getBoxBounds(s,e,o,n)}return n},i.prototype._getSphereBoundsInternal=function(t,i,o,n,r,s){void 0===t&&(t=null),void 0===i&&(i=null),void 0===o&&(o=!0),void 0===n&&(n=!0),void 0===r&&(r=null),void 0===s&&(s=null),this._invalid&&this._update();var a=this._getBoxBoundsInternal(i,o);if(null!=a){t||((t=new e.Vector3D).x=a.x+a.width/2,t.y=a.y+a.height/2,t.z=a.z+a.depth/2);var h=this._activePickables.length;if(h)if(n){var l=void 0,c=o?1:0;if(this._orientedSphereBoundsDirty[c]){this._orientedSphereBoundsDirty[c]=!1;for(var u=0;u<h;u++)l=this._activePickables[u].getSphereBounds(t,null,o,this._orientedSphereBounds[c],l);this._orientedSphereBounds[c]=l}else l=this._orientedSphereBounds[c];null!=l&&(s=i?i.transformSphere(l).union(s,s||r):l.union(s,s||r))}else for(u=0;u<h;u++)s=this._activePickables[u].getSphereBounds(t,i,o,r,s);return s}},i.prototype.applyTraversable=function(t){this._activePickables.push(this.abstractions.getAbstraction(t))},i.prototype.onInvalidate=function(){for(var e in t.prototype.onInvalidate.call(this),this._activePickables=[],this._orientedBoxBoundsDirty[0]=!0,this._orientedBoxBoundsDirty[1]=!0,this._orientedSphereBoundsDirty[0]=!0,this._orientedSphereBoundsDirty[1]=!0,this._boundingVolumePools)this._boundingVolumePools[e].abstractions.forEach((function(t){return t.onInvalidate()}))},i.prototype.onClear=function(){for(var e in t.prototype.onClear.call(this),this._boundingVolumePools)this._boundingVolumePools[e].abstractions.forEach((function(t){return t.onClear()}));this._boundingVolumePools=null,this.abstractions.forEach((function(t){return t.onClear()})),this._pickingCollision=null,this._activePickables=[],this._orientedBoxBoundsDirty[0]=!0,this._orientedBoxBoundsDirty[1]=!0,this._orientedSphereBoundsDirty[0]=!0,this._orientedSphereBoundsDirty[1]=!0},i.prototype.requestAbstraction=function(t){var e=i._store[t.assetType];return e.length?e.pop():new i._pickPickableClassPool[t.assetType]},i.prototype.storeAbstraction=function(t,e){i._store[e].push(t)},i.registerPickable=function(t,e){i._pickPickableClassPool[e.assetType]=t,i._store[e.assetType]=[]},i.prototype._update=function(){this._invalid=!1,this._asset.container.getEntity()._acceptTraverser(this)},i.prototype._isIntersectingMasks=function(t,e,i){var o=this._asset.getMaskOwners();if(o)for(var n=o.length,r=void 0,s=void 0,a=void 0,h=void 0,l=0;l<n;l++)if((r=o[l]).isDescendant(t)){a=(s=r.getMasks()).length,h=!1;for(var c=0;c<a;c++)if((r=s[c]).isDescendant(t)&&this.pickGroup.getRaycastPicker(r)._getCollisionInternal(e,i,!0,!0,null)){h=!0;break}if(!h)return!1}return!0},i._store={},i.MINIMAL_SCALE=1e-5,i._pickPickableClassPool={},i}(e.AbstractionBase),D=function(t){function i(){var e=null!==t&&t.apply(this,arguments)||this;return e._orientedBoxBoundsDirty=!0,e._orientedSphereBoundsDirty=!0,e}return n(i,t),Object.defineProperty(i.prototype,"pickable",{get:function(){return this._useWeak?this._asset.deref():this._asset},enumerable:!1,configurable:!0}),i.prototype.init=function(e,i){t.prototype.init.call(this,e,i,!0),e._pickObjects[i.id]=this},i.prototype.onInvalidate=function(){t.prototype.onInvalidate.call(this),this._orientedBoxBoundsDirty=!0,this._orientedSphereBoundsDirty=!0},i.prototype.onClear=function(){var e=this.pickable;e&&delete e._pickObjects[this._pool.id],this._orientedBoxBounds=null,this._orientedBoxBoundsDirty=!0,this._orientedSphereBounds=null,this._orientedSphereBoundsDirty=!0,t.prototype.onClear.call(this)},i.prototype.hitTestPoint=function(t,i,o){throw new e.AbstractMethodError},i.prototype.getBoxBounds=function(t,e,i,o){return void 0===o&&(o=null),o},i.prototype.getSphereBounds=function(t,e,i,o,n){return void 0===n&&(n=null),n},i.prototype.testCollision=function(t,i){throw new e.AbstractMethodError},i.prototype._onInvalidateElements=function(){this._orientedBoxBoundsDirty=!0,this._orientedSphereBoundsDirty=!0},i}(e.AbstractionBase);t.HierarchicalProperty=void 0,(u=t.HierarchicalProperty||(t.HierarchicalProperty={}))[u.MOUSE_ENABLED=1]="MOUSE_ENABLED",u[u.VISIBLE=2]="VISIBLE",u[u.MASK_ID=4]="MASK_ID",u[u.MASKS=8]="MASKS",u[u.COLOR_TRANSFORM=16]="COLOR_TRANSFORM",u[u.SCENE_TRANSFORM=32]="SCENE_TRANSFORM",u[u.SCALE9=64]="SCALE9",u[u.ROOT=128]="ROOT",u[u.ALL=255]="ALL",t.OrientationMode=void 0,(_=t.OrientationMode||(t.OrientationMode={}))[_.DEFAULT=0]="DEFAULT",_[_.CAMERA_PLANE=1]="CAMERA_PLANE",_[_.CAMERA_POSITION=2]="CAMERA_POSITION",t.AlignmentMode=void 0,(p=t.AlignmentMode||(t.AlignmentMode={}))[p.REGISTRATION_POINT=0]="REGISTRATION_POINT",p[p.TRANSFORM_POINT=1]="TRANSFORM_POINT";var T=function(t){function e(e,i){var o=t.call(this,e)||this;return o._view=i,o}return n(e,t),Object.defineProperty(e.prototype,"view",{get:function(){return this._view},enumerable:!1,configurable:!0}),e.INVALIDATE_VIEW_MATRIX3D="invalidateViewMatrix3D",e.INVALIDATE_SIZE="invalidateSize",e}(e.EventBase),x=function(t){function o(o,n,r,s,a,h){void 0===o&&(o=null),void 0===n&&(n=null),void 0===r&&(r=!1),void 0===s&&(s=i.ContextGLProfile.BASELINE),void 0===a&&(a=i.ContextMode.AUTO),void 0===h&&(h=!1);var l=t.call(this)||this;return l._rect=new e.Rectangle,l._backgroundColor=0,l._backgroundRed=0,l._backgroundGreen=0,l._backgroundBlue=0,l._focalLength=1e3,l._pixelRatio=1,l._frustumMatrix3D=new e.Matrix3D,l._viewMatrix3D=new e.Matrix3D,l._inverseViewMatrix3D=new e.Matrix3D,l._components=new Array(4),l._offset=new e.Vector3D,l._scale=new e.Vector3D(1,1,1),l._frustumMatrix3DDirty=!0,l._viewMatrix3DDirty=!0,l._inverseViewMatrix3DDirty=!0,l.backgroundAlpha=1,l.backgroundDepth=1,l.backgroundStencil=0,l.preservePixelRatio=!0,l.preserveFocalLength=!1,l.preserveDimensions=!1,l.abstractions=new e.AbstractionSet(l),l._components[0]=l._offset,l._components[2]=l._scale,l._onInvalidateSizeDelegate=function(t){return l._onInvalidateSize(t)},l._onInvalidateViewMatrix3DDelegate=function(t){return l._onInvalidateViewMatrix3D(t)},l._onInvalidateFrustumMatrix3DDelegate=function(t){return l._onInvalidateFrustumMatrix3D(t)},l._projection=o||new e.PerspectiveProjection,l._projection.addEventListener(e.ProjectionEvent.INVALIDATE_VIEW_MATRIX3D,l._onInvalidateViewMatrix3DDelegate),l._projection.addEventListener(e.ProjectionEvent.INVALIDATE_FRUSTUM_MATRIX3D,l._onInvalidateFrustumMatrix3DDelegate),n&&(l._shareContext=!0),l._stage=n||i.StageManager.getInstance().getFreeStage(r,s,a,h),l._stage.addEventListener(i.StageEvent.INVALIDATE_SIZE,l._onInvalidateSizeDelegate),l._updateDimensions(),l._updateFocalLength(),l._updatePixelRatio(),l}return n(o,t),Object.defineProperty(o.prototype,"shareContext",{get:function(){return this._shareContext},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"x",{get:function(){return this._shareContext||this._target?this._rect.x:this._stage.x},set:function(t){if(this._shareContext||this._target){if(this._rect.x==t)return;this._offset.x=(this._rect.x=t)/this._targetWidth,this._invalidateViewMatrix3D()}else this._stage.x=t},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"y",{get:function(){return this._shareContext||this._target?this._rect.y:this._stage.y},set:function(t){if(this._shareContext||this._target){if(this._rect.y==t)return;this._offset.y=(this._rect.y=t)/this._targetHeight,this._invalidateViewMatrix3D()}else this._stage.y=t},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"width",{get:function(){return this._rect.width},set:function(t){this._rect.width!=t&&(this._rect.width=t,this._shareContext||this._target?(this._scale.x=t/this._targetWidth,this._updatePixelRatio(),this._invalidateViewMatrix3D()):this._stage.width=t,this._invalidateSize())},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"height",{get:function(){return this._rect.height},set:function(t){this._rect.height!=t&&(this._rect.height=t,this._shareContext||this._target?(this._scale.y=t/this._targetHeight,this._updateFocalLength(),this._updatePixelRatio(),this._invalidateViewMatrix3D()):this._stage.height=t,this._invalidateSize())},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(t){this._backgroundColor!=t&&(this._backgroundColor=t,this._backgroundRed=(t>>16&255)/255,this._backgroundGreen=(t>>8&255)/255,this._backgroundBlue=(255&t)/255)},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"focalLength",{get:function(){return this._focalLength},set:function(t){this._focalLength!=t&&(this._focalLength=t,this._updateFocalLength())},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"pixelRatio",{get:function(){return this._pixelRatio},set:function(t){this._pixelRatio!=t&&(this._pixelRatio=t,this._updatePixelRatio())},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"projection",{get:function(){return this._projection},set:function(t){if(null==t)throw new e.ErrorBase("projection cannot be null");this._projection!=t&&(this._projection.removeEventListener(e.ProjectionEvent.INVALIDATE_VIEW_MATRIX3D,this._onInvalidateViewMatrix3DDelegate),this._projection.removeEventListener(e.ProjectionEvent.INVALIDATE_FRUSTUM_MATRIX3D,this._onInvalidateFrustumMatrix3DDelegate),this._projection=t,this._projection.addEventListener(e.ProjectionEvent.INVALIDATE_VIEW_MATRIX3D,this._onInvalidateViewMatrix3DDelegate),this._projection.addEventListener(e.ProjectionEvent.INVALIDATE_FRUSTUM_MATRIX3D,this._onInvalidateFrustumMatrix3DDelegate),this._invalidateViewMatrix3D())},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"target",{get:function(){return this._target},set:function(t){this._target!=t&&this._updateTarget(t)},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"stage",{get:function(){return this._stage},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"frustumMatrix3D",{get:function(){return this._frustumMatrix3DDirty&&(this._frustumMatrix3DDirty=!1,this._frustumMatrix3D.recompose(this._components),this._frustumMatrix3D.prepend(this._projection.frustumMatrix3D)),this._frustumMatrix3D},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"viewMatrix3D",{get:function(){return this._viewMatrix3DDirty&&(this._viewMatrix3DDirty=!1,this._viewMatrix3D.recompose(this._components),this._viewMatrix3D.prepend(this._projection.viewMatrix3D)),this._viewMatrix3D},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"inverseViewMatrix3D",{get:function(){return this._inverseViewMatrix3DDirty&&(this._inverseViewMatrix3DDirty=!1,this._inverseViewMatrix3D.copyFrom(this.viewMatrix3D),this._inverseViewMatrix3D.invert()),this._inverseViewMatrix3D},enumerable:!1,configurable:!0}),o.prototype.requestAbstraction=function(t){return o._store.length?o._store.pop():new N},o.prototype.storeAbstraction=function(t){o._store.push(t)},o.prototype.getNode=function(t){return this.abstractions.getAbstraction(t)},o.prototype.clear=function(t,e,o,n,r){void 0===t&&(t=!0),void 0===e&&(e=!0),void 0===o&&(o=0),void 0===n&&(n=0),void 0===r&&(r=i.ContextGLClearMask.ALL),this._stage.setRenderTarget(this._target,e,o,n),this._stage.setScissor(null==this._target?this._rect:null),t&&this._stage.clear(this._backgroundRed,this._backgroundGreen,this._backgroundBlue,this.backgroundAlpha,this.backgroundDepth,this.backgroundStencil,r)},o.prototype.present=function(){this._shareContext||null!=this._target||this._stage.present()},o.prototype.project=function(t,e){return void 0===e&&(e=null),(e=this._projection.project(t,e)).x=(e.x+1)*this.width/2,e.y=(e.y+1)*this.height/2,e},o.prototype.unproject=function(t,e,i,o){return void 0===o&&(o=null),this._projection.unproject(2*t/this.width-1,2*e/this.height-1,i,o)},o.prototype.dispose=function(){this._target?(this._target.removeEventListener(e.AssetEvent.INVALIDATE,this._onInvalidateSizeDelegate),this._target=null):(this._stage.removeEventListener(i.StageEvent.INVALIDATE_SIZE,this._onInvalidateSizeDelegate),this._shareContext||null!=this._target||this._stage.dispose(),this._stage=null),this._projection&&(this._projection.removeEventListener(e.ProjectionEvent.INVALIDATE_VIEW_MATRIX3D,this._onInvalidateViewMatrix3DDelegate),this._projection=null)},o.prototype._onInvalidateSize=function(t){this._updateDimensions(),this._updateFocalLength(),this._updatePixelRatio(),this.preserveDimensions&&(this._shareContext||null!=this._target)||this._invalidateSize()},o.prototype._onInvalidateViewMatrix3D=function(t){this._invalidateViewMatrix3D()},o.prototype._onInvalidateFrustumMatrix3D=function(t){this._frustumMatrix3DDirty=!0,this.preserveFocalLength||this._updateFocalLength()},o.prototype._updateTarget=function(t){this._target?this._target.removeEventListener(e.AssetEvent.INVALIDATE,this._onInvalidateSizeDelegate):this._stage.removeEventListener(i.StageEvent.INVALIDATE_SIZE,this._onInvalidateSizeDelegate),this._target=t,this._target?this._target.addEventListener(e.AssetEvent.INVALIDATE,this._onInvalidateSizeDelegate):this._stage.addEventListener(i.StageEvent.INVALIDATE_SIZE,this._onInvalidateSizeDelegate),this._updateDimensions(),this._updateFocalLength(),this._updatePixelRatio(),this.preserveDimensions&&(this._shareContext||null!=this._target)||this._invalidateSize()},o.prototype._updateDimensions=function(){this._target?this._target instanceof i.Image2D?(this._targetWidth=this._target.width,this._targetHeight=this._target.height):this._target instanceof i.ImageCube&&(this._targetWidth=this._target.size,this._targetHeight=this._target.size):(this._targetWidth=this._stage.width,this._targetHeight=this._stage.height),this.preserveDimensions&&(this._shareContext||this._target)?(this._offset.x=this._rect.x/this._targetWidth,this._offset.y=this._rect.y/this._targetHeight,this._scale.x=this._rect.width/this._targetWidth,this._scale.y=this._rect.height/this._targetHeight):(this._rect.x=this._offset.x*this._targetWidth,this._rect.y=this._offset.y*this._targetHeight,this._rect.width=this._scale.x*this._targetWidth,this._rect.height=this._scale.y*this._targetHeight)},o.prototype._updateFocalLength=function(){this.preserveFocalLength?this.projection.scale=this._focalLength/this._rect.height:this._focalLength=this._projection.scale*this._rect.height},o.prototype._updatePixelRatio=function(){this.preservePixelRatio?this._projection.ratio=this._pixelRatio*this._rect.width/this._rect.height:this._pixelRatio=this._projection.ratio*this._rect.height/this._rect.width},o.prototype._invalidateViewMatrix3D=function(){this._frustumMatrix3DDirty=!0,this._viewMatrix3DDirty=!0,this._inverseViewMatrix3DDirty=!0,this.dispatchEvent(new T(T.INVALIDATE_VIEW_MATRIX3D,this))},o.prototype._invalidateSize=function(){this.dispatchEvent(new T(T.INVALIDATE_SIZE,this))},o._store=[],o}(e.AssetBase),N=function(o){function r(){var i=null!==o&&o.apply(this,arguments)||this;return i._renderToImage=!1,i._position=new e.Vector3D,i._matrix3D=new e.Matrix3D,i._inverseMatrix3DDirty=!0,i._maskDisabled=!1,i._transformDisabled=!1,i._maskId=-1,i._masks=[],i._childNodes=new Array,i._numChildNodes=0,i._hierarchicalPropsDirty=t.HierarchicalProperty.ALL,i}return n(r,o),Object.defineProperty(r.prototype,"parent",{get:function(){return this._parent},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"numChildNodes",{get:function(){return this._numChildNodes},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"container",{get:function(){return this._useWeak?this._asset.deref():this._asset},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"pickObjectNode",{get:function(){var t=this.container;return this._pickObject!=t.pickObject&&(this._pickObject=t.pickObject,this._pickObject?(this._pickObjectNode=this._pool.abstractions.getAbstraction(this._pickObject),this._pickObject.pickObjectFromTimeline&&this._pickObjectNode.setParent(this)):(this._pickObjectNode.setParent(null),this._pickObjectNode=null)),this._pickObjectNode},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"renderToImage",{get:function(){var t=this.container,e=t.blendMode,o=t.filters,n=t.cacheAsBitmap,r=this.isRenderable()&&(n||o&&o.length>0||e&&e!==i.BlendMode.NORMAL&&(i.Settings.USE_NON_NATIVE_BLEND||i.isNativeBlend(e)));return this._renderToImage!==r&&(this._renderToImage=r,this._renderToImage||this.clearLocalNode()),this._renderToImage},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"scrollRect",{get:function(){var t=this.container,e=t.scrollRect;return!!this._scrollRect!=!!e&&(this._scrollRect=e,this._scrollRect?(this._scrollRectNode=this._pool.getNode(t.getScrollRectPrimitive()),this._scrollRectNode.setParent(this)):this._scrollRectNode&&(this._scrollRectNode.setParent(null),this._scrollRectNode=null)),this._scrollRect},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"boundsVisible",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"view",{get:function(){return this._pool},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"maskDisabled",{get:function(){return this._maskDisabled},set:function(t){this._maskDisabled=t},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"transformDisabled",{get:function(){return this._transformDisabled},set:function(t){this._transformDisabled!=t&&(this._maskDisabled=t,this._transformDisabled=t)},enumerable:!1,configurable:!0}),r.prototype.getRoot=function(e){return void 0===e&&(e=!1),this._hierarchicalPropsDirty&t.HierarchicalProperty.ROOT&&(this._root=this._transformDisabled&&e||!this._parent?this:this._parent.getRoot(e)),this._root},r.prototype.getScale9Container=function(){var e;if(this._hierarchicalPropsDirty&t.HierarchicalProperty.SCALE9){var i=this.container;this._scale9Container=i.scale9Grid?i:null===(e=this._parent)||void 0===e?void 0:e.getScale9Container(),this._hierarchicalPropsDirty^=t.HierarchicalProperty.SCALE9}return this._scale9Container},r.prototype.getPosition=function(){if(this._positionDirty){var e=this.container;e._registrationMatrix3D&&e.alignmentMode===t.AlignmentMode.REGISTRATION_POINT?(this._position.x=-e._registrationMatrix3D._rawData[12],this._position.y=-e._registrationMatrix3D._rawData[13],this._position.z=-e._registrationMatrix3D._rawData[14],this._position=this.getMatrix3D().transformVector(this._position,this._position)):this.getMatrix3D().copyColumnTo(3,this._position),this._positionDirty=!1}return this._position},r.prototype.getInverseMatrix3D=function(){return this._inverseMatrix3DDirty&&(this._inverseMatrix3D||(this._inverseMatrix3D=new e.Matrix3D),this._inverseMatrix3DDirty=!1,this._inverseMatrix3D.copyFrom(this.getMatrix3D()),this._inverseMatrix3D.invert()),this._inverseMatrix3D||(this._inverseMatrix3D=new e.Matrix3D)},r.prototype.getMatrix3D=function(){if(this._hierarchicalPropsDirty&t.HierarchicalProperty.SCENE_TRANSFORM){var e=this.container;this._transformDisabled?this._matrix3D.copyFrom(r._nullTransform.matrix3D):(this._matrix3D.copyFrom(e.transform.matrix3D),e._registrationMatrix3D&&(this._matrix3D.prepend(e._registrationMatrix3D),e.alignmentMode!=t.AlignmentMode.REGISTRATION_POINT&&this._matrix3D.appendTranslation(-e._registrationMatrix3D._rawData[12]*e.transform.scale.x,-e._registrationMatrix3D._rawData[13]*e.transform.scale.y,-e._registrationMatrix3D._rawData[14]*e.transform.scale.z)),this._parent&&this._matrix3D.append(this._parent.getMatrix3D()),e.scrollRect&&this._matrix3D.prependTranslation(-e.scrollRect.x,-e.scrollRect.y,0)),this._hierarchicalPropsDirty^=t.HierarchicalProperty.SCENE_TRANSFORM,e._iController&&e._iController.updateController()}return this._matrix3D},r.prototype.getRenderMatrix3D=function(i){var o=this.container;if(o.orientationMode==t.OrientationMode.CAMERA_PLANE){var n=i.decompose();return n[0].copyFrom(this.getPosition()),n[2].copyFrom(o.transform.scale),(this._orientationMatrix||(this._orientationMatrix=new e.Matrix3D)).recompose(n),o._registrationMatrix3D&&(this._orientationMatrix.prepend(o._registrationMatrix3D),o.alignmentMode!=t.AlignmentMode.REGISTRATION_POINT&&this._orientationMatrix.appendTranslation(-o._registrationMatrix3D._rawData[12]*o.transform.scale.x,-o._registrationMatrix3D._rawData[13]*o.transform.scale.y,-o._registrationMatrix3D._rawData[14]*o.transform.scale.z)),this._orientationMatrix}return this.getMatrix3D()},r.prototype.getColorTransform=function(){if(this._hierarchicalPropsDirty&t.HierarchicalProperty.COLOR_TRANSFORM){var i=this.container;this._hierarchicalPropsDirty^=t.HierarchicalProperty.COLOR_TRANSFORM,this._colorTransform||(this._colorTransform=new e.ColorTransform),this._parent&&this._parent.getColorTransform()?(this._colorTransform.copyFrom(this._parent.getColorTransform()),this._colorTransform.prepend(i.transform.colorTransform)):this._colorTransform.copyFrom(i.transform.colorTransform)}return this._colorTransform||r.nullColorTransform},r.prototype.getMaskId=function(){if(this._hierarchicalPropsDirty&t.HierarchicalProperty.MASK_ID){var e=this.container;this._maskId=-1!=e.maskId?e.maskId:this._parent?this._parent.getMaskId():-1,this._hierarchicalPropsDirty^=t.HierarchicalProperty.MASK_ID}return this._maskId},r.prototype.getMasks=function(t){if(void 0===t&&(t=!1),!t)return this._masks;var e=this.container;if(e.masks){var i=e.masks.length;this._masks.length=i;for(var o=0;o<i;o++)this._masks[o]=this._pool.getNode(e.masks[o])}else this._masks.length=0;return this.scrollRect&&this._masks.push(this._scrollRectNode),this._masks},r.prototype.getMaskOwners=function(){var e;if(this._hierarchicalPropsDirty&t.HierarchicalProperty.MASKS){var i=this.getMasks(!0);this._maskOwners=this._maskDisabled?null:(null===(e=this._parent)||void 0===e?void 0:e.getMaskOwners())&&-1==this.getMaskId()?i.length?this._parent.getMaskOwners().concat([this]):this._parent.getMaskOwners().concat():i.length?[this]:null,this._hierarchicalPropsDirty^=t.HierarchicalProperty.MASKS}return this._maskOwners},r.prototype.globalToLocal=function(t,i){void 0===i&&(i=null);var o=r._tempVector3D;o.setTo(t.x,t.y,0);var n=this.getInverseMatrix3D().transformVector(o,o);return i||(i=new e.Point),i.x=n.x,i.y=n.y,i},r.prototype.globalToLocal3D=function(t){return this.getInverseMatrix3D().transformVector(t)},r.prototype.localToGlobal=function(t,i){void 0===i&&(i=null);var o=r._tempVector3D;o.setTo(t.x,t.y,0);var n=this.getMatrix3D().transformVector(o,o);return i||(i=new e.Point),i.x=n.x,i.y=n.y,i},r.prototype.getBoundsPrimitive=function(t){return null},r.prototype.init=function(e,i){o.prototype.init.call(this,e,i,!0),this._root=this,e._initNode(this),e._containerNodes[i.id]=this,this._hierarchicalPropsDirty=t.HierarchicalProperty.ALL},r.prototype.getLocalNode=function(){if(!this._localNode){var t=new e.PerspectiveProjection;t.coordinateSystem=e.CoordinateSystem.LEFT_HANDED,t.originX=-1,t.originY=-1,t.transform=new e.Transform,t.transform.moveTo(0,0,-1e3),t.transform.lookAt(new e.Vector3D);var i=new x(t,this.view.stage);i.backgroundAlpha=0,this._localNode=i.getNode(this.container),this._localNode.transformDisabled=!0,this._localNode.setParent(this)}return this._localNode},r.prototype.clearLocalNode=function(){this._localNode&&(this._localNode.onClear(),this._localNode=null)},r.prototype.onClear=function(){var t=this.container;t&&delete t._containerNodes[this.view.id],this._localNode=null,this._maskOwners=null,this._masks.length=0,this._pickObject&&(this._pickObject=null,this._pickObjectNode.setParent(null),this._pickObjectNode=null),this._childNodes.length=0,this._numChildNodes=0,this._scrollRect=null,this._scrollRectNode=null,this._renderToImage=!1,this._isDragEntity=!1,this._positionDirty=!1,this._scale9Container=null,this._inverseMatrix3DDirty=!0,this._maskDisabled=!1,this._transformDisabled=!1,this._parent=null,this._root=null,o.prototype.clear.call(this),o.prototype.onClear.call(this)},r.prototype.onInvalidate=function(){this.invalidate()},r.prototype.clear=function(){o.prototype.clear.call(this),this._maskOwners=null;for(var t=0;t<this._masks.length;t++)this._masks[t].clear();this._localNode&&this._localNode.clear();for(t=0;t<this._numChildNodes;t++)this._childNodes[t].clear();this._pickObject&&this._pickObjectNode.clear()},r.prototype.isInFrustum=function(t,e,i,o){return!this.isInvisible()},r.prototype.invalidate=function(){this._invalid||(this._invalid=!0,o.prototype.invalidate.call(this),this._parent&&this._parent.invalidate())},r.prototype.isInvisible=function(){var e;return this._hierarchicalPropsDirty&t.HierarchicalProperty.VISIBLE&&(this._invisible=!this._transformDisabled&&(!this.container.visible||(null===(e=this.parent)||void 0===e?void 0:e.isInvisible())),this._hierarchicalPropsDirty^=t.HierarchicalProperty.VISIBLE),this._invisible},r.prototype.isIntersectingRay=function(t,e,i,o){return!0},r.prototype.isRenderable=function(){return-1!=this.getMaskId()||!this.isInvisible()&&this.getColorTransform()._isRenderable()},r.prototype.isCastingShadow=function(){return!0},r.prototype.acceptTraverser=function(t){if(this._invalid=!1,(t.node==this||t===t.getTraverser(this))&&t.enterNode(this)){t.applyEntity(this);for(var e=0;e<this._numChildNodes;e++)this._childNodes[e].acceptTraverser(t)}},r.prototype.addChildAt=function(t,e){var i=this._pool.abstractions.getAbstraction(t);return i.setParent(this),e==this._numChildNodes?this._childNodes.push(i):this._childNodes.splice(e,0,i),this._numChildNodes++,this.invalidate(),i},r.prototype.removeChildAt=function(t){this._numChildNodes--;var e=t===this._numChildNodes?this._childNodes.pop():this._childNodes.splice(t,1)[0];return e.setParent(null),this.invalidate(),e},r.prototype.getChildAt=function(t){return this._childNodes.length>t?this._childNodes[t]:null},r.prototype.startDrag=function(){this._isDragEntity=!0},r.prototype.stopDrag=function(){this._isDragEntity=!1},r.prototype.isDragEntity=function(){return this._isDragEntity},r.prototype.isMouseDisabled=function(){var t;return this.isInvisible()||!this.container.mouseEnabled||(null===(t=this.parent)||void 0===t?void 0:t.isMouseChildrenDisabled())},r.prototype.isMouseChildrenDisabled=function(){var e;return this._hierarchicalPropsDirty&t.HierarchicalProperty.MOUSE_ENABLED&&(this._mouseChildrenDisabled=!this.container.mouseChildren||(null===(e=this.parent)||void 0===e?void 0:e.isMouseChildrenDisabled()),this._hierarchicalPropsDirty^=t.HierarchicalProperty.MOUSE_ENABLED),this._mouseChildrenDisabled},r.prototype.isDescendant=function(t){for(var e=this;e.parent;)if((e=e.parent)==t)return!0;return!1},r.prototype.invalidateHierarchicalProperty=function(e){var i=(this._hierarchicalPropsDirty^e)&e;if(i){this._hierarchicalPropsDirty|=i;for(var o=0;o<this._childNodes.length;++o)this._childNodes[o].invalidateHierarchicalProperty(e);this._pickObjectNode&&this._pickObjectNode.invalidateHierarchicalProperty(e),this._scrollRectNode&&this._scrollRectNode.invalidateHierarchicalProperty(e),e&t.HierarchicalProperty.COLOR_TRANSFORM&&this.dispatchEvent(this._invalidateColorTransformEvent||(this._invalidateColorTransformEvent=new d(d.INVALIDATE_COLOR_TRANSFORM))),e&t.HierarchicalProperty.SCENE_TRANSFORM&&(this._positionDirty=!0,this._inverseMatrix3DDirty=!0,this.dispatchEvent(this._invalidateMatrix3DEvent||(this._invalidateMatrix3DEvent=new d(d.INVALIDATE_MATRIX3D))),this.invalidate())}},r.prototype.setParent=function(e){this._parent&&this.clear(),this._parent=e,this.invalidateHierarchicalProperty(t.HierarchicalProperty.ALL)},r._nullTransform=new e.Transform,r._tempVector3D=new e.Vector3D,r.nullColorTransform=new e.ColorTransform,r}(e.AbstractionBase),E=function(t){function i(){var e=null!==t&&t.apply(this,arguments)||this;return e.shapeFlag=!1,e.findClosestCollision=!1,e._entities=[],e._pickers=[],e._collectedEntities=[],e}return n(i,t),Object.defineProperty(i.prototype,"node",{get:function(){return this._asset},enumerable:!1,configurable:!0}),i.prototype.init=function(e,i){t.prototype.init.call(this,e,i),this.pickGroup=i.pickGroup},i.prototype.onClear=function(){t.prototype.onClear.call(this),this._dragNode=null,this._rootNode=null,this._entities.length=0,this._pickers.length=0,this._collectedEntities.length=0,this.pickGroup=null},i.prototype.traverse=function(){this._entities.length=0,this._pickers.length=0,this._asset.acceptTraverser(this)},i.prototype.getTraverser=function(t){if(!t.isMouseDisabled()||t.isDragEntity()){var e=this.pickGroup.getRaycastPicker(t);return e._isIntersectingRayInternal(this._rootNode,this._globalRayPosition,this._globalRayDirection,this._shapeFlag)&&this._pickers.push(e),e}return this},Object.defineProperty(i.prototype,"dragNode",{get:function(){return this._dragNode},set:function(t){this._dragNode!=t&&(this._dragNode&&this._dragNode.stopDrag(),this._dragNode=t,this._dragNode&&this._dragNode.startDrag())},enumerable:!1,configurable:!0}),i.prototype.enterNode=function(t){return!(t.isInvisible()&&-1==t.getMaskId()||t.getMaskId()!=this._rootNode.getMaskId())&&(t.pickObjectNode&&t.pickObjectNode.acceptTraverser(this),!0)},i.prototype.isIntersectingRay=function(t,e,i){return void 0===i&&(i=!1),this._isIntersectingRayInternal(this._asset,t,e,i)},i.prototype._isIntersectingRayInternal=function(t,e,i,o){return this._rootNode=t,this._globalRayPosition=e,this._globalRayDirection=i,this._shapeFlag=this.shapeFlag||o,this.traverse(),!(!this._entities.length&&!this._pickers.length)},i.prototype.getCollision=function(t,e,i,o){return void 0===i&&(i=!1),void 0===o&&(o=null),this._getCollisionInternal(t,e,i,!1,o)},i.prototype.getViewCollision=function(t,e,o,n){void 0===o&&(o=!1),void 0===n&&(n=null);var r=this._asset.view,s=r.unproject(t,e,0,i._rayPosition),a=r.unproject(t,e,1,i._rayDirection);return a.decrementBy(s),this._getCollisionInternal(s,a,o,!1,n)},i.prototype._getCollisionInternal=function(t,e,i,o,n){if(!this._isIntersectingRayInternal(this._asset,t,e,i))return null;this._collectEntities(this._collectedEntities,this._dragNode);var r=this._getPickingCollision(n);return this._collectedEntities.length=0,r},i.prototype.getObjectsUnderPoint=function(t,e){if(!this._isIntersectingRayInternal(this._asset,t,e,!0))return[];this._collectEntities(this._collectedEntities,this._dragNode);var i=this._getColliders();return this._collectedEntities.length=0,i},i.prototype._collectEntities=function(t,e){var i;void 0===e&&(e=null);for(var o=this._pickers.length-1;o>=0;o--)(i=this._pickers[o]).node!=e&&i._collectEntities(t,e);var n,r=this._asset;for(o=this._entities.length-1;o>=0;o--)(n=this._entities[o]).pickingCollision.rootNode=r,t.push(n)},i.prototype.setIgnoreList=function(t){this._ignoredEntities=t},i.prototype.isIgnored=function(t){if(this._ignoredEntities)for(var e=this._ignoredEntities.length,i=0;i<e;i++)if(this._ignoredEntities[i]==t)return!0;return!1},i.sortOnNearT=function(t,e){return t.pickingCollision.rayEntryDistance>e.pickingCollision.rayEntryDistance?1:t.pickingCollision.rayEntryDistance<e.pickingCollision.rayEntryDistance?-1:0},i.prototype._getPickingCollision=function(t){var e,o;void 0===t&&(t=null),this._collectedEntities=this._collectedEntities.sort(i.sortOnNearT);for(var n=this._collectedEntities.length,r=0;r<n&&(o=(e=this._collectedEntities[r]).pickingCollision,null==t||o.rayEntryDistance<t.rayEntryDistance);r++)if(this._shapeFlag||e.shapeFlag)o.rayEntryDistance=Number.MAX_VALUE,e.isIntersectingShape(this.findClosestCollision)&&(t=o);else if(!o.rayOriginIsInsideBounds){t=o;break}return t&&i.updatePosition(t),this._dragNode&&"[asset MovieClip]"==this._dragNode.container.assetType&&this._dragNode.container.adapter&&this._dragNode.container.adapter.setDropTarget(t?t.containerNode:null),t},i.prototype._getColliders=function(){for(var t,e=[],i=this._collectedEntities.length,o=0;o<i;o++)(t=this._collectedEntities[o]).pickingCollision.rayEntryDistance=Number.MAX_VALUE,t.isIntersectingShape(!1)&&e.push(t.node.container);return e},i.updatePosition=function(t){var i=t.position||(t.position=new e.Vector3D),o=t.rayDirection,n=t.rayPosition,r=t.rayEntryDistance;i.x=n.x+r*o.x,i.y=n.y+r*o.y,i.z=n.z+r*o.z},i.prototype.dispose=function(){},i.prototype.applyEntity=function(t){var e;if(t.container.getEntity()){var i=this.pickGroup.abstractions.getAbstraction(t);i._isIntersectingRayInternal(this._rootNode,this._globalRayPosition,this._globalRayDirection)&&this._entities.push(i)}else null===(e=this.pickGroup.abstractions.checkAbstraction(t))||void 0===e||e.onClear()},i._rayPosition=new e.Vector3D,i._rayDirection=new e.Vector3D,i}(e.AbstractionBase),I=function(i){function o(){var t=null!==i&&i.apply(this,arguments)||this;return t._boundsPickers=[],t}return n(o,i),Object.defineProperty(o.prototype,"node",{get:function(){return this._asset},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"width",{get:function(){var t=this.getBoxBounds();return null==t?0:t.width},set:function(t){var e=this._asset.container.transform,i=this.getBoxBounds();if(null!=i){var n=e.rotation,r=e.matrix3D,s=r.transformBox(i,o.tmpBox),a=s.width>0?t/s.width:1;if(0!==n.z){var h=o.tmpMatrix;h.copyFrom(r),h.appendScale(a||o.MINIMAL_SCALE,1,1);var l=h.decompose()[2];e.scaleTo(l.x,l.y,l.z)}else{var c=e.scale;e.scaleTo(c.x*a||o.MINIMAL_SCALE,c.y,c.z)}}},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"height",{get:function(){var t=this.getBoxBounds();return null==t?0:t.height},set:function(t){var e=this._asset.container.transform,i=this.getBoxBounds();if(null!=i){var n=e.matrix3D,r=e.rotation,s=n.transformBox(i,o.tmpBox),a=s.height>0?t/s.height:1;if(0!==r.z){var h=o.tmpMatrix;h.copyFrom(n),h.appendScale(1,a||o.MINIMAL_SCALE,1);var l=h.decompose()[2];e.scaleTo(l.x,l.y,l.z)}else{var c=e.scale;e.scaleTo(c.x,c.y*a||o.MINIMAL_SCALE,c.z)}}},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"depth",{get:function(){var t=this.getBoxBounds();return null==t?0:t.depth*this._asset.container.transform.scale.z},set:function(t){var e=this.getBoxBounds();if(null!=e&&0!=e.depth){var i=this._asset.container;i.transform.scaleTo(i.transform.scale.x,i.transform.scale.y,t/e.depth)}},enumerable:!1,configurable:!0}),o.prototype.init=function(t,e){i.prototype.init.call(this,t,e),this._pickGroup=e.pickGroup,this._boundingVolumePools={}},o.prototype.onInvalidate=function(){for(var t in i.prototype.onInvalidate.call(this),this._boundingVolumePools)this._boundingVolumePools[t].abstractions.forEach((function(t){return t.onInvalidate()}))},o.prototype.traverse=function(){this._invalid=!1,this._boundsPickers.length=0,this._asset.acceptTraverser(this)},o.prototype.getTraverser=function(t){return this},o.prototype.enterNode=function(t){return!("[asset TextSprite]"==t.container.assetType)},o.prototype.getBoundingVolume=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=null),null==t&&(t=this._asset),null==e&&(e=this._asset.container.defaultBoundingVolume),(this._boundingVolumePools[e]||(this._boundingVolumePools[e]=new b(this,e))).abstractions.getAbstraction(t)},o.prototype.getBoxBounds=function(e,i,o){return void 0===e&&(e=null),void 0===i&&(i=!1),void 0===o&&(o=!1),this.getBoundingVolume(e,i?o?t.BoundingVolumeType.BOX_BOUNDS_FAST:t.BoundingVolumeType.BOX_BOUNDS:o?t.BoundingVolumeType.BOX_FAST:t.BoundingVolumeType.BOX).getBox()},o.prototype.getSphereBounds=function(e,i,o){return void 0===e&&(e=null),void 0===i&&(i=!1),void 0===o&&(o=!1),this.getBoundingVolume(e,i?o?t.BoundingVolumeType.SPHERE_BOUNDS_FAST:t.BoundingVolumeType.SPHERE_BOUNDS:o?t.BoundingVolumeType.SPHERE_FAST:t.BoundingVolumeType.SPHERE).getSphere()},o.prototype.hitTestPoint=function(t,e,i){return void 0===i&&(i=!1),this._hitTestPointInternal(this._asset,t,e,i,!1)},o.prototype._hitTestPointInternal=function(t,e,i,n,r){void 0===n&&(n=!1),void 0===r&&(r=!1);var s=this._asset;if(!(-1==s.getMaskId()||r&&n))return!1;this._invalid&&this.traverse();var a=o.tmpPoint;a.setTo(e,i),s.globalToLocal(a,a);var h=this.getBoxBounds(null,!1,!0);if(null==h||!h.contains(a.x,a.y,0))return!1;if(!n||"[asset TextField]"==s.container.assetType||"[asset Billboard]"==s.container.assetType)return!0;var l=this._boundsPickers.length;if(l)for(var c=0;c<l;++c)if(this._boundsPickers[c]._hitTestPointInternal(t,e,i,n,r))return!0;return!1},o.prototype.hitTestObject=function(t){var e=this._asset,i=t.getBoxBounds(e,!0,!0);if(null==i)return!1;var o=this.getBoxBounds(e,!0,!0);return null!=o&&(!!i.intersects(o)&&t.getBoxBounds(e,!0).intersects(this.getBoxBounds(e,!0)))},o.prototype._getBoxBoundsInternal=function(t,i,o,n,r){void 0===t&&(t=null),void 0===i&&(i=!0),void 0===o&&(o=!0),void 0===n&&(n=null),void 0===r&&(r=null),this._invalid&&this.traverse();var s=this._boundsPickers.length;if(s>0){this._asset,new e.Matrix3D;var a;a=t||this._asset.getInverseMatrix3D();for(var h=0;h<s;++h)r=this._boundsPickers[h]._getBoxBoundsInternal(a,i,o,n,r)}return r},o.prototype._getSphereBoundsInternal=function(t,i,o,n,r,s){void 0===t&&(t=null),void 0===i&&(i=null),void 0===o&&(o=!0),void 0===n&&(n=!0),void 0===r&&(r=null),void 0===s&&(s=null),this._invalid&&this.traverse();var a=this._getBoxBoundsInternal(i,o,n);if(null!=a){t||((t=new e.Vector3D).x=a.x+a.width/2,t.y=a.y+a.height/2,t.z=a.z+a.depth/2);var h=this._boundsPickers.length;if(h>0)for(var l=this._asset,c=new e.Matrix3D,u=0;u<h;++u)this._boundsPickers[u].node!=l?(i?c.copyFrom(i):c.identity(),c.prepend(this._boundsPickers[u].node.container.transform.matrix3D),this._boundsPickers[u].node.container._registrationMatrix3D&&c.prepend(this._boundsPickers[u].node.container._registrationMatrix3D),s=this._boundsPickers[u]._getSphereBoundsInternal(t,c,o,n,r,s)):s=this._boundsPickers[u]._getSphereBoundsInternal(t,i,o,n