What's New in Director 8.5 > Working with Models and Model Resources > Groups > Group commands |  |

Group commands

Use these commands to work with groups:

Command | Description | Returns
--- | --- | ---
`addChild(``aNode, preserveWorld``)` | Adds `aNode` to this group's list of children. An equivalent operation is to set `aNode.parent` to equal `this group`. The `preserveWorld` argument is optional. It can have two values: `#preserveWorld` or `#preserveParent`. If the value is `#preserveWorld`, the world transform of the child being added remains intact. If the value is `#preserveParent`, the child's existing transform is interpreted as parent-relative. | Nothing
`child[``index``]` | Returns the child at the specified position in the index. | Lingo group object
`child(``name``)` | Returns the child named `name`. | Lingo group object
`clone(``name``)` | Clones a group named `name`, adds it to group's parent's child list, and adds it to world All children of the group are automatically cloned. This can be avoided by removing the children, performing the cloning operation, and then adding the children back.

If the name is omitted or is `""`, the clone isn't added to the group palette, has no parent, and has no children. This option lets you quickly create temporary group instances.

Lingo group object

`cloneDeep(``name``)` | Clones both the group and the parent used by the group's children. Modifications to the clones' resource don't affect the parent. This is a more memory-intensive operation than `clone(``name``)`. | Lingo group object
`addtoWorld()` | Adds the group to the currently active 3D world, setting its parent as "world."Equivalent to `group.parent=member("scene").group("world")`. All newly created groups are added to the world by default, without it being necessary to use this command. | Nothing
`getWorldTransform()` | Sets this group's position and orientation relative to the world group's position and orientation. | Nothing
`remove from world` | For groups whose parent hierarchy terminates in the world, this sets their parent to `void` and removes them from the world. Otherwise it does nothing. | Nothing
`isInWorld()` | For groups whose parent hierarchy terminates in the world, the value is `TRUE (1)`. | `TRUE (1)` or `FALSE (0)`
`registerScript(``eventName, handlerName, scriptInstance``)` | Registers the handler named `handlerName` that is found in the script `scriptInstance` when the member function `sendEvent()` is called with `eventName` as an argument.If `scriptInstance` is 0, a movie script handler is called. The user defines what `eventName` is. | `TRUE (1)` or `FALSE (0)`, with `TRUE (1)` indicating that the event happened and `FALSE (0)` that it did not
`translate(``xIncrement,yIncrement,zIncrement,relativeTo``)` | Moves the group forward by `xIncrement` along the X axis, `yIncrement` along the Y axis, and `zIncrement` along the Z axis. The `relativeTo` parameter is optional. It determines how arguments are interpreted. The possible values are as follows: `#self`: the default. Increments are applied relative to the group's local coordinate system.

`#parent`: increments are relative to the group's parent's coordinate system.

`#world`: increments are relative to the world coordinate system. Equivalent to `#parent` if parent is the world.

node (group, light, camera, or group): increments are relative to the coordinate system of the argument object.

Nothing

`translate(``directionVector, relativeTo``)` | Moves the group `directionVector.length()` in the direction of the vector `directionVector`. The `relativeTo` argument is optional and defaults to `#self`. | Nothing
`translate(``x,y,z,relativeTo``)` | Moves the group distance `x` along the X axis, distance `y` along the Y axis, and distance `z` along the Z axis. The `relativeTo` argument is optional and defaults to `#self`. This command can also be written as`translate(vector(``x,y,z``)` `relativeTo``)`. | Nothing
`rotate(``x,y,z, relativeTo``)` | Rotates the group by `x` degrees around the X axis, `y` degrees around the Y axis, and `z` degrees around the Z axis. The `relativeTo` argument is optional and defaults to `#self`. If included, it defines the coordinate space of the axes. This command can also be written as`rotate(vector(``x,y,z``)` `relativeTo``)`. | Nothing
`rotate (``position, axis, angle, relativeTo``)` | Rotates the group around the axis vector in the specified position the specified number of degrees. The `relativeTo` argument is optional and defaults to `#self`. | Nothing
`pointAt(``worldPosition, worldUp``)` | Rotates the model until it points at the world-relative position worldPosition. The optional `worldUp` argument gives the general position of the model's Up axis. The exact position can't be determined using this method. Both the object-relative axes are defined by the `pointAtOrientation` property. Default values are an object-relative forward direction of vector (`0`, `0`, `-1`) and an object-relative up direction of vector (`0`, `1`, `0`). | Nothing
`getWorldTransform()` | Calculates and returns a transform that converts object-relative positions for this group into world-relative positions. | A transform object