hkpConstraintChainUtil.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_UTILITIES_CONSTRAINT_CHIAN_UTIL_H
  9. #define HK_UTILITIES_CONSTRAINT_CHIAN_UTIL_H
  10. #include <Common/Base/hkBase.h>
  11. class hkpConstraintInstance;
  12. class hkpConstraintMotor;
  13. class hkpPositionConstraintMotor;
  14. class hkpConstraintChainInstance;
  15. class hkpBallSocketChainData;
  16. class hkpEntity;
  17. class hkVector4;
  18. class hkpConstraintInstance;
  19. class hkpConstraintMotor;
  20. class hkpPositionConstraintMotor;
  21. class hkpConstraintChainInstance;
  22. class hkpBallSocketChainData;
  23. class hkpEntity;
  24. class hkVector4;
  25. class hkQuaternion;
  26. /// Constraint chain utility functions.
  27. class hkpConstraintChainUtil
  28. {
  29. public:
  30. //
  31. // Chain construction functions
  32. //
  33. /// This function builds a constraint chain instance, and a powered chain data.
  34. /// These are build from the ordered constraints list.
  35. /// All the constraints are assumed to be powered ragdoll/hinge constraints. 
  36. /// The function triggers an assert otherwise.
  37. static hkpConstraintChainInstance* HK_CALL buildPoweredChain(hkArray<hkpConstraintInstance*>& constraints, hkBool cloneMotors);
  38. /// This function adds a new constraint to a ball-socket constraint chain.
  39. static void HK_CALL addConstraintToBallSocketChain( hkpConstraintChainInstance* instance, hkpEntity* entityToAppend, const hkVector4& pivotWs );
  40. /// This function adds a new constraint to a powered constraint chain.
  41. static void HK_CALL addConstraintToPoweredChain( hkpConstraintChainInstance* instance, hkpEntity* entityToAppend, const hkVector4& pivotWs, hkpConstraintMotor* motor0, hkpConstraintMotor* motor1, hkpConstraintMotor* motor2  );
  42. /// This function adds a new constraint to a ball-socket constraint chain.
  43. static hkResult HK_CALL addConstraintToChain(hkpConstraintInstance* newChildInstance, hkpConstraintChainInstance* chainInstance, hkpBallSocketChainData* chainData);
  44. //
  45. // Helper functions
  46. //
  47. /// This attempts to find a connection from entityA to entityB along the constraints in the allConstraint list.
  48. /// Upon success, the function return HK_SUCCESS value and fills the entitiesOut and constraintsOut with ordered lists
  49. /// of entities and constraints visited on the shortes path. 
  50. /// The function returns HK_FAILURE when no path connects entityA and entityB.
  51.   static hkResult HK_CALL findConstraintLinkBetweenEntities(const hkArray<hkpConstraintInstance*>& allConstraints, hkpEntity* entityA, hkpEntity* entityB, hkArray<hkpEntity*>& entitiesOut, hkArray<hkpConstraintInstance*>& constraintsOut);
  52. /// This returns a list of hkEntities linked to the specified entity by any of the constraints in the allConstraints list.
  53. /// The entities found are placed in the entitiesOut array, and the constraintsOut array contains the corresponding constraints, which lead to those entities.
  54. static void HK_CALL getAdjointEntities(const hkArray<hkpConstraintInstance*>& allConstraints, const hkpEntity* entity, hkArray<hkpEntity*>& entitiesOut, hkArray<hkpConstraintInstance*>& constraintsOut);
  55. };
  56. #endif // HK_UTILITIES_CONSTRAINT_CHIAN_UTIL_H
  57. /*
  58. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  59. * Confidential Information of Havok.  (C) Copyright 1999-2009
  60. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  61. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  62. * rights, and intellectual property rights in the Havok software remain in
  63. * Havok and/or its suppliers.
  64. * Use of this software for evaluation purposes is subject to and indicates
  65. * acceptance of the End User licence Agreement for this product. A copy of
  66. * the license is included with this software and is also available at www.havok.com/tryhavok.
  67. */