@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.
103 lines (102 loc) • 4.03 kB
TypeScript
import { Object3D } from "three";
import { Behaviour } from "./Component.js";
import { EventList } from "./EventList.js";
/**
* Component that receives and responds to spatial events, like entering or exiting a trigger zone.
* Used in conjunction with {@link SpatialTrigger} to create interactive spatial events.
* @category Interactivity
* @group Components
*/
export declare class SpatialTriggerReceiver extends Behaviour {
/**
* Bitmask determining which triggers this receiver responds to
* Only triggers with matching masks will interact with this receiver
*/
triggerMask: number;
/** Event invoked when this object enters a trigger zone */
onEnter?: EventList<any>;
/** Event invoked continuously while this object is inside a trigger zone */
onStay?: EventList<any>;
/** Event invoked when this object exits a trigger zone */
onExit?: EventList<any>;
/**
* Initializes the receiver and logs debug info if enabled
* @internal
*/
start(): void;
/**
* Checks for intersections with spatial triggers and fires appropriate events
* Handles enter, stay, and exit events for all relevant triggers
* @internal
*/
update(): void;
/** Array of triggers currently intersecting with this receiver */
readonly currentIntersected: SpatialTrigger[];
/** Array of triggers that intersected with this receiver in the previous frame */
readonly lastIntersected: SpatialTrigger[];
/**
* Handles trigger enter events.
* @param trigger The spatial trigger that was entered
*/
onEnterTrigger(trigger: SpatialTrigger): void;
/**
* Handles trigger exit events.
* @param trigger The spatial trigger that was exited
*/
onExitTrigger(trigger: SpatialTrigger): void;
/**
* Handles trigger stay events.
* @param trigger The spatial trigger that the receiver is staying in
*/
onStayTrigger(trigger: SpatialTrigger): void;
}
/**
* A spatial trigger component that detects objects within a box-shaped area.
* Used to trigger events when objects enter, stay in, or exit the defined area
* @category Interactivity
* @group Components
*/
export declare class SpatialTrigger extends Behaviour {
/** Global registry of all active spatial triggers in the scene */
static triggers: SpatialTrigger[];
/**
* Bitmask determining which receivers this trigger affects.
* Only receivers with matching masks will be triggered.
*/
triggerMask?: number;
/** Box helper component used to visualize and calculate the trigger area */
private boxHelper?;
/**
* Initializes the trigger and logs debug info if enabled
*/
start(): void;
/**
* Registers this trigger in the global registry and sets up debug visualization if enabled
*/
onEnable(): void;
/**
* Removes this trigger from the global registry when disabled
*/
onDisable(): void;
/**
* Tests if an object is inside this trigger's box
* @param obj The object to test against this trigger
* @returns True if the object is inside the trigger box
*/
test(obj: Object3D): boolean;
/**
* Raises the onEnter event on any SpatialTriggerReceiver components attached to this trigger's GameObject
* @param rec The receiver that entered this trigger
*/
raiseOnEnterEvent(rec: SpatialTriggerReceiver): void;
/**
* Raises the onStay event on any SpatialTriggerReceiver components attached to this trigger's GameObject
* @param rec The receiver that is staying in this trigger
*/
raiseOnStayEvent(rec: SpatialTriggerReceiver): void;
/**
* Raises the onExit event on any SpatialTriggerReceiver components attached to this trigger's GameObject
* @param rec The receiver that exited this trigger
*/
raiseOnExitEvent(rec: SpatialTriggerReceiver): void;
}