IMovieSystem.cpp 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  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 <IMovieSystem.h>
  9. #include <AzCore/Serialization/SerializeContext.h>
  10. AZ_TYPE_INFO_WITH_NAME_IMPL(CAnimParamType, "CAnimParamType", "{E2F34955-3B07-4241-8D34-EA3BEF3B33D2}");
  11. CAnimParamType::CAnimParamType()
  12. : m_type(kAnimParamTypeInvalid) {}
  13. CAnimParamType::CAnimParamType(const AZStd::string& name)
  14. {
  15. *this = name;
  16. }
  17. CAnimParamType::CAnimParamType(AnimParamType type)
  18. {
  19. *this = type;
  20. }
  21. // Convert from old enum or int
  22. void CAnimParamType::operator =(AnimParamType type)
  23. {
  24. m_type = type;
  25. }
  26. void CAnimParamType::operator =(const AZStd::string& name)
  27. {
  28. m_type = kAnimParamTypeByString;
  29. m_name = name;
  30. }
  31. bool CAnimParamType::operator ==(const CAnimParamType& animParamType) const
  32. {
  33. if (m_type == kAnimParamTypeByString && animParamType.m_type == kAnimParamTypeByString)
  34. {
  35. return m_name == animParamType.m_name;
  36. }
  37. return m_type == animParamType.m_type;
  38. }
  39. bool CAnimParamType::operator !=(const CAnimParamType& animParamType) const
  40. {
  41. return !(*this == animParamType);
  42. }
  43. bool CAnimParamType::operator <(const CAnimParamType& animParamType) const
  44. {
  45. if (m_type == kAnimParamTypeByString && animParamType.m_type == kAnimParamTypeByString)
  46. {
  47. return m_name < animParamType.m_name;
  48. }
  49. else if (m_type == kAnimParamTypeByString)
  50. {
  51. return false; // Always sort named params last
  52. }
  53. else if (animParamType.m_type == kAnimParamTypeByString)
  54. {
  55. return true; // Always sort named params last
  56. }
  57. if (m_type < animParamType.m_type)
  58. {
  59. return true;
  60. }
  61. return false;
  62. }
  63. void CAnimParamType::SaveToXml(XmlNodeRef& xmlNode) const
  64. {
  65. IMovieSystem* movieSystem = AZ::Interface<IMovieSystem>::Get();
  66. if (movieSystem)
  67. {
  68. movieSystem->SaveParamTypeToXml(*this, xmlNode);
  69. }
  70. }
  71. void CAnimParamType::LoadFromXml(const XmlNodeRef& xmlNode, const uint version)
  72. {
  73. IMovieSystem* movieSystem = AZ::Interface<IMovieSystem>::Get();
  74. if (movieSystem)
  75. {
  76. movieSystem->LoadParamTypeFromXml(*this, xmlNode, version);
  77. }
  78. }
  79. void CAnimParamType::Serialize(XmlNodeRef& xmlNode, bool bLoading, const uint version)
  80. {
  81. IMovieSystem* movieSystem = AZ::Interface<IMovieSystem>::Get();
  82. if (movieSystem)
  83. {
  84. movieSystem->SerializeParamType(*this, xmlNode, bLoading, version);
  85. }
  86. }
  87. // SAnimContext members
  88. SAnimContext::SAnimContext()
  89. {
  90. singleFrame = false;
  91. forcePlay = false;
  92. resetting = false;
  93. time = 0;
  94. dt = 0;
  95. fps = 0;
  96. sequence = nullptr;
  97. trackMask = 0;
  98. startTime = 0;
  99. }
  100. // SCameraParams member functions
  101. SCameraParams::SCameraParams()
  102. {
  103. fov = 0.0f;
  104. nearZ = DEFAULT_NEAR;
  105. justActivated = false;
  106. }
  107. // IAnimTrack member definitions
  108. AZ_TYPE_INFO_WITH_NAME_IMPL(IAnimTrack, "IAnimTrack", "{AA0D5170-FB28-426F-BA13-7EFF6BB3AC67}");
  109. AZ_RTTI_NO_TYPE_INFO_IMPL(IAnimTrack);
  110. AZ_CLASS_ALLOCATOR_IMPL(IAnimTrack, AZ::SystemAllocator);
  111. void IAnimTrack::Reflect(AZ::ReflectContext* context)
  112. {
  113. if (auto serializeContext = azrtti_cast<AZ::SerializeContext*>(context))
  114. {
  115. serializeContext->Class<IAnimTrack>();
  116. }
  117. }
  118. int IAnimTrack::NextKeyByTime(int key) const
  119. {
  120. if (key + 1 < GetNumKeys())
  121. {
  122. return key + 1;
  123. }
  124. else
  125. {
  126. return -1;
  127. }
  128. }
  129. // IAnimNode member definitions
  130. AZ_TYPE_INFO_WITH_NAME_IMPL(IAnimNode, "IAnimNode", "{0A096354-7F26-4B18-B8C0-8F10A3E0440A}");
  131. AZ_RTTI_NO_TYPE_INFO_IMPL(IAnimNode);
  132. AZ_CLASS_ALLOCATOR_IMPL(IAnimNode, AZ::SystemAllocator);
  133. void IAnimNode::Reflect(AZ::ReflectContext* context)
  134. {
  135. if (auto serializeContext = azrtti_cast<AZ::SerializeContext*>(context))
  136. {
  137. serializeContext->Class<IAnimNode>();
  138. }
  139. }
  140. IAnimNode::SParamInfo::SParamInfo()
  141. : name("")
  142. , valueType(kAnimValueDefault)
  143. , flags(ESupportedParamFlags(0)) {};
  144. IAnimNode::SParamInfo::SParamInfo(const char* _name, CAnimParamType _paramType, AnimValueType _valueType, ESupportedParamFlags _flags)
  145. : name(_name)
  146. , paramType(_paramType)
  147. , valueType(_valueType)
  148. , flags(_flags) {};
  149. //! Compute and return the offset which brings the current position to the given position
  150. Vec3 IAnimNode::GetOffsetPosition(const Vec3& position) { return position - GetPos(); }
  151. // IAnimStringTable RTTI member definitions
  152. AZ_TYPE_INFO_WITH_NAME_IMPL(IAnimStringTable, "IAnimStringTable", "{35690309-9D22-41FF-80B7-8AF7C8419945}");
  153. AZ_RTTI_NO_TYPE_INFO_IMPL(IAnimStringTable);
  154. // IAnimSequence RTTI member definitions
  155. AZ_TYPE_INFO_WITH_NAME_IMPL(IAnimSequence, "IAnimSequence", "{A60F95F5-5A4A-47DB-B3BB-525BBC0BC8DB}");
  156. AZ_RTTI_NO_TYPE_INFO_IMPL(IAnimSequence);
  157. AZ_CLASS_ALLOCATOR_IMPL(IAnimSequence, AZ::SystemAllocator);
  158. void IAnimSequence::Reflect(AZ::ReflectContext* context)
  159. {
  160. if (auto serializeContext = azrtti_cast<AZ::SerializeContext*>(context))
  161. {
  162. serializeContext->Class<IAnimSequence>();
  163. }
  164. }
  165. // IMovieSystem RTTI definitions
  166. AZ_TYPE_INFO_WITH_NAME_IMPL(IMovieSystem, "IMovieSystem", "{D8E6D6E9-830D-40DC-87F3-E9A069FBEB69}");
  167. AZ_RTTI_NO_TYPE_INFO_IMPL(IMovieSystem);