ygNode derived from none Example Source Header

Description: the base class from which all scripted Ygdrasil nodes are derived

notes:
Category: Foundation
Author: Dave Pape
11/01/01
10/01/02 Alex Hill - added pfChanged and setPFChanged
10/10/02 Alex Hill - changed event message to take multiple arguments
09/01/04 Alex Hill - added "create" message
06/28/05 Alex Hill - added functions related to maintaining debug geometry
02/01/06 Alex Hill - added addEvent, setTransform, and other functions related to debug display
Revision: 07/01/06 Alex Hill - revised pfChanged logic to avoid concurrency problems

    Messages
when string, multiple string configure messages to send in response to an event
addChild string add the given node as a child
removeChild string add the given node as a child
debug string, [bool] turn debuging on and off
edit [bool] turn display debuging on and off
select [bool] turn display selected debuging on and off
print multiple string print the arguments to standard output
reset [bool, [string, [integer]]] reset and send initial and/or individual event messages
event string, [multiple string] generate an event with arguments of the form "arg=val"
unreliablekey string make a network key unreliable
reliablekey string make a network key reliable
resetTree reset the tree from this node down
create string, [string] create a new child node with optional name
message string receive net messages
    Events
msg.stringArg(0) msg.stringArg(i) process event messages with arguments
msg.stringArg(0) process event messages without arguments
updated the node has been updated by a message
    Debugs
netMessages print out all messages sent over the network
messages print out all messages received or sent by an event
display display debug outline
selected change debug outline color to selected
    Comments

constructor ygNode

1 if createPfNode flag set then create a new group node
2 print out all messages sent over the network
3 print out all messages received or sent by an event
4 display debug outline
5 change debug outline color to selected
6 distribute list of children nodes
7 distribute network messages
8 distribute display debug status
9 register updated event

destructor ~ygNode

method reset

1 reset display debug
2 clear event messages
3 send intitial messages

method sendInitMessages

method message

1 configure messages to send in response to an event
2 add the given node as a child
3 turn debuging on and off
4 turn display debuging on and off
5 turn display selected debuging on and off
6 print the arguments to standard output
7 reset and send initial and/or individual event messages
8 generate an event with arguments of the form "arg=val"
8.0.0.1 process event messages with arguments
8.0.0.1 process event messages without arguments
9 make a network key unreliable
10 make a network key reliable
11 reset the tree from this node down
12 create a new child node with optional name
13 receive net messages

method resetTree

1 reset this node
2 call resetTree recursively on all children

method appTraverse

1 start timing
2 execute app method
3 call appTraverse recursively on all children
4 end timing

method app

method parent

method numChildren

method child

method addChild

1 if net master or doLocal is set
1.1 if child has a parent have it remove the child
1.2 set the parent of the child to this node
1.3 bubble up the changes mask
1.4 push the child to the back of children vector
1.5 establish parent/child relationship for associated pfnodes
1.6 set and bubble up child changed mask
2 else, generate an addChild message and send

method removeChild

1 if net master or doLocal is set
1.1 while searching children
1.2 if child is found
1.2.1 remove child
1.2.2 undo parent/child relationship for associated pfnodes
1.2.3 set changed mask
2 else, generate a removeChild message and send

method setClassName

method className

method classDerivation

method isOfClass

method netClassName

method name

method addInitMessage

method clearInitMessages

method getInitMessages

method getNetMessages

method getNetMessageMap

method setPfNode

method setChanged

method isChanged

method pfnode

method origin

1 if node is given get position relative to the node
2 else, get absolute position of this node

method getTransform

method setTransform

method getParentTransform

method removeAllChildren

method updateChildrenMessage

method addEvent

method when

method eventOccurred

1 respond to event

method clearEventMessages

method clearEventMessages

method clearEventMessages

method map

method getEventMessages

method vector&

method getNextEvent

method unreliableMessage

method reliableMessage

method addNetMessage

method addNetMessageMap

method resetNetMessage

method sendNetMessage

method sendNetMessage

method receiveNetMessage

method getNetMessageArg

method parseMessage

0.1 the node has been updated by a message

method parseNetMessage

method netMessageChanged

method dontSendNetMessage

method dontSaveNetMessage

method requestNetMessages

method isNetMaster

method addComment

method getComments

method debugFlag

method setDebug

method getDebug

method debugDisplay

method debugSelected

method debugNode

method debugColor

method debugText

method debugString

method setDebugNode

method updateDebug

method createDebugNode

method createDebugText

1 set draw mask
2 set intersection traversal mask

method timingBegin

method timingAppDone

method timingEnd

method printMessages

method printTimingStats