00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __CEL_PF_WHEELED__
00021 #define __CEL_PF_WHEELED__
00022
00023 #include "cstypes.h"
00024 #include "csutil/scf.h"
00025 #include "csgeom/matrix3.h"
00026
00120 struct iCelEntity;
00121 struct iBodyGroup;
00122 struct iMeshFactoryWrapper;
00123 struct iODEHinge2Joint;
00124 struct iODEAMotorJoint;
00125 struct iRigidBody;
00126
00127 struct iPcWheeled : public virtual iBase
00128 {
00129 SCF_INTERFACE (iPcWheeled, 1, 0, 0);
00130
00138 virtual void SetWheelMesh(const char* wheelfact, const char* wheelfile) = 0;
00139
00147 virtual void SetWheelMesh(size_t wheelnum, const char* wheelfact,
00148 const char* wheelfile) = 0;
00149
00154 virtual void SetTankMode(bool tankmode) = 0;
00155
00159 virtual bool GetTankMode() = 0;
00160
00165 CS_DEPRECATED_METHOD virtual void SetABSEnabled(bool enabled) = 0;
00166
00170 CS_DEPRECATED_METHOD virtual bool GetABSEnabled() = 0;
00171
00178 virtual void SetDifferential(bool enabled) = 0;
00179
00185 virtual void SetAntiSway(bool enabled) = 0;
00186
00191 virtual void SetAntiSwayFactor(float antiswayfactor) = 0;
00192
00197 virtual void SetAntiSwayLimit(float antiswaylimit) = 0;
00198
00199
00203 virtual bool GetDifferential() = 0;
00204
00208 virtual bool GetAntiSway() = 0;
00209
00213 virtual float GetAntiSwayFactor() = 0;
00214
00218 virtual float GetAntiSwayLimit() = 0;
00219
00224 virtual void SetABS(bool enabled) = 0;
00225
00229 virtual bool GetABS() = 0;
00230
00242 virtual size_t AddWheelAuto(csVector3 position, const char* wheelfact = 0,
00243 const char* wheelfile = 0,
00244 csMatrix3 rotation = csMatrix3(0.0f,0.0f,0.0f,0.0f)) = 0;
00245
00249 CS_DEPRECATED_METHOD virtual size_t AddWheel(csVector3 position,
00250 float turnspeed, float returnspeed,
00251 float suspensionsoftness, float suspensiondamping,
00252 float brakepower, float enginepower,
00253 float leftsteersensitivity,
00254 float rightsteersensitivity, bool handbrakeaffect,
00255 bool steerinvert, const char* wheelfact = 0,
00256 const char* wheelfile = 0,
00257 csMatrix3 rotation = csMatrix3(0.0f,0.0f,0.0f,0.0f)) = 0;
00258
00282 virtual size_t AddWheel(csVector3 position,
00283 float turnspeed, float returnspeed,
00284 float suspensionsoftness, float suspensiondamping,
00285 float brakepower, float enginepower,
00286 float leftsteersensitivity, float friction, float mass,
00287 float rightsteersensitivity, bool handbrakeaffect,
00288 bool steerinvert, const char* wheelfact = 0,
00289 const char* wheelfile = 0,
00290 csMatrix3 rotation = csMatrix3(0.0f,0.0f,0.0f,0.0f)) = 0;
00291
00296 virtual void DeleteWheel(size_t wheelnum) = 0;
00297
00301 virtual void DeleteAllWheels() = 0;
00302
00307 virtual void DestroyWheel(size_t wheelnum) = 0;
00308
00313 virtual void DestroyAllWheels() = 0;
00314
00318 virtual void RestoreWheel(size_t wheelnum) = 0;
00319
00323 virtual void RestoreAllWheels() = 0;
00324
00333 virtual void SetOuterWheelSteerPreset(float sensitivity) = 0;
00334
00338 CS_DEPRECATED_METHOD virtual void SetFrontWheelPreset(float sensitivity,
00339 float power, float suspensionsoftness, float suspensiondamping) = 0;
00340
00354 virtual void SetFrontWheelPreset(float sensitivity,float power,
00355 float suspensionsoftness, float suspensiondamping, float friction,
00356 float mass) = 0;
00357
00361 CS_DEPRECATED_METHOD virtual void SetRearWheelPreset(float sensitivity,
00362 float power, float suspensionsoftness, float suspensiondamping) = 0;
00363
00377 virtual void SetRearWheelPreset(float sensitivity,float power,
00378 float suspensionsoftness, float suspensiondamping, float friction,
00379 float mass) = 0;
00380
00385 virtual void Accelerate(float amount = 1.0f) = 0;
00386
00390 virtual float GetAcceleratorAmount() = 0;
00391
00396 virtual void Brake(float amount = 1.0f) = 0;
00397
00401 virtual float GetBrakeAmount() = 0;
00402
00407 virtual void Handbrake(bool applied) = 0;
00408
00412 virtual bool IsHandbraking() = 0;
00413
00418 virtual void SetSteerAmount(float amount) = 0;
00419
00424 virtual void SetBrakeForce(float force) = 0;
00425
00429 virtual float GetSteerAmount() = 0;
00430
00434 virtual float GetSpeed() = 0;
00435
00440 virtual void SteerLeft(float amount = 1.0f) = 0;
00441
00446 virtual void SteerRight(float amount = 1.0f) = 0;
00447
00454 virtual void Steer(float amount) = 0;
00455
00459 virtual void SteerStraight() = 0;
00460
00464 virtual void Reverse() = 0;
00465
00470 virtual void Neutral() = 0;
00471
00477 virtual void SetAutoTransmission(bool autoTransmission) = 0;
00478
00484 virtual void SetGear(int gear) = 0;
00485
00489 virtual int GetGear() = 0;
00490
00494 virtual void SetGearSettings(int gear,float velocity, float force) = 0;
00495
00500 virtual float GetGearVelocity(int gear) = 0;
00501
00506 virtual float GetGearForce(int gear) = 0;
00507
00511 virtual int GetTopGear() = 0;
00512
00518 virtual void SetAutoReverse(bool autoreverse) = 0;
00519
00523 virtual iBodyGroup* GetBodyGroup() = 0;
00524
00530 virtual void SetWheelPosition(size_t wheelnum, csVector3 position) = 0;
00531
00537 virtual void SetWheelRotation(size_t wheelnum, csMatrix3 rotation) = 0;
00538
00544 virtual void SetWheelSuspensionSoftness(size_t wheelnum, float softness) = 0;
00545
00551 virtual void SetWheelSuspensionDamping(size_t wheelnum, float damping) = 0;
00552
00558 virtual void SetWheelLeftSteerSensitivity(size_t wheelnum,
00559 float sensitivity) = 0;
00560
00566 virtual void SetWheelRightSteerSensitivity(size_t wheelnum,
00567 float sensitivity) = 0;
00568
00574 virtual void SetWheelFriction(size_t wheelnum,
00575 float friction) = 0;
00576
00582 virtual void SetWheelMass(size_t wheelnum,
00583 float mass) = 0;
00584
00591 virtual void SetWheelTurnSpeed(size_t wheelnum, float speed) = 0;
00592
00598 virtual void SetWheelReturnSpeed(size_t wheelnum, float speed) = 0;
00599
00606 virtual void SetWheelEnginePower(size_t wheelnum, float power) = 0;
00607
00614 virtual void SetWheelBrakePower(size_t wheelnum, float power) = 0;
00615
00623 virtual void SetWheelSteerInverted(size_t wheelnum, bool inverted) = 0;
00624
00632 virtual void SetWheelHandbrakeAffected(size_t wheelnum,
00633 bool handbrakeaffected) = 0;
00634
00639 virtual csVector3 GetWheelPosition(size_t wheelnum) = 0;
00640
00645 virtual csMatrix3 GetWheelRotation(size_t wheelnum) = 0;
00646
00651 virtual float GetWheelSuspensionSoftness(size_t wheelnum) = 0;
00652
00657 virtual float GetWheelSuspensionDamping(size_t wheelnum) = 0;
00658
00663 virtual float GetWheelLeftSteerSensitivity(size_t wheelnum) = 0;
00664
00669 virtual float GetWheelRightSteerSensitivity(size_t wheelnum) = 0;
00670
00675 virtual float GetWheelFriction(size_t wheelnum) = 0;
00676
00681 virtual float GetWheelMass(size_t wheelnum) = 0;
00682
00687 virtual float GetWheelTurnSpeed(size_t wheelnum) = 0;
00688
00693 virtual float GetWheelReturnSpeed(size_t wheelnum) = 0;
00694
00700 virtual float GetWheelEnginePower(size_t wheelnum) = 0;
00701
00706 virtual float GetWheelBrakePower(size_t wheelnum) = 0;
00707
00712 virtual bool GetWheelSteerInverted(size_t wheelnum) = 0;
00713
00718 virtual bool GetWheelHandbrakeAffected(size_t wheelnum) = 0;
00719
00723 virtual size_t GetWheelCount() = 0;
00724
00729 virtual float GetWheelSpin(size_t wheelnum) = 0;
00730
00734 virtual float GetAverageWheelSpin() = 0;
00735
00740 virtual iRigidBody* GetWheelBody(size_t wheelnum) = 0;
00741
00746 virtual iODEHinge2Joint* GetWheelJoint(size_t wheelnum) = 0;
00747
00752 virtual iODEAMotorJoint* GetBrakeMotor(size_t wheelnum) = 0;
00753
00759 virtual void SetCollisionCallbackEnabled (bool en) = 0;
00760
00765 virtual bool IsCollisionCallbackEnabled () const = 0;
00766 };
00767
00768 #endif // __CEL_PF_WHEELED__
00769