hkpLazyAddToWorld.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_UTILITIES2_LAZY_ADD_TO_WORLD_H
  9. #define HK_UTILITIES2_LAZY_ADD_TO_WORLD_H
  10. #include <Common/Base/hkBase.h>
  11. class hkpWorld;
  12. class hkpEntity;
  13. class hkpAction;
  14. class hkpConstraintInstance;
  15. /// A class that may prove useful if using a complex toolchain that does not
  16. /// guarantee complete construction of Havok objects e.g. hkpRigidBody with an 
  17. /// hkpShape left as HK_NULL. It maintains hkArrays of pointers to objects that
  18. /// can be added to a hkpWorld using commit functions. It Asserts if any incomplete
  19. /// objects are committed.
  20. /// NB: This class is only intended for use at setup time, before simulation
  21. /// begins.
  22. class hkpLazyAddToWorld : public hkReferencedObject
  23. {
  24. public:
  25. //
  26. // Public functions.
  27. //
  28. /// Constructor takes a pointer to an hkpWorld that objects will (eventually)
  29. /// be added to.
  30. hkpLazyAddToWorld(hkpWorld* world);
  31. /// Destructor Asserts if hkArrays are not all empty i.e. all objects committed
  32. /// to m_world.
  33. ~hkpLazyAddToWorld();
  34. //
  35. // Functions to commit objects to m_world.
  36. //
  37. /// Add all the elements of all the hkArrays to m_world. Returns the 
  38. /// number of objects committed or -1 for failure.
  39. int commitAll();
  40. /// Commit all remaining hkEntities. Return the number of hkEntities
  41. /// committed or -1 for failure.
  42. int commitAllEntity();
  43. /// Commit all remaining hkActions. Return the number of hkActions
  44. /// committed or -1 for failure.
  45. int commitAllAction();
  46. /// Commit all remaining hkConstraints. Return the number of hkConstraints
  47. /// committed or -1 for failure.
  48. int commitAllConstraint();
  49. //
  50. // Functions to add pointers to the commit hkArrays.
  51. //
  52. /// Add an hkpEntity to the hkArray of hkEntites to be committed. Return 
  53. /// the size of m_entities after adding or -1 for failure.
  54. int addEntity(hkpEntity* entity);
  55. /// Add an hkpAction to the hkArray of hkActions to be committed. Return 
  56. /// the size of m_actions after adding or -1 for failure.
  57. int addAction(hkpAction* action);
  58. /// Add an hkpConstraintInstance to the hkArray of hkConstraints to be committed. Return 
  59. /// the size of m_constraints after adding or -1 for failure.
  60. int addConstraint( hkpConstraintInstance* constraint );
  61. //
  62. // Functions to ensure objects are fully constructed (before committing).
  63. //
  64. /// Return true if the hkpEntity is fully constructed.
  65. hkBool isValid(hkpEntity* entity);
  66. /// Return true if the hkpAction is fully constructed.
  67. hkBool isValid(hkpAction* action);
  68. /// Return true if the hkpConstraintInstance is fully constructed.
  69. hkBool isValid(hkpConstraintInstance* constraint);
  70. public:
  71. //
  72. // Public data.
  73. //
  74. /// The hkpWorld to which objects will be committed.
  75. hkpWorld* m_world;
  76. protected:
  77. //
  78. // Private data.
  79. //
  80. /// hkArray holding pointers to hkEntities waiting to be committed.
  81. hkArray<hkpEntity*> m_entities;
  82. /// hkArray holding pointers to hkActions waiting to be committed.
  83. hkArray<hkpAction*> m_actions;
  84. /// hkArray holding pointers to hkConstraints waiting to be committed.
  85. hkArray<hkpConstraintInstance*> m_constraints;
  86. };
  87. #endif // HK_UTILITIES2_LAZY_ADD_TO_WORLD_H
  88. /*
  89. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  90. * Confidential Information of Havok.  (C) Copyright 1999-2009
  91. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  92. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  93. * rights, and intellectual property rights in the Havok software remain in
  94. * Havok and/or its suppliers.
  95. * Use of this software for evaluation purposes is subject to and indicates
  96. * acceptance of the End User licence Agreement for this product. A copy of
  97. * the license is included with this software and is also available at www.havok.com/tryhavok.
  98. */