hkXmlPackfileReader.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_XML_PACKFILE_READER_H
  9. #define HK_XML_PACKFILE_READER_H
  10. #include <Common/Serialize/Packfile/hkPackfileReader.h>
  11. #include <Common/Base/Container/StringMap/hkStringMap.h>
  12. class hkRelocationInfo;
  13. class hkDynamicClassNameRegistry;
  14. class hkXmlPackfileUpdateTracker;
  15. template <typename K, typename V> class hkPointerMap;
  16. /// Reads an XML packfile.
  17. class hkXmlPackfileReader : public hkPackfileReader
  18. {
  19. public:
  20. ///
  21. hkXmlPackfileReader();
  22. ///
  23. ~hkXmlPackfileReader();
  24. /// Load the entire file, fixes up all pointers.
  25. /// If the root element packfile has a "classversion" attribute,
  26. /// we use the hkVersionRegistry to find the metadata for this version.
  27. /// Use a new packfile reader for each loadEntireFile call.
  28. virtual hkResult loadEntireFile( hkStreamReader* reader );
  29. /// Load the entire file, fixes up all pointers.
  30. /// If classes are present in the file they are used, falling
  31. /// back to the supplied registry if not found. See also loadEntireFile.
  32. /// Use a new packfile reader for each loadEntireFileWithRegistry call.
  33. virtual hkResult loadEntireFileWithRegistry( hkStreamReader* reader, const hkClassNameRegistry* reg );
  34. // Inherited from hkPackfileReader
  35. virtual void* getContentsWithRegistry( const char* className, const hkTypeInfoRegistry* finish );
  36. // Inherited from hkPackfileReader
  37. virtual const char* getContentsClassName() const;
  38. // Inherited from hkPackfileReader
  39. virtual hkPackfileData* getPackfileData() const;
  40. // Inherited from hkPackfileReader
  41. virtual hkArray<hkVariant>& getLoadedObjects() const;
  42. // Inherited from hkPackfileReader
  43. virtual hkVariant getTopLevelObject() const;
  44. // Inherited from hkPackfileReader
  45. virtual hkObjectUpdateTracker& getUpdateTracker() const;
  46. protected:
  47. const hkClass* getClassByName( const char* className, hkDynamicClassNameRegistry& reg, hkStringMap<hkClass*>& partiallyLoadedClasses, hkPointerMap<const hkClass*, int>& offsetsRecomputed, int classVersion, const char* contentsVersion ) const;
  48. void handleInterObjectReferences( const char* objName, void* object, const hkRelocationInfo& reloc, const hkStringMap<void*>& nameToObject, hkStringMap<int>& unresolvedReferences );
  49. protected:
  50. // Contains all data which may persist after this reader is destroyed.
  51. AllocatedData* m_data;
  52. // Names (tags) of sections in the order they appear.
  53. hkArray<char*> m_knownSections;
  54. // Maps section tag to physical index. (see m_knownSections).
  55. hkStringMap<int> m_sectionTagToIndex;
  56. // Loaded non-class objects
  57. mutable hkArray<hkVariant> m_loadedObjects;
  58. // Tracker
  59. hkXmlPackfileUpdateTracker* m_tracker;
  60. };
  61. #endif // HK_XML_PACKFILE_READER_H
  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. */