UNPKG

@pmndrs/xr

Version:
25 lines (24 loc) 1.19 kB
import { BoxGeometry, Mesh, PlaneGeometry } from 'three'; import { onXRFrame } from './utils.js'; import { PointerCursorMaterial, updatePointerCursorModel } from '../pointer/cursor.js'; import { PointerRayMaterial, updatePointerRayModel } from '../pointer/ray.js'; const pointerRayGeometry = new BoxGeometry(); export class PointerRayModel extends Mesh { constructor(pointer, options = {}) { const MaterialClass = options.materialClass ?? PointerRayMaterial; const material = new MaterialClass(); super(pointerRayGeometry, material); this.renderOrder = options.renderOrder ?? 2; onXRFrame(() => updatePointerRayModel(this, material, pointer, options)); } } const pointerCursorGeometry = new PlaneGeometry(); export class PointerCursorModel extends Mesh { constructor(pointerGroup, pointer, options = {}) { const MaterialClass = options.materialClass ?? PointerCursorMaterial; const material = new MaterialClass(); super(pointerCursorGeometry, material); this.renderOrder = options.renderOrder ?? 1; onXRFrame(() => updatePointerCursorModel(pointerGroup, this, material, pointer, options)); } }