UNPKG

@needle-tools/engine

Version:

Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in.

50 lines (49 loc) 2.24 kB
import { XRControllerModelFactory } from "three/examples/jsm/webxr/XRControllerModelFactory.js"; import { XRHandMeshModel } from "three/examples/jsm/webxr/XRHandMeshModel.js"; import { AssetReference } from "../../../engine/engine_addressables.js"; import type { IGameObject } from "../../../engine/engine_types.js"; import { NeedleXRController, type NeedleXRControllerEventArgs, type NeedleXREventArgs } from "../../../engine/engine_xr.js"; import { Behaviour, Component } from "../../Component.js"; /** * XRControllerModel is a component that allows to display controller models or hand models in an XR session. * It automatically loads the appropriate model for the connected controller or hand. * * You can configure if controller models or hand models should be created. * * @summary Displays controller or hand models in XR * @category XR * @group Components */ export declare class XRControllerModel extends Behaviour { /** * If true, the controller model will be created when a controller is added/connected * @default true */ createControllerModel: boolean; /** * If true, the hand model will be created when a hand is "added"/tracked * @default true */ createHandModel: boolean; /** assign a model or model url to create custom hand models */ customLeftHand?: AssetReference; /** assign a model or model url to create custom hand models */ customRightHand?: AssetReference; static readonly factory: XRControllerModelFactory; supportsXR(mode: XRSessionMode): boolean; private readonly _models; onXRControllerAdded(args: NeedleXRControllerEventArgs): Promise<void>; onXRControllerRemoved(args: NeedleXRControllerEventArgs): void; onBeforeXR(_mode: XRSessionMode, args: XRSessionInit & { trackedImages: Array<any>; }): void; onLeaveXR(_args: NeedleXREventArgs): void; onBeforeRender(): void; private updateRendering; protected loadModel(controller: NeedleXRController, url: string): Promise<IGameObject | null>; protected loadHandModel(comp: Component, controller: NeedleXRController): Promise<{ handObject: IGameObject; handmesh: XRHandMeshModel; } | null>; private makeOccluder; }