SkinWeightData.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #pragma once
  2. /*
  3. * Copyright (c) Contributors to the Open 3D Engine Project.
  4. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  5. *
  6. * SPDX-License-Identifier: Apache-2.0 OR MIT
  7. *
  8. */
  9. #include <AzCore/std/containers/vector.h>
  10. #include <AzCore/std/containers/unordered_map.h>
  11. #include <AzCore/std/string/string.h>
  12. #include <SceneAPI/SceneData/SceneDataConfiguration.h>
  13. #include <SceneAPI/SceneCore/DataTypes/GraphData/ISkinWeightData.h>
  14. namespace AZ
  15. {
  16. namespace SceneData
  17. {
  18. namespace GraphData
  19. {
  20. class SkinWeightData
  21. : public SceneAPI::DataTypes::ISkinWeightData
  22. {
  23. public:
  24. AZ_RTTI(SkinWeightData, "{2175A399-8EAA-4BFF-9720-C5FED739717E}", SceneAPI::DataTypes::ISkinWeightData);
  25. SCENE_DATA_API ~SkinWeightData() override = default;
  26. SCENE_DATA_API size_t GetVertexCount() const override;
  27. SCENE_DATA_API size_t GetLinkCount(size_t vertexIndex) const override;
  28. SCENE_DATA_API const Link& GetLink(size_t vertexIndex, size_t linkIndex) const override;
  29. SCENE_DATA_API Link& GetLink(size_t vertexIndex, size_t linkIndex);
  30. SCENE_DATA_API size_t GetBoneCount() const override;
  31. SCENE_DATA_API const AZStd::string& GetBoneName(int boneId) const override;
  32. SCENE_DATA_API void ResizeContainerSpace(size_t size);
  33. SCENE_DATA_API void AppendLink(size_t vertexIndex, const SceneAPI::DataTypes::ISkinWeightData::Link& link);
  34. SCENE_DATA_API void AddAndSortLink(size_t vertexIndex, const SceneAPI::DataTypes::ISkinWeightData::Link& link);
  35. SCENE_DATA_API int GetBoneId(const AZStd::string& boneName);
  36. SCENE_DATA_API void GetDebugOutput(AZ::SceneAPI::Utilities::DebugOutput& output) const override;
  37. protected:
  38. AZStd::vector<AZStd::vector<SceneAPI::DataTypes::ISkinWeightData::Link>> m_vertexLinks;
  39. AZStd::unordered_map<AZStd::string, int> m_boneNameIdMap;
  40. AZStd::unordered_map<int, AZStd::string> m_boneIdNameMap;
  41. };
  42. } // GraphData
  43. } // SceneData
  44. } // AZ