UNPKG

layaair-js

Version:

An open source HTML5 engine. Edition JavaScript.

1 lines 1.41 kB
!function(t,i,r){var e=(r.un,r.uns,r["static"],r["class"]),n=r.getset,h=(r.__newvec,laya.d3.component.Component3D);laya.d3.core.MeshTerrainSprite3D,laya.d3.core.Sprite3D,function(t){function i(){this._meshTerrainSprite3D=null,this._finder=null,this._setting=null,this.grid=null,i.__super.call(this)}e(i,"laya.d3.component.PathFind",t);var r=i.prototype;return r._load=function(i){if(!(i instanceof laya.d3.core.MeshTerrainSprite3D))throw new Error("PathFinding: The owner must MeshTerrainSprite3D!");t.prototype._load.call(this,i),this._meshTerrainSprite3D=i},r.findPath=function(t,i,r,e){var n=this._meshTerrainSprite3D.minX,h=this._meshTerrainSprite3D.minZ,a=this._meshTerrainSprite3D.width/this.grid.width,s=this._meshTerrainSprite3D.depth/this.grid.height,o=a/2,d=s/2,l=Math.floor((t-n)/a),g=Math.floor((i-h)/s),f=Math.floor((r-n)/a),c=Math.floor((e-h)/s),p=this.grid.width-1,u=this.grid.height-1;l>p&&(l=p),g>u&&(g=u),0>l&&(l=0),0>g&&(g=0),f>p&&(f=p),c>u&&(c=u),0>f&&(f=0),0>c&&(c=0);var _=this._finder.findPath(l,g,f,c,this.grid);this.grid.reset();for(var m=1;m<_.length-1;m++){var D=_[m];D[0]=D[0]*a+o+n,D[1]=D[1]*s+d+h}return 1==_.length?(_[0][0]=r,_[0][1]=r):_.length>1&&(_[0][0]=t,_[0][1]=i,_[_.length-1][0]=r,_[_.length-1][1]=e),_},n(0,r,"setting",function(){return this._setting},function(t){t&&(this._finder=new PathFinding.finders.AStarFinder(t)),this._setting=t}),i}(h)}(window,document,Laya);