hctSdkUtils.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 INC_COMMON_UTILS_H
  9. #define INC_COMMON_UTILS_H
  10. #include <Common/Base/hkBase.h>
  11. #include <Common/Base/Reflection/hkClass.h>
  12. #include <Common/Base/Reflection/hkClassMemberAccessor.h>
  13. #include <Common/Base/Types/Geometry/hkGeometry.h>
  14. #include <Common/Base/Container/Array/hkObjectArray.h>
  15. #include <Common/Base/Fwd/hkwindows.h>
  16. #define HCT_MAX_NUM_CLASS_ENTRIES 128
  17. struct hctModelerNodeIdToClassMap
  18. {
  19. int            m_3dsMaxClassId;
  20. int            m_mayaNodeId;
  21. const hkClass* m_class;
  22. const char*    m_nodeName;
  23. const char*    m_displayName;
  24. };
  25. class hctSdkUtils
  26. {
  27. public:
  28. /// A modeler independent abstraction of a "progress bar", to monitor the utility's progress and terminate it if necessary
  29. struct ProgressUpdater
  30. {
  31. virtual void progression (float percentage) =0;
  32. virtual bool didUserCancel () =0;
  33. const char* m_currentObjectName;
  34. };
  35. /// loads all available class dlls and retrieves the modeler node information
  36. static void loadAllClasses();
  37. /// unloads the available class dlls and releases all memory
  38. static void unloadAllClasses();
  39. /// Finds all the classes that either match the class pointed to by targetAttributeName or inherit
  40. /// from it. If the target class isn't currently loaded, no matching classes are returned.
  41. /// Also, if the the targetAttributeName attribute is not a member of the specified class, no
  42. /// matching classes will be returned.
  43. /// Returns the number of matching classes
  44. static int getMatchingClasses(const char* targetNodeName, const char* targetAttributeName, hkObjectArray<hkString>& matchingClassesOut);
  45. /// Returns either the class or HK_NULL if not registered/loaded.
  46. static const hkClass* getClassByName(const char* className);
  47. /// Fills the supplied array with those class map entries whose classes are derived from the supplied base class.
  48. static void getClassesByBaseName(const char* baseName, hkArray<hctModelerNodeIdToClassMap>& classesOut);
  49. static int getIndexByNodeName(const char* className);
  50. static const hkArray<hctModelerNodeIdToClassMap>& getNodeIdToClassMap() {return m_modelerNodeIdToClassMap;}
  51. /// Returns the number of all registered classes.
  52. static int getNumUiClasses();
  53. /// Returns the i'th registered class from the table.
  54. static hctModelerNodeIdToClassMap& getUiClass(int i);
  55. // Sometimes there can be conflicts with certain modeler-internal objects/names.
  56. // This function helps in getting a non-colliding name for any given Havok name.
  57. static const char* getValidName(const char* name, hkString& buffer);
  58. // This function will 'revert' getValidName() and will return the original name.
  59. static const char* revertValidName(const char* validModelerName, hkString& buffer);
  60. // Get the name of the HCT .chm help file.
  61. static void getHelpFileName(hkString& helpFile);
  62. // Get the path to the HCT documentation .CHM file.
  63. static void getPathToAndNameOfDocumentationChmFile(hkString& docsPathAndFileName);
  64. private:
  65. /// Returns a module pointer if it is able to load the class dll specified in the path
  66. static HMODULE loadClassDll(const char* dllName);
  67. static hkArray<hctModelerNodeIdToClassMap> m_modelerNodeIdToClassMap;
  68. };
  69. /// Prototype for the DLL-exported method
  70. typedef void (__cdecl *hkGetClassEntriesFunc) (hkArray<hctModelerNodeIdToClassMap>& classMap);
  71. #endif // INC_COMMON_UTILS_H
  72. /*
  73. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  74. * Confidential Information of Havok.  (C) Copyright 1999-2009
  75. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  76. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  77. * rights, and intellectual property rights in the Havok software remain in
  78. * Havok and/or its suppliers.
  79. * Use of this software for evaluation purposes is subject to and indicates
  80. * acceptance of the End User licence Agreement for this product. A copy of
  81. * the license is included with this software and is also available at www.havok.com/tryhavok.
  82. */