hkpVehicleDefaultAnalogDriverInput.h
上传用户:yisoukefu
上传日期:2020-08-09
资源大小:39506k
文件大小:5k
源码类别:

其他游戏

开发平台:

Visual C++

  1. /* 
  2.  * 
  3.  * Confidential Information of Telekinesys Research Limited (t/a Havok). Not for disclosure or distribution without Havok's
  4.  * prior written consent. This software contains code, techniques and know-how which is confidential and proprietary to Havok.
  5.  * Level 2 and Level 3 source code contains trade secrets of Havok. Havok Software (C) Copyright 1999-2009 Telekinesys Research Limited t/a Havok. All Rights Reserved. Use of this software is subject to the terms of an end user license agreement.
  6.  * 
  7.  */
  8. #ifndef HKVEHICLE_DRIVERINPUT_DEFAULT_hkVehicleDefaultAnalogDriverInput_XML_H
  9. #define HKVEHICLE_DRIVERINPUT_DEFAULT_hkVehicleDefaultAnalogDriverInput_XML_H
  10. #include <Physics/Vehicle/DriverInput/hkpVehicleDriverInput.h>
  11. /// The hkpVehicleDefaultAnalogDriverInput class implements a hkpVehicleDriverInput based on the input from an
  12. /// analog device.
  13. ///
  14. /// The communication between the analog device and the
  15. /// hkpVehicleDefaultAnalogDriverInput object is done through a 
  16. /// hkpVehicleDriverInputAnalogStatus struct.
  17. /// 
  18. /// This is a container for the values obtained from the device. These
  19. /// values must be updated externally: the data is "pushed" from the device.
  20. /// This allows for updating the device data at a different frequency from
  21. /// the simulation frequency.
  22. /// 
  23. /// The hkpVehicleDefaultAnalogDriverInput class transforms the status of the
  24. /// analog device (x position, y position, handbrake/reverse button pressed)
  25. /// into driver input variables.
  26. class hkpVehicleDriverInputAnalogStatus : public hkpVehicleDriverInputStatus
  27. {
  28. public:
  29. HK_DECLARE_REFLECTION();
  30. hkpVehicleDriverInputAnalogStatus() { }
  31. // so that the scripts know its virtual
  32. virtual ~hkpVehicleDriverInputAnalogStatus() { }
  33. /// The current position, defined from -1 to 1, in the X axis of the device 
  34. hkReal m_positionX;
  35. /// The current position, defined from -1 to 1, in the Y axis of the device 
  36. hkReal m_positionY;
  37. /// True if the handbrake button is pressed 
  38. hkBool m_handbrakeButtonPressed;
  39. /// True if the reverse button is pressed 
  40. hkBool m_reverseButtonPressed;
  41. public:
  42. hkpVehicleDriverInputAnalogStatus(hkFinishLoadedObjectFlag f) : hkpVehicleDriverInputStatus(f) { }
  43. virtual hkpVehicleDriverInputStatus* clone() const;
  44. };
  45. /// Default (analog) implementation of hkpVehicleDriverInput. See
  46. /// hkpVehicleDriverInputAnalogStatus for more parameter details.
  47. class hkpVehicleDefaultAnalogDriverInput : public hkpVehicleDriverInput
  48. {
  49. public:
  50. HK_DECLARE_REFLECTION();
  51. /// Default constructor
  52. hkpVehicleDefaultAnalogDriverInput();
  53. //
  54. // Methods
  55. //
  56. /// Calculates the effect of the driver input on the vehicle.
  57. virtual void calcDriverInput(const hkReal deltaTime, const hkpVehicleInstance* vehicle, const hkpVehicleDriverInputStatus* deviceStatus, FilteredDriverInputOutput& filteredInputOut);
  58. /// Calculates the change in the accelerator caused by the driver input.
  59. virtual hkReal calcAcceleratorInput(const hkReal deltaTime, const hkpVehicleInstance* vehicle, const hkpVehicleDriverInputAnalogStatus* deviceStatus, FilteredDriverInputOutput& input) const;
  60. /// Calculates the change in the brake caused by the driver input.
  61. virtual hkReal calcBrakeInput(const hkReal deltaTime, const hkpVehicleInstance* vehicle, const hkpVehicleDriverInputAnalogStatus* deviceStatus, FilteredDriverInputOutput& FilteredDriverInputOutputOut) const;
  62. /// Calculates if the vehicle is trying to reverse, according to the driver input and the current chassis motion.
  63. virtual hkBool calcTryingToReverse(const hkReal deltaTime, const hkpVehicleInstance* vehicle, const hkpVehicleDriverInputAnalogStatus* deviceStatus, FilteredDriverInputOutput& FilteredDriverInputOutputOut);
  64. /// 
  65. virtual hkReal calcSteeringInput(const hkReal deltaTime, const hkpVehicleInstance* vehicle, const hkpVehicleDriverInputAnalogStatus* deviceStatus, FilteredDriverInputOutput& FilteredDriverInputOutputOut) const;
  66. //
  67. // Members
  68. //
  69. public:
  70. /// The input value, up to which the m_initialSlope is valid. For higher input
  71. /// values the factor is increased so that for an input value of 1.0f the output is
  72. /// also 1.0f.
  73. hkReal m_slopeChangePointX;
  74. /// The initial slope. Used for small steering angles.
  75. hkReal m_initialSlope;
  76. /// The deadZone of the joystick.
  77. hkReal m_deadZone;
  78. /// If true, the car will start reversing when the brake is applied and the car is
  79. /// stopped.
  80. hkBool m_autoReverse;
  81. public:
  82. hkpVehicleDefaultAnalogDriverInput(hkFinishLoadedObjectFlag f) : hkpVehicleDriverInput(f) { }
  83. };
  84. #endif // HKVEHICLE_DRIVERINPUT_DEFAULT_hkVehicleDefaultAnalogDriverInput_XML_H
  85. /*
  86. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  87. * Confidential Information of Havok.  (C) Copyright 1999-2009
  88. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  89. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  90. * rights, and intellectual property rights in the Havok software remain in
  91. * Havok and/or its suppliers.
  92. * Use of this software for evaluation purposes is subject to and indicates
  93. * acceptance of the End User licence Agreement for this product. A copy of
  94. * the license is included with this software and is also available at www.havok.com/tryhavok.
  95. */