| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /*
- * 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 <AzCore/RTTI/ReflectContext.h>
- #include <AzCore/Serialization/SerializeContext.h>
- #include <Atom/RPI.Reflect/Model/SkinMetaAsset.h>
- namespace AZ
- {
- namespace RPI
- {
- void SkinMetaAsset::Reflect(ReflectContext* context)
- {
- if (auto* serializeContext = azrtti_cast<SerializeContext*>(context))
- {
- serializeContext->Class<SkinMetaAsset>()
- ->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<AZStd::string, uint16_t>& jointNameToIndexMap)
- {
- m_jointNameToIndexMap = jointNameToIndexMap;
- }
- const AZStd::unordered_map<AZStd::string, uint16_t>& 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
|