UNPKG

pixi-dragonbones-runtime

Version:
3 lines (2 loc) 15.3 kB
import{BaseObject as t}from"../core/BaseObject.mjs";import{DragonBones as i}from"../core/DragonBones.mjs";import{EventObject as s}from"../event/EventObject.mjs";import{ColorTransform as a}from"../geom/ColorTransform.mjs";import{Matrix as e}from"../geom/Matrix.mjs";import"../geom/Transform.mjs";import{Armature as r}from"./Armature.mjs";import{TransformObject as l}from"./TransformObject.mjs";class h extends t{constructor(){super(...arguments),this.deformVertices=[]}static toString(){return"[class dragonBones.DisplayFrame]"}_onClear(){this.rawDisplayData=null,this.displayData=null,this.textureData=null,this.display=null,this.deformVertices.length=0}updateDeformVertices(){if(null===this.rawDisplayData||0!==this.deformVertices.length)return;let t;if(2===this.rawDisplayData.type)t=this.rawDisplayData.geometry;else{if(4!==this.rawDisplayData.type)return;t=this.rawDisplayData.geometry}let i=0;i=null!==t.weight?2*t.weight.count:2*t.data.intArray[t.offset+0],this.deformVertices.length=i;for(let t=0,i=this.deformVertices.length;t<i;++t)this.deformVertices[t]=0}getGeometryData(){if(null!==this.displayData){if(2===this.displayData.type)return this.displayData.geometry;if(4===this.displayData.type)return this.displayData.geometry}if(null!==this.rawDisplayData){if(2===this.rawDisplayData.type)return this.rawDisplayData.geometry;if(4===this.rawDisplayData.type)return this.rawDisplayData.geometry}return null}getBoundingBox(){return null!==this.displayData&&3===this.displayData.type?this.displayData.boundingBox:null!==this.rawDisplayData&&3===this.rawDisplayData.type?this.rawDisplayData.boundingBox:null}getTextureData(){if(null!==this.displayData){if(0===this.displayData.type)return this.displayData.texture;if(2===this.displayData.type)return this.displayData.texture}if(null!==this.textureData)return this.textureData;if(null!==this.rawDisplayData){if(0===this.rawDisplayData.type)return this.rawDisplayData.texture;if(2===this.rawDisplayData.type)return this.rawDisplayData.texture}return null}}class n extends l{constructor(){super(...arguments),this._localMatrix=new e,this._colorTransform=new a,this._displayFrames=[],this._geometryBones=[],this._rawDisplay=null,this._meshDisplay=null,this._display=null}_onClear(){super._onClear();const t=[];for(const i of this._displayFrames){const s=i.display;s!==this._rawDisplay&&s!==this._meshDisplay&&t.indexOf(s)<0&&t.push(s),i.returnToPool()}for(const i of t)i instanceof r?i.dispose():this._disposeDisplay(i,!0);null!==this._meshDisplay&&this._meshDisplay!==this._rawDisplay&&this._disposeDisplay(this._meshDisplay,!1),null!==this._rawDisplay&&this._disposeDisplay(this._rawDisplay,!1),this.displayController=null,this._displayDataDirty=!1,this._displayDirty=!1,this._geometryDirty=!1,this._textureDirty=!1,this._visibleDirty=!1,this._blendModeDirty=!1,this._zOrderDirty=!1,this._colorDirty=!1,this._verticesDirty=!1,this._transformDirty=!1,this._visible=!0,this._blendMode=0,this._displayIndex=-1,this._animationDisplayIndex=-1,this._zOrder=0,this._zIndex=0,this._cachedFrameIndex=-1,this._pivotX=0,this._pivotY=0,this._localMatrix.identity(),this._colorTransform.identity(),this._displayFrames.length=0,this._geometryBones.length=0,this._slotData=null,this._displayFrame=null,this._geometryData=null,this._boundingBoxData=null,this._textureData=null,this._rawDisplay=null,this._meshDisplay=null,this._display=null,this._childArmature=null,this._parent=null,this._cachedFrameIndices=null}_hasDisplay(t){for(const i of this._displayFrames)if(i.display===t)return!0;return!1}_isBonesUpdate(){for(const t of this._geometryBones)if(null!==t&&t._childrenTransformDirty)return!0;return!1}_updateAlpha(){const t=this._alpha*this._parent._globalAlpha;this._globalAlpha!==t&&(this._globalAlpha=t,this._colorDirty=!0)}_updateDisplayData(){const t=this._displayFrame,s=this._geometryData,a=this._textureData;let e=null,r=null;if(this._displayFrame=null,this._geometryData=null,this._boundingBoxData=null,this._textureData=null,this._displayIndex>=0&&this._displayIndex<this._displayFrames.length&&(this._displayFrame=this._displayFrames[this._displayIndex],e=this._displayFrame.rawDisplayData,r=this._displayFrame.displayData,this._geometryData=this._displayFrame.getGeometryData(),this._boundingBoxData=this._displayFrame.getBoundingBox(),this._textureData=this._displayFrame.getTextureData()),this._displayFrame!==t||this._geometryData!==s||this._textureData!==a){if(null===this._geometryData&&null!==this._textureData){const t=null!==r&&0===r.type?r:e,s=this._textureData.parent.scale*this._armature._armatureData.scale,a=this._textureData.frame;this._pivotX=t.pivot.x,this._pivotY=t.pivot.y;const l=null!==a?a:this._textureData.region;let h=l.width,o=l.height;this._textureData.rotated&&null===a&&(h=l.height,o=l.width),this._pivotX*=h*s,this._pivotY*=o*s,null!==a&&(this._pivotX+=a.x*s,this._pivotY+=a.y*s),null!==e&&t!==e&&(e.transform.toMatrix(n._helpMatrix),n._helpMatrix.invert(),n._helpMatrix.transformPoint(0,0,n._helpPoint),this._pivotX-=n._helpPoint.x,this._pivotY-=n._helpPoint.y,t.transform.toMatrix(n._helpMatrix),n._helpMatrix.invert(),n._helpMatrix.transformPoint(0,0,n._helpPoint),this._pivotX+=n._helpPoint.x,this._pivotY+=n._helpPoint.y),i.yDown||(this._pivotY=(this._textureData.rotated?this._textureData.region.width:this._textureData.region.height)*s-this._pivotY)}else this._pivotX=0,this._pivotY=0;if(this.origin=null!==e?e.transform:null!==r?r.transform:null,null!==this.origin?this.global.copyFrom(this.origin).add(this.offset).toMatrix(this._localMatrix):this.global.copyFrom(this.offset).toMatrix(this._localMatrix),this._geometryData!==s)if(this._geometryDirty=!0,this._verticesDirty=!0,null!==this._geometryData){if(this._geometryBones.length=0,null!==this._geometryData.weight)for(let t=0,i=this._geometryData.weight.bones.length;t<i;++t){const i=this._armature.getBone(this._geometryData.weight.bones[t].name);this._geometryBones.push(i)}}else this._geometryBones.length=0,this._geometryData=null;this._textureDirty=this._textureData!==a,this._transformDirty=!0}}_updateDisplay(){const i=null!==this._display?this._display:this._rawDisplay,a=this._childArmature;null!==this._displayFrame?(this._display=this._displayFrame.display,null!==this._display&&this._display instanceof r?(this._childArmature=this._display,this._display=this._childArmature.display):this._childArmature=null):(this._display=null,this._childArmature=null);if((null!==this._display?this._display:this._rawDisplay)!==i&&(this._textureDirty=!0,this._visibleDirty=!0,this._blendModeDirty=!0,this._colorDirty=!0,this._transformDirty=!0,this._onUpdateDisplay(),this._replaceDisplay(i)),this._childArmature!==a&&(null!==a&&(a._parent=null,a.clock=null,a.inheritAnimation&&a.animation.reset()),null!==this._childArmature&&(this._childArmature._parent=this,this._childArmature.clock=this._armature.clock,this._childArmature.inheritAnimation))){if(0===this._childArmature.cacheFrameRate){const t=this._armature.cacheFrameRate;0!==t&&(this._childArmature.cacheFrameRate=t)}if(null!==this._displayFrame){let i=null,a=null!==this._displayFrame.displayData?this._displayFrame.displayData:this._displayFrame.rawDisplayData;if(null!==a&&1===a.type&&(i=a.actions),null!==i&&i.length>0)for(const a of i){const i=t.borrowObject(s);s.actionDataToInstance(a,i,this._armature),i.slot=this,this._armature._bufferAction(i,!1)}else this._childArmature.animation.play()}}}_updateGlobalTransformMatrix(t){const i=0===this._parent._boneData.type?this._parent.globalTransformMatrix:this._parent._getGlobalTransformMatrix(this.global.x,this.global.y);this.globalTransformMatrix.copyFrom(this._localMatrix),this.globalTransformMatrix.concat(i),t?this.global.fromMatrix(this.globalTransformMatrix):this._globalDirty=!0}_setDisplayIndex(t,i=!1){if(i){if(this._animationDisplayIndex===t)return;this._animationDisplayIndex=t}this._displayIndex!==t&&(this._displayIndex=t<this._displayFrames.length?t:this._displayFrames.length-1,this._displayDataDirty=!0,this._displayDirty=this._displayIndex<0||this._display!==this._displayFrames[this._displayIndex].display)}_setZOrder(t){return this._zOrder,this._zOrder=t,this._zOrderDirty=!0,this._zOrderDirty}_setColor(t){return this._colorTransform.copyFrom(t),this._colorDirty=!0}init(t,i,s,a){if(null!==this._slotData)return;this._slotData=t,this._colorDirty=!0,this._blendModeDirty=!0,this._blendMode=this._slotData.blendMode,this._zOrder=this._slotData.zOrder,this._zIndex=this._slotData.zIndex,this._alpha=this._slotData.alpha,this._colorTransform.copyFrom(this._slotData.color),this._rawDisplay=s,this._meshDisplay=a,this._armature=i;const e=this._armature.getBone(this._slotData.parent.name);null!==e&&(this._parent=e),this._armature._addSlot(this),this._initDisplay(this._rawDisplay,!1),this._rawDisplay!==this._meshDisplay&&this._initDisplay(this._meshDisplay,!1),this._onUpdateDisplay(),this._addDisplay()}update(t){if(this._displayDataDirty&&(this._updateDisplayData(),this._displayDataDirty=!1),this._displayDirty&&(this._updateDisplay(),this._displayDirty=!1),(this._geometryDirty||this._textureDirty)&&(null!==this._display&&this._display!==this._rawDisplay&&this._display!==this._meshDisplay||this._updateFrame(),this._geometryDirty=!1,this._textureDirty=!1),null!==this._display){if(this._visibleDirty&&(this._updateVisible(),this._visibleDirty=!1),this._blendModeDirty&&(this._updateBlendMode(),this._blendModeDirty=!1),this._colorDirty&&(this._updateColor(),this._colorDirty=!1),this._zOrderDirty&&(this._updateZOrder(),this._zOrderDirty=!1),null!==this._geometryData&&this._display===this._meshDisplay){const t=null!==this._geometryData.weight,i=0!==this._parent._boneData.type;if((this._verticesDirty||t&&this._isBonesUpdate()||i&&this._parent._childrenTransformDirty)&&(this._verticesDirty=!1,this._updateMesh()),t||i)return}if(t>=0&&null!==this._cachedFrameIndices){const i=this._cachedFrameIndices[t];i>=0&&this._cachedFrameIndex===i?this._transformDirty=!1:i>=0?(this._transformDirty=!0,this._cachedFrameIndex=i):this._transformDirty||this._parent._childrenTransformDirty?(this._transformDirty=!0,this._cachedFrameIndex=-1):this._cachedFrameIndex>=0?(this._transformDirty=!1,this._cachedFrameIndices[t]=this._cachedFrameIndex):(this._transformDirty=!0,this._cachedFrameIndex=-1)}else(this._transformDirty||this._parent._childrenTransformDirty)&&(t=-1,this._transformDirty=!0,this._cachedFrameIndex=-1);if(this._transformDirty){if(this._cachedFrameIndex<0){const i=t>=0;this._updateGlobalTransformMatrix(i),i&&null!==this._cachedFrameIndices&&(this._cachedFrameIndex=this._cachedFrameIndices[t]=this._armature._armatureData.setCacheFrame(this.globalTransformMatrix,this.global))}else this._armature._armatureData.getCacheFrame(this.globalTransformMatrix,this.global,this._cachedFrameIndex);this._updateTransform(),this._transformDirty=!1}}}invalidUpdate(){this._displayDataDirty=!0,this._displayDirty=!0,this._transformDirty=!0}updateTransformAndMatrix(){this._transformDirty&&(this._updateGlobalTransformMatrix(!1),this._transformDirty=!1)}replaceRawDisplayData(t,i=-1){if(i<0)i=this._displayIndex<0?0:this._displayIndex;else if(i>=this._displayFrames.length)return;const s=this._displayFrames[i];if(s.rawDisplayData!==t){if(s.deformVertices.length=0,s.rawDisplayData=t,null===s.rawDisplayData){const t=this._armature._armatureData.defaultSkin;if(null!==t){const a=t.getDisplays(this._slotData.name);null!==a&&i<a.length&&(s.rawDisplayData=a[i])}}i===this._displayIndex&&(this._displayDataDirty=!0)}}replaceDisplayData(t,i=-1){if(i<0)i=this._displayIndex<0?0:this._displayIndex;else if(i>=this._displayFrames.length)return;const s=this._displayFrames[i];s.displayData!==t&&s.rawDisplayData!==t&&(s.displayData=t,i===this._displayIndex&&(this._displayDataDirty=!0))}replaceTextureData(t,i=-1){if(i<0)i=this._displayIndex<0?0:this._displayIndex;else if(i>=this._displayFrames.length)return;const s=this._displayFrames[i];s.textureData!==t&&(s.textureData=t,i===this._displayIndex&&(this._displayDataDirty=!0))}replaceDisplay(t,i=-1){if(i<0)i=this._displayIndex<0?0:this._displayIndex;else if(i>=this._displayFrames.length)return;const s=this._displayFrames[i];if(s.display!==t){const a=s.display;s.display=t,null===a||a===this._rawDisplay||a===this._meshDisplay||this._hasDisplay(a)||a instanceof r||this._disposeDisplay(a,!0),null===t||t===this._rawDisplay||t===this._meshDisplay||this._hasDisplay(a)||t instanceof r||this._initDisplay(t,!0),i===this._displayIndex&&(this._displayDirty=!0)}}containsPoint(t,i){return null!==this._boundingBoxData&&(this.updateTransformAndMatrix(),n._helpMatrix.copyFrom(this.globalTransformMatrix),n._helpMatrix.invert(),n._helpMatrix.transformPoint(t,i,n._helpPoint),this._boundingBoxData.containsPoint(n._helpPoint.x,n._helpPoint.y))}intersectsSegment(t,i,s,a,e=null,r=null,l=null){if(null===this._boundingBoxData)return 0;this.updateTransformAndMatrix(),n._helpMatrix.copyFrom(this.globalTransformMatrix),n._helpMatrix.invert(),n._helpMatrix.transformPoint(t,i,n._helpPoint),t=n._helpPoint.x,i=n._helpPoint.y,n._helpMatrix.transformPoint(s,a,n._helpPoint),s=n._helpPoint.x,a=n._helpPoint.y;const h=this._boundingBoxData.intersectsSegment(t,i,s,a,e,r,l);return h>0&&(1===h||2===h?null!==e?(this.globalTransformMatrix.transformPoint(e.x,e.y,e),null!==r&&(r.x=e.x,r.y=e.y)):null!==r&&this.globalTransformMatrix.transformPoint(r.x,r.y,r):(null!==e&&this.globalTransformMatrix.transformPoint(e.x,e.y,e),null!==r&&this.globalTransformMatrix.transformPoint(r.x,r.y,r)),null!==l&&(this.globalTransformMatrix.transformPoint(Math.cos(l.x),Math.sin(l.x),n._helpPoint,!0),l.x=Math.atan2(n._helpPoint.y,n._helpPoint.x),this.globalTransformMatrix.transformPoint(Math.cos(l.y),Math.sin(l.y),n._helpPoint,!0),l.y=Math.atan2(n._helpPoint.y,n._helpPoint.x))),h}getDisplayFrameAt(t){return this._displayFrames[t]}get visible(){return this._visible}set visible(t){this._visible!==t&&(this._visible=t,this._updateVisible())}get displayFrameCount(){return this._displayFrames.length}set displayFrameCount(i){const s=this._displayFrames.length;if(s<i){this._displayFrames.length=i;for(let a=s;a<i;++a)this._displayFrames[a]=t.borrowObject(h)}else if(s>i){for(let t=s-1;t<i;--t)this.replaceDisplay(null,t),this._displayFrames[t].returnToPool();this._displayFrames.length=i}}get displayIndex(){return this._displayIndex}set displayIndex(t){this._setDisplayIndex(t),this.update(-1)}get name(){return this._slotData.name}get displayList(){const t=new Array;for(const i of this._displayFrames)t.push(i.display);return t}set displayList(t){this.displayFrameCount=t.length;let i=0;for(const s of t)this.replaceDisplay(s,i++)}get slotData(){return this._slotData}get boundingBoxData(){return this._boundingBoxData}get rawDisplay(){return this._rawDisplay}get meshDisplay(){return this._meshDisplay}get display(){return this._display}set display(t){this._display!==t&&(0===this._displayFrames.length&&(this.displayFrameCount=1,this._displayIndex=0),this.replaceDisplay(t,this._displayIndex))}get childArmature(){return this._childArmature}set childArmature(t){this._childArmature!==t&&(this.display=t)}get parent(){return this._parent}getDisplay(){return this._display}setDisplay(t){this.display=t}}export{h as DisplayFrame,n as Slot}; //# sourceMappingURL=Slot.mjs.map