/**************************************************************************** ** ** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt3D module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:COMM$ ** ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** $QT_END_LICENSE$ ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ****************************************************************************/ #include "channelmapping_p.h" #include #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(QVariant::Invalid)) , 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(QVariant::Invalid); 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