Class GraphNode_EX

Hierarchy

  • GraphNode
    • GraphNode_EX

Constructors

  • Create a new GraphNode instance.

    Parameters

    • Optional name: string

      The non-unique name of a graph node. Defaults to 'Untitled'.

    Returns GraphNode_EX

Properties

name: string

The non-unique name of a graph node. Defaults to 'Untitled'.

tags: Tags

Interface for tagging graph nodes. Tag based searches can be performed using the GraphNode#findByTag function.

Accessors

  • get children(): GraphNode[]
  • A read-only property to get the children of this graph node.

    Returns GraphNode[]

  • get enabled(): boolean
  • Returns boolean

  • set enabled(arg: boolean): void
  • Enable or disable a GraphNode. If one of the GraphNode's parents is disabled there will be no other side effects. If all the parents are enabled then the new value will activate or deactivate all the enabled children of the GraphNode.

    Parameters

    • arg: boolean

    Returns void

  • get forward(): Vec3
  • The normalized local space negative Z-axis vector of the graph node in world space.

    Returns Vec3

  • get graphDepth(): number
  • A read-only property to get the depth of this child within the graph. Note that for performance reasons this is only recalculated when a node is added to a new parent, i.e. It is not recalculated when a node is simply removed from the graph.

    Returns number

  • get parent(): GraphNode
  • A read-only property to get a parent graph node.

    Returns GraphNode

  • get path(): string
  • A read-only property to get the path of the graph node relative to the root of the hierarchy.

    Returns string

  • get right(): Vec3
  • The normalized local space X-axis vector of the graph node in world space.

    Returns Vec3

  • get root(): GraphNode
  • A read-only property to get highest graph node from current node.

    Returns GraphNode

  • get up(): Vec3
  • The normalized local space Y-axis vector of the graph node in world space.

    Returns Vec3

