# Class: oNode

## $. oNode

The oNode class represents a node in the Harmony scene.
It holds the value of its position in the node view, and functions to link to other nodes, as well as set the attributes of the node.

#### new $.oNode(path, oSceneObject)

openHarmony/openHarmony_node.js, line 99
  Constructor for $.oNode class

  Name | Type | Description
  --- | --- | ---
  `path` | string | Path to the node in the network.
  `oSceneObject` | $.oScene | optional Access to the oScene object of the DOM.

  See:
    - NodeType

  ##### Example

      // To grab a node object from the scene, it's possible to create a new node object by calling the constructor:
      var myNode = new $.oNode("Top/Drawing", $.scn)

      // However, most nodes will be grabbed directly from the scene object.
      var doc = $.scn
      var nodes = doc.nodes;                   // grabs the list of all the nodes in the scene

      // It's possible to grab a single node from the path in the scene
      var myNode = doc.getNodeByPath("Top/Drawing")
      var myNode = doc.$node("Top/Drawing")    // short synthax but same function

      // depending on the type of node, oNode objects returned by these functions can actually be an instance the subclasses
      // oDrawingNode, oGroupNode, oPegNode...

      $.log(myNode instanceof $.oNode)           // true
      $.log(myNode instanceof $.oDrawingNode)  // true

      // These other subclasses of nodes have other methods that are only shared by nodes of a certain type.

      // Not documented in this class, oNode objects have attributes which correspond to the values visible in the Layer Properties window.
      // The attributes values can be accessed and set by using the dot notation on the oNode object:

      myNode.can_animate = false;
      myNode.position.separate = true;
      myNode.position.x = 10;

      // To access the oAttribute objects in the node, call the oNode.attributes object that contains them

      var attributes = myNode.attributes;

### Members

#### readonlyattributesoAttribute

  An object containing all attributes of this node.

  ##### Example

      // You can get access to the actual oAttribute object for a node parameter by using the dot notation:

      var myNode = $.scn.$node("Top/Drawing")
      var drawingAttribute = myNode.attributes.drawing.element

      // from there, it's possible to set/get the value of the attribute, get the column, the attribute keyword etc.

      drawingAttribute.setValue ("1", 5);           // creating an exposure of drawing 1 at frame 5
      var drawingColumn = drawingAttribute.column;  // grabbing the column linked to the attribute that holds all the animation
      $.log(drawingAttribute.keyword);              // "DRAWING.ELEMENT"

      // for a more direct way to access an attribute, it's possible to also call:

      var drawingAttribute = myNode.getAttributeByName("DRAWING.ELEMENT");

#### readonlyboundsoBox

  The bounds of the node.

#### readonlycanCreateInPortsbool

  Whether the node can create new in-ports.

#### readonlycanCreateOutPortsbool

  Whether the node can create new out-ports.

#### childrenArray.<$.oNode>

  The $.oNode objects contained in this group. This is deprecated and was moved to oGroupNode
  Deprecated
    - Use oGroupNode.children instead.

#### enabledbool

  Is the node enabled?

#### existsbool

  Does the node exist?

#### fullPathstring

  The derived path to the node.
  Deprecated
    - use oNode.path instead

#### readonlygroupoGroupNode

  The group containing the node.

#### readonlyheightfloat

  The height of the node in the node view.

#### readonlyinLinksArray.<$.oNodeLink>

  The list of oNodeLinks objects descibing the connections to the inport of this node, in order of inport.

#### readonlyinNodesArray.<$.oNode>

  The list of nodes connected to the inport of this node, in order of inport.

#### readonlyinPortsint

  The number of link ports on top of the node, connected or not.

#### readonlyinsArray.<$.oNode>

  The list of nodes connected to the inport of this node, in order of inport.

#### isGroupbool

  Is the node a group?

#### readonlyisRootbool

  Is the node the root?

#### readonlylinkedColumnsArray.<oColumn>

  The linked columns associated with the node.

#### readonlylinkedInNodesArray.<$.oNode>

  The list of nodes connected to the inport of this node, as a flat list, in order of inport.

#### readonlylinkedOutNodesArray.<$.oNode>

  The list of nodes connected to the inport of this node, as a flat list, in order of inport.

#### lockedbool

  Is the node locked?

#### namestring

  The node's name.

#### nodePositionoPoint

  The position of the node.

#### readonlyoutLinksArray.<$.oNodeLink>

  The list of oNodeLinks objects descibing the connections to the outports of this node, in order of outport.

#### readonlyoutNodesArray.<Array.<$.oNode>>

  The list of nodes connected to the outports of this node

#### readonlyoutPortsint

  The number of link ports at the bottom of the node, connected or not.

