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

其他游戏

开发平台:

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_PROPERTY_H
  9. #define HK_DYNAMICS2_PROPERTY_H
  10. extern const hkClass hkpPropertyValueClass;
  11. extern const hkClass hkpPropertyClass;
  12. /// A union of an int and a hkReal, used for the value field of a property
  13. struct hkpPropertyValue
  14. {
  15. HK_DECLARE_NONVIRTUAL_CLASS_ALLOCATOR( HK_MEMORY_CLASS_DYNAMICS, hkpPropertyValue );
  16. HK_DECLARE_REFLECTION();
  17. hkUint64 m_data;
  18. inline hkpPropertyValue( const int i );
  19. inline hkpPropertyValue( const hkReal f );
  20. inline hkpPropertyValue( void* p );
  21. inline hkpPropertyValue( ) { }
  22. inline void setReal(const hkReal r);
  23. inline void setInt(const int i);
  24. inline void setPtr(void* p);
  25. inline hkReal getReal() const;
  26. inline int getInt() const;
  27. inline void* getPtr() const;
  28. };
  29. /// A property for an hkpWorldObject. An hkpProperty has a type and a value.
  30. /// You can use properties to add additional information to an entity - for instance,
  31. /// for using your own collision filters or flagging certain types of game objects.
  32. class hkpProperty
  33. {
  34. public:
  35. HK_DECLARE_NONVIRTUAL_CLASS_ALLOCATOR( HK_MEMORY_CLASS_DYNAMICS, hkpProperty );
  36. HK_DECLARE_REFLECTION();
  37. public:
  38. /// Default constructor - does nothing
  39. inline hkpProperty();
  40. /// Create a property with a key and a hkUint32 value
  41. inline hkpProperty( hkUint32 key, hkInt32 value );
  42. /// Create a property with a key and value
  43. inline hkpProperty( hkUint32 key, hkpPropertyValue value );
  44. public:
  45. ///The property key.
  46. hkUint32 m_key;
  47. // Ensure m_value starts at 8 byte offset.
  48. hkUint32 m_alignmentPadding;
  49. ///The property's value.
  50. struct hkpPropertyValue m_value;
  51. public:
  52. hkpProperty( class hkFinishLoadedObjectFlag flag ) { }
  53. public:
  54. /// The hash function that converts strings to property keys.
  55. static void HK_CALL mapStringToKey( const char* string, hkUint32& keyOut );
  56. };
  57. #include <Physics/Dynamics/Common/hkpProperty.inl>
  58. /// Properties between these values are used by havok demos and sample code.
  59. #define HK_HAVOK_PROPERTIES_START 0x1000
  60. #define HK_HAVOK_PROPERTIES_END 0x2000
  61. // Here is a list of all the properties currently used by the demos and sample code.
  62. // Multiple Worlds
  63. #define HK_PROPERTY_ENTITY_REP_PHANTOM 0x1111
  64. // graphics bridge
  65. #define HK_PROPERTY_DEBUG_DISPLAY_COLOR 0x1130
  66. // the geometry which overrides the default shape view.
  67. // Once the graphics engine has created the object,
  68. // the geometry is deleted and the property removed
  69. #define HK_PROPERTY_OVERRIDE_DEBUG_DISPLAY_GEOMETRY 0x1131
  70. // The volume of a rigid body. This is only used by the fracture demo
  71. #define HK_PROPERTY_RIGID_BODY_VOLUME 0x1132
  72. // The isFracturable property. Attached to bodies which are meant to be fractured.
  73. // This is only used by the fracture demo.
  74. #define HK_PROPERTY_RIGID_BODY_IS_FRACTURABLE 0x1133
  75. // the id used for the graphics bridge. If this property is not preset, the address
  76. // of the collidable will used as an id
  77. #define HK_PROPERTY_DEBUG_DISPLAY_ID 0x1134
  78. // Pointer to a shape which is used by the graphics engine to create a separate display geometry.
  79. // If this pointer is HK_NULL, no graphics shape is created for the Havok demo renderer, however
  80. // the visual debugger will get the original graphics shape.
  81. // This property is cleared and reference to the shape removed upon addition of the body to hkpWorld.
  82. #define HK_PROPERTY_DISPLAY_SHAPE 0x1135
  83. // Sames as the normal HK_PROPERTY_OVERRIDE_DEBUG_DISPLAY_GEOMETRY
  84. // except the prop is left in the entity and the geom is not deleted (helps sharing etc)
  85. #define HK_PROPERTY_OVERRIDE_DEBUG_DISPLAY_GEOMETRY_NO_DELETE 0x1136
  86. // Half Stepping Utility
  87. #define HK_PROPERTY_HALF_STEPPER_INDEX 0x1200
  88. // Character controller
  89. #define HK_PROPERTY_CHARACTER_PROXY 0x1300
  90. // A pointer to an hkbCharacter used by hkbehavior demos
  91. #define HK_PROPERTY_HKB_CHARACTER 0x1400
  92. #endif // HK_DYNAMICS2_PROPERTY_H
  93. /*
  94. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  95. * Confidential Information of Havok.  (C) Copyright 1999-2009
  96. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  97. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  98. * rights, and intellectual property rights in the Havok software remain in
  99. * Havok and/or its suppliers.
  100. * Use of this software for evaluation purposes is subject to and indicates
  101. * acceptance of the End User licence Agreement for this product. A copy of
  102. * the license is included with this software and is also available at www.havok.com/tryhavok.
  103. */