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

其他游戏

开发平台:

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. // Helper function that returns a hkpPhantom if the collidable's broadphase handle is of type hkpWorldObject::BROAD_PHASE_PHANTOM
  9. inline hkpPhantom* HK_CALL hkGetPhantom(const hkpCollidable* collidable)
  10. {
  11. if ( collidable->getType() == hkpWorldObject::BROAD_PHASE_PHANTOM )
  12. {
  13. return static_cast<hkpPhantom*>( hkGetWorldObject(collidable) );
  14. }
  15. return HK_NULL;
  16. }
  17. hkpCollidableAccept hkpPhantom::fireCollidableAdded( const hkpCollidable* collidable )
  18. {
  19. hkpCollidableAddedEvent event;
  20. event.m_collidable = collidable;
  21. event.m_phantom = this;
  22. event.m_collidableAccept = HK_COLLIDABLE_ACCEPT;
  23. for ( int i = m_overlapListeners.getSize()-1; i >= 0; i-- )
  24. {
  25. if (m_overlapListeners[i] != HK_NULL)
  26. {
  27. m_overlapListeners[i]->collidableAddedCallback( event );
  28. }
  29. }
  30. // cleanupNullPointers done at the end of updateBroadPhase 
  31. return event.m_collidableAccept;
  32. }
  33. void hkpPhantom::fireCollidableRemoved( const hkpCollidable* collidable, hkBool collidableWasAdded )
  34. {
  35. hkpCollidableRemovedEvent event;
  36. event.m_collidable = collidable;
  37. event.m_phantom = this;
  38. event.m_collidableWasAdded = collidableWasAdded;
  39. for ( int i = m_overlapListeners.getSize()-1; i >= 0; i-- )
  40. {
  41. if (m_overlapListeners[i] != HK_NULL)
  42. {
  43. m_overlapListeners[i]->collidableRemovedCallback( event );
  44. }
  45. }
  46. // cleanupNullPointers done at the end of updateBroadPhase 
  47. }
  48. inline hkpPhantom::hkpPhantom( const hkpShape* shape )
  49. : hkpWorldObject( shape, BROAD_PHASE_PHANTOM )
  50. {
  51. m_collidable.setOwner( this );
  52. }
  53. inline const hkArray<hkpPhantomListener*>& hkpPhantom::getPhantomListeners() const
  54. {
  55. return m_phantomListeners;
  56. }
  57. inline const hkArray<hkpPhantomOverlapListener*>& hkpPhantom::getPhantomOverlapListeners() const
  58. {
  59. return m_overlapListeners;
  60. }
  61. /*
  62. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  63. * Confidential Information of Havok.  (C) Copyright 1999-2009
  64. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  65. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  66. * rights, and intellectual property rights in the Havok software remain in
  67. * Havok and/or its suppliers.
  68. * Use of this software for evaluation purposes is subject to and indicates
  69. * acceptance of the End User licence Agreement for this product. A copy of
  70. * the license is included with this software and is also available at www.havok.com/tryhavok.
  71. */