Hi Roland,
ich werde später nochmal auf de running Geschichte zurück kommen, jetzt nur kurz hierzu:
ich werde später nochmal auf de running Geschichte zurück kommen, jetzt nur kurz hierzu:
Roland schrieb:JEDE Node, also auch CCompositeNode oder CDecoratorNode, ist von CTreeNode abgeleitet und speichert sich ebenfalls auf dem Stack ab.
Nicht, wenn sie im running state ist und running nodes ausgeschlossen werden:
Code:if (!IsRunning()) { bb.AddRunningNode(this);
Die Sequence einer CCompositeNode node xxx -> running wäre:
> CCompositeNode->Tick()
+ CCompositeNode::CTreeNode->OnInitialize()
+ CCompositeNode->bb.AddRunningNode()
> CCompositeNode::OnUpdate()
> CCompositeNode::mChild(x)->Tick()
+ CCompositeNode::mChild(x)::CTreeNode->OnInitialize()
+ CCompositeNode::mChild(x)->bb.AddRunningNode()
> CCompositeNode::mChild(x)::OnUpdate()
< CCompositeNode::mChild(x)::OnUpdate()
< CCompositeNode::mChild(x)->Tick()
< CCompositeNode::OnUpdate()
< CCompositeNode->Tick()
Beide Nodes befinden sich auf dem Stack. Die Sequence Running -> Running überspringe ich mal weil sich da am Stack nichts ändert.
Die Sequence einer CCompositeNode node running -> xxx wäre:
> CCompositeNode->Tick()
> CCompositeNode::OnUpdate()
> CCompositeNode::mChild(xRun)->Tick()
> CCompositeNode::mChild(xRun)::OnUpdate()
< CCompositeNode::mChild(xRun)::OnUpdate()
+ CCompositeNode::mChild(xRun)->bb.RemoveRunningNode()
+ CCompositeNode::mChild(xRun)::CTreeNode->OnTerminate()
< CCompositeNode::mChild(xRun)->Tick()
< CCompositeNode::OnUpdate()
+ CCompositeNode->bb.RemoveRunningNode()
+ CCompositeNode::CTreeNode->OnTerminate()
< CCompositeNode->Tick()
Hoffe ich konnte das etwas erklären. Last Running Child ist dabei immer an oberster Stelle im Stack.
Gruss
Rajiva
Zuletzt bearbeitet von einem Moderator: