import { ContextManager, Event, Observable } from '@zcomponent/core'; import { Group } from '../../Group'; import { TriggerPreviewMesh } from './util/TriggerPreviewMesh'; import { TriggerShape } from './ITrigger'; export interface TriggerConstructorProps { shape?: TriggerShape; } /** * Represents a collision event involving triggers. */ export interface CollisionEvent { thisTrigger: Trigger; otherTrigger: Trigger; } /** * Abstract base class for Trigger objects, extending the Group class. * Manages collision events, updates, and visualization in a 3D environment. */ export declare abstract class Trigger extends Group { /** * Specifies whether this trigger is a trigger or a collider. * @zprop * @zgroup Trigger * @zgrouppriority 20 * @zdefault false * @zparents three/Object3D/** */ isTrigger: Observable; previewMesh: TriggerPreviewMesh; /** * Event triggered when a collision with another trigger starts. * @zui **/ onCollisionEnter: Event<[CollisionEvent]>; /** * Event triggered when a collision with another trigger ends. * @zui **/ onCollisionLeave: Event<[CollisionEvent]>; /** * Event triggered when a collision with another trigger continues in a new frame. * @zui * */ onCollisionMove: Event<[CollisionEvent]>; didMove: boolean; private previousWorldMatrix; shape: TriggerShape; private isReady; /** * Constructs a Trigger instance. * @param ctx The context manager for the trigger. * @param props The properties for trigger construction, including shape. */ constructor(ctx: ContextManager, props: TriggerConstructorProps); private _updateEnabled; /** * Abstract method for updating the trigger. Must be implemented by subclasses. */ abstract update(): void; private collidingComponents; private _frame; private updateMovementState; }