UNPKG

@babylonjs/gui

Version:

Babylon.js GUI module =====================

184 lines (183 loc) 6.42 kB
import type { Nullable } from "@babylonjs/core/types.js"; import { Observable } from "@babylonjs/core/Misc/observable.js"; import { Vector3 } from "@babylonjs/core/Maths/math.vector.js"; import type { TransformNode } from "@babylonjs/core/Meshes/transformNode.js"; import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js"; import type { IBehaviorAware, Behavior } from "@babylonjs/core/Behaviors/behavior.js"; import type { IDisposable, Scene } from "@babylonjs/core/scene.js"; import type { GUI3DManager } from "../gui3DManager.js"; import { Vector3WithInfo } from "../vector3WithInfo.js"; import type { Container3D } from "./container3D.js"; /** * Class used as base class for controls */ export declare class Control3D implements IDisposable, IBehaviorAware<Control3D> { /** Defines the control name */ name?: string | undefined; private _node; private _downCount; private _enterCount; private _downPointerIds; protected _isVisible: boolean; /** @internal */ _host: GUI3DManager; /** @internal */ _isScaledByManager: boolean; private _position?; private _scaling?; /** Gets or sets the control position in world space */ get position(): Vector3; set position(value: Vector3); /** Gets or sets the control scaling in world space */ get scaling(): Vector3; set scaling(value: Vector3); /** Callback used to start pointer enter animation */ pointerEnterAnimation: () => void; /** Callback used to start pointer out animation */ pointerOutAnimation: () => void; /** Callback used to start pointer down animation */ pointerDownAnimation: () => void; /** Callback used to start pointer up animation */ pointerUpAnimation: () => void; /** * An event triggered when the pointer moves over the control */ onPointerMoveObservable: Observable<Vector3>; /** * An event triggered when the pointer moves out of the control */ onPointerOutObservable: Observable<Control3D>; /** * An event triggered when the pointer taps the control */ onPointerDownObservable: Observable<Vector3WithInfo>; /** * An event triggered when pointer is up */ onPointerUpObservable: Observable<Vector3WithInfo>; /** * An event triggered when a control is clicked on (with a mouse) */ onPointerClickObservable: Observable<Vector3WithInfo>; /** * An event triggered when pointer enters the control */ onPointerEnterObservable: Observable<Control3D>; /** * Gets or sets the parent container */ parent: Nullable<Container3D>; private _behaviors; /** * Gets the list of attached behaviors * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors */ get behaviors(): Behavior<Control3D>[]; /** * Attach a behavior to the control * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors * @param behavior defines the behavior to attach * @returns the current control */ addBehavior(behavior: Behavior<Control3D>): Control3D; /** * Remove an attached behavior * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors * @param behavior defines the behavior to attach * @returns the current control */ removeBehavior(behavior: Behavior<Control3D>): Control3D; /** * Gets an attached behavior by name * @param name defines the name of the behavior to look for * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors * @returns null if behavior was not found else the requested behavior */ getBehaviorByName(name: string): Nullable<Behavior<Control3D>>; /** Gets or sets a boolean indicating if the control is visible */ get isVisible(): boolean; set isVisible(value: boolean); /** * Creates a new control * @param name defines the control name */ constructor( /** Defines the control name */ name?: string | undefined); /** * Gets a string representing the class name */ get typeName(): string; /** * Get the current class name of the control. * @returns current class name */ getClassName(): string; protected _getTypeName(): string; /** * Gets the transform node used by this control */ get node(): Nullable<TransformNode>; /** * Gets the mesh used to render this control */ get mesh(): Nullable<AbstractMesh>; /** * Link the control as child of the given node * @param node defines the node to link to. Use null to unlink the control * @returns the current control */ linkToTransformNode(node: Nullable<TransformNode>): Control3D; /** * @internal */ _prepareNode(scene: Scene): void; protected _injectGUI3DReservedDataStore(node: TransformNode): any; /** * Node creation. * Can be overriden by children * @param scene defines the scene where the node must be attached * @returns the attached node or null if none. Must return a Mesh or AbstractMesh if there is an attached visible object */ protected _createNode(scene: Scene): Nullable<TransformNode>; /** * Affect a material to the given mesh * @param mesh defines the mesh which will represent the control */ protected _affectMaterial(mesh: AbstractMesh): void; private _isTouchButton3D; /** * @internal */ _onPointerMove(target: Control3D, coordinates: Vector3): void; /** * @internal */ _onPointerEnter(target: Control3D): boolean; /** * @internal */ _onPointerOut(target: Control3D): void; /** * @internal */ _onPointerDown(target: Control3D, coordinates: Vector3, pointerId: number, buttonIndex: number): boolean; /** * @internal */ _onPointerUp(target: Control3D, coordinates: Vector3, pointerId: number, buttonIndex: number, notifyClick: boolean): void; /** * @internal */ forcePointerUp(pointerId?: Nullable<number>): void; /** * @internal */ _processObservables(type: number, pickedPoint: Vector3, originMeshPosition: Nullable<Vector3>, pointerId: number, buttonIndex: number): boolean; /** @internal */ _disposeNode(): void; /** * Releases all associated resources */ dispose(): void; }