2 lines
1.5 KiB
JavaScript
2 lines
1.5 KiB
JavaScript
import{m as C,r as f,v as P,u as n,x as m,A as g,C as v,be as V,q as _,bf as R}from"./model.vue.8f6f7b03.js";import{g as h}from"./useBVHMap.cc6f6f76.js";import"./entry.a42f0781.js";const u=new Set,[b,T]=R();C(function(){const e=h();if(!e.length){const t=f(b);return()=>{t.cancel()}}const o=f(()=>{b();for(const t of u){t.updateMatrixWorld();const c=t.getWorldDirection(P),{start:s,end:i}=m;i.copy(s.copy(t.position)),n.makeEmpty(),n.expandByPoint(s),n.min.addScalar(-.5),n.max.addScalar(.5);const S=g,x=v;let r=0,d=0;for(const B of e)B.shapecast({intersectsBounds:p=>p.intersectsBox(n),intersectsTriangle:p=>{r=p.closestPointToSegment(m,S,x),r<.5&&(d=.5-r,s.addScaledVector(c,d),i.addScaledVector(c,d))}});const l=s.sub(t.position),y=Math.max(0,l.length()-1e-5);l.normalize().multiplyScalar(y),t.position.add(l)}});return()=>{o.cancel()}},[h]);function W(e){var o;const t=this.targetState.get();t&&t._visible===void 0&&(t.outerObject3d.visible=e);for(const a of this.camera.children)((o=a.userData.manager)===null||o===void 0?void 0:o._visible)===void 0&&(a.visible=e)}function E(){if(this.done)return;const e=this.camera;u.add(e),this.then(()=>u.delete(e));let o=!1;this.watch(T(()=>{const t=this.outerObject3d.getWorldPosition(g),a=this.object3d.getWorldPosition(v),c=a.distanceTo(t);e.position.lerp(a,.1);const s=e.position.distanceTo(t)/c;e.position.lerpVectors(t,a,s),e.quaternion.copy(this.object3d.getWorldQuaternion(V));const i=_()?!1:s<.35;i!==o&&W.call(this,!i),o=i}))}export{E as default};
|