2
* Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
4
* Permission to use, copy, modify, distribute and sell this software
5
* and its documentation for any purpose is hereby granted without fee,
6
* provided that the above copyright notice appear in all copies.
7
* Erwin Coumans makes no representations about the suitability
8
* of this software for any purpose.
9
* It is provided "as is" without express or implied warranty.
11
#ifndef BT_WHEEL_INFO_H
12
#define BT_WHEEL_INFO_H
14
#include "LinearMath/btVector3.h"
15
#include "LinearMath/btTransform.h"
19
struct btWheelInfoConstructionInfo
21
btVector3 m_chassisConnectionCS;
22
btVector3 m_wheelDirectionCS;
23
btVector3 m_wheelAxleCS;
24
btScalar m_suspensionRestLength;
25
btScalar m_maxSuspensionTravelCm;
26
btScalar m_wheelRadius;
28
btScalar m_suspensionStiffness;
29
btScalar m_wheelsDampingCompression;
30
btScalar m_wheelsDampingRelaxation;
31
btScalar m_frictionSlip;
32
btScalar m_maxSuspensionForce;
37
/// btWheelInfo contains information per wheel about friction and suspension.
43
btVector3 m_contactNormalWS;//contactnormal
44
btVector3 m_contactPointWS;//raycast hitpoint
45
btScalar m_suspensionLength;
46
btVector3 m_hardPointWS;//raycast starting point
47
btVector3 m_wheelDirectionWS; //direction in worldspace
48
btVector3 m_wheelAxleWS; // axle in worldspace
50
void* m_groundObject; //could be general void* ptr
53
RaycastInfo m_raycastInfo;
55
btTransform m_worldTransform;
57
btVector3 m_chassisConnectionPointCS; //const
58
btVector3 m_wheelDirectionCS;//const
59
btVector3 m_wheelAxleCS; // const or modified by steering
60
btScalar m_suspensionRestLength1;//const
61
btScalar m_maxSuspensionTravelCm;
62
btScalar getSuspensionRestLength() const;
63
btScalar m_wheelsRadius;//const
64
btScalar m_suspensionStiffness;//const
65
btScalar m_wheelsDampingCompression;//const
66
btScalar m_wheelsDampingRelaxation;//const
67
btScalar m_frictionSlip;
70
btScalar m_deltaRotation;
71
btScalar m_rollInfluence;
72
btScalar m_maxSuspensionForce;
74
btScalar m_engineForce;
80
void* m_clientInfo;//can be used to store pointer to sync transforms...
82
btWheelInfo(btWheelInfoConstructionInfo& ci)
86
m_suspensionRestLength1 = ci.m_suspensionRestLength;
87
m_maxSuspensionTravelCm = ci.m_maxSuspensionTravelCm;
89
m_wheelsRadius = ci.m_wheelRadius;
90
m_suspensionStiffness = ci.m_suspensionStiffness;
91
m_wheelsDampingCompression = ci.m_wheelsDampingCompression;
92
m_wheelsDampingRelaxation = ci.m_wheelsDampingRelaxation;
93
m_chassisConnectionPointCS = ci.m_chassisConnectionCS;
94
m_wheelDirectionCS = ci.m_wheelDirectionCS;
95
m_wheelAxleCS = ci.m_wheelAxleCS;
96
m_frictionSlip = ci.m_frictionSlip;
97
m_steering = btScalar(0.);
98
m_engineForce = btScalar(0.);
99
m_rotation = btScalar(0.);
100
m_deltaRotation = btScalar(0.);
101
m_brake = btScalar(0.);
102
m_rollInfluence = btScalar(0.1);
103
m_bIsFrontWheel = ci.m_bIsFrontWheel;
104
m_maxSuspensionForce = ci.m_maxSuspensionForce;
108
void updateWheel(const btRigidBody& chassis,RaycastInfo& raycastInfo);
110
btScalar m_clippedInvContactDotSuspension;
111
btScalar m_suspensionRelativeVelocity;
112
//calculated by suspension
113
btScalar m_wheelsSuspensionForce;
118
#endif //BT_WHEEL_INFO_H