| 1 | //************************************ bs::framework - Copyright 2018 Marko Pintera **************************************// |
| 2 | //*********** Licensed under the MIT license. See LICENSE.md for full terms. This notice is not to be removed. ***********// |
| 3 | #pragma once |
| 4 | |
| 5 | #include "BsCorePrerequisites.h" |
| 6 | #include "Reflection/BsRTTIType.h" |
| 7 | #include "Components/BsCD6Joint.h" |
| 8 | #include "Private/RTTI/BsGameObjectRTTI.h" |
| 9 | |
| 10 | namespace bs |
| 11 | { |
| 12 | /** @cond RTTI */ |
| 13 | /** @addtogroup RTTI-Impl-Core |
| 14 | * @{ |
| 15 | */ |
| 16 | |
| 17 | class BS_CORE_EXPORT CD6JointRTTI : public RTTIType<CD6Joint, CJoint, CD6JointRTTI> |
| 18 | { |
| 19 | D6JointMotion& getMotion(CD6Joint* obj, UINT32 idx) { return obj->mDesc.motion[idx]; } |
| 20 | void setMotion(CD6Joint* obj, UINT32 idx, D6JointMotion& value) { obj->mDesc.motion[idx] = value; } |
| 21 | UINT32 getMotionCount(CD6Joint* obj) { return (UINT32)D6JointMotion::Count; } |
| 22 | void setMotionCount(CD6Joint* obj, UINT32 size) { /* Do nothing */ } |
| 23 | |
| 24 | float& getDriveStiffness(CD6Joint* obj, UINT32 idx) { return obj->mDesc.drive[idx].stiffness; } |
| 25 | void setDriveStiffness(CD6Joint* obj, UINT32 idx, float& value) { obj->mDesc.drive[idx].stiffness = value; } |
| 26 | |
| 27 | float& getDriveDamping(CD6Joint* obj, UINT32 idx) { return obj->mDesc.drive[idx].damping; } |
| 28 | void setDriveDamping(CD6Joint* obj, UINT32 idx, float& value) { obj->mDesc.drive[idx].damping = value; } |
| 29 | |
| 30 | float& getDriveForceLimit(CD6Joint* obj, UINT32 idx) { return obj->mDesc.drive[idx].forceLimit; } |
| 31 | void setDriveForceLimit(CD6Joint* obj, UINT32 idx, float& value) { obj->mDesc.drive[idx].forceLimit = value; } |
| 32 | |
| 33 | bool& getDriveAcceleration(CD6Joint* obj, UINT32 idx) { return obj->mDesc.drive[idx].acceleration; } |
| 34 | void setDriveAcceleration(CD6Joint* obj, UINT32 idx, bool& value) { obj->mDesc.drive[idx].acceleration = value; } |
| 35 | |
| 36 | UINT32 getDriveCount(CD6Joint* obj) { return (UINT32)D6JointDriveType::Count; } |
| 37 | void setDriveCount(CD6Joint* obj, UINT32 size) { /* Do nothing */ } |
| 38 | |
| 39 | BS_BEGIN_RTTI_MEMBERS |
| 40 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitLinearExtent, mDesc.limitLinear.extent, 5) |
| 41 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitLinearContactDist, mDesc.limitTwist.contactDist, 6) |
| 42 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitLinearRestitution, mDesc.limitTwist.restitution, 7) |
| 43 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitLinearSpringDamping, mDesc.limitTwist.spring.damping, 8) |
| 44 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitLinearSpringStiffness, mDesc.limitTwist.spring.stiffness, 9) |
| 45 | |
| 46 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitTwistLower, mDesc.limitTwist.lower, 10) |
| 47 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitTwistUpper, mDesc.limitTwist.upper, 11) |
| 48 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitTwistContactDist, mDesc.limitTwist.contactDist, 12) |
| 49 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitTwistRestitution, mDesc.limitTwist.restitution, 13) |
| 50 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitTwistSpringDamping, mDesc.limitTwist.spring.damping, 14) |
| 51 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitTwistSpringStiffness, mDesc.limitTwist.spring.stiffness, 15) |
| 52 | |
| 53 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitSwingYLimitAngle, mDesc.limitSwing.yLimitAngle, 16) |
| 54 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitSwingZLimitAngle, mDesc.limitSwing.zLimitAngle, 17) |
| 55 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitSwingContactDist, mDesc.limitSwing.contactDist, 18) |
| 56 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitSwingRestitution, mDesc.limitSwing.restitution, 19) |
| 57 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitSwingSpringDamping, mDesc.limitSwing.spring.damping, 20) |
| 58 | BS_RTTI_MEMBER_PLAIN_NAMED(mLimitSwingSpringStiffness, mDesc.limitSwing.spring.stiffness, 21) |
| 59 | |
| 60 | BS_RTTI_MEMBER_PLAIN_NAMED(mDrivePosition, mDesc.drivePosition, 22) |
| 61 | BS_RTTI_MEMBER_PLAIN_NAMED(mDriveRotation, mDesc.driveRotation, 23) |
| 62 | BS_RTTI_MEMBER_PLAIN_NAMED(mDriveLinearVelocity, mDesc.driveLinearVelocity, 24) |
| 63 | BS_RTTI_MEMBER_PLAIN_NAMED(mDriveAngularVelocity, mDesc.driveAngularVelocity, 25) |
| 64 | BS_END_RTTI_MEMBERS |
| 65 | |
| 66 | public: |
| 67 | CD6JointRTTI() |
| 68 | { |
| 69 | addPlainArrayField("mMotion" , 0, &CD6JointRTTI::getMotion, &CD6JointRTTI::getMotionCount, |
| 70 | &CD6JointRTTI::setMotion, &CD6JointRTTI::setMotionCount); |
| 71 | addPlainArrayField("mDriveStiffnes" , 1, &CD6JointRTTI::getDriveStiffness, &CD6JointRTTI::getDriveCount, |
| 72 | &CD6JointRTTI::setDriveStiffness, &CD6JointRTTI::setDriveCount); |
| 73 | addPlainArrayField("mDriveDamping" , 2, &CD6JointRTTI::getDriveDamping, &CD6JointRTTI::getDriveCount, |
| 74 | &CD6JointRTTI::setDriveDamping, &CD6JointRTTI::setDriveCount); |
| 75 | addPlainArrayField("mDriveForceLimit" , 3, &CD6JointRTTI::getDriveForceLimit, &CD6JointRTTI::getDriveCount, |
| 76 | &CD6JointRTTI::setDriveForceLimit, &CD6JointRTTI::setDriveCount); |
| 77 | addPlainArrayField("mDriveAcceleartion" , 4, &CD6JointRTTI::getDriveAcceleration, &CD6JointRTTI::getDriveCount, |
| 78 | &CD6JointRTTI::setDriveAcceleration, &CD6JointRTTI::setDriveCount); |
| 79 | } |
| 80 | |
| 81 | const String& getRTTIName() override |
| 82 | { |
| 83 | static String name = "CD6Joint" ; |
| 84 | return name; |
| 85 | } |
| 86 | |
| 87 | UINT32 getRTTIId() override |
| 88 | { |
| 89 | return TID_CD6Joint; |
| 90 | } |
| 91 | |
| 92 | SPtr<IReflectable> newRTTIObject() override |
| 93 | { |
| 94 | return SceneObject::createEmptyComponent<CD6Joint>(); |
| 95 | } |
| 96 | }; |
| 97 | |
| 98 | /** @} */ |
| 99 | /** @endcond */ |
| 100 | } |
| 101 | |