StaticModelGroup::StaticModelGroup(Context* context) : StaticModel(context), nodeIDsDirty_(false) { // Initialize the default node IDs attribute UpdateNodeIDs(); }
const VariantVector& StaticModelGroup::GetNodeIDsAttr() const { if (nodeIDsDirty_) UpdateNodeIDs(); return nodeIDsAttr_; }
void StaticModelGroup::RemoveInstanceNode(Node* node) { if (!node) return; WeakPtr<Node> instanceWeak(node); node->RemoveListener(this); instanceNodes_.Remove(instanceWeak); UpdateNodeIDs(); OnMarkedDirty(GetNode()); MarkNetworkUpdate(); }
void StaticModelGroup::RemoveAllInstanceNodes() { for (unsigned i = 0; i < instanceNodes_.Size(); ++i) { Node* node = instanceNodes_[i]; if (node) node->RemoveListener(this); } instanceNodes_.Clear(); UpdateNodeIDs(); OnMarkedDirty(GetNode()); MarkNetworkUpdate(); }
void StaticModelGroup::AddInstanceNode(Node* node) { if (!node) return; WeakPtr<Node> instanceWeak(node); if (instanceNodes_.Contains(instanceWeak)) return; // Add as a listener for the instance node, so that we know to dirty the transforms when the node moves or is enabled/disabled node->AddListener(this); instanceNodes_.Push(instanceWeak); UpdateNodeIDs(); OnMarkedDirty(GetNode()); MarkNetworkUpdate(); }