@@ -24,7 +24,8 @@ RigidDynamic::RigidDynamic(
2424 Restitution(this ),
2525 LinearVelocity(this ),
2626 AngularVelocity(this ),
27- MaxAngularVelocity(this )
27+ MaxAngularVelocity(this ),
28+ Kinematic(this )
2829{
2930}
3031
@@ -140,6 +141,11 @@ void RigidDynamic::Initialize()
140141{
141142 IPhysicsObject::Initialize ();
142143 _collider = _physics->CreateDynamicCollider ();
144+
145+ if (Children.Count () == 0 )
146+ {
147+ Enabled = false ;
148+ }
143149
144150 for (auto & child : Children)
145151 {
@@ -184,8 +190,9 @@ void RigidDynamic::Initialize()
184190 _collider->LinearVelocity = _properties->linearVelocity ;
185191 _collider->AngularVelocity = _properties->angularVelocity ;
186192 _collider->MaxAngularVelocity = _properties->maxAngularVelocity ;
193+
194+ _properties.reset ();
187195 }
188- _properties.reset ();
189196
190197 _collider->UpdateTransform (Position, Rotation);
191198}
@@ -265,11 +272,23 @@ Gizmos::IGizmo* RigidDynamic::GetGizmo() const noexcept
265272 return Internal::GizmoOf<RigidDynamic>(this );
266273}
267274
275+ void RigidDynamic::_setKinematic (bool isKinematic)
276+ {
277+ _kinematic = isKinematic;
278+ if (_collider) _collider->SetKinematic (isKinematic);
279+ }
280+
281+ bool RigidDynamic::_isKinematic () const noexcept
282+ {
283+ return _kinematic;
284+ }
285+
268286REFL_BEGIN (RigidDynamic, " RigidDynamic" , " Physics" , " A physics object with dynamic rigidbody colliders" )
269287REFL_FIELD (RigidDynamic, std::string, Name, " Name" , " RigidDynamic" , " Object of the name" )
270288REFL_FIELD (RigidDynamic, bool , Enabled, " Enabled" , true , " Is the physics object active?" )
271289REFL_FIELD (RigidDynamic, Math::Vector3, Position, " Position" , Math::Vector3::Zero(), " World position of the physics object" )
272290REFL_FIELD (RigidDynamic, Math::Quaternion, Rotation, " Rotation" , Math::Quaternion(), " World rotation of the physics object" )
291+ REFL_FIELD (RigidDynamic, bool , Kinematic, " Kinematic" , false , " Is the rigidbody kinematic?" )
273292REFL_FIELD (RigidDynamic, float , Mass, " Mass" , 1 .0f , " Mass of the rigidbody" )
274293REFL_FIELD (RigidDynamic, float , LinearDamping, " Linear Damping" , 0 .0f , " Linear damping coefficient" )
275294REFL_FIELD (RigidDynamic, float , AngularDamping, " Angular Damping" , 0 .05f , " Angular damping coefficient" )
0 commit comments