本文整理汇总了C++中node::Ptr::componentAdded方法的典型用法代码示例。如果您正苦于以下问题:C++ Ptr::componentAdded方法的具体用法?C++ Ptr::componentAdded怎么用?C++ Ptr::componentAdded使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类node::Ptr
的用法示例。
在下文中一共展示了Ptr::componentAdded方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void
MasterLodScheduler::targetAdded(Node::Ptr target)
{
AbstractComponent::targetAdded(target);
_nodeAddedSlot = target->added().connect(
[this](Node::Ptr target,
Node::Ptr node,
Node::Ptr parent)
{
auto lodSchedulerNodes = NodeSet::create(node)
->descendants(true)
->where([](Node::Ptr descendant) -> bool { return descendant->hasComponent<AbstractLodScheduler>(); });
for (auto lodSchedulerNode : lodSchedulerNodes->nodes())
for (auto lodScheduler : lodSchedulerNode->components<AbstractLodScheduler>())
_lodSchedulers.push_back(lodScheduler);
}
);
_nodeRemovedSlot = target->removed().connect(
[this](Node::Ptr target,
Node::Ptr node,
Node::Ptr parent)
{
auto lodSchedulerNodes = NodeSet::create(node)
->descendants(true)
->where([](Node::Ptr descendant) -> bool { return descendant->hasComponent<AbstractLodScheduler>(); });
for (auto lodSchedulerNode : lodSchedulerNodes->nodes())
for (auto lodScheduler : lodSchedulerNode->components<AbstractLodScheduler>())
_lodSchedulers.erase(
std::remove(_lodSchedulers.begin(), _lodSchedulers.end(), lodScheduler),
_lodSchedulers.end()
);
}
);
_componentAddedSlot = target->componentAdded().connect(
[this](Node::Ptr node,
Node::Ptr target,
AbstractComponent::Ptr component)
{
auto lodScheduler = std::dynamic_pointer_cast<AbstractLodScheduler>(component);
if (lodScheduler)
_lodSchedulers.push_back(lodScheduler);
}
);
_componentRemovedSlot = target->componentRemoved().connect(
[this](Node::Ptr node,
Node::Ptr target,
AbstractComponent::Ptr component)
{
auto lodScheduler = std::dynamic_pointer_cast<AbstractLodScheduler>(component);
if (lodScheduler)
_lodSchedulers.erase(
std::remove(_lodSchedulers.begin(), _lodSchedulers.end(), lodScheduler),
_lodSchedulers.end()
);
}
);
}