#### readonlyoutsArray.<Array.<$.oNode>>

  The list of nodes connected to the outport of this node, in order of outport and links.

#### readonlyparent$.oNode

  The $.oNode object for the parent in which this node exists.

#### pathstring

  The derived path to the node.

#### selectedbool

  Is the node selected?

#### readonlytypestring

  The type of the node.

#### readonlywidthfloat

  The width of the node in the node view.

#### xfloat

  The horizontal position of the node in the node view.

#### yfloat

  The vertical position of the node in the node view.

#### zfloat

  The depth position of the node in the node view.

### Methods

#### addOutLink(nodeToLink, ownPort, destPort){$.oNodeLink}

openHarmony/openHarmony_node.js, line 1517
  Creates an $.oNodeLink and connects this node to the target via this nodes outport.

  Name | Type | Description
  --- | --- | ---
  `nodeToLink` | oNode | The target node as an in node.
  `ownPort` | int | The out port on this node to connect to.
  `destPort` | int | The in port on the inNode to connect to.

  ##### Returns:

  Type | Description
  --- | ---
  $.oNodeLink | the resulting created link.

  ##### Example

      var peg1     = $.scene.getNodeByPath( "Top/Peg1" );
       var peg2     = $.scene.getNodeByPath( "Top/Group/Peg2" );
       var newLink  = peg1.addOutLink( peg2, 0, 0 );

#### centerAbove(oNodeArray, xOffset, yOffset){oPoint}

openHarmony/openHarmony_node.js, line 1233
  Place a node above one or more nodes with an offset.

  Name | Type | Description
  --- | --- | ---
  `oNodeArray` | Array.<$.oNode> | The array of nodes to center this above.
  `xOffset` | float | The horizontal offset to apply after centering.
  `yOffset` | float | The vertical offset to apply after centering.

  ##### Returns:

  Type | Description
  --- | ---
  oPoint | The resulting position of the node.

#### centerBelow(oNodeArray, xOffset, yOffset){oPoint}

openHarmony/openHarmony_node.js, line 1258
  Place a node below one or more nodes with an offset.

  Name | Type | Description
  --- | --- | ---
  `oNodeArray` | Array.<$.oNode> | The array of nodes to center this below.
  `xOffset` | float | The horizontal offset to apply after centering.
  `yOffset` | float | The vertical offset to apply after centering.

  ##### Returns:

  Type | Description
  --- | ---
  oPoint | The resulting position of the node.

#### clone(newName, newPosition)

openHarmony/openHarmony_node.js, line 1307
  Create a clone of the node.

  Name | Type | Description
  --- | --- | ---
  `newName` | string | The new name for the cloned module.
  `newPosition` | oPoint | The new position for the cloned module.

#### createAttribute(attrName, type, displayName, linkable){$.oAttribute}

openHarmony/openHarmony_node.js, line 1536
  Creates a new dynamic attribute in the node.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `attrName` | string |  | The attribute name to create.
  `type` | string | "string" | optional The type of the attribute ["string", "bool", "double", "int"]
  `displayName` | string | attrName | optional The visible attribute name to the GUI user.
  `linkable` | bool | false | optional Whether the attribute can be linked to a column.

  ##### Returns:

  Type | Description
  --- | ---
  $.oAttribute | The resulting attribute created.

#### duplicate(newName, newPosition)

openHarmony/openHarmony_node.js, line 1339
  Duplicates a node by creating an independent copy.

  Name | Type | Description
  --- | --- | ---
  `newName` | string | optional The new name for the duplicated node.
  `newPosition` | oPoint | optional The new position for the duplicated node.

#### getAttributeByColumnName(columnName){oAttribute}

openHarmony/openHarmony_node.js, line 1435
  Provides a matching attribute based on the column name provided. Assumes only one match at the moment.

  Name | Type | Description
  --- | --- | ---
  `columnName` | string | The column name to search.

  ##### Returns:

  Type | Description
  --- | ---
  oAttribute | The matched attribute object, given the column name.

#### getAttributeByName(keyword){oAttribute}

openHarmony/openHarmony_node.js, line 1399
  Provides a matching attribute based on provided keyword name. Keyword can include "." to get subattributes.

  Name | Type | Description
  --- | --- | ---
  `keyword` | string | The attribute keyword to search.

  ##### Returns:

  Type | Description
  --- | ---
  oAttribute | The matched attribute object, given the keyword.

#### getFreeInPort(createNew){int}

openHarmony/openHarmony_node.js, line 894
  Returns a free unconnected in-port

  Name | Type | Default | Description
  --- | --- | --- | ---
  `createNew` | bool | true | optional Whether to allow creation of new ports

  ##### Returns:

  Type | Description
  --- | ---
  int | the port number that isn't connected

