hkpPhantomOverlapListener.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 HK_DYNAMICS2_PHANTOM_OVERLAP_LISTENER_H
  9. #define HK_DYNAMICS2_PHANTOM_OVERLAP_LISTENER_H
  10. class hkpPhantom;
  11. class hkpCollidable;
  12. /// This is a variable of hkpCollidableAddedEvent.
  13. enum hkpCollidableAccept
  14. {
  15. /// The collidable should be added to the hkpPhantom.
  16. HK_COLLIDABLE_ACCEPT = 0,
  17. /// The collidable should not be added to the hkpPhantom.
  18. HK_COLLIDABLE_REJECT = 1
  19. };
  20. /// This structure is the input to hkpPhantomOverlapListener::collidableAddedCallback
  21. struct hkpCollidableAddedEvent
  22. {
  23. HK_DECLARE_NONVIRTUAL_CLASS_ALLOCATOR( HK_MEMORY_CLASS_DYNAMICS, hkpCollidableAddedEvent );
  24. /// The hkpPhantom.
  25. const hkpPhantom* m_phantom;
  26. /// The hkpCollidable.
  27. const hkpCollidable* m_collidable;
  28. /// An export flag: if any callback sets this flag to HK_COLLIDABLE_REJECT
  29. /// than the collidable won't be added to the phantom.
  30. /// This allows you to:
  31. ///  - add a special filter
  32.     ///  - or redirect certain overlaps to a different location
  33. /// By default this is set to HK_COLLIDABLE_ACCEPT
  34. mutable hkpCollidableAccept m_collidableAccept;
  35. };
  36. /// This structure is the input to hkpPhantomOverlapListener::collidableRemovedCallback
  37. struct hkpCollidableRemovedEvent
  38. {
  39. HK_DECLARE_NONVIRTUAL_CLASS_ALLOCATOR( HK_MEMORY_CLASS_DYNAMICS, hkpCollidableRemovedEvent );
  40. /// The hkpPhantom.
  41. const hkpPhantom* m_phantom;
  42. /// The hkpCollidable.
  43. const hkpCollidable* m_collidable;
  44. /// The next value is set to true, if the collidable was actually
  45. /// added to the hkpPhantom.
  46. /// It might be set to false if:
  47.     ///  - it was previously rejected by the hkpCollidableAddedEvent
  48.     ///  - it was filtered out by the hkpPhantom's filter upon addition.
  49. hkBool m_collidableWasAdded;
  50. };
  51. /// Implement this class to receive notifications when objects enter the phantom area.
  52. /// You can also reject collidables in the collidableAddedCallback, to prevent them
  53. /// from being added to the hkpPhantom.
  54. class hkpPhantomOverlapListener
  55. {
  56. public:
  57. /// This callback will be called when a new collidable will be added to the phantom
  58. /// after it has passed the hkpCollisionFilter.
  59. /// A callback can set m_collidableAccept to HK_COLLIDABLE_REJECT, which means that the
  60. /// phantom will not add the collidable to its internal list, however
  61. /// all the events will still be raised.
  62. virtual void collidableAddedCallback(   const hkpCollidableAddedEvent& event ) = 0;
  63. /// The next call will be called whenever the objects leave the aabb of the phantom.
  64. /// i.e. it is called whenever hkpPhantom::removeOverlappingCollidable() is called.
  65. /// collidableRemovedCallback() is not symmetric to collidableAddedCallback because
  66.     /// it is called regardless of whether the collidable has been added to the callback or not.
  67. /// Even if the collidable had been filtered out by the collision filter or by
  68. /// a hkpPhantomOverlapListener, this event will still be called when upon removal.
  69. virtual void collidableRemovedCallback( const hkpCollidableRemovedEvent& event ) = 0;
  70. /// Virtual destructor for derived objects
  71. virtual ~hkpPhantomOverlapListener() {}
  72. };
  73. #endif //HK_DYNAMICS2_PHANTOM_OVERLAP_LISTENER_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. */