@pmndrs/xr
Version:
VR/AR for threejs
25 lines (24 loc) • 1.19 kB
JavaScript
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));
}
}