hkpWorldObject.inl
上传用户: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. inline hkpWorld* hkpWorldObject::getWorld() const
  9. return m_world;
  10. }
  11. hkpWorldObject::~hkpWorldObject()
  12. {
  13. // Do not delete this if it is still in a world.
  14. HK_ASSERT2(0x3933b5a9,  getWorld() == HK_NULL, "hkpWorldObject is in an hkpWorld and cannot be deleted.");
  15. if (m_collidable.getShape())
  16. {
  17. m_collidable.getShape()->removeReference();
  18. }
  19. if (m_aiData)
  20. {
  21. m_aiData->removeReference();
  22. }
  23. }
  24. inline hkpCollidable* hkpWorldObject::getCollidableRw()
  25. {
  26. #ifdef HK_DEBUG_MULTI_THREADING
  27. checkReadWrite();
  28. #endif
  29. return &m_collidable;
  30. }
  31. inline const hkpCollidable* hkpWorldObject::getCollidable() const
  32. {
  33. #ifdef HK_DEBUG_MULTI_THREADING
  34. checkReadOnly();
  35. #endif
  36. return &m_collidable;
  37. }
  38. inline hkpLinkedCollidable* hkpWorldObject::getLinkedCollidable()
  39. {
  40. #ifdef HK_DEBUG_MULTI_THREADING
  41. checkReadWrite();
  42. #endif
  43. return &m_collidable;
  44. }
  45. inline const hkpLinkedCollidable* hkpWorldObject::getCollidableMtUnchecked() const
  46. {
  47. return &m_collidable;
  48. }
  49. inline const hkpLinkedCollidable* hkpWorldObject::getLinkedCollidable() const
  50. {
  51. #ifdef HK_DEBUG_MULTI_THREADING
  52. checkReadOnly();
  53. #endif
  54. return &m_collidable;
  55. }
  56. inline hkBool hkpWorldObject::isAddedToWorld() const
  57. {
  58. return m_world != HK_NULL;
  59. }
  60. void hkpWorldObject::setWorld( hkpWorld* world )
  61. {
  62. m_world = world;
  63. }
  64. inline hkpPropertyValue hkpWorldObject::getProperty( hkUint32 key, MtChecks mtCheck ) const
  65. {
  66. HK_ON_DEBUG_MULTI_THREADING( if ( mtCheck == MULTI_THREADING_CHECKS_ENABLE) {checkReadOnly(); } );
  67. for (int i = 0; i < m_properties.getSize(); ++i)
  68. {
  69. if (m_properties[i].m_key == key)
  70. {
  71. return m_properties[i].m_value;
  72. }
  73. }
  74. hkpPropertyValue returnValue;
  75. returnValue.m_data = 0;
  76. return returnValue;
  77. }
  78. inline bool hkpWorldObject::hasProperty( hkUint32 key, MtChecks mtCheck ) const
  79. {
  80. HK_ON_DEBUG_MULTI_THREADING( if ( mtCheck == MULTI_THREADING_CHECKS_ENABLE) {checkReadOnly(); } );
  81. for (int i = 0; i < m_properties.getSize(); ++i)
  82. {
  83. if (m_properties[i].m_key == key)
  84. {
  85. return true;
  86. }
  87. }
  88. return false;
  89. }
  90. inline void hkpWorldObject::unlockPropertiesFromLoadedObject()
  91. {
  92. m_properties.setLocked(false);
  93. }
  94. inline void hkpWorldObject::clearAndDeallocateProperties()
  95. {
  96. m_properties.clearAndDeallocate();
  97. }
  98. inline hkUlong hkpWorldObject::getUserData() const
  99. {
  100. return m_userData;
  101. }
  102. inline void hkpWorldObject::setUserData( hkUlong data )
  103. {
  104. m_userData = data;
  105. }
  106. inline const char* hkpWorldObject::getName() const
  107. {
  108. return m_name;
  109. }
  110. inline void hkpWorldObject::setName( const char* name )
  111. {
  112. m_name = name;
  113. }
  114. inline hkMultiThreadCheck& hkpWorldObject::getMultiThreadCheck()
  115. {
  116. return m_multiThreadCheck;
  117. }
  118. inline void hkpWorldObject::markForRead( )
  119. {
  120. getMultiThreadCheck().markForRead();
  121. }
  122. inline void hkpWorldObject::markForWrite( )
  123. {
  124. #ifdef HK_DEBUG_MULTI_THREADING
  125. hkpWorldObject::markForWriteImpl();
  126. #endif
  127. }
  128. inline void hkpWorldObject::unmarkForRead( )
  129. {
  130. getMultiThreadCheck().unmarkForRead();
  131. }
  132. inline void hkpWorldObject::unmarkForWrite()
  133. {
  134. getMultiThreadCheck().unmarkForWrite();
  135. }
  136. inline const hkMultiThreadCheck& hkpWorldObject::getMultiThreadCheck() const
  137. {
  138. return m_multiThreadCheck;
  139. }
  140. inline void hkpWorldObject::copyProperties( const hkpWorldObject* otherObj )
  141. {
  142. m_properties = otherObj->m_properties;
  143. }
  144. /*
  145. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  146. * Confidential Information of Havok.  (C) Copyright 1999-2009
  147. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  148. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  149. * rights, and intellectual property rights in the Havok software remain in
  150. * Havok and/or its suppliers.
  151. * Use of this software for evaluation purposes is subject to and indicates
  152. * acceptance of the End User licence Agreement for this product. A copy of
  153. * the license is included with this software and is also available at www.havok.com/tryhavok.
  154. */