Observers
These functions allow callbacks to be performed in response to nodes being updated.
The defined callbacks will take place following the execution of the script, or during a vrYield.
vrAddPropertyObserver
Adds an observer to monitor and respond to value changes for a single property.
- Script
- Output
local myNode = vrCreateNode("Assembly", "ObservedNode", vrScenesNode())
vrYield(0)
local myCallback = function(node, value)
print(node:getName() .. " enabled: " .. tostring(value))
end
vrAddPropertyObserver(
"enabledObserver",
myCallback,
"Assembly",
"Enabled"
)
myNode.Enabled = false
vrYield(0)
myNode.Enabled = true
vrYield(0)
vrRemoveObserver("enabledObserver")
vrDeleteNode(myNode)
Running...
ObservedNode enabled: false
ObservedNode enabled: true
Ended.
vrAddNodeObserver
Adds an observer to monitor and respond to changes on a Node.
The function takes a map of callback functions. These will be called in response to the appropriate changes.
Key | Callback | Callback Signature |
---|---|---|
valuesChanged | Called in response to a property's value being changed. | function(node) |
addingToRecycleBin | Called in repsonse to the node being sent to the recycle bin. | function(node) |
restoredFromRecycleBin | Called in repsonse to the node being returned from the recycle bin. | function(node) |
nodeDestroyed | Called in response to the node being destroyed. | function(node) |
- Script
- Output
local myNode = vrCreateNode("Assembly", "ObservedNode", vrScenesNode())
vrYield(0)
local callbackMap = {
valuesChanged = function(node)
print(node:getName() .. " enabled: " .. tostring(node.Enabled))
end,
addingToRecycleBin = function(node)
print(node:getName() .. " removed")
end
}
vrAddNodeObserver(
"nodeObserver",
myNode,
callbackMap
)
myNode.Enabled = false
vrYield(0)
myNode.Enabled = true
vrYield(0)
vrDeleteNode(myNode)
vrYield(0)
vrRemoveObserver("nodeObserver")
Running...
ObservedNode enabled: false
ObservedNode enabled: true
ObservedNode removed
Ended.
vrAddMetaNodeObserver
Adds an observer to monitor and respond to changes on instances of a MetaNode.
The function takes a map of callback functions. These will be called in response to the appropriate changes.
Key | Callback | Callback Signature |
---|---|---|
nodeCreated | Called in response to a node being created. | function(meta, node) |
nodeRenamed | Called in repsonse to a node being renamed. | function(meta, node) |
nodeParentChanged | Called in response to a node being moved. | function(meta, node, oldParent, newParent) |
nodeAddingToRecycleBin | Called in repsonse to a node being sent to the recycle bin. | function(meta, node) |
nodeRestoredFromRecycleBin | Called in repsonse to a node being returned from the recycle bin. | function(meta, node) |
nodeDestroying | Called in response to a node being destroyed. | function(meta, node) |
- Script
- Output
local callbackMap = {
nodeCreated = function(meta, node)
print(node:getName() .. " created")
end,
nodeRenamed = function(meta, node)
print(node:getName() .. " renamed")
end,
nodeParentChanged = function(meta, node, old, new)
if(old and new) then
print(node:getName() .. " moved from " .. old:getName() .. " to " .. new:getName())
end
end,
nodeAddingToRecycleBin = function(meta, node)
print(node:getName() .. " removed")
end
}
vrAddMetaNodeObserver(
"nodeObserver",
"Assembly",
callbackMap
)
local myNode = vrCreateNode("Assembly", "ObservedNode", vrScenesNode())
myNode:setParent(vrLibrariesNode())
vrYield(0)
myNode:setName("NamedNode")
vrYield(0)
vrDeleteNode(myNode)
vrYield(0)
vrRemoveObserver("nodeObserver")
Running...
ObservedNode created
ObservedNode moved from Scenes to Libraries
NamedNode renamed
NamedNode removed
NamedNode moved from Libraries to RecycleBin
Ended.
vrAddTransformNodeObserver
Adds an observer to monitor and respond to the transform related value changes of a Node.
- Script
- Output
local myNode = vrCreateNode("Assembly", "ObservedNode", vrScenesNode())
vrYield(0)
local myTransformCallback = function(node, value)
print(node:getName() .. " transformed:")
print(tostring(value))
end
local myEnabledCallback = function(node, value)
print(node:getName() .. " enabled: " .. tostring(value))
end
vrAddTransformNodeObserver(
"transformObserver",
myTransformCallback,
myEnabledCallback,
myNode
)
myNode.Enabled = false
vrYield(0)
myNode.Enabled = true
vrYield(0)
local transform = myNode.Transform
transform.position.x = transform.position.x + 1.0
vrYield(0)
vrRemoveObserver("transformObserver")
vrDeleteNode(myNode)
vrYield(0)
Running...
ObservedNode enabled: false
ObservedNode enabled: true
ObservedNode transformed:
1 0 0 0
0 1 0 0
0 0 1 0
1 0 0 1
Ended.