@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
TypeScript
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;
}