UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

57 lines (52 loc) 2.24 kB
// import {Ref} from '@vue/reactivity'; // import {Object3D, Intersection} from 'three'; // import {isBooleanTrue} from '../../core/Type'; // import {RaycasterUpdateOptions} from '../scene/utils/events/PointerEventsController'; // import {ObjectNamedFunction0, ObjectNamedFunction4} from './_Base'; // const _intersectionByObject: WeakMap<Object3D, Intersection[]> = new Map(); // const _lastIntersectionStateByObject: Map<Object3D, boolean> = new Map(); // const raycastUpdateOptions: RaycasterUpdateOptions = { // pointsThreshold: 0.1, // lineThreshold: 0.1, // }; // function _getObjectHoveredIntersections(object3D: Object3D): Intersection[] { // let intersections = _intersectionByObject.get(object3D); // if (!intersections) { // intersections = []; // _intersectionByObject.set(object3D, intersections); // } // return intersections; // } // export class getObjectHoveredIntersection extends ObjectNamedFunction0 { // static override type() { // return 'getObjectHoveredIntersection'; // } // func(object3D: Object3D): Intersection { // return _getObjectHoveredIntersections(object3D)[0]; // } // } // export class getObjectHoveredState extends ObjectNamedFunction4<[boolean, number, number, Ref<Intersection | null>]> { // static override type() { // return 'getObjectHoveredState'; // } // func( // object3D: Object3D, // traverseChildren: boolean, // pointsThreshold: number, // lineThreshold: number, // intersectionRef: Ref<Intersection | null> // ): boolean { // const pointerEventsController = this.scene.eventsDispatcher.pointerEventsController; // const raycaster = pointerEventsController.raycaster(); // raycastUpdateOptions.pointsThreshold = pointsThreshold; // raycastUpdateOptions.lineThreshold = lineThreshold; // pointerEventsController.updateRaycast(raycastUpdateOptions); // const intersections = _getObjectHoveredIntersections(object3D); // intersections.length = 0; // raycaster.value.intersectObject(object3D, isBooleanTrue(traverseChildren), intersections); // const firstIntersection = intersections[0]; // intersectionRef.value = firstIntersection || null; // const newHoveredState = firstIntersection != null; // return newHoveredState; // } // }