hkpRayHitCollector.h
上传用户: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. #ifndef HK_RAY_HIT_COLLECTOR
  9. #define HK_RAY_HIT_COLLECTOR
  10. struct hkpShapeRayCastInput;
  11. struct hkpShapeRayCastCollectorOutput;
  12. class hkpCdBody;
  13. typedef hkUint32 hkpShapeKey;
  14. #include <Common/Base/hkBase.h>
  15. /// This class is used to get ray cast results via a callback. To use it, inherit
  16. /// from this class and implement the addRayHit() function.
  17. /// The class contains a value called "m_earlyOutHitFraction". It is the fraction
  18. /// along the ray beyond which no more hits will be considered. It is initialised
  19. /// to 1 in the default constructor, which means that all hits will be reported.
  20. /// See hkpAllRayHitCollector and hkpClosestRayHitCollector for concrete implementations
  21. /// of this class.
  22. class hkpRayHitCollector
  23. {
  24. public:
  25. /// The constructor initialises the early out hit fraction to 1.
  26. inline hkpRayHitCollector();
  27. /// This is the function called for every hit of the raycaster.
  28. /// Note: for optimization purposes this should set the m_earlyOutHitFraction to:
  29. /// - 0.0 if you want to get no more hits
  30. /// - 1.0 if you want to get all hits (constructor initializes this value to 1.0 by default)
  31. /// - output.m_hitFraction if you only want to get closer hits than one just found
  32. /// All hkpShape::castRay() methods except for hkpShapeCollection (and hkpListShape) use
  33. /// this value to exit early if they can and thus avoid unnecessary calculations.
  34. /// Note: output is defined in world space.
  35. virtual void addRayHit( const hkpCdBody& cdBody, const hkpShapeRayCastCollectorOutput& hitInfo ) = 0;
  36. /// This resets the m_earlyOutHitFraction to 1. You should call this if you want to
  37. /// reuse the class for a new ray cast.
  38. inline void reset();
  39. /// Virtual destructor for derived objects
  40. virtual ~hkpRayHitCollector() { }
  41. /// Extract the cdbody hierarchy shapekeys into buf.
  42. static int HK_CALL shapeKeysFromCdBody( hkpShapeKey* buf, int maxKeys, const hkpCdBody& body );
  43. public:
  44. hkReal m_earlyOutHitFraction;
  45. };
  46. #include <Physics/Collide/Shape/Query/hkpRayHitCollector.inl>
  47. #endif // HK_RAY_HIT_COLLECTOR
  48. /*
  49. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  50. * Confidential Information of Havok.  (C) Copyright 1999-2009
  51. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  52. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  53. * rights, and intellectual property rights in the Havok software remain in
  54. * Havok and/or its suppliers.
  55. * Use of this software for evaluation purposes is subject to and indicates
  56. * acceptance of the End User licence Agreement for this product. A copy of
  57. * the license is included with this software and is also available at www.havok.com/tryhavok.
  58. */