BoneData.cpp 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <AzCore/Serialization/EditContext.h>
  9. #include <AzCore/Serialization/SerializeContext.h>
  10. #include <AzCore/RTTI/BehaviorContext.h>
  11. #include <SceneAPI/SceneData/GraphData/BoneData.h>
  12. namespace AZ
  13. {
  14. namespace SceneData
  15. {
  16. namespace GraphData
  17. {
  18. void BoneData::SetWorldTransform(const SceneAPI::DataTypes::MatrixType& transform)
  19. {
  20. m_worldTransform = transform;
  21. }
  22. const SceneAPI::DataTypes::MatrixType& BoneData::GetWorldTransform() const
  23. {
  24. return m_worldTransform;
  25. }
  26. void BoneData::Reflect(ReflectContext* context)
  27. {
  28. SerializeContext* serializeContext = azrtti_cast<SerializeContext*>(context);
  29. if (serializeContext)
  30. {
  31. serializeContext->Class<BoneData>()->Version(1)
  32. ->Field("worldTransform", &BoneData::m_worldTransform);
  33. EditContext* editContext = serializeContext->GetEditContext();
  34. if (editContext)
  35. {
  36. editContext->Class<BoneData>("Bone data", "Data this individual bone contributes to the overall skeleton.")
  37. ->DataElement(AZ::Edit::UIHandlers::Default, &BoneData::m_worldTransform, "World", "World transform this bone contributes to the overall skeleton.");
  38. }
  39. }
  40. BehaviorContext* behaviorContext = azrtti_cast<BehaviorContext*>(context);
  41. if (behaviorContext)
  42. {
  43. behaviorContext->Class<SceneAPI::DataTypes::IBoneData>()
  44. ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::ListOnly)
  45. ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common)
  46. ->Attribute(AZ::Script::Attributes::Module, "scene");
  47. behaviorContext->Class<AZ::SceneData::GraphData::BoneData>()
  48. ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All)
  49. ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common)
  50. ->Attribute(AZ::Script::Attributes::Module, "scene")
  51. ->Method("GetWorldTransform", &BoneData::GetWorldTransform);
  52. }
  53. }
  54. } // namespace GraphData
  55. } // namespace SceneData
  56. } // namespace AZ