UNPKG

pixi-dragonbones-runtime

Version:
3 lines (2 loc) 5.96 kB
import{BaseObject as t}from"../core/BaseObject.mjs";import"../core/DragonBones.mjs";import{TimelineData as e,AnimationData as a,AnimationTimelineData as r}from"../model/AnimationData.mjs";import"../model/ArmatureData.mjs";import{WeightData as n}from"../model/DisplayData.mjs";import"../geom/Transform.mjs";import{DataParser as i}from"./DataParser.mjs";import{ObjectDataParser as s}from"./ObjectDataParser.mjs";class o extends s{_inRange(t,e,a){return e<=t&&t<=a}_decodeUTF8(t){let e,a=0,r="",n=0,i=0,s=0,o=0;for(;t.length>a;){let f=t[a++];if(-1===f)e=0!==i?65533:-1;else if(0===i)this._inRange(f,0,127)?e=f:(this._inRange(f,194,223)?(i=1,o=128,n=f-192):this._inRange(f,224,239)?(i=2,o=2048,n=f-224):this._inRange(f,240,244)&&(i=3,o=65536,n=f-240),n*=Math.pow(64,i),e=null);else if(this._inRange(f,128,191))if(s+=1,n+=(f-128)*Math.pow(64,i-s),s!==i)e=null;else{let t=n,a=o;n=0,i=0,s=0,o=0,e=this._inRange(t,a,1114111)&&!this._inRange(t,55296,57343)?t:f}else n=0,i=0,s=0,o=0,a--,e=f;null!==e&&-1!==e&&(e<=65535?e>0&&(r+=String.fromCharCode(e)):(e-=65536,r+=String.fromCharCode(55296+(e>>10&1023)),r+=String.fromCharCode(56320+(1023&e))))}return r}_parseBinaryTimeline(a,r,n=null){const i=null!==n?n:t.borrowObject(e);i.type=a,i.offset=r,this._timeline=i;const s=this._timelineArrayBuffer[i.offset+2];if(1===s)i.frameIndicesOffset=-1;else{let t=0;const e=this._animation.frameCount+1,a=this._data.frameIndices;t=a.length,a.length+=e,i.frameIndicesOffset=t;for(let r=0,n=0,o=0,f=0;r<e;++r)o+f<=r&&n<s&&(o=this._frameArrayBuffer[this._animation.frameOffset+this._timelineArrayBuffer[i.offset+5+n]],f=n===s-1?this._animation.frameCount-o:this._frameArrayBuffer[this._animation.frameOffset+this._timelineArrayBuffer[i.offset+5+n+1]]-o,n++),a[t+r]=n-1}return this._timeline=null,i}_parseAnimation(e){const n=t.borrowObject(a);n.blendType=i._getAnimationBlendType(s._getString(e,i.BLEND_TYPE,"")),n.frameCount=s._getNumber(e,i.DURATION,0),n.playTimes=s._getNumber(e,i.PLAY_TIMES,1),n.duration=n.frameCount/this._armature.frameRate,n.fadeInTime=s._getNumber(e,i.FADE_IN_TIME,0),n.scale=s._getNumber(e,i.SCALE,1),n.name=s._getString(e,i.NAME,i.DEFAULT_NAME),0===n.name.length&&(n.name=i.DEFAULT_NAME);const o=e[i.OFFSET];if(n.frameIntOffset=o[0],n.frameFloatOffset=o[1],n.frameOffset=o[2],this._animation=n,i.ACTION in e&&(n.actionTimeline=this._parseBinaryTimeline(0,e[i.ACTION])),i.Z_ORDER in e&&(n.zOrderTimeline=this._parseBinaryTimeline(1,e[i.Z_ORDER])),i.BONE in e){const t=e[i.BONE];for(let e in t){const a=t[e],r=this._armature.getBone(e);if(null!==r)for(let t=0,e=a.length;t<e;t+=2){const e=a[t],n=a[t+1],i=this._parseBinaryTimeline(e,n);this._animation.addBoneTimeline(r.name,i)}}}if(i.SLOT in e){const t=e[i.SLOT];for(let e in t){const a=t[e],r=this._armature.getSlot(e);if(null!==r)for(let t=0,e=a.length;t<e;t+=2){const e=a[t],n=a[t+1],i=this._parseBinaryTimeline(e,n);this._animation.addSlotTimeline(r.name,i)}}}if(i.CONSTRAINT in e){const t=e[i.CONSTRAINT];for(let e in t){const a=t[e],r=this._armature.getConstraint(e);if(null!==r)for(let t=0,e=a.length;t<e;t+=2){const e=a[t],n=a[t+1],i=this._parseBinaryTimeline(e,n);this._animation.addConstraintTimeline(r.name,i)}}}if(i.TIMELINE in e){const a=e[i.TIMELINE];for(const e of a){const a=s._getNumber(e,i.OFFSET,0);if(a>=0){const o=s._getNumber(e,i.TYPE,0),f=s._getString(e,i.NAME,"");let _=null;if(40===o&&0!==n.blendType){_=t.borrowObject(r);const a=_;a.x=s._getNumber(e,i.X,0),a.y=s._getNumber(e,i.Y,0)}switch(_=this._parseBinaryTimeline(o,a,_),o){case 0:case 1:break;case 11:case 12:case 13:case 50:case 60:this._animation.addBoneTimeline(f,_);break;case 20:case 21:case 22:case 23:case 24:this._animation.addSlotTimeline(f,_);break;case 30:this._animation.addConstraintTimeline(f,_);break;case 40:case 41:case 42:this._animation.addAnimationTimeline(f,_)}}}}return this._animation=null,n}_parseGeometry(e,a){a.offset=e[i.OFFSET],a.data=this._data;let r=this._intArrayBuffer[a.offset+3];if(r<-1&&(r+=65536),r>=0){const e=t.borrowObject(n),i=this._intArrayBuffer[a.offset+0],s=this._intArrayBuffer[r+0];e.offset=r;for(let t=0;t<s;++t){const a=this._intArrayBuffer[r+2+t];e.addBone(this._rawBones[a])}let o=r+2+s,f=0;for(let t=0,e=i;t<e;++t){const t=this._intArrayBuffer[o++];f+=t,o+=t}e.count=f,a.weight=e}}_parseArray(t){const e=t[i.OFFSET],a=e[1],r=e[3],n=e[5],s=e[7],o=e[9],f=e[11],_=e.length>12?e[13]:0,m=new Int16Array(this._binary,this._binaryOffset+e[0],a/Int16Array.BYTES_PER_ELEMENT),l=new Float32Array(this._binary,this._binaryOffset+e[2],r/Float32Array.BYTES_PER_ELEMENT),h=new Int16Array(this._binary,this._binaryOffset+e[4],n/Int16Array.BYTES_PER_ELEMENT),y=new Float32Array(this._binary,this._binaryOffset+e[6],s/Float32Array.BYTES_PER_ELEMENT),c=new Int16Array(this._binary,this._binaryOffset+e[8],o/Int16Array.BYTES_PER_ELEMENT),A=new Uint16Array(this._binary,this._binaryOffset+e[10],f/Uint16Array.BYTES_PER_ELEMENT),E=_>0?new Int16Array(this._binary,this._binaryOffset+e[12],_/Uint16Array.BYTES_PER_ELEMENT):m;this._data.binary=this._binary,this._data.intArray=this._intArrayBuffer=m,this._data.floatArray=l,this._data.frameIntArray=h,this._data.frameFloatArray=y,this._data.frameArray=this._frameArrayBuffer=c,this._data.timelineArray=this._timelineArrayBuffer=A,this._data.colorArray=E}parseDragonBonesData(t,e=1){console.assert(null!=t&&t instanceof ArrayBuffer,"Data error.");const a=new Uint8Array(t,0,8);if(a[0]!=="D".charCodeAt(0)||a[1]!=="B".charCodeAt(0)||a[2]!=="D".charCodeAt(0)||a[3]!=="T".charCodeAt(0))return console.assert(!1,"Nonsupport data."),null;const r=new Uint32Array(t,8,1)[0],n=new Uint8Array(t,12,r),i=this._decodeUTF8(n),s=JSON.parse(i);return this._binaryOffset=12+r,this._binary=t,super.parseDragonBonesData(s,e)}static getInstance(){return null===o._binaryDataParserInstance&&(o._binaryDataParserInstance=new o),o._binaryDataParserInstance}}o._binaryDataParserInstance=null;export{o as BinaryDataParser}; //# sourceMappingURL=BinaryDataParser.mjs.map