The base class for all transform gizmos.

Hierarchy (view full)

Constructors

Properties

_app: AppBase

Internal reference to the app containing the gizmo.

Internal reference to camera component to view the gizmo.

_colorAlpha: number = 0.6

Internal color alpha value.

_coordSpace: string = GIZMO_WORLD

Internal version of coordinate space. Defaults to GIZMO_WORLD.

Internal reference to the graphics device of the app.

_dragging: boolean = false

Internal state for if the gizmo is being dragged.

_guideColors: {} = ...

Internal version of the guide line color.

Type declaration

    _hoverAxis: string = ''

    Internal currently hovered axis.

    _hoverIsPlane: boolean = false

    Internal state of if currently hovered shape is a plane.

    _hoverShape: AxisShape = null

    Internal currently hovered shape.

    _layer: Layer

    Internal reference to layer to render the gizmo..

    _meshColors: Object = ...

    Internal color for meshs.

    _rootStartRot: Quat = ...

    Internal gizmo starting rotation in world space.

    _scale: number = 1

    Internal version of the gizmo scale. Defaults to 1.

    _selectedAxis: string = ''

    Internal currently selected axis.

    _selectedIsPlane: boolean = false

    Internal state of if currently selected shape is a plane.

    _selectionStartAngle: number = 0

    Internal selection starting angle in world space.

    _selectionStartPoint: Vec3 = ...

    Internal selection starting coordinates in world space.

    _shapeMap: Map<MeshInstance, AxisShape> = ...

    Internal mapping of mesh instances to axis shapes.

    _shapes: {} = {}

    Internal object containing the axis shapes to render.

    Type declaration

      _snap: boolean = false

      Internal state for if snapping is enabled. Defaults to false.

      intersectData: IntersectData[] = []

      The intersection data object.

      nodes: GraphNode[] = []

      The graph nodes attached to the gizmo.

      root: Entity

      The root gizmo entity.

      snapIncrement: number = 1

      Snapping increment. Defaults to 1.

      Accessors

      Methods

      • Attach an array of graph nodes to the gizmo.

        Parameters

        • Optional nodes: GraphNode[] = []

          The graph nodes. Defaults to [].

        Returns void

        Example

        const gizmo = new pc.Gizmo(app, camera, layer);
        gizmo.attach([boxA, boxB]);
      • Detaches all graph nodes from the gizmo.

        Returns void

        Example

        const gizmo = new pc.Gizmo(app, camera, layer);
        gizmo.attach([boxA, boxB]);
        gizmo.detach();
      • Set the shape to be enabled or disabled.

        Parameters

        • shapeAxis: string

          The shape axis. Can be:

          SHAPEAXIS_X SHAPEAXIS_Y SHAPEAXIS_Z SHAPEAXIS_YZ SHAPEAXIS_XZ SHAPEAXIS_XY SHAPEAXIS_XYZ SHAPEAXIS_FACE

        • enabled: boolean

          The enabled state of shape.

        Returns void

      • Fire an event, all additional arguments are passed on to the event listener.

        Parameters

        • name: string

          Name of event to fire.

        • Optional arg1: any

          First argument that is passed to the event handler.

        • Optional arg2: any

          Second argument that is passed to the event handler.

        • Optional arg3: any

          Third argument that is passed to the event handler.

        • Optional arg4: any

          Fourth argument that is passed to the event handler.

        • Optional arg5: any

          Fifth argument that is passed to the event handler.

        • Optional arg6: any

          Sixth argument that is passed to the event handler.

        • Optional arg7: any

          Seventh argument that is passed to the event handler.

        • Optional arg8: any

          Eighth argument that is passed to the event handler.

        Returns EventHandler

        Self for chaining.

        Example

        obj.fire('test', 'This is the message');
        
      • Test if there are any handlers bound to an event name.

        Parameters

        • name: string

          The name of the event to test.

        Returns boolean

        True if the object has handlers bound to the specified event name.

        Example

        obj.on('test', function () { }); // bind an event to 'test'
        obj.hasEvent('test'); // returns true
        obj.hasEvent('hello'); // returns false
      • Get the enabled state of the shape.

        Parameters

        • shapeAxis: string

          The shape axis. Can be:

          SHAPEAXIS_X SHAPEAXIS_Y SHAPEAXIS_Z SHAPEAXIS_YZ SHAPEAXIS_XZ SHAPEAXIS_XY SHAPEAXIS_XYZ SHAPEAXIS_FACE

        Returns boolean

        • Then enabled state of the shape
      • Detach an event handler from an event. If callback is not provided then all callbacks are unbound from the event, if scope is not provided then all events with the callback will be unbound.

        Parameters

        • Optional name: string

          Name of the event to unbind.

        • Optional callback: HandleEventCallback

          Function to be unbound.

        • Optional scope: object

          Scope that was used as the this when the event is fired.

        Returns EventHandler

        Self for chaining.

        Example

        const handler = function () {
        };
        obj.on('test', handler);

        obj.off(); // Removes all events
        obj.off('test'); // Removes all events called 'test'
        obj.off('test', handler); // Removes all handler functions, called 'test'
        obj.off('test', handler, this); // Removes all handler functions, called 'test' with scope this
      • Attach an event handler to an event.

        Parameters

        • name: string

          Name of the event to bind the callback to.

        • callback: HandleEventCallback

          Function that is called when event is fired. Note the callback is limited to 8 arguments.

        • Optional scope: object = ...

          Object to use as 'this' when the event is fired, defaults to current this.

        Returns EventHandle

        Can be used for removing event in the future.

        Example

        obj.on('test', function (a, b) {
        console.log(a + b);
        });
        obj.fire('test', 1, 2); // prints 3 to the console

        Example

        const evt = obj.on('test', function (a, b) {
        console.log(a + b);
        });
        // some time later
        evt.off();
      • Attach an event handler to an event. This handler will be removed after being fired once.

        Parameters

        • name: string

          Name of the event to bind the callback to.

        • callback: HandleEventCallback

          Function that is called when event is fired. Note the callback is limited to 8 arguments.

        • Optional scope: object = ...

          Object to use as 'this' when the event is fired, defaults to current this.

        Returns EventHandle

        • can be used for removing event in the future.

        Example

        obj.once('test', function (a, b) {
        console.log(a + b);
        });
        obj.fire('test', 1, 2); // prints 3 to the console
        obj.fire('test', 1, 2); // not going to get handled

      Events

      EVENT_NODESATTACH: string = 'nodes:attach'

      Fired when graph nodes are attached.

      Example

      const gizmo = new pc.Gizmo(app, camera, layer);
      gizmo.on('nodes:attach', () => {
      console.log('Graph nodes attached');
      });
      EVENT_NODESDETACH: string = 'nodes:detach'

      Fired when graph nodes are detached.

      Example

      const gizmo = new pc.Gizmo(app, camera, layer);
      gizmo.on('nodes:detach', () => {
      console.log('Graph nodes detached');
      });
      EVENT_POINTERDOWN: string = 'pointer:down'

      Fired when the pointer is down on the gizmo.

      Example

      const gizmo = new pc.Gizmo(app, camera, layer);
      gizmo.on('pointer:down', (x, y, meshInstance) => {
      console.log(`Pointer was down on ${meshInstance.node.name} at ${x}, ${y}`);
      });
      EVENT_POINTERMOVE: string = 'pointer:move'

      Fired when the pointer is moving over the gizmo.

      Example

      const gizmo = new pc.Gizmo(app, camera, layer);
      gizmo.on('pointer:move', (x, y, meshInstance) => {
      console.log(`Pointer was moving on ${meshInstance.node.name} at ${x}, ${y}`);
      });
      EVENT_POINTERUP: string = 'pointer:up'

      Fired when the pointer is up off the gizmo.

      Example

      const gizmo = new pc.Gizmo(app, camera, layer);
      gizmo.on('pointer:up', (x, y, meshInstance) => {
      console.log(`Pointer was up on ${meshInstance.node.name} at ${x}, ${y}`);
      })
      EVENT_POSITIONUPDATE: string = 'position:update'

      Fired when the gizmo's position is updated.

      Example

      const gizmo = new pc.Gizmo(app, camera, layer);
      gizmo.on('position:update', (position) => {
      console.log(`The gizmo's position was updated to ${position}`);
      })
      EVENT_RENDERUPDATE: string = 'render:update'

      Fired when when the gizmo render has updated.

      Example

      const gizmo = new pc.TransformGizmo(app, camera, layer);
      gizmo.on('render:update', () => {
      console.log('Gizmo render has been updated');
      });
      EVENT_ROTATIONUPDATE: string = 'rotation:update'

      Fired when the gizmo's rotation is updated.

      Example

      const gizmo = new pc.Gizmo(app, camera, layer);
      gizmo.on('rotation:update', (rotation) => {
      console.log(`The gizmo's rotation was updated to ${rotation}`);
      });
      EVENT_SCALEUPDATE: string = 'scale:update'

      Fired when the gizmo's scale is updated.

      Example

      const gizmo = new pc.Gizmo(app, camera, layer);
      gizmo.on('scale:update', (scale) => {
      console.log(`The gizmo's scale was updated to ${scale}`);
      });
      EVENT_TRANSFORMEND: string = 'transform:end'

      Fired when when the transformation has ended.

      Example

      const gizmo = new pc.TransformGizmo(app, camera, layer);
      gizmo.on('transform:end', () => {
      console.log('Transformation ended');
      });
      EVENT_TRANSFORMMOVE: string = 'transform:move'

      Fired during the transformation.

      Example

      const gizmo = new pc.TransformGizmo(app, camera, layer);
      gizmo.on('transform:move', (pointDelta, angleDelta) => {
      console.log('Transformation moved by ${pointDelta} (angle: ${angleDelta})');
      });
      EVENT_TRANSFORMSTART: string = 'transform:start'

      Fired when when the transformation has started.

      Example

      const gizmo = new pc.TransformGizmo(app, camera, layer);
      gizmo.on('transform:start', () => {
      console.log('Transformation started');
      });