hkpSimulationIsland.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. hkpWorld* hkpSimulationIsland::getWorld()
  9. {
  10. return m_world;
  11. }
  12. inline hkBool hkpSimulationIsland::wasActiveLastFrame() const
  13. {
  14. return m_isInActiveIslandsArray;
  15. }
  16. inline hkBool hkpSimulationIsland::isFixed() const
  17. {
  18. return m_storageIndex == HK_INVALID_OBJECT_INDEX;
  19. }
  20. inline const hkArray<hkpEntity*>& hkpSimulationIsland::getEntities() const 
  21. return m_entities; 
  22. }
  23. inline const hkArray<hkpAction*>& hkpSimulationIsland::getActions() const 
  24. return m_actions; 
  25. }
  26. int hkpSimulationIsland::getStorageIndex()
  27. {
  28. return m_storageIndex;
  29. }
  30. inline int hkpSimulationIsland::getMemUsageForIntegration()
  31. {
  32. int sizeForElemTemp = m_constraintInfo.m_numSolverElemTemps * hkSizeOf(hkpSolverElemTemp) + 2 * hkSizeOf(hkpSolverElemTemp);
  33. int sizeForAccumulators = getEntities().getSize() * hkSizeOf(hkpVelocityAccumulator) + hkSizeOf(hkpVelocityAccumulator) + 16; // fixed rigid body + end tag (16 byte aligned)
  34. return sizeForAccumulators + 
  35. sizeForElemTemp + 
  36. m_constraintInfo.m_sizeOfSchemas + 
  37. HK_SIZE_OF_JACOBIAN_END_SCHEMA;
  38. }
  39. inline void hkpSimulationIsland::markAllEntitiesReadOnly() const
  40. {
  41. #ifdef HK_DEBUG_MULTI_THREADING
  42. for (int i =0; i < m_entities.getSize(); i++)
  43. {
  44. m_entities[i]->markForRead();
  45. }
  46. #endif
  47. }
  48. // helper functions for debugging multithreading
  49. inline void hkpSimulationIsland::unmarkAllEntitiesReadOnly() const
  50. {
  51. #ifdef HK_DEBUG_MULTI_THREADING
  52. for (int i =0; i < m_entities.getSize(); i++)
  53. {
  54. m_entities[i]->unmarkForRead();
  55. }
  56. #endif
  57. }
  58. inline void hkpSimulationIsland::unmarkForWrite()
  59. {
  60. m_multiThreadCheck.unmarkForWrite();
  61. }
  62. /*
  63. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  64. * Confidential Information of Havok.  (C) Copyright 1999-2009
  65. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  66. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  67. * rights, and intellectual property rights in the Havok software remain in
  68. * Havok and/or its suppliers.
  69. * Use of this software for evaluation purposes is subject to and indicates
  70. * acceptance of the End User licence Agreement for this product. A copy of
  71. * the license is included with this software and is also available at www.havok.com/tryhavok.
  72. */