UNPKG

pixi-dragonbones-runtime

Version:
3 lines (2 loc) 8.5 kB
"use strict";var t=require("../armature/Armature.cjs"),a=require("../armature/Bone.cjs"),e=require("../armature/Constraint.cjs"),r=require("../core/BaseObject.cjs");require("../core/DragonBones.cjs");var n=require("../event/EventObject.cjs");require("../geom/Transform.cjs"),require("../armature/TransformObject.cjs");var s=require("../armature/Surface.cjs"),l=require("../parser/BinaryDataParser.cjs");require("../parser/DataParser.cjs");var i=require("../parser/ObjectDataParser.cjs");class o{constructor(t=null){this.autoSearch=!1,this._dragonBonesDataMap={},this._textureAtlasDataMap={},this._dragonBones=null,this._dataParser=null,null===o._objectParser&&(o._objectParser=new i.ObjectDataParser),null===o._binaryParser&&(o._binaryParser=new l.BinaryDataParser),this._dataParser=null!==t?t:o._objectParser}_isSupportMesh(){return!0}_getTextureData(t,a){if(t in this._textureAtlasDataMap)for(const e of this._textureAtlasDataMap[t]){const t=e.getTexture(a);if(null!==t)return t}if(this.autoSearch)for(let t in this._textureAtlasDataMap)for(const e of this._textureAtlasDataMap[t])if(e.autoSearch){const t=e.getTexture(a);if(null!==t)return t}return null}_fillBuildArmaturePackage(t,a,e,r,n){let s=null,l=null;if(a.length>0&&a in this._dragonBonesDataMap&&(s=this._dragonBonesDataMap[a],l=s.getArmature(e)),null===l&&(0===a.length||this.autoSearch))for(let t in this._dragonBonesDataMap)if(s=this._dragonBonesDataMap[t],(0===a.length||s.autoSearch)&&(l=s.getArmature(e),null!==l)){a=t;break}if(null!==l){if(t.dataName=a,t.textureAtlasName=n,t.data=s,t.armature=l,t.skin=null,r.length>0&&(t.skin=l.getSkin(r),null===t.skin&&this.autoSearch))for(let a in this._dragonBonesDataMap){const e=this._dragonBonesDataMap[a].getArmature(r);if(null!==e){t.skin=e.defaultSkin;break}}return null===t.skin&&(t.skin=l.defaultSkin),!0}return!1}_buildBones(t,e){for(const n of t.armature.sortedBones){r.BaseObject.borrowObject(0===n.type?a.Bone:s.Surface).init(n,e)}}_buildSlots(t,a){const e=t.skin,r=t.armature.defaultSkin;if(null===e||null===r)return;const n={};for(let t in r.displays){const a=r.getDisplays(t);n[t]=a}if(e!==r)for(let t in e.displays){const a=e.getDisplays(t);n[t]=a}for(const e of t.armature.sortedSlots){const r=e.name in n?n[e.name]:null,s=this._buildSlot(t,e,a);if(null!==r){s.displayFrameCount=r.length;for(let a=0,e=s.displayFrameCount;a<e;++a){const e=r[a];if(s.replaceRawDisplayData(e,a),null!==e){if(t.textureAtlasName.length>0){const r=this._getTextureData(t.textureAtlasName,e.path);s.replaceTextureData(r,a)}const r=this._getSlotDisplay(t,e,s);s.replaceDisplay(r,a)}else s.replaceDisplay(null)}}s._setDisplayIndex(e.displayIndex,!0)}}_buildConstraints(t,a){const n=t.armature.constraints;for(let t in n){const s=n[t];switch(s.type){case 0:const t=r.BaseObject.borrowObject(e.IKConstraint);t.init(s,a),a._addConstraint(t);break;case 1:const n=r.BaseObject.borrowObject(e.PathConstraint);n.init(s,a),a._addConstraint(n);break;default:const l=r.BaseObject.borrowObject(e.IKConstraint);l.init(s,a),a._addConstraint(l)}}}_buildChildArmature(t,a,e){return this.buildArmature(e.path,null!==t?t.dataName:"","",null!==t?t.textureAtlasName:"")}_getSlotDisplay(t,a,e){const s=null!==t?t.dataName:a.parent.parent.parent.name;let l=null;switch(a.type){case 0:{const t=a;null===t.texture&&(t.texture=this._getTextureData(s,a.path)),l=e.rawDisplay;break}case 2:{const t=a;null===t.texture&&(t.texture=this._getTextureData(s,t.path)),l=this._isSupportMesh()?e.meshDisplay:e.rawDisplay;break}case 1:{const s=a,i=this._buildChildArmature(t,e,s);if(null!==i){if(i.inheritAnimation=s.inheritAnimation,!i.inheritAnimation){const t=s.actions.length>0?s.actions:i.armatureData.defaultActions;if(t.length>0)for(const a of t){const t=r.BaseObject.borrowObject(n.EventObject);n.EventObject.actionDataToInstance(a,t,e.armature),t.slot=e,e.armature._bufferAction(t,!1)}else i.animation.play()}s.armature=i.armatureData}l=i;break}}return l}parseDragonBonesData(t,a=null,e=1){const r=t instanceof ArrayBuffer?o._binaryParser:this._dataParser,n=r.parseDragonBonesData(t,e);for(;;){const t=this._buildTextureAtlasData(null,null);if(!r.parseTextureAtlasData(null,t,e)){t.returnToPool();break}this.addTextureAtlasData(t,a)}return null!==n&&this.addDragonBonesData(n,a),n}parseTextureAtlasData(t,a,e=null,r=1){const n=this._buildTextureAtlasData(null,null);return this._dataParser.parseTextureAtlasData(t,n,r),this._buildTextureAtlasData(n,a||null),this.addTextureAtlasData(n,e),n}updateTextureAtlases(t,a){const e=this.getTextureAtlasData(a);if(null!==e)for(let a=0,r=e.length;a<r;++a)a<t.length&&this._buildTextureAtlasData(e[a],t[a])}getDragonBonesData(t){return t in this._dragonBonesDataMap?this._dragonBonesDataMap[t]:null}addDragonBonesData(t,a=null){if((a=null!==a?a:t.name)in this._dragonBonesDataMap){if(this._dragonBonesDataMap[a]===t)return;console.warn("Can not add same name data: "+a)}else this._dragonBonesDataMap[a]=t}removeDragonBonesData(t,a=!0){t in this._dragonBonesDataMap&&(a&&this._dragonBones.bufferObject(this._dragonBonesDataMap[t]),delete this._dragonBonesDataMap[t])}getTextureAtlasData(t){return t in this._textureAtlasDataMap?this._textureAtlasDataMap[t]:null}addTextureAtlasData(t,a=null){const e=(a=null!==a?a:t.name)in this._textureAtlasDataMap?this._textureAtlasDataMap[a]:this._textureAtlasDataMap[a]=[];e.indexOf(t)<0&&e.push(t)}removeTextureAtlasData(t,a=!0){if(t in this._textureAtlasDataMap){const e=this._textureAtlasDataMap[t];if(a)for(const t of e)this._dragonBones.bufferObject(t);delete this._textureAtlasDataMap[t]}}getArmatureData(t,a=""){const e=new u;return this._fillBuildArmaturePackage(e,a,t,"","")?e.armature:null}clear(t=!0){for(let a in this._dragonBonesDataMap)t&&this._dragonBones.bufferObject(this._dragonBonesDataMap[a]),delete this._dragonBonesDataMap[a];for(let a in this._textureAtlasDataMap){if(t){const t=this._textureAtlasDataMap[a];for(const a of t)this._dragonBones.bufferObject(a)}delete this._textureAtlasDataMap[a]}}buildArmature(t,a="",e="",r=""){const n=new u;if(!this._fillBuildArmaturePackage(n,a||"",t,e||"",r||""))return console.warn("No armature data: "+t+", "+(null!==a?a:"")),null;const s=this._buildArmature(n);return this._buildBones(n,s),this._buildSlots(n,s),this._buildConstraints(n,s),s.invalidUpdate(null,!0),s.advanceTime(0),s}replaceDisplay(t,a,e=-1){if(e<0&&(e=t.displayIndex),e<0&&(e=0),t.replaceDisplayData(a,e),null!==a){let r=this._getSlotDisplay(null,a,t);if(0===a.type){const a=t.getDisplayFrameAt(e).rawDisplayData;null!==a&&2===a.type&&(r=t.meshDisplay)}t.replaceDisplay(r,e)}else t.replaceDisplay(null,e)}replaceSlotDisplay(t,a,e,r,n,s=-1){const l=this.getArmatureData(a,t||"");if(null===l||null===l.defaultSkin)return!1;const i=l.defaultSkin.getDisplay(e,r);return this.replaceDisplay(n,i,s),!0}replaceSlotDisplayList(t,a,e,r){const n=this.getArmatureData(a,t||"");if(!n||!n.defaultSkin)return!1;const s=n.defaultSkin.getDisplays(e);if(!s)return!1;r.displayFrameCount=s.length;for(let t=0,a=r.displayFrameCount;t<a;++t){const a=s[t];this.replaceDisplay(r,a,t)}return!0}replaceSkin(t,a,e=!1,r=null){let n=!1;const s=a.parent.defaultSkin;for(const l of t.getSlots()){if(null!==r&&r.indexOf(l.name)>=0)continue;let t=a.getDisplays(l.name);if(null!==t||(null!==s&&a!==s&&(t=s.getDisplays(l.name)),null!==t)){l.displayFrameCount=t.length;for(let a=0,e=l.displayFrameCount;a<e;++a){const e=t[a];l.replaceRawDisplayData(e,a),null!==e?l.replaceDisplay(this._getSlotDisplay(null,e,l),a):l.replaceDisplay(null,a)}n=!0}else e&&(l.displayFrameCount=0)}return n}replaceAnimation(a,e,r=!0){const n=e.defaultSkin;if(null===n)return!1;if(r)a.animation.animations=e.animations;else{const t=a.animation.animations,r={};for(let a in t)r[a]=t[a];for(let t in e.animations)r[t]=e.animations[t];a.animation.animations=r}for(const e of a.getSlots()){let a=0;for(const s of e.displayList){if(s instanceof t.Armature){const t=n.getDisplays(e.name);if(null!==t&&a<t.length){const e=t[a];if(null!==e&&1===e.type){const t=this.getArmatureData(e.path,e.parent.parent.parent.name);t&&this.replaceAnimation(s,t,r)}}}a++}}return!0}getAllDragonBonesData(){return this._dragonBonesDataMap}getAllTextureAtlasData(){return this._textureAtlasDataMap}get clock(){return this._dragonBones.clock}get dragonBones(){return this._dragonBones}}o._objectParser=null,o._binaryParser=null;class u{constructor(){this.dataName="",this.textureAtlasName="",this.skin=null}}exports.BaseFactory=o,exports.BuildArmaturePackage=u; //# sourceMappingURL=BaseFactory.cjs.map