Appearance
TransformControlsPlugin
Plugin wrapper around TransformControlsService for translate, rotate, and scale gizmos on a target object.
Usage
ts
import { ViewerCore, TransformControlsPlugin } from "@optellix/xviewr-sdk";
const viewer = new ViewerCore(container, config);
await viewer.ready();
await viewer.loadPlugin(new TransformControlsPlugin());
const transform = viewer.pluginManager.getPlugin("transformControls") as TransformControlsPlugin;
transform.attachToObject(someMesh);
transform.setMode("rotate");
transform.enable();Service dependencies: transformcontrols.
Public API
Lifecycle
| Method | Description |
|---|---|
enable() | Activate the service. |
disable() | Deactivate the service. |
isActive() | Boolean. |
Mode and space
| Method | Description |
|---|---|
setMode(mode) | "translate" | "rotate" | "scale". |
getMode() | Current TransformMode. |
setSpace(space) | "world" | "local". |
getSpace() | Current TransformSpace. |
Gizmo settings
| Method | Description |
|---|---|
setSize(size) | Gizmo size multiplier. |
getSize() | Current size. |
setAxisVisibility("x" | "y" | "z", visible) | Toggle a single axis handle. |
Snapping
| Method | Description |
|---|---|
setTranslationSnap(snap | null) | World-unit snap, null to disable. |
setRotationSnap(snap | null) | Radian snap. |
setScaleSnap(snap | null) | Scalar snap. |
Object management
| Method | Description |
|---|---|
attachToObject(object) | Attach gizmo to a THREE.Object3D. |
detachFromObject() | Detach. |
getCurrentTarget() | Currently attached object or null. |
Transform data
| Method | Description |
|---|---|
getTransformData() | Snapshot of current position/rotation/scale. |
applyTransformData(data) | Apply a previously captured snapshot. |
resetTransform() | Reset the target to its original transform. |
Configuration
| Method | Description |
|---|---|
updateConfig(config) | Partial update of service config. |
getConfig() | Current service config. |
Events
The plugin does not emit its own events. Subscribe to transformcontrols:changed, transformcontrols:dragging-changed, and transformcontrols:object-changed on the event bus.
Example
ts
const transform = viewer.pluginManager.getPlugin("transformControls") as TransformControlsPlugin;
transform.enable();
transform.attachToObject(targetMesh);
transform.setMode("translate");
transform.setTranslationSnap(0.1);
viewer.eventBus.on("transformcontrols:dragging-changed", ({ dragging }) => {
if (!dragging) console.log("done", transform.getTransformData());
});