hkDataObjectDict.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_DATA_DICT_OBJECT
  9. #define HK_DATA_DICT_OBJECT
  10. #include <Common/Base/Container/PointerMap/hkPointerMap.h>
  11. #include <Common/Serialize/Util/hkPointerMultiMap.h>
  12. #include <Common/Serialize/Data/hkDataObject.h>
  13. class hkDataClassDict;
  14. class hkDataObjectDict;
  15. /// This class implements the dictionary type of hkDataWorld.
  16. /// You may instantiate, modify and destroy hkDataClass,
  17. /// hkDataObject and hkDataArray objects using this dictionary world.
  18. ///
  19. /// This class is used to load a tagfile, update loaded content
  20. /// (with patch versioning) if required, and copy it to native
  21. /// objects. And you may also use it to save world content to a
  22. /// tagfile.
  23. class hkDataWorldDict : public hkDataWorld
  24. {
  25. public:
  26. /// Constructor.
  27. hkDataWorldDict();
  28. /// Destructor.
  29. ~hkDataWorldDict();
  30. /// Implements hkDataWorld::getContents().
  31. virtual hkDataObject getContents() const;
  32. /// Implements hkDataWorld::newClass().
  33. virtual hkDataClassImpl* newClass(const ClassCinfo& cinfo);
  34. /// Implements hkDataWorld::newArray().
  35. virtual hkDataArrayImpl* newArray(hkDataObject& obj, const hkDataClass::MemberInfo& minfo) const;
  36. /// Implements hkDataWorld::newObject().
  37. virtual hkDataObjectImpl* newObject(const hkDataClass &) const;
  38. /// Implements hkDataWorld::getType(). Return hkDataWorld::TYPE_DICTIONARY.
  39. virtual hkEnum<hkDataWorld::DataWorldType, hkInt32> getType() const;
  40. // manage classes
  41. /// Implements hkDataWorld::findAllClasses().
  42. virtual void findAllClasses(hkArray<hkDataClassImpl*>& classesOut) const;
  43. /// Implements hkDataWorld::findClass().
  44. virtual hkDataClassImpl* findClass(const char* name) const;
  45. /// Create and register a new dictionary class based on the given hkClass.
  46. hkDataClassImpl* wrapClass(const hkClass& klass);
  47. /// Create and register a new dictionary class based on the class named 'name' from another world.
  48. hkDataClassImpl* copyClassFromWorld(const char* name, const hkDataWorld& worldFrom);
  49. /// Rename registered class.
  50. void renameClass(hkDataClass& klass, const char* newName);
  51. /// Remove registered class.
  52. void removeClass(hkDataClass& klass);
  53. /// Set new version for the given registered class.
  54. void setClassVersion(hkDataClass& klass, int newVersion);
  55. /// Set new parent for the given registered class.
  56. void setClassParent(hkDataClass& klass, hkDataClass& parent);
  57. /// Add new member to the given registered class.
  58. void addClassMember(hkDataClass& klass, const char* name, hkDataObject::Type type, const char* typeName, int tupleCount);
  59. /// Rename specified member of the given registered class.
  60. void renameClassMember(hkDataClass& klass, const char* oldName, const char* newName);
  61. /// Remove specified member from the given registered class.
  62. void removeClassMember(hkDataClass& klass, const char* name);
  63. // manage objects
  64. /// Cast object type to the given registered class.
  65. void castObject(hkDataObject& obj, const hkDataClass& newClass);
  66. /// Find all objects in the class hierarchy of the given base class name.
  67. void findObjectsByBaseClass(const char* baseClassName, hkArray<hkDataObjectImpl*>& objectsOut) const;
  68. /// Find all objects of the given specific class name only.
  69. void findObjectsByExactClass(const char* className, hkArray<hkDataObjectImpl*>& objectsOut) const;
  70. // Used internally.
  71. class ObjectTracker;
  72. ObjectTracker* m_tracker;
  73. };
  74. #endif // HK_DATA_DICT_OBJECT
  75. /*
  76. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  77. * Confidential Information of Havok.  (C) Copyright 1999-2009
  78. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  79. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  80. * rights, and intellectual property rights in the Havok software remain in
  81. * Havok and/or its suppliers.
  82. * Use of this software for evaluation purposes is subject to and indicates
  83. * acceptance of the End User licence Agreement for this product. A copy of
  84. * the license is included with this software and is also available at www.havok.com/tryhavok.
  85. */