// Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB). // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "channelmapping_p.h" #include #include #include #include #include #include #include #include #include QT_BEGIN_NAMESPACE namespace Qt3DAnimation { namespace Animation { ChannelMapping::ChannelMapping() : BackendNode(ReadOnly) , m_channelName() , m_targetId() , m_type(static_cast(QMetaType::UnknownType)) , m_componentCount(0) , m_propertyName(nullptr) , m_callback(nullptr) , m_skeletonId() , m_mappingType(MappingType::ChannelMappingType) { } void ChannelMapping::cleanup() { setEnabled(false); m_channelName.clear(); m_targetId = Qt3DCore::QNodeId(); m_type = static_cast(QMetaType::UnknownType); m_propertyName = nullptr; m_componentCount = 0; m_callback = nullptr; m_callbackFlags = {}; m_skeletonId = Qt3DCore::QNodeId(); } void ChannelMapping::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) { BackendNode::syncFromFrontEnd(frontEnd, firstTime); const QAbstractChannelMapping *node = qobject_cast(frontEnd); if (!node) return; const QChannelMapping *channelMapping = qobject_cast(frontEnd); if (channelMapping) { m_mappingType = ChannelMappingType; m_channelName = channelMapping->channelName(); m_targetId = Qt3DCore::qIdForNode(channelMapping->target()); QChannelMappingPrivate *d = static_cast(Qt3DCore::QNodePrivate::get(const_cast(channelMapping))); m_type = d->m_type; m_propertyName = d->m_propertyName; m_componentCount = d->m_componentCount; } const QSkeletonMapping *skeletonMapping = qobject_cast(frontEnd); if (skeletonMapping) { m_mappingType = SkeletonMappingType; m_skeletonId = Qt3DCore::qIdForNode(skeletonMapping->skeleton()); } const QCallbackMapping *callbackMapping = qobject_cast(frontEnd); if (callbackMapping) { m_mappingType = ChannelMappingType; m_channelName = callbackMapping->channelName(); const QCallbackMappingPrivate *d = static_cast(Qt3DCore::QNodePrivate::get(callbackMapping)); m_type = d->m_type; m_callback = d->m_callback; m_callbackFlags = d->m_callbackFlags; } } Skeleton *ChannelMapping::skeleton() const { return m_handler->skeletonManager()->lookupResource(m_skeletonId); } } // namespace Animation } // namespace Qt3DAnimation QT_END_NAMESPACE