Skip to content

Commit 8c391a2

Browse files
committed
Add the possibility to hide the connections of an input slot.
1 parent 7db07c2 commit 8c391a2

38 files changed

Lines changed: 379 additions & 321 deletions

Sources/BuiltInNodes/BI_UINodePanels.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -232,14 +232,14 @@ NodeUISlotPanel::NodeUISlotPanel (const NUIE::UINode& node, NUIE::NodeUIDrawingE
232232
{
233233
const NUIE::SkinParams& skinParams = env.GetSkinParams ();
234234

235-
node.EnumerateUIInputSlots ([&] (const NUIE::UIInputSlotConstPtr& slot) {
235+
node.EnumerateUIInputSlots ([&] (NUIE::UIInputSlotConstPtr slot) {
236236
NUIE::Size slotRectSize = env.GetDrawingContext ().MeasureText (skinParams.GetNodeContentTextFont (), slot->GetName ().GetLocalized ());
237237
slotRectSize = slotRectSize.Grow (2.0 * skinParams.GetNodePadding (), skinParams.GetNodePadding ());
238238
inputSlots.AddSlotSize (slot->GetId (), slotRectSize);
239239
return true;
240240
});
241241

242-
node.EnumerateUIOutputSlots ([&] (const NUIE::UIOutputSlotConstPtr& slot) {
242+
node.EnumerateUIOutputSlots ([&] (NUIE::UIOutputSlotConstPtr slot) {
243243
NUIE::Size slotRectSize = env.GetDrawingContext ().MeasureText (skinParams.GetNodeContentTextFont (), slot->GetName ().GetLocalized ());
244244
slotRectSize = slotRectSize.Grow (2.0 * skinParams.GetNodePadding (), skinParams.GetNodePadding ());
245245
outputSlots.AddSlotSize (slot->GetId (), slotRectSize);
@@ -274,9 +274,18 @@ void NodeUISlotPanel::Draw (NUIE::NodeUIDrawingEnvironment& env, const NUIE::Rec
274274
drawingImage.AddInputSlotConnPosition (slotId, slotRect.GetLeftCenter ());
275275
drawingImage.AddInputSlotRect (slotId, slotRect);
276276
if (skinParams.GetSlotMarker () == NUIE::SkinParams::SlotMarker::Circle) {
277-
NUIE::Rect connCircleRect = NUIE::Rect::FromCenterAndSize (slotRect.GetLeftCenter (), skinParams.GetSlotMarkerSize ());
278-
drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingFillEllipse (connCircleRect, skinParams.GetSlotTextBackgroundColor ())), NUIE::DrawingContext::ItemPreviewMode::HideInPreview);
279-
drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingEllipse (connCircleRect, skinParams.GetConnectionLinePen ())), NUIE::DrawingContext::ItemPreviewMode::HideInPreview);
277+
if (uiSlot->GetConnectionDisplayMode () == NUIE::ConnectionDisplayMode::Hidden && node.IsInputSlotConnected (uiSlot->GetId ())) {
278+
NUIE::Size slotMarkerHiddenConnectionSize = skinParams.GetSlotMarkerSize () + NUIE::Size (3.0, 3.0);
279+
NUIE::Rect bigConnCircleRect = NUIE::Rect::FromCenterAndSize (slotRect.GetLeftCenter (), slotMarkerHiddenConnectionSize);
280+
NUIE::Rect smallConnCircleRect = NUIE::Rect::FromCenterAndSize (slotRect.GetLeftCenter (), slotMarkerHiddenConnectionSize - NUIE::Size (5.0, 5.0));
281+
drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingFillEllipse (bigConnCircleRect, skinParams.GetSlotTextBackgroundColor ())), NUIE::DrawingContext::ItemPreviewMode::HideInPreview);
282+
drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingEllipse (bigConnCircleRect, skinParams.GetConnectionLinePen ())), NUIE::DrawingContext::ItemPreviewMode::HideInPreview);
283+
drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingEllipse (smallConnCircleRect, skinParams.GetConnectionLinePen ())), NUIE::DrawingContext::ItemPreviewMode::HideInPreview);
284+
} else {
285+
NUIE::Rect connCircleRect = NUIE::Rect::FromCenterAndSize (slotRect.GetLeftCenter (), skinParams.GetSlotMarkerSize ());
286+
drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingFillEllipse (connCircleRect, skinParams.GetSlotTextBackgroundColor ())), NUIE::DrawingContext::ItemPreviewMode::HideInPreview);
287+
drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingEllipse (connCircleRect, skinParams.GetConnectionLinePen ())), NUIE::DrawingContext::ItemPreviewMode::HideInPreview);
288+
}
280289
}
281290
drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingFillRect (slotRect, skinParams.GetSlotTextBackgroundColor ())));
282291
drawingImage.AddItem (NUIE::DrawingItemConstPtr (new NUIE::DrawingText (textRect, skinParams.GetNodeContentTextFont (), uiSlot->GetName ().GetLocalized (), NUIE::HorizontalAnchor::Left, NUIE::VerticalAnchor::Center, skinParams.GetSlotTextColor ())), NUIE::DrawingContext::ItemPreviewMode::HideInPreview);

