hctFilterUtils.h
上传用户:yisoukefu
上传日期:2020-08-09
资源大小:39506k
文件大小:6k
源码类别:

其他游戏

开发平台:

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 HAVOK_FILTER_UTILS__H
  9. #define HAVOK_FILTER_UTILS__H
  10. #include <ContentTools/Common/Filters/Common/Filter/hctFilterDescriptor.h>
  11. #include <Common/Serialize/Util/hkRootLevelContainer.h>
  12. /// A collection of useful utility methods for the filters and exporters
  13. class hctFilterUtils
  14. {
  15. public:
  16. /// Get the position of the cinfo data (i.e. not the local fixups) in the options data block.
  17. static void* interpretOptions( void* data );
  18. /// Write the options data to memory. A pointer to the data is returned.
  19. static void* writeOptionsXml( const hkClass& klass, const void* data, hkArray<char>& buffer, const char* filterName );
  20. /// Read the options data from memory.
  21. static hkResult readOptionsXml ( const void* optionData, const int optionDataSize, hkArray<char>& buffer, const hkClass klass );
  22. /// Create a complete copy of an entire filter set,
  23. /// so that processing does not affect the original data.
  24. static void* deepCopyObject ( const class hctFilterClassRegistry& classReg, const void* obj, const hkClass* klass, hkArray<char>& storage);
  25. /// Create an array using the items listed in the delimited string.
  26. static void createArrayFromDelimitedString( hkObjectArray<hkString>& buf, const char* delimitedString, const char delimiter );
  27. /// Create an array using the items listed in the delimited string - using a full hkString delimiter
  28. static void createArrayFromDelimitedString( hkObjectArray<hkString>& buf, const char* delimitedString, const hkString& delimiter );
  29. /// Create a single string from the given array of strings, using "delimiter" to split the strings.
  30. static void createDelimitedStringFromArray( const hkObjectArray<hkString>& array, const char* delimiter, hkString& delimitedStringOut);
  31. /// Create an array of array of strings from a delimited string using an inner and outer delimiter
  32. static void createArrayOfArrayOfStringsFromDelimitedString( hkObjectArray< hkObjectArray< hkString > >& out, const char* delimitedString, char inner, char outer );
  33. /// Create a single string from a given array of array of strings using an inner and outer delimiter
  34. static void createDelimitedStringFromArrayOfArrayOfStrings( const hkObjectArray< hkObjectArray< hkString > >& in, hkString& out, char inner, char outer );
  35. /// Returns the path to the specified asset file. It does so by looking for an hkxEnvironment in the asset and otherwise
  36. /// by looking at the asset name in the hkxScene object.
  37. static void getAssetFolder( const hkRootLevelContainer& rootLevelContainer, hkString& assetFolderOut );
  38. /// Given a filename, it detects whether it is relative or not to the asset path, and in that case
  39. /// it preppends it.
  40. static void getFullPath ( const hkRootLevelContainer& rootLevelContainer, const char* userPath, hkString& fullPathOut);
  41. /// Get the path to the specified file relative to the specified asset path.
  42. static void getReducedFilename( const char* fname, const hkString& assetPath, hkString& reducedName );
  43. /// Looks for an hkxEnvironment inside the given contents, and queries for the given variable. If not present,
  44. /// it will try to use data in hkxScene. Returns HK_NULL if no environment was found or the variable is undefined.
  45. static const char* getEnvironmentVariable (const hkRootLevelContainer& contents, const char* variable);
  46. /// Looks for a Windows environment variable with the given name 
  47. static const char* getOSEnvironmentVariable (const char* variable);
  48. /// Given an hkxEnvironment and an input string, it returns (through outputString) the string with all substrings 
  49. /// of the form $(name) replaced by its corresponding value in the environment. Returns true if all substitutions
  50. /// suceeded, false otherwise.
  51. static bool replaceVariables (const class hkxEnvironment& environment, const char* inputString, hkString& outputString, hkBool useOSEnvironment = false);
  52. /// Converts a category code to its string representation
  53. static const char* filterCategoryToString( hctFilterDescriptor::FilterCategory c );
  54. /// Move non-eportable classes to the end of the root-level container, and return their count
  55. static int moveNonExportablesToEnd( class hkRootLevelContainer& data );
  56. /// True if this class is expected to be exported, false if it is not (typically internal data for the filter stack only)
  57. static bool isExportable( const hkRootLevelContainer::NamedVariant& a );
  58. /// Utility function to sort named variants based on their exportability
  59. static bool compareExportableLess( const hkRootLevelContainer::NamedVariant& a, const hkRootLevelContainer::NamedVariant& b );
  60. // Packfile/Tagfile extensions list for open/save file dialogs
  61. static const char s_DialogFileExtensions[];
  62. };
  63. #endif // HAVOK_FILTER_UTILS__H
  64. /*
  65. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  66. * Confidential Information of Havok.  (C) Copyright 1999-2009
  67. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  68. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  69. * rights, and intellectual property rights in the Havok software remain in
  70. * Havok and/or its suppliers.
  71. * Use of this software for evaluation purposes is subject to and indicates
  72. * acceptance of the End User licence Agreement for this product. A copy of
  73. * the license is included with this software and is also available at www.havok.com/tryhavok.
  74. */