@@ -67,38 +67,38 @@ namespace vg::engine
6767 {
6868 super::registerProperties (_desc);
6969
70- registerPropertyEx (VehicleComponent, m_driveState.m_forward , " Forward" , PropertyFlags::Transient);
71- setPropertyDescription (VehicleComponent, m_driveState.m_forward , " Value between -1 and 1 indicating desired driving direction and amount the gas pedal is pressed" );
72- setPropertyRange (VehicleComponent, m_driveState.m_forward , float2 (-1 , +1 ));
70+ registerPropertyEnum (VehicleComponent, physics::VehicleType, m_vehicleType, " Type" );
71+ registerPropertyObjectPtrEx (VehicleComponent, m_vehicleConstraintDesc, " Constraints" , PropertyFlags::Flatten);
7372
74- registerPropertyEx (VehicleComponent, m_driveState.m_right , " Steering" , PropertyFlags::Transient);
75- setPropertyDescription (VehicleComponent, m_driveState.m_right , " Value between -1 and 1 indicating desired steering angle (-1= left, 0 = center, 1 = right)" );
76- setPropertyRange (VehicleComponent, m_driveState.m_right , float2 (-1 , +1 ));
73+ registerPropertyObject (VehicleComponent, m_slots, " Slots" );
7774
78- registerPropertyEx (VehicleComponent, m_driveState.m_brake , " Brake" , PropertyFlags::Transient);
79- setPropertyDescription (VehicleComponent, m_driveState.m_brake , " Value between 0 and 1 indicating how strong the brake pedal is pressed" );
80- setPropertyRange (VehicleComponent, m_driveState.m_brake , float2 (0 , +1 ));
75+ registerPropertyGroupBegin (VehicleComponent, " Debug" );
76+ {
77+ registerPropertyEx (VehicleComponent, m_driveState.m_forward , " Forward" , PropertyFlags::Transient);
78+ setPropertyDescription (VehicleComponent, m_driveState.m_forward , " Value between -1 and 1 indicating desired driving direction and amount the gas pedal is pressed" );
79+ setPropertyRange (VehicleComponent, m_driveState.m_forward , float2 (-1 , +1 ));
8180
82- registerPropertyEx (VehicleComponent, m_driveState.m_handBrake , " Handbrake " , PropertyFlags::Transient);
83- setPropertyDescription (VehicleComponent, m_driveState.m_handBrake , " Value between 0 and 1 indicating how strong the hand brake is pulled " );
84- setPropertyRange (VehicleComponent, m_driveState.m_handBrake , float2 (0 , +1 ));
81+ registerPropertyEx (VehicleComponent, m_driveState.m_right , " Steering " , PropertyFlags::Transient);
82+ setPropertyDescription (VehicleComponent, m_driveState.m_right , " Value between -1 and 1 indicating desired steering angle (-1= left, 0 = center, 1 = right) " );
83+ setPropertyRange (VehicleComponent, m_driveState.m_right , float2 (- 1 , +1 ));
8584
86- registerPropertyEx (VehicleComponent, m_speedInKmPerHour, " Velocity" , PropertyFlags::Transient | PropertyFlags::ReadOnly);
87- setPropertyDescription (VehicleComponent, m_speedInKmPerHour, " Current speed in km/h" );
85+ registerPropertyEx (VehicleComponent, m_driveState.m_brake , " Brake" , PropertyFlags::Transient);
86+ setPropertyDescription (VehicleComponent, m_driveState.m_brake , " Value between 0 and 1 indicating how strong the brake pedal is pressed" );
87+ setPropertyRange (VehicleComponent, m_driveState.m_brake , float2 (0 , +1 ));
8888
89- registerPropertyEx (VehicleComponent, m_localVelocity, " Local Velocity" , PropertyFlags::Transient | PropertyFlags::ReadOnly);
89+ registerPropertyEx (VehicleComponent, m_driveState.m_handBrake , " Handbrake" , PropertyFlags::Transient);
90+ setPropertyDescription (VehicleComponent, m_driveState.m_handBrake , " Value between 0 and 1 indicating how strong the hand brake is pulled" );
91+ setPropertyRange (VehicleComponent, m_driveState.m_handBrake , float2 (0 , +1 ));
9092
91- registerPropertyEx (VehicleComponent, m_engineRPM , " RPM " , PropertyFlags::Transient | PropertyFlags::ReadOnly);
92- setPropertyDescription (VehicleComponent, m_engineRPM , " Current engine Rotation Per Minute " );
93+ registerPropertyEx (VehicleComponent, m_speedInKmPerHour , " Velocity " , PropertyFlags::Transient | PropertyFlags::ReadOnly);
94+ setPropertyDescription (VehicleComponent, m_speedInKmPerHour , " Current speed in km/h " );
9395
94- registerPropertyEx (VehicleComponent, m_currentGear , " Gear " , PropertyFlags::Transient | PropertyFlags::ReadOnly);
96+ registerPropertyEx (VehicleComponent, m_localVelocity , " Local Velocity " , PropertyFlags::Transient | PropertyFlags::ReadOnly);
9597
96- registerPropertyObject (VehicleComponent, m_slots, " Slots" );
98+ registerPropertyEx (VehicleComponent, m_engineRPM, " RPM" , PropertyFlags::Transient | PropertyFlags::ReadOnly);
99+ setPropertyDescription (VehicleComponent, m_engineRPM, " Current engine Rotation Per Minute" );
97100
98- registerPropertyGroupBegin (VehicleComponent, " Contraints" );
99- {
100- registerPropertyEnum (VehicleComponent, physics::VehicleType, m_vehicleType, " Type" );
101- registerPropertyObjectPtrEx (VehicleComponent, m_vehicleConstraintDesc, " Constraints" , PropertyFlags::Flatten);
101+ registerPropertyEx (VehicleComponent, m_currentGear, " Gear" , PropertyFlags::Transient | PropertyFlags::ReadOnly);
102102 }
103103 registerPropertyGroupEnd (VehicleComponent);
104104
@@ -158,8 +158,10 @@ namespace vg::engine
158158 // --------------------------------------------------------------------------------------
159159 bool VehicleComponent::createVehicleConstraintDesc ()
160160 {
161- if (nullptr == m_vehicleConstraintDesc)
161+ if (nullptr == m_vehicleConstraintDesc || m_vehicleConstraintDesc-> GetVehicleType () != m_vehicleType )
162162 {
163+ VG_SAFE_RELEASE (m_vehicleConstraintDesc);
164+
163165 IFactory * factory = Kernel::getFactory ();
164166
165167 switch (m_vehicleType)
@@ -171,6 +173,10 @@ namespace vg::engine
171173 case physics::VehicleType::Car:
172174 m_vehicleConstraintDesc = (physics::IVehicleConstraintDesc *)factory->CreateObject (" CarConstraintDesc" , " " , this );
173175 break ;
176+
177+ case physics::VehicleType::Bike:
178+ m_vehicleConstraintDesc = (physics::IVehicleConstraintDesc *)factory->CreateObject (" BikeConstraintDesc" , " " , this );
179+ break ;
174180 }
175181
176182 if (m_vehicleConstraintDesc)
@@ -274,15 +280,14 @@ namespace vg::engine
274280 void VehicleComponent::FixedUpdate (const Context & _context)
275281 {
276282 if (m_vehicleConstraint)
277- m_vehicleConstraint->FixedUpdate (m_driveState);// SetDriverInput
283+ m_vehicleConstraint->FixedUpdate (m_driveState);
278284 }
279285
280286 // --------------------------------------------------------------------------------------
281287 void VehicleComponent::Update (const Context & _context)
282288 {
283289 if (m_vehicleConstraint)
284290 {
285- m_vehicleConstraint->Update (m_driveState);
286291 IGameObject * go = GetGameObject ();
287292
288293 // Update local velocity
0 commit comments