#### getFreeOutPort(createNew){int}

openHarmony/openHarmony_node.js, line 1028
  Returns a free unconnected out-port

  Name | Type | Default | Description
  --- | --- | --- | ---
  `createNew` | bool | true | optional Whether to allow creation of new ports

  ##### Returns:

  Type | Description
  --- | ---
  int | the port number that isn't connected

#### getInLink(inPort){$.oLink}

openHarmony/openHarmony_node.js, line 857
  Returns the oLink object representing the connection of a specific inPort

  Name | Type | Description
  --- | --- | ---
  `inPort` | int | the number of the port to get links from.

  ##### Returns:

  Type | Description
  --- | ---
  $.oLink | the oLink Object representing the link connected to the inport

#### getInLinks(){Array.<$.oLink>}

openHarmony/openHarmony_node.js, line 876
  Returns all the valid oLink objects describing the links that are connected into this node.

  ##### Returns:

  Type | Description
  --- | ---
  Array.<$.oLink> | An array of $.oLink objects.

#### getInLinksNumber(outPort)

openHarmony/openHarmony_node.js, line 846
  Returns the number of links connected to an in-port

  Name | Type | Description
  --- | --- | ---
  `outPort` | int | the number of the port to get links from.

#### getLinkedInNode(inPort){$.oNode}

openHarmony/openHarmony_node.js, line 964
  Returns the node connected to a specific in-port

  Name | Type | Description
  --- | --- | ---
  `inPort` | int | the number of the port to get the linked Node from.

  ##### Returns:

  Type | Description
  --- | ---
  $.oNode | The node connected to this in-port

#### getLinkedOutNode(outPort, outLink){$.oNode}

openHarmony/openHarmony_node.js, line 1091
  Returns the node connected to a specific outPort

  Name | Type | Default | Description
  --- | --- | --- | ---
  `outPort` | int |  | the number of the port to get the node from.
  `outLink` | int | 0 | optional the index of the link.

  ##### Returns:

  Type | Description
  --- | ---
  $.oNode | The node connected to this outPort and outLink

#### getOutLink(outPort, outLink){$.oLink}

openHarmony/openHarmony_node.js, line 987
  Returns the $.oLink object representing the connection of a specific outPort / link

  Name | Type | Description
  --- | --- | ---
  `outPort` | int | the number of the port to get the link from.
  `outLink` | int | optional the index of the link.

  ##### Returns:

  Type | Description
  --- | ---
  $.oLink | The link object describing the connection

#### getOutLinks(){Array.<$.oLink>}

openHarmony/openHarmony_node.js, line 1007
  Returns all the valid oLink objects describing the links that are coming out of this node.

  ##### Returns:

  Type | Description
  --- | ---
  Array.<$.oLink> | An array of $.oLink objects.

#### getOutLinksNumber(outPort){int}

openHarmony/openHarmony_node.js, line 975
  Returns the number of links connected to an outPort

  Name | Type | Description
  --- | --- | ---
  `outPort` | int | the number of the port to get links from.

  ##### Returns:

  Type | Description
  --- | ---
  int | the number of links

#### insertInNode(inPort, oNodeObject, inPortTarget, outPortTarget){bool}

openHarmony/openHarmony_node.js, line 1129
  Inserts the $.oNodeObject provided as an innode to this node, placing it between any existing nodes if the link already exists.

  Name | Type | Description
  --- | --- | ---
  `inPort` | int | This node's inport to connect.
  `oNodeObject` | $.oNode | The node to link this one's outport to.
  `inPortTarget` | int | The target node's inPort to connect.
  `outPortTarget` | int | The target node's outPort to connect.

  ##### Returns:

  Type | Description
  --- | ---
  bool | The result of the link, if successful.

#### linkInNode(nodeToLink, ownPort, destPort, createPorts){bool}

openHarmony/openHarmony_node.js, line 918
  Links this node's inport to the given module, at the inport and outport indices.

  Name | Type | Description
  --- | --- | ---
  `nodeToLink` | $.oNode | The node to link this one's inport to.
  `ownPort` | int | optional This node's inport to connect.
  `destPort` | int | optional The target node's outport to connect.
  `createPorts` | bool | optional Whether to create new ports on the nodes.

  ##### Returns:

  Type | Description
  --- | ---
  bool | The result of the link, if successful.

#### linkOutNode(nodeToLink, ownPort, destPort, createPorts){bool}

openHarmony/openHarmony_node.js, line 1053
  Links this node's out-port to the given module, at the inport and outport indices.

  Name | Type | Description
  --- | --- | ---
  `nodeToLink` | $.oNode | The node to link this one's outport to.
  `ownPort` | int | optional This node's outport to connect.
  `destPort` | int | optional The target node's inport to connect.
  `createPorts` | bool | optional Whether to create new ports on the nodes.

  ##### Returns:

  Type | Description
  --- | ---
  bool | The result of the link, if successful.