Sources/MacOSEmbeddingDemo/Application.mm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@ - (void) windowDidResize : (NSNotification *) notification
114114
/*connectionLinePen*/ NUIE::Pen (NUIE::Color (38, 50, 56), 1.0),
115115
/*connectionMarker */ NUIE::SkinParams::ConnectionMarker::Circle,
116116
/*connectionMarkerSize*/ NUIE::Size (8.0, 8.0),
117+
/*hiddenConnectionMarkerBigSize*/ NUIE::Size (11.0, 11.0),
118+
/*hiddenConnectionMarkerSmallSize*/ NUIE::Size (6.0, 6.0),
117119
/*nodePadding*/ 5.0,
118120
/*nodeBorderPen*/ NUIE::Pen (NUIE::Color (38, 50, 56), 1.0),
119121
/*nodeHeaderTextFont*/ NUIE::Font (L"Helvetica", 16.0),

Sources/NodeEngine/NE_Node.cpp

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,18 @@ bool Node::HasOutputSlot (const SlotId& slotId) const
5353
return outputSlots.Contains (slotId);
5454
}
5555

56+
bool Node::IsInputSlotConnected (const SlotId& slotId) const
57+
{
58+
if (DBGERROR (nodeEvaluator == nullptr)) {
59+
return false;
60+
}
61+
InputSlotConstPtr inputSlot = inputSlots.Get (slotId);
62+
if (DBGERROR (inputSlot == nullptr)) {
63+
return false;
64+
}
65+
return nodeEvaluator->HasConnectedOutputSlots (inputSlot);
66+
}
67+
5668
InputSlotConstPtr Node::GetInputSlot (const SlotId& slotId) const
5769
{
5870
return inputSlots.Get (slotId);
@@ -73,12 +85,22 @@ size_t Node::GetOutputSlotCount () const
7385
return outputSlots.Count ();
7486
}
7587

76-
void Node::EnumerateInputSlots (const std::function<bool (const InputSlotConstPtr&)>& processor) const
88+
void Node::EnumerateInputSlots (const std::function<bool (InputSlotPtr)>& processor)
89+
{
90+
inputSlots.Enumerate (processor);
91+
}
92+
93+
void Node::EnumerateOutputSlots (const std::function<bool (OutputSlotPtr)>& processor)
94+
{
95+
outputSlots.Enumerate (processor);
96+
}
97+
98+
void Node::EnumerateInputSlots (const std::function<bool (InputSlotConstPtr)>& processor) const
7799
{
78100
inputSlots.Enumerate (processor);
79101
}
80102

