value1=this, value2=that, etc…
I think the best way to explain dynamic objects is to differentiate them from variables: variables are designed to refer to aspects of your show that are part of its fabric - the status of content in a room, the pressure in an air line, or whether a door is open or closed. The dynamic object feature is for things that are created during the show, the most obvious application being information about individual audience members - although there is nothing about them that would restrict them to being used for anything else.
A dynamic object has two properties:
Note that the UID can also be queried as part of the data, but not set
In assigning names and values to items in data, bear in mind the comments on reserved characters on this page.
To start to understand how to interact with dynamic objects, have a look at the relevant commands. You'll see that, broadly, there are two sets of commands:
set_findobject
, if the statements given refer to more than one object, the first one found that meets the criteria will be used.Whilst experimenting and programming a show, there is also an interface for examining currently known objects: the button next to the console button will spawn it. Entering a statement 1) in the box at the top will list all objects meeting that criteria. Pressing return on an empty box will list all objects.
Here's the fun2) part - dynamic object data value can be in-lined like variable references. But rather than using the $zone.variable
syntax, we use:
{<qualifier> | <value name>}
The qualifier is either:
The value name identifies the value in the data that then replaces the reference.
So, given a dynamic object with the UID 12345
and the data listed for the audience member above:
{ 12345 | firstName }
will resolve to John
{ firstName=John, lastName=Smith | intervalDrink }
will resolve to true
A dynamic object reference that fails to find an object or associated value will resolve to null
Note, that like variable references, dynamic object references will only be interpolated up to the first occurrence of ::
, which is the delimiter used for commands that are parameters of other commands - so these parameter commands will be passed with references intact.
All objects have two values that can be queried but not written to: