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 | |