#### moveToGroup(group)

openHarmony/openHarmony_node.js, line 1149
  Moves the node into the specified group. This doesn't create any composite or links to the multiport nodes. The node will be unlinked.

  Name | Type | Description
  --- | --- | ---
  `group` | oGroupNode | the group node to move the node into.

#### placeAtCenter(oNodeArray, xOffset, yOffset){oPoint}

openHarmony/openHarmony_node.js, line 1284
  Place at center of one or more nodes with an offset.

  Name | Type | Description
  --- | --- | ---
  `oNodeArray` | Array.<$.oNode> | The array of nodes to center this below.
  `xOffset` | float | The horizontal offset to apply after centering.
  `yOffset` | float | The vertical offset to apply after centering.

  ##### Returns:

  Type | Description
  --- | ---
  oPoint | The resulting position of the node.

#### refreshAttributes(oNodeObject){bool}

openHarmony/openHarmony_node.js, line 1588
  Refreshes/rebuilds the attributes and getter/setters.

  Name | Type | Description
  --- | --- | ---
  `oNodeObject` | $.oNode | The node to link this one's inport to.

  ##### Returns:

  Type | Description
  --- | ---
  bool | The result of the unlink.

#### remove(deleteColumns, deleteElements){void}

openHarmony/openHarmony_node.js, line 1371
  Removes the node from the scene.

  Name | Type | Description
  --- | --- | ---
  `deleteColumns` | bool | Should the columns of drawings be deleted as well?
  `deleteElements` | bool | Should the elements of drawings be deleted as well?

  ##### Returns:

  Type | Description
  --- | ---
  void |

#### removeAttribute(attrName){bool}

openHarmony/openHarmony_node.js, line 1577
  Removes an existing dynamic attribute in the node.

  Name | Type | Description
  --- | --- | ---
  `attrName` | string | The attribute name to remove.

  ##### Returns:

  Type | Description
  --- | ---
  bool | The result of the removal.

#### subNodes(recurse){Array.<$.oNode>}

openHarmony/openHarmony_node.js, line 1211
  obtains the nodes contained in the group, allows recursive search. This method is deprecated and was moved to oGroupNode

  Name | Type | Description
  --- | --- | ---
  `recurse` | bool | Whether to recurse internally for nodes within children groups.

  Deprecated
    - Yes

  ##### Returns:

  Type | Description
  --- | ---
  Array.<$.oNode> | The subbnodes contained in the group.

#### timelineIndex(timeline){int}

openHarmony/openHarmony_node.js, line 1198
  Retrieves the nodes index in the timeline provided.

  Name | Type | Description
  --- | --- | ---
  `timeline` | oTimeline | The timeline object to search the nodes index.

  ##### Returns:

  Type | Description
  --- | ---
  int | The index within that timeline.

#### toString(){string}

openHarmony/openHarmony_node.js, line 1425
  Used in converting the node to a string value, provides the string-path.

  ##### Returns:

  Type | Description
  --- | ---
  string | The node path's as a string.

#### unlinkInNode(oNodeObject){bool}

openHarmony/openHarmony_node.js, line 933
  Searches for and unlinks the $.oNode object from this node's inNodes.

  Name | Type | Description
  --- | --- | ---
  `oNodeObject` | $.oNode | The node to link this one's inport to.

  ##### Returns:

  Type | Description
  --- | ---
  bool | The result of the unlink.

#### unlinkInPort(inPort){bool}

openHarmony/openHarmony_node.js, line 951
  Unlinks a specific port from this node's inport.

  Name | Type | Description
  --- | --- | ---
  `inPort` | int | The inport to disconnect.

  ##### Returns:

  Type | Description
  --- | ---
  bool | The result of the unlink, if successful.

#### unlinkOutNode(oNodeObject){bool}

openHarmony/openHarmony_node.js, line 1068
  Links this node's out-port to the given module, at the inport and outport indices.

  Name | Type | Description
  --- | --- | ---
  `oNodeObject` | $.oNode | The node to unlink from this node's outports.

  ##### Returns:

  Type | Description
  --- | ---
  bool | The result of the link, if successful.

#### unlinkOutPort(outPort, outLink){bool}

openHarmony/openHarmony_node.js, line 1105
  Unlinks a specific port/link from this node's output.

  Name | Type | Description
  --- | --- | ---
  `outPort` | int | The outPort to disconnect.
  `outLink` | int | The outLink to disconnect.

  ##### Returns:

  Type | Description
  --- | ---
  bool | The result of the unlink, if successful.