81-
void Node::EnumerateOutputSlots (const std::function<bool (const OutputSlotConstPtr&)>& processor) const
103+
void Node::EnumerateOutputSlots (const std::function<bool (OutputSlotConstPtr)>& processor) const
82104
{
83105
outputSlots.Enumerate (processor);
84106
}
@@ -267,16 +289,6 @@ ValueConstPtr Node::EvaluateInputSlot (const SlotId& slotId, EvaluationEnv& env)
267289
return EvaluateInputSlot (inputSlot, env);
268290
}
269291

270-
InputSlotPtr Node::GetModifiableInputSlot (const SlotId& slotId)
271-
{
272-
return inputSlots.Get (slotId);
273-
}
274-
275-
OutputSlotPtr Node::GetModifiableOutputSlot (const SlotId& slotId)
276-
{
277-
return outputSlots.Get (slotId);
278-
}
279-
280292
void Node::SetId (const NodeId& newNodeId)
281293
{
282294
nodeId = newNodeId;
@@ -366,16 +378,4 @@ bool Node::IsEqual (const NodeConstPtr& aNode, const NodeConstPtr& bNode)
366378
return aStream.GetBuffer () == bStream.GetBuffer ();
367379
}
368380

369-
template <>
370-
void Node::EnumerateSlots (const std::function<bool (const InputSlotConstPtr&)>& processor) const
371-
{
372-
EnumerateInputSlots (processor);
373-
}
374-
375-
template <>
376-
void Node::EnumerateSlots (const std::function<bool (const OutputSlotConstPtr&)>& processor) const
377-
{
378-
EnumerateOutputSlots (processor);
379-
}
380-
381381
}

Sources/NodeEngine/NE_Node.hpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,19 @@ class Node : public DynamicSerializable
5959

6060
bool HasInputSlot (const SlotId& slotId) const;
6161
bool HasOutputSlot (const SlotId& slotId) const;
62+
bool IsInputSlotConnected (const SlotId& slotId) const;
6263

6364
InputSlotConstPtr GetInputSlot (const SlotId& slotId) const;
6465
OutputSlotConstPtr GetOutputSlot (const SlotId& slotId) const;
6566

6667
size_t GetInputSlotCount () const;
6768
size_t GetOutputSlotCount () const;
6869

69-
void EnumerateInputSlots (const std::function<bool (const InputSlotConstPtr&)>& processor) const;
70-
void EnumerateOutputSlots (const std::function<bool (const OutputSlotConstPtr&)>& processor) const;
70+
void EnumerateInputSlots (const std::function<bool (InputSlotPtr)>& processor);
71+
void EnumerateOutputSlots (const std::function<bool (OutputSlotPtr)>& processor);
72+
73+
void EnumerateInputSlots (const std::function<bool (InputSlotConstPtr)>& processor) const;
74+
void EnumerateOutputSlots (const std::function<bool (OutputSlotConstPtr)>& processor) const;
7175

7276
ValueConstPtr Evaluate (EvaluationEnv& env) const;
7377
ValueConstPtr GetCalculatedValue () const;
@@ -84,9 +88,6 @@ class Node : public DynamicSerializable
8488
static NodePtr Clone (const NodeConstPtr& node);
8589
static bool IsEqual (const NodeConstPtr& aNode, const NodeConstPtr& bNode);
8690

87-
template <class SlotConstType>
88-
void EnumerateSlots (const std::function<bool (const SlotConstType&)>& processor) const;
89-
9091
template <class Type>
9192
static bool IsType (Node* node);
9293

@@ -110,9 +111,6 @@ class Node : public DynamicSerializable
110111
bool RegisterOutputSlot (const OutputSlotPtr& newOutputSlot);
111112
ValueConstPtr EvaluateInputSlot (const SlotId& slotId, EvaluationEnv& env) const;
112113

113-
InputSlotPtr GetModifiableInputSlot (const SlotId& slotId);
114-
OutputSlotPtr GetModifiableOutputSlot (const SlotId& slotId);
115-
116114
private:
117115
void SetId (const NodeId& newNodeId);
118116
void SetEvaluator (const NodeEvaluatorConstPtr& newNodeEvaluator);

Sources/NodeEngine/NE_NodeGroupList.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,14 +142,14 @@ void NodeGroupList::Clear ()
142142
nodeToGroup.clear ();
143143
}
144144

