import { Gizmo } from "@babylonjs/core/Gizmos/gizmo.js"; import { type AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js"; import { type UtilityLayerRenderer } from "@babylonjs/core/Rendering/utilityLayerRenderer.js"; import { type Nullable } from "@babylonjs/core/types.js"; import { type HolographicSlate } from "../controls/holographicSlate.js"; /** * Gizmo to resize 2D slates */ export declare class SlateGizmo extends Gizmo { private _boundingDimensions; private _pickedPointObserver; private _renderObserver; private _tmpQuaternion; private _tmpVector; private _corners; private _sides; private _handlesParent; private _handleHovered; private _handleDragged; private _boundingBoxGizmo; /** * Value we use to offset handles from mesh */ private _margin; private _handleSize; private _attachedSlate; private _existingSlateScale; /** * If set, the handles will increase in size based on the distance away from the camera to have a consistent screen size (Default: true) */ fixedScreenSize: boolean; /** * The distance away from the object which the draggable meshes should appear world sized when fixedScreenSize is set to true (default: 10) */ fixedScreenSizeDistanceFactor: number; /** * The slate attached to this gizmo */ set attachedSlate(control: Nullable); get attachedSlate(): Nullable; constructor(utilityLayer?: UtilityLayerRenderer); private _createNode; private _keepAspectRatio; private _clampDimensions; private _moveHandle; private _assignDragBehaviorCorners; private _assignDragBehaviorSides; protected _attachedNodeChanged(value: Nullable): void; /** * Updates the bounding box information for the gizmo */ updateBoundingBox(): void; private _updateHandlesPosition; private _updateHandlesScaling; protected _update(): void; dispose(): void; }