/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #include #include #include namespace AZ { namespace RPI { void SkinMetaAsset::Reflect(ReflectContext* context) { if (auto* serializeContext = azrtti_cast(context)) { serializeContext->Class() ->Version(1) ->Field("jointIndexToNameMap", &SkinMetaAsset::m_jointNameToIndexMap) ; } } AZ::Data::AssetId SkinMetaAsset::ConstructAssetId(const AZ::Data::AssetId& modelAssetId, const AZStd::string& modelAssetName) { if (modelAssetName.empty()) { AZ_Error("SkinMetaAsset", false, "Cannot construct asset id for skin meta asset. Model asset name is empty."); return {}; } // The sub id of any model related assets starts with the same prefix for first 8 bits and uses the name hash for the last 24 bits. uint32_t productSubId = SkinMetaAsset::s_assetIdPrefix | AZ::Crc32(modelAssetName) & 0xffffff; return {modelAssetId.m_guid, productSubId}; } void SkinMetaAsset::SetReady() { m_status = Data::AssetData::AssetStatus::Ready; } void SkinMetaAsset::SetJointNameToIndexMap(const AZStd::unordered_map& jointNameToIndexMap) { m_jointNameToIndexMap = jointNameToIndexMap; } const AZStd::unordered_map& SkinMetaAsset::GetJointNameToIndexMap() const { return m_jointNameToIndexMap; } uint16_t SkinMetaAsset::GetJointIndexByName(const AZStd::string& jointName) const { const auto findIter = m_jointNameToIndexMap.find(jointName); if (findIter != m_jointNameToIndexMap.end()) { return findIter->second; } return InvalidJointIndex; } } //namespace RPI } // namespace AZ