Methods

  • Returns void

  • Add a new child to the child list and update the parent value of the child node. If the node already had a parent, it is removed from its child list.

    Example

    var e = new pc.Entity(app);
    this.entity.addChild(e);

    Parameters

    • node: GraphNode

      The new child to add.

    Returns void

  • Clone a graph node.

    Returns

    A clone of the specified graph node.

    Returns GraphNode_EX

  • Search the graph node and all of its descendants for the nodes that satisfy some search criteria.

    Returns

    The array of graph nodes that match the search criteria.

    Example

    // Finds all nodes that have a model component and have door in their lower-cased name var doors = house.find(function (node) { return node.model && node.name.toLowerCase().indexOf('door') !== -1; });

    Example

    // Finds all nodes that have the name property set to 'Test'
    var entities = parent.find('name', 'Test');

    Parameters

    • attr: string | FindNodeCallback

      This can either be a function or a string. If it's a function, it is executed for each descendant node to test if node satisfies the search logic. Returning true from the function will include the node into the results. If it's a string then it represents the name of a field or a method of the node. If this is the name of a field then the value passed as the second argument will be checked for equality. If this is the name of a function then the return value of the function will be checked for equality against the valued passed as the second argument to this function.

    • Optional value: object

      If the first argument (attr) is a property name then this value will be checked against the value of the property.

    Returns GraphNode[]

  • Get the first node found in the graph with the name. The search is depth first.

    Returns

    The first node to be found matching the supplied name. Returns null if no node is found.

    Parameters

    • name: string

      The name of the graph.

    Returns GraphNode

  • Get the first node found in the graph by its full path in the graph. The full path has this form 'parent/child/sub-child'. The search is depth first.

    Returns

    The first node to be found matching the supplied path. Returns null if no node is found.

    Example

    // String form
    var grandchild = this.entity.findByPath('child/grandchild');

    Example

    // Array form
    var grandchild = this.entity.findByPath(['child', 'grandchild']);

    Parameters

    • path: string | string[]

      The full path of the GraphNode as either a string or array of GraphNode names.

    Returns GraphNode

  • Return all graph nodes that satisfy the search query. Query can be simply a string, or comma separated strings, to have inclusive results of assets that match at least one query. A query that consists of an array of tags can be used to match graph nodes that have each tag of array.

    Returns

    A list of all graph nodes that match the query.

    Example

    // Return all graph nodes that tagged by animal var animals = node.findByTag("animal");

    Example

    // Return all graph nodes that tagged by bird OR mammal var birdsAndMammals = node.findByTag("bird", "mammal");

    Example

    // Return all assets that tagged by carnivore AND mammal var meatEatingMammals = node.findByTag(["carnivore", "mammal"]);

    Example

    // Return all assets that tagged by (carnivore AND mammal) OR (carnivore AND reptile) var meatEatingMammalsAndReptiles = node.findByTag(["carnivore", "mammal"], ["carnivore", "reptile"]);

    Parameters

    • Rest ...args: any[]

    Returns GraphNode[]

  • Search the graph node and all of its descendants for the first node that satisfies some search criteria.

    Returns

    A graph node that match the search criteria. Returns null if no node is found.

    Example

    // Find the first node that is called head and has a model component var head = player.findOne(function (node) { return node.model && node.name === 'head'; });

    Example

    // Finds the first node that has the name property set to 'Test'
    var node = parent.findOne('name', 'Test');

    Parameters

    • attr: string | FindNodeCallback

      This can either be a function or a string. If it's a function, it is executed for each descendant node to test if node satisfies the search logic. Returning true from the function will result in that node being returned from findOne. If it's a string then it represents the name of a field or a method of the node. If this is the name of a field then the value passed as the second argument will be checked for equality. If this is the name of a function then the return value of the function will be checked for equality against the valued passed as the second argument to this function.

    • Optional value: object

      If the first argument (attr) is a property name then this value will be checked against the value of the property.

    Returns GraphNode

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

    Returns

    Self for chaining.

    Example

    obj.fire('test', 'This is the message');
    

    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

  • Executes a provided function once on this graph node and all of its descendants.

    Example

    // Log the path and name of each node in descendant tree starting with "parent"
    parent.forEach(function (node) {
    console.log(node.path + "/" + node.name);
    });

    Parameters

    • callback: ForEachNodeCallback

      The function to execute on the graph node and each descendant.

    • Optional thisArg: object

      Optional value to use as this when executing callback function.

    Returns void

  • Get the world space rotation for the specified GraphNode in Euler angle form. The rotation is returned as euler angles in a Vec3. The value returned by this function should be considered read-only. In order to set the world-space rotation of the graph node, use GraphNode#setEulerAngles.

    Returns

    The world space rotation of the graph node in Euler angle form.

    Example

    var angles = this.entity.getEulerAngles();
    angles.y = 180; // rotate the entity around Y by 180 degrees
    this.entity.setEulerAngles(angles);

    Returns Vec3

  • Get the rotation in local space for the specified GraphNode. The rotation is returned as euler angles in a Vec3. The returned vector should be considered read-only. To update the local rotation, use GraphNode#setLocalEulerAngles.

    Returns

    The local space rotation of the graph node as euler angles in XYZ order.

    Example

    var angles = this.entity.getLocalEulerAngles();
    angles.y = 180;
    this.entity.setLocalEulerAngles(angles);

    Returns Vec3

  • Get the position in local space for the specified GraphNode. The position is returned as a Vec3. The returned vector should be considered read-only. To update the local position, use GraphNode#setLocalPosition.

    Returns

    The local space position of the graph node.

    Example

    var position = this.entity.getLocalPosition();
    position.x += 1; // move the entity 1 unit along x.
    this.entity.setLocalPosition(position);

    Returns Vec3

  • Get the rotation in local space for the specified GraphNode. The rotation is returned as a Quat. The returned quaternion should be considered read-only. To update the local rotation, use GraphNode#setLocalRotation.

    Returns

    The local space rotation of the graph node as a quaternion.

    Example

    var rotation = this.entity.getLocalRotation();
    

    Returns Quat

  • Get the scale in local space for the specified GraphNode. The scale is returned as a Vec3. The returned vector should be considered read-only. To update the local scale, use GraphNode#setLocalScale.

    Returns

    The local space scale of the graph node.

    Example

    var scale = this.entity.getLocalScale();
    scale.x = 100;
    this.entity.setLocalScale(scale);

    Returns Vec3

  • Get the local transform matrix for this graph node. This matrix is the transform relative to the node's parent's world transformation matrix.

    Returns

    The node's local transformation matrix.

    Example

    var transform = this.entity.getLocalTransform();
    

    Returns Mat4

  • Get the world space position for the specified GraphNode. The position is returned as a Vec3. The value returned by this function should be considered read-only. In order to set the world-space position of the graph node, use GraphNode#setPosition.

    Returns

    The world space position of the graph node.

    Example

    var position = this.entity.getPosition();
    position.x = 10;
    this.entity.setPosition(position);

    Returns Vec3

  • Get the world space rotation for the specified GraphNode. The rotation is returned as a Quat. The value returned by this function should be considered read-only. In order to set the world-space rotation of the graph node, use GraphNode#setRotation.

    Returns

    The world space rotation of the graph node as a quaternion.

    Example

    var rotation = this.entity.getRotation();
    

    Returns Quat

  • Get the world transformation matrix for this graph node.

    Returns

    The node's world transformation matrix.

    Example

    var transform = this.entity.getWorldTransform();
    

    Returns Mat4

  • Test if there are any handlers bound to an event name.

    Returns

    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

    Parameters

    • name: string

      The name of the event to test.

    Returns boolean

  • Insert a new child to the child list at the specified index and update the parent value of the child node. If the node already had a parent, it is removed from its child list.

    Example

    var e = new pc.Entity(app);
    this.entity.insertChild(e, 1);

    Parameters

    • node: GraphNode

      The new child to insert.

    • index: number

      The index in the child list of the parent where the new node will be inserted.

    Returns void

  • Check if node is ancestor for another node.

    Returns

    If node is ancestor for another node.

    Example

    if (body.isAncestorOf(foot)) {
    // foot is within body's hierarchy
    }

    Parameters

    • node: GraphNode

      Potential descendant of node.

    Returns boolean

  • Check if node is descendant of another node.

    Returns

    If node is descendant of another node.

    Example

    if (roof.isDescendantOf(house)) {
    // roof is descendant of house entity
    }

    Parameters

    • node: GraphNode

      Potential ancestor of node.

    Returns boolean

  • Reorients the graph node so that the negative z-axis points towards the target. This function has two valid signatures. Either pass 3D vectors for the look at coordinate and up vector, or pass numbers to represent the vectors.

    Example

    // Look at another entity, using the (default) positive y-axis for up
    var position = otherEntity.getPosition();
    this.entity.lookAt(position);

    Example

    // Look at another entity, using the negative world y-axis for up
    var position = otherEntity.getPosition();
    this.entity.lookAt(position, pc.Vec3.DOWN);

    Example

    // Look at the world space origin, using the (default) positive y-axis for up
    this.entity.lookAt(0, 0, 0);

    Example

    // Look at world-space coordinate [10, 10, 10], using the negative world y-axis for up
    this.entity.lookAt(10, 10, 10, 0, -1, 0);

    Parameters

    • x: number | Vec3

      If passing a 3D vector, this is the world-space coordinate to look at. Otherwise, it is the x-component of the world-space coordinate to look at.

    • Optional y: number | Vec3

      If passing a 3D vector, this is the world-space up vector for look at transform. Otherwise, it is the y-component of the world-space coordinate to look at.

    • Optional z: number

      Z-component of the world-space coordinate to look at.

    • Optional ux: number

      X-component of the up vector for the look at transform.

    • Optional uy: number

      Y-component of the up vector for the look at transform.

    • Optional uz: number

      Z-component of the up vector for the look at transform.

    Returns void

  • 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.

    Returns

    Self for chaining.

    Example

    var 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

    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

  • Attach an event handler to an event.

    Returns

    Self for chaining.

    Example

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

    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 EventHandler

  • Attach an event handler to an event. This handler will be removed after being fired once.

    Returns

    Self for chaining.

    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

    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 EventHandler

  • Remove the node from the child list and update the parent value of the child.

    Example

    var child = this.entity.children[0];
    this.entity.removeChild(child);

    Parameters

    • child: GraphNode

      The node to remove.

    Returns void

  • Remove graph node from current parent and add as child to new parent.

    Parameters

    • parent: GraphNode

      New parent to attach graph node to.

    • Optional index: number

      The child index where the child node should be placed.

    Returns void

  • 改变父节点并保持物体的transform

    Parameters

    • parent: GraphNode

      父节点

    Returns void

  • Rotates the graph node in world-space by the specified Euler angles. Eulers are specified in degrees in XYZ order. This function has two valid signatures: you can either pass a 3D vector or 3 numbers to specify the world-space rotation.

    Example

    // Rotate via 3 numbers
    this.entity.rotate(0, 90, 0);

    Example

    // Rotate via vector
    var r = new pc.Vec3(0, 90, 0);
    this.entity.rotate(r);

    Parameters

    • x: number | Vec3

      3-dimensional vector holding world-space rotation or rotation around world-space x-axis in degrees.

    • Optional y: number

      Rotation around world-space y-axis in degrees.

    • Optional z: number

      Rotation around world-space z-axis in degrees.

    Returns void

  • Rotates the graph node in local-space by the specified Euler angles. Eulers are specified in degrees in XYZ order. This function has two valid signatures: you can either pass a 3D vector or 3 numbers to specify the local-space rotation.

    Example

    // Rotate via 3 numbers
    this.entity.rotateLocal(0, 90, 0);

    Example

    // Rotate via vector
    var r = new pc.Vec3(0, 90, 0);
    this.entity.rotateLocal(r);

    Parameters

    • x: number | Vec3

      3-dimensional vector holding local-space rotation or rotation around local-space x-axis in degrees.

    • Optional y: number

      Rotation around local-space y-axis in degrees.

    • Optional z: number

      Rotation around local-space z-axis in degrees.

    Returns void

  • Sets the world-space rotation of the specified graph node using euler angles. Eulers are interpreted in XYZ order. Eulers must be specified in degrees. This function has two valid signatures: you can either pass a 3D vector or 3 numbers to specify the world-space euler rotation.

    Example

    // Set rotation of 90 degrees around world-space y-axis via 3 numbers
    this.entity.setEulerAngles(0, 90, 0);

    Example

    // Set rotation of 90 degrees around world-space y-axis via a vector
    var angles = new pc.Vec3(0, 90, 0);
    this.entity.setEulerAngles(angles);

    Parameters

    • x: number | Vec3

      3-dimensional vector holding eulers or rotation around world-space x-axis in degrees.

    • Optional y: number

      Rotation around world-space y-axis in degrees.

    • Optional z: number

      Rotation around world-space z-axis in degrees.

    Returns void

  • Sets the local-space rotation of the specified graph node using euler angles. Eulers are interpreted in XYZ order. Eulers must be specified in degrees. This function has two valid signatures: you can either pass a 3D vector or 3 numbers to specify the local-space euler rotation.

    Example

    // Set rotation of 90 degrees around y-axis via 3 numbers
    this.entity.setLocalEulerAngles(0, 90, 0);

    Example

    // Set rotation of 90 degrees around y-axis via a vector
    var angles = new pc.Vec3(0, 90, 0);
    this.entity.setLocalEulerAngles(angles);

    Parameters

    • x: number | Vec3

      3-dimensional vector holding eulers or rotation around local-space x-axis in degrees.

    • Optional y: number

      Rotation around local-space y-axis in degrees.

    • Optional z: number

      Rotation around local-space z-axis in degrees.

    Returns void

  • Sets the local-space position of the specified graph node. This function has two valid signatures: you can either pass a 3D vector or 3 numbers to specify the local-space position.

    Example

    // Set via 3 numbers
    this.entity.setLocalPosition(0, 10, 0);

    Example

    // Set via vector
    var pos = new pc.Vec3(0, 10, 0);
    this.entity.setLocalPosition(pos);

    Parameters

    • x: number | Vec3

      3-dimensional vector holding local-space position or x-coordinate of local-space position.

    • Optional y: number

      Y-coordinate of local-space position.

    • Optional z: number

      Z-coordinate of local-space position.

    Returns void

  • Sets the local-space rotation of the specified graph node. This function has two valid signatures: you can either pass a quaternion or 3 numbers to specify the local-space rotation.

    Example

    // Set via 4 numbers
    this.entity.setLocalRotation(0, 0, 0, 1);

    Example

    // Set via quaternion
    var q = pc.Quat();
    this.entity.setLocalRotation(q);

    Parameters

    • x: number | Quat

      Quaternion holding local-space rotation or x-component of local-space quaternion rotation.

    • Optional y: number

      Y-component of local-space quaternion rotation.

    • Optional z: number

      Z-component of local-space quaternion rotation.

    • Optional w: number

      W-component of local-space quaternion rotation.

    Returns void

  • Sets the local-space scale factor of the specified graph node. This function has two valid signatures: you can either pass a 3D vector or 3 numbers to specify the local-space scale.

    Example

    // Set via 3 numbers
    this.entity.setLocalScale(10, 10, 10);

    Example

    // Set via vector
    var scale = new pc.Vec3(10, 10, 10);
    this.entity.setLocalScale(scale);

    Parameters

    • x: number | Vec3

      3-dimensional vector holding local-space scale or x-coordinate of local-space scale.

    • Optional y: number

      Y-coordinate of local-space scale.

    • Optional z: number

      Z-coordinate of local-space scale.

    Returns void

  • Sets the world-space position of the specified graph node. This function has two valid signatures: you can either pass a 3D vector or 3 numbers to specify the world-space position.

    Example

    // Set via 3 numbers
    this.entity.setPosition(0, 10, 0);

    Example

    // Set via vector
    var position = new pc.Vec3(0, 10, 0);
    this.entity.setPosition(position);

    Parameters

    • x: number | Vec3

      3-dimensional vector holding world-space position or x-coordinate of world-space position.

    • Optional y: number

      Y-coordinate of world-space position.

    • Optional z: number

      Z-coordinate of world-space position.

    Returns void

  • Sets the world-space rotation of the specified graph node. This function has two valid signatures: you can either pass a quaternion or 3 numbers to specify the world-space rotation.

    Example

    // Set via 4 numbers
    this.entity.setRotation(0, 0, 0, 1);

    Example

    // Set via quaternion
    var q = pc.Quat();
    this.entity.setRotation(q);

    Parameters

    • x: number | Quat

      Quaternion holding world-space rotation or x-component of world-space quaternion rotation.

    • Optional y: number

      Y-component of world-space quaternion rotation.

    • Optional z: number

      Z-component of world-space quaternion rotation.

    • Optional w: number

      W-component of world-space quaternion rotation.

    Returns void

  • Translates the graph node in world-space by the specified translation vector. This function has two valid signatures: you can either pass a 3D vector or 3 numbers to specify the world-space translation.

    Example

    // Translate via 3 numbers
    this.entity.translate(10, 0, 0);

    Example

    // Translate via vector
    var t = new pc.Vec3(10, 0, 0);
    this.entity.translate(t);

    Parameters

    • x: number | Vec3

      3-dimensional vector holding world-space translation or x-coordinate of world-space translation.

    • Optional y: number

      Y-coordinate of world-space translation.

    • Optional z: number

      Z-coordinate of world-space translation.

    Returns void

  • Translates the graph node in local-space by the specified translation vector. This function has two valid signatures: you can either pass a 3D vector or 3 numbers to specify the local-space translation.

    Example

    // Translate via 3 numbers
    this.entity.translateLocal(10, 0, 0);

    Example

    // Translate via vector
    var t = new pc.Vec3(10, 0, 0);
    this.entity.translateLocal(t);

    Parameters

    • x: number | Vec3

      3-dimensional vector holding local-space translation or x-coordinate of local-space translation.

    • Optional y: number

      Y-coordinate of local-space translation.

    • Optional z: number

      Z-coordinate of local-space translation.

    Returns void