145-
void NodeGroupList::Enumerate (const std::function<bool (const NodeGroupConstPtr&)>& processor) const
145+
void NodeGroupList::Enumerate (const std::function<bool (NodeGroupConstPtr)>& processor) const
146146
{
147147
groups.Enumerate ([&] (const NodeGroupPtr& group) {
148148
return processor (group);
149149
});
150150
}
151151

152-
void NodeGroupList::Enumerate (const std::function<bool (const NodeGroupPtr&)>& processor)
152+
void NodeGroupList::Enumerate (const std::function<bool (NodeGroupPtr)>& processor)
153153
{
154154
groups.Enumerate ([&] (const NodeGroupPtr& group) {
155155
return processor (group);

Sources/NodeEngine/NE_NodeGroupList.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ class NodeGroupList
3535

3636
void Clear ();
3737

38-
void Enumerate (const std::function<bool (const NodeGroupConstPtr&)>& processor) const;
39-
void Enumerate (const std::function<bool (const NodeGroupPtr&)>& processor);
38+
void Enumerate (const std::function<bool (NodeGroupConstPtr)>& processor) const;
39+
void Enumerate (const std::function<bool (NodeGroupPtr)>& processor);
4040

4141
private:
4242
OrderedMap<NodeGroupId, NodeGroupPtr> groups;

Sources/NodeEngine/NE_NodeList.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,14 @@ void NodeList::Clear ()
6464
nodes.Clear ();
6565
}
6666

67-
void NodeList::Enumerate (const std::function<bool (const NodePtr&)>& processor)
67+
void NodeList::Enumerate (const std::function<bool (NodePtr)>& processor)
6868
{
69-
nodes.Enumerate ([&] (const NodePtr& node) {
69+
nodes.Enumerate ([&] (NodePtr& node) {
7070
return processor (node);
7171
});
7272
}
7373

74-
void NodeList::Enumerate (const std::function<bool (const NodeConstPtr&)>& processor) const
74+
void NodeList::Enumerate (const std::function<bool (NodeConstPtr)>& processor) const
7575
{
7676
nodes.Enumerate ([&] (const NodePtr& node) {
7777
return processor (node);

Sources/NodeEngine/NE_NodeList.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ class NodeList
2525
bool DeleteNode (const NodeId& nodeId);
2626
void Clear ();
2727

28-
void Enumerate (const std::function<bool (const NodePtr&)>& processor);
29-
void Enumerate (const std::function<bool (const NodeConstPtr&)>& processor) const;
28+
void Enumerate (const std::function<bool (NodePtr)>& processor);
29+
void Enumerate (const std::function<bool (NodeConstPtr)>& processor) const;
3030

3131
private:
3232
OrderedMap<NodeId, NodePtr> nodes;

Sources/NodeEngine/NE_NodeManager.cpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -158,12 +158,12 @@ size_t NodeManager::GetConnectionCount () const
158158
return connectionManager.GetConnectionCount ();
159159
}
160160

161-
void NodeManager::EnumerateNodes (const std::function<bool (const NodePtr&)>& processor)
161+
void NodeManager::EnumerateNodes (const std::function<bool (NodePtr)>& processor)
162162
{
163163
nodeList.Enumerate (processor);
164164
}
165165

166-
void NodeManager::EnumerateNodes (const std::function<bool (const NodeConstPtr&)>& processor) const
166+
void NodeManager::EnumerateNodes (const std::function<bool (NodeConstPtr)>& processor) const
167167
{
168168
nodeList.Enumerate (processor);
169169
}
@@ -209,12 +209,12 @@ bool NodeManager::DeleteNode (const NodePtr& node)
209209
nodeGroupList.RemoveNodeFromGroup (node->GetId ());
210210
node->InvalidateValue ();
211211

212-
node->EnumerateInputSlots ([&] (const InputSlotConstPtr& inputSlot) {
212+
node->EnumerateInputSlots ([&] (InputSlotConstPtr inputSlot) {
213213
connectionManager.DisconnectAllOutputSlotsFromInputSlot (inputSlot);
214214
return true;
215215
});
216216

217-
node->EnumerateOutputSlots ([&] (const OutputSlotConstPtr& outputSlot) {
217+
node->EnumerateOutputSlots ([&] (OutputSlotConstPtr outputSlot) {
218218
connectionManager.DisconnectAllInputSlotsFromOutputSlot (outputSlot);
219219
return true;
220220
});
@@ -335,7 +335,7 @@ bool NodeManager::ConnectOutputSlotsToInputSlot (const OutputSlotList& outputSlo
335335
}
336336

337337
bool success = true;
338-
outputSlots.Enumerate ([&] (const OutputSlotConstPtr& outputSlot) {
338+
outputSlots.Enumerate ([&] (OutputSlotConstPtr outputSlot) {
339339
if (DBGERROR (!ConnectOutputSlotToInputSlot (outputSlot, inputSlot))) {
340340
success = false;
341341
}
@@ -352,7 +352,7 @@ bool NodeManager::ConnectOutputSlotToInputSlots (const OutputSlotConstPtr& outpu
352352
}
353353

354354
bool success = true;
355-
inputSlots.Enumerate ([&] (const InputSlotConstPtr& inputSlot) {
355+
inputSlots.Enumerate ([&] (InputSlotConstPtr inputSlot) {
356356
if (DBGERROR (!ConnectOutputSlotToInputSlot (outputSlot, inputSlot))) {
357357
success = false;
358358
}
@@ -388,7 +388,7 @@ bool NodeManager::DisconnectOutputSlotsFromInputSlot (const OutputSlotList& outp
388388
}
389389

390390
bool canDisconnect = true;
391-
outputSlots.Enumerate ([&] (const OutputSlotConstPtr& outputSlot) {
391+
outputSlots.Enumerate ([&] (OutputSlotConstPtr outputSlot) {
392392
if (DBGERROR (!IsOutputSlotConnectedToInputSlot (outputSlot, inputSlot))) {
393393
canDisconnect = false;
394394
}
@@ -399,7 +399,7 @@ bool NodeManager::DisconnectOutputSlotsFromInputSlot (const OutputSlotList& outp
399399
}
400400

401401
bool success = true;
402-
outputSlots.Enumerate ([&] (const OutputSlotConstPtr& outputSlot) {
402+
outputSlots.Enumerate ([&] (OutputSlotConstPtr outputSlot) {
403403
if (DBGERROR (!DisconnectOutputSlotFromInputSlot (outputSlot, inputSlot))) {
404404
success = false;
405405
}
@@ -421,7 +421,7 @@ bool NodeManager::DisconnectOutputSlotFromInputSlots (const OutputSlotConstPtr&
421421
}
422422

423423
bool canDisconnect = true;
424-
inputSlots.Enumerate ([&] (const InputSlotConstPtr& inputSlot) {
424+
inputSlots.Enumerate ([&] (InputSlotConstPtr inputSlot) {
425425
if (DBGERROR (!IsOutputSlotConnectedToInputSlot (outputSlot, inputSlot))) {
426426
canDisconnect = false;
427427
}
@@ -432,7 +432,7 @@ bool NodeManager::DisconnectOutputSlotFromInputSlots (const OutputSlotConstPtr&
432432
}
433433

434434
bool success = true;
435-
inputSlots.Enumerate ([&] (const InputSlotConstPtr& inputSlot) {
435+
inputSlots.Enumerate ([&] (InputSlotConstPtr inputSlot) {
436436
if (DBGERROR (!DisconnectOutputSlotFromInputSlot (outputSlot, inputSlot))) {
437437
success = false;
438438
}
@@ -487,7 +487,7 @@ void NodeManager::EnumerateConnectedInputSlots (const OutputSlotConstPtr& output
487487
void NodeManager::EnumerateConnections (const std::function<void (const OutputSlotConstPtr&, const InputSlotConstPtr&)>& processor) const
488488
{
489489
nodeList.Enumerate ([&] (const NodeConstPtr& node) {
490-
node->EnumerateOutputSlots ([&] (const OutputSlotConstPtr& outputSlot) {
490+
node->EnumerateOutputSlots ([&] (OutputSlotConstPtr outputSlot) {
491491
connectionManager.EnumerateConnectedInputSlots (outputSlot, [&] (const InputSlotConstPtr& inputSlot) {
492492
processor (outputSlot, inputSlot);
493493
});
@@ -501,7 +501,7 @@ void NodeManager::EnumerateConnections (const NodeCollection& nodes, const std::
501501
{
502502
nodes.Enumerate ([&] (const NodeId& nodeId) {
503503
NodeConstPtr node = GetNode (nodeId);
504-
node->EnumerateOutputSlots ([&] (const OutputSlotConstPtr& outputSlot) {
504+
node->EnumerateOutputSlots ([&] (OutputSlotConstPtr outputSlot) {
505505
connectionManager.EnumerateConnectedInputSlots (outputSlot, [&] (const InputSlotConstPtr& inputSlot) {
506506
if (nodes.Contains (inputSlot->GetOwnerNodeId ())) {
507507
processor (outputSlot, inputSlot);
@@ -515,7 +515,7 @@ void NodeManager::EnumerateConnections (const NodeCollection& nodes, const std::
515515

516516
void NodeManager::EvaluateAllNodes (EvaluationEnv& env) const
517517
{
518-
EnumerateNodes ([&] (const NodeConstPtr& node) {
518+
EnumerateNodes ([&] (NodeConstPtr node) {
519519
node->Evaluate (env);
520520
return true;
521521
});
@@ -525,7 +525,7 @@ void NodeManager::ForceEvaluateAllNodes (EvaluationEnv& env) const
525525
{
526526
ValueGuard<bool> isForceCalculateGuard (isForceCalculate, true);
527527
std::vector<NodeConstPtr> nodesToRecalculate;
528-
EnumerateNodes ([&] (const NodeConstPtr& node) {
528+
EnumerateNodes ([&] (NodeConstPtr node) {
529529
Node::CalculationStatus calcStatus = node->GetCalculationStatus ();
530530
DBGASSERT (calcStatus != Node::CalculationStatus::NeedToCalculateButDisabled);
531531
if (calcStatus == Node::CalculationStatus::NeedToCalculate) {
@@ -558,7 +558,7 @@ void NodeManager::InvalidateNodeValue (const NodeConstPtr& node) const
558558

559559
void NodeManager::EnumerateDependentNodes (const NodeConstPtr& node, const std::function<void (const NodeId&)>& processor) const
560560
{
561-
node->EnumerateOutputSlots ([&] (const OutputSlotConstPtr& outputSlot) {
561+
node->EnumerateOutputSlots ([&] (OutputSlotConstPtr outputSlot) {
562562
if (connectionManager.HasConnectedInputSlots (outputSlot)) {
563563
connectionManager.EnumerateConnectedInputSlots (outputSlot, [&] (const InputSlotConstPtr& inputSlot) {
564564
processor (inputSlot->GetOwnerNodeId ());
@@ -641,12 +641,12 @@ const NodeCollection& NodeManager::GetGroupNodes (const NodeGroupId& groupId) co
641641
return nodeGroupList.GetGroupNodes (groupId);
642642
}
643643

644-
void NodeManager::EnumerateNodeGroups (const std::function<bool (const NodeGroupConstPtr&)>& processor) const
644+
void NodeManager::EnumerateNodeGroups (const std::function<bool (NodeGroupConstPtr)>& processor) const
645645
{
646646
nodeGroupList.Enumerate (processor);
647647
}
648648

649-
void NodeManager::EnumerateNodeGroups (const std::function<bool (const NodeGroupPtr&)>& processor)
649+
void NodeManager::EnumerateNodeGroups (const std::function<bool (NodeGroupPtr)>& processor)
650650
{
651651
nodeGroupList.Enumerate (processor);
652652
}

0 commit comments

Comments
 (0)