awv3
Version:
AWV client CAD framework
1 lines • 6.08 kB
JavaScript
;function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function uvIntersection(e,r,t,i,n,a,o,c){return _three2["default"].Triangle.barycoordFromPoint(r,t,i,n,e._barycoord),a.multiplyScalar(e._barycoord.x),o.multiplyScalar(e._barycoord.y),c.multiplyScalar(e._barycoord.z),a.add(o).add(c),a.clone()}function checkIntersection(e,r,t,i,n,a,o){var c,s=e.material;if(c=s.side===_three2["default"].BackSide?t.intersectTriangle(a,n,i,!0,o):t.intersectTriangle(i,n,a,s.side!==_three2["default"].DoubleSide,o),null===c)return null;r._intersectionPointWorld.copy(o),r._intersectionPointWorld.applyMatrix4(e.matrixWorld);var u=r.ray.origin.distanceTo(r._intersectionPointWorld);return u<r.near||u>r.far?null:{distance:u,point:r._intersectionPointWorld.clone(),object:e}}function checkBufferGeometryIntersection(e,r,t,i,n,a,o,c){r._vA.fromArray(i,3*a),r._vB.fromArray(i,3*o),r._vC.fromArray(i,3*c);var s=checkIntersection(e,r,t,r._vA,r._vB,r._vC,r._intersectionPoint);return s&&(n&&(r._uvA.fromArray(n,2*a),r._uvB.fromArray(n,2*o),r._uvC.fromArray(n,2*c),s.uv=uvIntersection(r,r._intersectionPoint,r._vA,r._vB,r._vC,r._uvA,r._uvB,r._uvC)),s.face=new _three2["default"].Face3(a,o,c,_three2["default"].Triangle.normal(r._vA,r._vB,r._vC)),s.faceIndex=a),s}exports.__esModule=!0;var _classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_possibleConstructorReturn2=require("babel-runtime/helpers/possibleConstructorReturn"),_possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2),_inherits2=require("babel-runtime/helpers/inherits"),_inherits3=_interopRequireDefault(_inherits2),_three=require("three"),_three2=_interopRequireDefault(_three),Raycaster=function(e){function r(t){arguments.length<=1||void 0===arguments[1]?{approach:r.Approach.FirstMatch}:arguments[1];(0,_classCallCheck3["default"])(this,r);var i=(0,_possibleConstructorReturn3["default"])(this,e.call(this));return i.interaction=t,i.view=t.view,i._inverseMatrix=new _three2["default"].Matrix4,i._ray=new _three2["default"].Ray,i._sphere=new _three2["default"].Sphere,i._vA=new _three2["default"].Vector3,i._vB=new _three2["default"].Vector3,i._vC=new _three2["default"].Vector3,i._tempA=new _three2["default"].Vector3,i._tempB=new _three2["default"].Vector3,i._tempC=new _three2["default"].Vector3,i._uvA=new _three2["default"].Vector2,i._uvB=new _three2["default"].Vector2,i._uvC=new _three2["default"].Vector2,i._barycoord=new _three2["default"].Vector3,i._intersectionPoint=new _three2["default"].Vector3,i._intersectionPointWorld=new _three2["default"].Vector3,i}return(0,_inherits3["default"])(r,e),r.prototype.isActuallyVisible=function(e){for(;e;){if(e.visible===!1)return!1;e=e.parent}return!0},r.prototype.castObjects=function(e,r,t){var i=arguments.length<=3||void 0===arguments[3]?[]:arguments[3],n=arguments.length<=4||void 0===arguments[4]?void 0:arguments[4];this.setFromCamera(e,r);for(var a,o=0,c=t.length;o<c;o++)a=t[o],(!n||0===n.length||n.indexOf(a)>=0)&&a.interaction&&a.interaction.enabled&&a.interaction._active&&this.isActuallyVisible(a)&&this.intersect(a,a.interaction.recursive,i,a.interaction.types,a);return i.sort(function(e,r){return r.receiver.interaction.priority-e.receiver.interaction.priority||e.distance-r.distance}),i},r.prototype.intersect=function t(e,r,i,n,a){if(!n||"Object3D"===e.type||n.indexOf(e.type)!=-1){var o=i.length;e.raycast(this,i,a.interaction.approach);var c=i.length!=o;if(c)for(var t,s=o,u=i.length;s<u;s++)t=i[s],t.receiver=a,a.interaction.recursive||(t.receiver.object=a);if(c&&!a.interaction.recursive)return!0;for(var l,_=0,h=e.children.length;_<h;_++)if(l=e.children[_],l.visible&&(c|=this.intersect(l,!0,i,n,a),c&&!a.interaction.recursive))return!0;return c}},r}(_three2["default"].Raycaster);exports["default"]=Raycaster,Raycaster.Approach={Default:"Default",First:"First",Bounds:"Bounds"},_three2["default"].Mesh.prototype.raycast=function(e,r,t){var i=this.geometry,n=this.material,a=this.matrixWorld;if(void 0!==n&&(null===i.boundingSphere&&i.computeBoundingSphere(),e._sphere.copy(i.boundingSphere),e._sphere.applyMatrix4(a),e.ray.intersectsSphere(e._sphere)!==!1&&(e._inverseMatrix.getInverse(a),e._ray.copy(e.ray).applyMatrix4(e._inverseMatrix),null===i.boundingBox||e._ray.intersectsBox(i.boundingBox)!==!1))){if(t===Raycaster.Approach.Bounds){var o={distance:e.ray.origin.distanceTo(e._sphere.center),object:this,point:e._sphere.center.clone()};return void r.push(o)}var c,s;if(i instanceof _three2["default"].BufferGeometry){var u,l,_,h=i.index,f=i.attributes,v=f.position.array;if(void 0!==f.uv&&(c=f.uv.array),null!==h){for(var d=h.array,p=0,y=d.length;p<y;p+=3)if(u=d[p],l=d[p+1],_=d[p+2],s=checkBufferGeometryIntersection(this,e,e._ray,v,c,u,l,_),s&&(s.faceIndex=Math.floor(p/3),r.push(s),t===Raycaster.Approach.First))return}else for(var p=0,y=v.length;p<y;p+=9)if(u=p/3,l=u+1,_=u+2,s=checkBufferGeometryIntersection(this,e,e._ray,v,c,u,l,_),s&&(s.index=u,r.push(s),t===Raycaster.Approach.First))return}else if(i instanceof _three2["default"].Geometry){var b,m,C,g=n instanceof _three2["default"].MultiMaterial,A=g===!0?n.materials:null,B=i.vertices,x=i.faces,V=i.faceVertexUvs[0];V.length>0&&(c=V);for(var R=0,w=x.length;R<w;R++){var I=x[R],M=g===!0?A[I.materialIndex]:n;if(void 0!==M){if(b=B[I.a],m=B[I.b],C=B[I.c],M.morphTargets===!0){var S=i.morphTargets,k=this.morphTargetInfluences;e._vA.set(0,0,0),e._vB.set(0,0,0),e._vC.set(0,0,0);for(var P=0,q=S.length;P<q;P++){var D=k[P];if(0!==D){var F=S[P].vertices;e._vA.addScaledVector(e._tempA.subVectors(F[I.a],b),D),e._vB.addScaledVector(e._tempB.subVectors(F[I.b],m),D),e._vC.addScaledVector(e._tempC.subVectors(F[I.c],C),D)}}e._vA.add(b),e._vB.add(m),e._vC.add(C),b=e._vA,m=e._vB,C=e._vC}if(s=checkIntersection(this,e,e._ray,b,m,C,e._intersectionPoint)){if(c){var T=c[R];e._uvA.copy(T[0]),e._uvB.copy(T[1]),e._uvC.copy(T[2]),s.uv=uvIntersection(e,e._intersectionPoint,b,m,C,e._uvA,e._uvB,e._uvC)}if(s.face=I,s.faceIndex=R,r.push(s),t===Raycaster.Approach.First)return}}}}}};