ArticulationUtils.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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 <ArticulationUtils.h>
  9. namespace PhysX
  10. {
  11. physx::PxArticulationJointType::Enum GetPxArticulationJointType(ArticulationJointType articulationJointType)
  12. {
  13. switch (articulationJointType)
  14. {
  15. case ArticulationJointType::Fix:
  16. return physx::PxArticulationJointType::eFIX;
  17. case ArticulationJointType::Hinge:
  18. return physx::PxArticulationJointType::eREVOLUTE;
  19. case ArticulationJointType::Prismatic:
  20. return physx::PxArticulationJointType::ePRISMATIC;
  21. default:
  22. AZ_ErrorOnce("Articulation Utils", false, "unsupported joint type");
  23. return physx::PxArticulationJointType::eFIX;
  24. }
  25. }
  26. physx::PxArticulationAxis::Enum GetPxArticulationAxis(ArticulationJointAxis articulationJointAxis)
  27. {
  28. switch (articulationJointAxis)
  29. {
  30. case ArticulationJointAxis::Twist:
  31. return physx::PxArticulationAxis::eTWIST;
  32. case ArticulationJointAxis::SwingY:
  33. return physx::PxArticulationAxis::eSWING1;
  34. case ArticulationJointAxis::SwingZ:
  35. return physx::PxArticulationAxis::eSWING2;
  36. case ArticulationJointAxis::X:
  37. return physx::PxArticulationAxis::eX;
  38. case ArticulationJointAxis::Y:
  39. return physx::PxArticulationAxis::eY;
  40. case ArticulationJointAxis::Z:
  41. return physx::PxArticulationAxis::eZ;
  42. default:
  43. AZ_ErrorOnce("Articulation Utils", false, "unsupported joint axis");
  44. return physx::PxArticulationAxis::eTWIST;
  45. }
  46. }
  47. physx::PxArticulationMotion::Enum GetPxArticulationMotion(ArticulationJointMotionType articulationJointMotionType)
  48. {
  49. switch (articulationJointMotionType)
  50. {
  51. case ArticulationJointMotionType::Free:
  52. return physx::PxArticulationMotion::eFREE;
  53. case ArticulationJointMotionType::Limited:
  54. return physx::PxArticulationMotion::eLIMITED;
  55. case ArticulationJointMotionType::Locked:
  56. return physx::PxArticulationMotion::eLOCKED;
  57. default:
  58. AZ_ErrorOnce("Articulation Utils", false, "unsupported joint motion type");
  59. return physx::PxArticulationMotion::eLOCKED;
  60. }
  61. }
  62. ArticulationJointType GetArticulationJointType(physx::PxArticulationJointType::Enum articulationJointType)
  63. {
  64. switch (articulationJointType)
  65. {
  66. case physx::PxArticulationJointType::eFIX:
  67. return ArticulationJointType::Fix;
  68. case physx::PxArticulationJointType::eREVOLUTE:
  69. return ArticulationJointType::Hinge;
  70. case physx::PxArticulationJointType::ePRISMATIC:
  71. return ArticulationJointType::Prismatic;
  72. default:
  73. AZ_ErrorOnce("Articulation Utils", false, "unsupported articulation joint type");
  74. return ArticulationJointType::Unsupported;
  75. }
  76. }
  77. ArticulationJointAxis GetArticulationJointAxis(physx::PxArticulationAxis::Enum articulationAxis)
  78. {
  79. switch (articulationAxis)
  80. {
  81. case physx::PxArticulationAxis::eTWIST:
  82. return ArticulationJointAxis::Twist;
  83. case physx::PxArticulationAxis::eSWING1:
  84. return ArticulationJointAxis::SwingY;
  85. case physx::PxArticulationAxis::eSWING2:
  86. return ArticulationJointAxis::SwingZ;
  87. case physx::PxArticulationAxis::eX:
  88. return ArticulationJointAxis::X;
  89. case physx::PxArticulationAxis::eY:
  90. return ArticulationJointAxis::Y;
  91. case physx::PxArticulationAxis::eZ:
  92. return ArticulationJointAxis::Z;
  93. default:
  94. AZ_ErrorOnce("Articulation Utils", false, "unsupported articulation axis");
  95. return ArticulationJointAxis::Twist;
  96. }
  97. }
  98. ArticulationJointMotionType GetArticulationJointMotionType(physx::PxArticulationMotion::Enum articulationMotion)
  99. {
  100. switch (articulationMotion)
  101. {
  102. case physx::PxArticulationMotion::eFREE:
  103. return ArticulationJointMotionType::Free;
  104. case physx::PxArticulationMotion::eLIMITED:
  105. return ArticulationJointMotionType::Limited;
  106. case physx::PxArticulationMotion::eLOCKED:
  107. return ArticulationJointMotionType::Locked;
  108. default:
  109. AZ_ErrorOnce("Articulation Utils", false, "unsupported articulation motion");
  110. return ArticulationJointMotionType::Locked;
  111. }
  112. }
  113. } // namespace PhysX