Exemple #1
0
void
Water::targetAddedHandler(AbstractComponent::Ptr cmp, NodePtr target)
{
    target->added()->connect([&](NodePtr node, NodePtr target, NodePtr ancestor)
    {
        if (target->root()->hasComponent<SceneManager>())
            targetAddedToScene(nullptr, target, nullptr);
    });
}
Exemple #2
0
void
Hologram::targetAddedHandler(AbstractComponent::Ptr cmp, NodePtr target)
{
    _addedToSceneSlot = target->added()->connect(std::bind(
        &Hologram::initTarget,
        std::static_pointer_cast<Hologram>(shared_from_this()),
        cmp,
        std::placeholders::_2,
        std::placeholders::_3
        ));
}
Exemple #3
0
void
OculusVRCamera::targetAddedHandler(AbsCmpPtr component, NodePtr target)
{
	if (targets().size() > 1)
		throw std::logic_error("The OculusVRCamera component cannot have more than 1 target.");

	_addedSlot = target->added()->connect(std::bind(
		&OculusVRCamera::addedHandler,
		shared_from_this(),
		std::placeholders::_1,
		std::placeholders::_2,
		std::placeholders::_3
	));

	_removedSlot = target->removed()->connect(std::bind(
		&OculusVRCamera::removedHandler,
		shared_from_this(),
		std::placeholders::_1,
		std::placeholders::_2,
		std::placeholders::_3
	));

	_targetComponentAddedHandler = target->componentAdded()->connect(std::bind(
		&OculusVRCamera::targetComponentAddedHandler,
		shared_from_this(),
		std::placeholders::_1,
		std::placeholders::_2,
		std::placeholders::_3
	));

	_targetComponentRemovedHandler = target->componentRemoved()->connect(std::bind(
		&OculusVRCamera::targetComponentRemovedHandler,
		shared_from_this(),
		std::placeholders::_1,
		std::placeholders::_2,
		std::placeholders::_3
	));

	_targetTransform = target->hasComponent<Transform>() 
		? target->component<Transform>()
		: nullptr;

	addedHandler(target->root(), target, target->parent());

}
            virtual
            void
            targetAddedHandler(AbstractComponent::Ptr ctrl, NodePtr target)
            {
                if (targets().size() > 1)
                    throw std::logic_error("This component cannot have more than 1 target.");

                auto cb = std::bind(
                    &AbstractRootDataComponent::addedOrRemovedHandler,
                    this->shared_from_this(),
                    std::placeholders::_1,
                    std::placeholders::_2,
                    std::placeholders::_3
                );

                _addedSlot = target->added()->connect(cb);
                _removedSlot = target->removed()->connect(cb);

                updateRoot(target->root());
            }