hctFilterDescriptor.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 HAVOK_FILTER_DESCRIPTOR_H
  9. #define HAVOK_FILTER_DESCRIPTOR_H
  10. #define HCT_FILTER_VERSION(major, minor ,point) ( ((major) << 16) | ((minor) << 8) | (point) )
  11. /// Filter Descriptors act as virtual class members and factories for all filters. They provide 
  12. /// information about the filter name, type and description, as well as the ability to create instances of the actual filter.
  13. /// In that way we can find out properties of the filter before actually (optionally) creating it.
  14. class hctFilterDescriptor
  15. {
  16. public:
  17. /// This enum is used to place the filters in tabs in the filter manager.
  18. /// User-defined filters should use HK_USER.
  19. enum FilterCategory
  20. {
  21. /// Core Category
  22. HK_CATEGORY_CORE = 0,
  23. /// Deprecated category, use HK_PHYSICS instead.
  24. HK_CATEGORY_COLLISION_DEPRECATED, 
  25. /// Physics Category.
  26. HK_CATEGORY_PHYSICS,
  27. /// Cloth Category.
  28. HK_CATEGORY_CLOTH,
  29. /// Destruction Category.
  30. HK_CATEGORY_DESTRUCTION,
  31. /// FX Category, no longer used
  32. HK_CATEGORY_FX_PHYSICS_DEPRECATED,
  33. /// Animation Category.
  34. HK_CATEGORY_ANIMATION,
  35. /// Graphics Category.
  36. HK_CATEGORY_GRAPHICS,
  37. /// User Category.
  38. HK_CATEGORY_USER
  39. };
  40. /// Describes how the filter operates with the data (does it change it or no).
  41. enum FilterBehaviour
  42. {
  43. /// Filter does not alter data, can be ignored in pure data runs, such as the previewer filters.
  44. HK_DATA_PASSTHRU = 0, 
  45. /// The filter changes or adds data in the stream - most filters are like this.
  46. HK_DATA_MUTATES_INPLACE = 1, 
  47. /// The filter changes or adds data to a external file, not the stream (such as the platform writer).
  48. HK_DATA_MUTATES_EXTERNAL = 2 
  49. };
  50. typedef int HavokComponentMask;
  51. enum HavokComponent
  52. {
  53. HK_COMPONENT_COMMON = 0,
  54. HK_COMPONENT_ANIMATION = 1,
  55. HK_COMPONENT_PHYSICS = 2,
  56. HK_COMPONENT_CLOTH = 4,
  57. HK_COMPONENT_DESTRUCTION = 8,
  58. // = 32, etc
  59. // Product combinations
  60. HK_COMPONENTS_COMPLETE = HK_COMPONENT_COMMON | HK_COMPONENT_ANIMATION | HK_COMPONENT_PHYSICS,
  61. // All
  62. HK_COMPONENTS_ALL = HK_COMPONENTS_COMPLETE | HK_COMPONENT_CLOTH | HK_COMPONENT_DESTRUCTION
  63. };
  64. /// Get unique ID of the filter (32 bits). Manager will warn when two alike are found.
  65. virtual unsigned int getID() const = 0;
  66. /// Get the rough category of the filter.
  67. virtual FilterCategory getCategory() const = 0;
  68. /// Find out at a the filter does with the contents (so we know whether we should run it.
  69. /// in trial or option runs etc).
  70. virtual FilterBehaviour getFilterBehaviour() const = 0; 
  71. /// Get the short display name for the filter. Should be unique (used by the options lookup) within its category. If this proves too hard then we will have to revert to a filter id (32 bit int say).
  72. virtual const char* getShortName() const = 0;
  73. /// Get the long name for the filter.
  74. virtual const char* getLongName() const = 0;
  75. /// Return the version of the filter (used by options etc).
  76. virtual unsigned int getFilterVersion() const = 0; 
  77. /// Must return a mask of HavokComponent values matching the SDK components (libraries) required to use/load
  78. /// the output of this filter.
  79. virtual HavokComponentMask getRequiredHavokComponents () const = 0;
  80. /// Create the filter. The pointer returned my be memory managed in any way, as 
  81. /// deletion will be handled through destruct. Do not call delete on the filter.
  82. virtual class hctFilterInterface* createFilter(const class hctFilterManagerInterface* ownerInstance) const = 0;
  83. /// Should tell all modeless filters to close and return immediately.
  84. /// Default implementation (for modal filters) does nothing.
  85. virtual void askModelessFiltersToClose () const;
  86. /// Returns how many modeless filters are present. It must split the count between "active" and "closing" down.
  87. /// Default implementation (for modal filters) should return 0 and set both parameters to 0.
  88. virtual int countModelessFilters (int& numActiveOut, int& numClosingout) const;
  89. };
  90. #endif // HAVOK_FILTER_DESCRIPTOR_H
  91. /*
  92. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  93. * Confidential Information of Havok.  (C) Copyright 1999-2009
  94. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  95. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  96. * rights, and intellectual property rights in the Havok software remain in
  97. * Havok and/or its suppliers.
  98. * Use of this software for evaluation purposes is subject to and indicates
  99. * acceptance of the End User licence Agreement for this product. A copy of
  100. * the license is included with this software and is also available at www.havok.com/tryhavok.
  101. */