pixi-dragonbones-runtime
Version:
DragonBones Runtime for Pixi.js
3 lines (2 loc) • 4.54 kB
JavaScript
"use strict";var t=require("../core/BaseObject.cjs");require("../core/DragonBones.cjs");class n extends t.BaseObject{_onClear(){this.color=0,this.width=0,this.height=0}}class e extends n{static toString(){return"[class dragonBones.RectangleBoundingBoxData]"}static _computeOutCode(t,n,e,l,s,i){let r=0;return t<e?r|=1:t>s&&(r|=2),n<l?r|=4:n>i&&(r|=8),r}static rectangleIntersectsSegment(t,n,l,s,i,r,u,a,o=null,h=null,c=null){const x=t>i&&t<u&&n>r&&n<a,g=l>i&&l<u&&s>r&&s<a;if(x&&g)return-1;let y=0,d=e._computeOutCode(t,n,i,r,u,a),M=e._computeOutCode(l,s,i,r,u,a);for(;;){if(!(d|M)){y=2;break}if(d&M)break;let o=0,h=0,x=0;const g=0!==d?d:M;4&g?(o=t+(l-t)*(r-n)/(s-n),h=r,null!==c&&(x=.5*-Math.PI)):8&g?(o=t+(l-t)*(a-n)/(s-n),h=a,null!==c&&(x=.5*Math.PI)):2&g?(h=n+(s-n)*(u-t)/(l-t),o=u,null!==c&&(x=0)):1&g&&(h=n+(s-n)*(i-t)/(l-t),o=i,null!==c&&(x=Math.PI)),g===d?(t=o,n=h,d=e._computeOutCode(t,n,i,r,u,a),null!==c&&(c.x=x)):(l=o,s=h,M=e._computeOutCode(l,s,i,r,u,a),null!==c&&(c.y=x))}return y&&(x?(y=2,null!==o&&(o.x=l,o.y=s),null!==h&&(h.x=l,h.y=l),null!==c&&(c.x=c.y+Math.PI)):g?(y=1,null!==o&&(o.x=t,o.y=n),null!==h&&(h.x=t,h.y=n),null!==c&&(c.y=c.x+Math.PI)):(y=3,null!==o&&(o.x=t,o.y=n),null!==h&&(h.x=l,h.y=s))),y}_onClear(){super._onClear(),this.type=0}containsPoint(t,n){const e=.5*this.width;if(t>=-e&&t<=e){const t=.5*this.height;if(n>=-t&&n<=t)return!0}return!1}intersectsSegment(t,n,l,s,i=null,r=null,u=null){const a=.5*this.width,o=.5*this.height;return e.rectangleIntersectsSegment(t,n,l,s,-a,-o,a,o,i,r,u)}}class l extends n{static toString(){return"[class dragonBones.EllipseData]"}static ellipseIntersectsSegment(t,n,e,l,s,i,r,u,a=null,o=null,h=null){const c=r/u,x=c*c,g=e-t,y=(l*=c)-(n*=c),d=Math.sqrt(g*g+y*y),M=g/d,p=y/d,I=(s-t)*M+(i-n)*p,B=r*r,f=B-(t*t+n*n)+I*I;let P=0;if(f>=0){const s=Math.sqrt(f),i=I-s,r=I+s,u=i<0?-1:i<=d?0:1,g=r<0?-1:r<=d?0:1,y=u*g;if(y<0)return-1;0===y&&(-1===u?(P=2,e=t+r*M,l=(n+r*p)/c,null!==a&&(a.x=e,a.y=l),null!==o&&(o.x=e,o.y=l),null!==h&&(h.x=Math.atan2(l/B*x,e/B),h.y=h.x+Math.PI)):1===g?(P=1,t+=i*M,n=(n+i*p)/c,null!==a&&(a.x=t,a.y=n),null!==o&&(o.x=t,o.y=n),null!==h&&(h.x=Math.atan2(n/B*x,t/B),h.y=h.x+Math.PI)):(P=3,null!==a&&(a.x=t+i*M,a.y=(n+i*p)/c,null!==h&&(h.x=Math.atan2(a.y/B*x,a.x/B))),null!==o&&(o.x=t+r*M,o.y=(n+r*p)/c,null!==h&&(h.y=Math.atan2(o.y/B*x,o.x/B)))))}return P}_onClear(){super._onClear(),this.type=1}containsPoint(t,n){const e=.5*this.width;if(t>=-e&&t<=e){const l=.5*this.height;if(n>=-l&&n<=l)return n*=e/l,Math.sqrt(t*t+n*n)<=e}return!1}intersectsSegment(t,n,e,s,i=null,r=null,u=null){return l.ellipseIntersectsSegment(t,n,e,s,0,0,.5*this.width,.5*this.height,i,r,u)}}class s extends n{constructor(){super(...arguments),this.vertices=[]}static toString(){return"[class dragonBones.PolygonBoundingBoxData]"}static polygonIntersectsSegment(t,n,e,l,s,i=null,r=null,u=null){t===e&&(t=e+1e-6),n===l&&(n=l+1e-6);const a=s.length,o=t-e,h=n-l,c=t*l-n*e;let x=0,g=s[a-2],y=s[a-1],d=0,M=0,p=0,I=0,B=0,f=0;for(let i=0;i<a;i+=2){const a=s[i],P=s[i+1];g===a&&(g=a+1e-4),y===P&&(y=P+1e-4);const m=g-a,S=y-P,C=g*P-y*a,_=o*S-h*m,v=(c*m-o*C)/_;if((v>=g&&v<=a||v>=a&&v<=g)&&(0===o||v>=t&&v<=e||v>=e&&v<=t)){const e=(c*S-h*C)/_;if((e>=y&&e<=P||e>=P&&e<=y)&&(0===h||e>=n&&e<=l||e>=l&&e<=n)){if(null===r){p=v,I=e,B=v,f=e,x++,null!==u&&(u.x=Math.atan2(P-y,a-g)-.5*Math.PI,u.y=u.x);break}{let n=v-t;n<0&&(n=-n),0===x?(d=n,M=n,p=v,I=e,B=v,f=e,null!==u&&(u.x=Math.atan2(P-y,a-g)-.5*Math.PI,u.y=u.x)):(n<d&&(d=n,p=v,I=e,null!==u&&(u.x=Math.atan2(P-y,a-g)-.5*Math.PI)),n>M&&(M=n,B=v,f=e,null!==u&&(u.y=Math.atan2(P-y,a-g)-.5*Math.PI))),x++}}}g=a,y=P}return 1===x?(null!==i&&(i.x=p,i.y=I),null!==r&&(r.x=p,r.y=I),null!==u&&(u.y=u.x+Math.PI)):x>1&&(x++,null!==i&&(i.x=p,i.y=I),null!==r&&(r.x=B,r.y=f)),x}_onClear(){super._onClear(),this.type=2,this.x=0,this.y=0,this.vertices.length=0}containsPoint(t,n){let e=!1;if(t>=this.x&&t<=this.width&&n>=this.y&&n<=this.height)for(let l=0,s=this.vertices.length,i=s-2;l<s;l+=2){const s=this.vertices[i+1],r=this.vertices[l+1];if(r<n&&s>=n||s<n&&r>=n){const u=this.vertices[i],a=this.vertices[l];(n-r)*(u-a)/(s-r)+a<t&&(e=!e)}i=l}return e}intersectsSegment(t,n,l,i,r=null,u=null,a=null){let o=0;return 0!==e.rectangleIntersectsSegment(t,n,l,i,this.x,this.y,this.x+this.width,this.y+this.height,null,null,null)&&(o=s.polygonIntersectsSegment(t,n,l,i,this.vertices,r,u,a)),o}}exports.BoundingBoxData=n,exports.EllipseBoundingBoxData=l,exports.PolygonBoundingBoxData=s,exports.RectangleBoundingBoxData=e;
//# sourceMappingURL=BoundingBoxData.cjs.map