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

其他游戏

开发平台:

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_hkVehicleDRIVERINPUT_XML_H
  9. #define HKVEHICLE_DRIVERINPUT_hkVehicleDRIVERINPUT_XML_H
  10. #include <Common/Base/hkBase.h>
  11. class hkpVehicleInstance;
  12. ///
  13. class hkpVehicleDriverInputStatus : public hkReferencedObject
  14. {
  15. public:
  16. HK_DECLARE_CLASS_ALLOCATOR(HK_MEMORY_CLASS_VEHICLE);
  17. HK_DECLARE_REFLECTION();
  18. hkpVehicleDriverInputStatus() {}
  19. virtual ~hkpVehicleDriverInputStatus() { }
  20. // Empty, so that we have a base type ptr (of at least some proper type)
  21. // to serialize in and back in again.
  22. public:
  23. hkpVehicleDriverInputStatus(hkFinishLoadedObjectFlag f) : hkReferencedObject(f) { }
  24. /// Clone this input.
  25. virtual hkpVehicleDriverInputStatus* clone() const = 0;
  26. };
  27. /// This class is an abstraction for the input of a driver to the controls of the
  28. /// vehicle. State variables that store the input to the steering wheel, pedals, 
  29. /// and handbrake that this component calculates are stored in the hkpVehicleInstance. 
  30. /// Note that this component can be associated with a
  31. /// device in the computer (such as a joystick or steering wheel), but can also be
  32. /// associated with an AI controller, or a replay sequence.
  33. class hkpVehicleDriverInput : public hkReferencedObject
  34. {
  35. public:
  36. HK_DECLARE_CLASS_ALLOCATOR(HK_MEMORY_CLASS_VEHICLE);
  37. HK_DECLARE_REFLECTION();
  38. /// Container for data output by the driver input calculations.
  39. struct FilteredDriverInputOutput
  40. {
  41. public:
  42. HK_DECLARE_NONVIRTUAL_CLASS_ALLOCATOR( HK_MEMORY_CLASS_VEHICLE, hkpVehicleDriverInput::FilteredDriverInputOutput );
  43. /// The input from the accelerator.
  44. hkReal m_acceleratorPedalInput;
  45. /// The input from the brake.
  46. hkReal m_brakePedalInput;
  47. /// The input from the steering wheel.
  48. hkReal m_steeringWheelInput;
  49. /// Indicates if the handbrake is on.
  50. hkBool m_handbrakeOn;
  51. /// Indicates that we think the vehicle is trying to reverse.
  52. ///
  53. /// True if we are not in autoreverse mode, then we are tyring to reverse only 
  54. /// when the driver hits the Reverse Button.
  55. ///
  56. /// Otherwise, true if the break has been pressed and we are moving backwards,
  57. /// or
  58. ///  - if we are reversing and moving we keep reversing
  59. ///  - if we are reversing but stopped we keep reversing if the brake is pressed
  60. ///  - if we are reversing, stopped and no brake is pressed, we don't reverse any more
  61. ///
  62. ///  Finally, if we are not reversing, we start reversing only if we are stopped and pressing the brake
  63. hkBool m_tryingToReverse;
  64. };
  65. //
  66. // Methods
  67. //
  68. hkpVehicleDriverInput() {}
  69. /// Calculates the effect of the driver's input on the vehicle.
  70. virtual void calcDriverInput(const hkReal deltaTime, const hkpVehicleInstance* vehicle, const hkpVehicleDriverInputStatus* deviceStatus, FilteredDriverInputOutput& filteredInputOut) = 0;
  71. hkpVehicleDriverInput(hkFinishLoadedObjectFlag flag) : hkReferencedObject(flag) {}
  72. };
  73. #endif // HKVEHICLE_DRIVERINPUT_hkVehicleDRIVERINPUT_XML_H
  74. /*
  75. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  76. * Confidential Information of Havok.  (C) Copyright 1999-2009
  77. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  78. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  79. * rights, and intellectual property rights in the Havok software remain in
  80. * Havok and/or its suppliers.
  81. * Use of this software for evaluation purposes is subject to and indicates
  82. * acceptance of the End User licence Agreement for this product. A copy of
  83. * the license is included with this software and is also available at www.havok.com/tryhavok.
  84. */