Aller au contenu

Nodes and lists

Logical node

The node is a conventional object that can take multiple forms. Indeed, in VRmaze, any entity is an instance of a node type and there are about 1000 different node types in the software.

A node has its own logic based on properties and possibly child nodes. For example, the Protocol type is very simple, one of its features is to save the result files when all experiments are finished. To know if the experiments are finished, it turns to its "Experimentation list" child and asks this node to return the finalization status. The logic of the protocol is therefore partly based on the child experimentation list.

By definition, nodes are not extensible, which means that it is not possible to add a child of a particular type to a node. Each node type will always have the same logical structure. Only lists allow nodes to be added as direct children, so often nodes have child lists, allowing them to have their own indirect children.

In the protocol tree, nodes that are not lists are represented by their name and an icon that informs about the general type of node.

Regardless of the type of node, it has properties. There are properties common to all nodes (name, description, identifier for example) and properties specific to each type which gives them a behavior.

Update during a pass

In pass mode, the update of the node implies the update of all the children of the node. Updating the Protocol entity, root of the tree, implies an update of the whole tree.

Add context menu on a node ?

A right mouse click on a node allows the addition of children of different types, which seems to contradict this documentary section. In fact VRmaze provides a list of entities that can be added: this list is a compilation of entity types that can be added via the child lists of the selected node.

Lifetime in pass

The lifetime of a node during a pass depends on its position in the tree. The lifetime of an entity cannot be greater than that of its parent, it will necessarily be equivalent or less.

Logical Node List

The node list is a special type of node that, unlike the base node, can contain a variable number of direct children as required by the protocol designer. The main constraint is that the direct children must be of similar types. For example, a list of 3D entities can contain any type of entity that has coordinates in 3D space (mesh objects, lights, point clouds, etc.).

Unlike the base node, it is therefore possible to add or remove direct children, and the icon representing a list is always the same regardless of the list. VRmaze provides a set of tools available to manage lists:

  • Add item
  • Delete item
  • Complete deletion (Empty the list)
  • Save
  • Merge (Replaces the contents of the list with the given one)
  • Move
  • Move from list to list (Drag and drop the item)
  • Copy List to List (Drag and Drop + Shift)

Contextual add menu on a list ?

The context menu allows the addition of new children to a list. This context menu has a feature to suggest only compatible node types in the context of the selected object.

List Properties

Quite rare, and just like a logical node from which the list is derived, a list can have its own properties.

Update during a pass

During a pass, lists update all children, which in cascades update their children. Two types of lists are exceptions: the experimentation list, which updates only the current experimentation, and the trial list, which updates only the current trial.

List of list?

It is quite possible for a list to be a list container, although this is quite rare. For example, a participant database is a list that contains participant groups. Participant groups are lists of nodes of type Participant.