hctConstraintModifierInterface.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 INC_CONSTRAINT_MODIFIER_INTERFACE_H
  9. #define INC_CONSTRAINT_MODIFIER_INTERFACE_H
  10. #include <iFnPub.h>
  11. /*
  12. ** PARAMETERS AND PARAMETER BLOCKS
  13. */
  14. // Common Parameter Block
  15. enum
  16. {
  17. PB_CONSTRAINT_MOD_COMMON_SPACES_PARAMS, // (Parent To, Constraint Spaces, Breakable rollouts)
  18. PB_CONSTRAINT_MOD_FIRST_FREE_PARAMBLOCK, // Actual constraints reuse this id for their properties
  19. };
  20. // Common Space Parameters
  21. enum
  22. {
  23. // HIDDEN PARAMETERS
  24. PA_CONSTRAINT_MOD_CHILD_SPACE_TRANSLATION,
  25. PA_CONSTRAINT_MOD_CHILD_SPACE_ROTATION,
  26. PA_CONSTRAINT_MOD_PARENT_SPACE_TRANSLATION,
  27. PA_CONSTRAINT_MOD_PARENT_SPACE_ROTATION,
  28. // "CONSTRAINT TO" ROLLOUT
  29. PA_CONSTRAINT_MOD_WORLD_OR_PARENT = 10,
  30. PA_CONSTRAINT_MOD_PARENT_NODE,
  31. // "SPACES" ROLLOUT
  32. PA_CONSTRAINT_MOD_CHILD_TRANSLATION_LOCK = 20,
  33. PA_CONSTRAINT_MOD_CHILD_ROTATION_LOCK,
  34. PA_CONSTRAINT_MOD_PARENT_TRANSLATION_LOCK,
  35. PA_CONSTRAINT_MOD_PARENT_ROTATION_LOCK,
  36. // "BREAKABLE" ROLLOUT
  37. PA_CONSTRAINT_MOD_IS_BREAKABLE = 30,
  38. PA_CONSTRAINT_MOD_BREAK_THRESHOLD
  39. };
  40. /*
  41. ** FUNCTION PUBLISHING
  42. */
  43. enum
  44. {
  45. FPI_GetChildSpaceInWorld,
  46. FPI_SetChildSpaceInWorld,
  47. FPI_GetParentSpaceInWorld,
  48. FPI_SetParentSpaceInWorld,
  49. FPI_ResetChildSpaceRotation,
  50. FPI_ResetChildSpaceTranslation,
  51. FPI_ResetParentSpaceRotation,
  52. FPI_ResetParentSpaceTranslation,
  53. };
  54. #define HK_CONSTRAINT_FPINTERFACE_ID Interface_ID(0x564702bc, 0x267f287f)
  55. /*
  56. ** All constraint interfaces inherit from this interface
  57. ** This interface defines methods to manipulate constraint spaces
  58. **
  59. ** Individual constraints usually just add specific parameters for limits.
  60. **
  61. ** Check the Havok Content Tools > Integration section for details on how to use the C++/MaxScript interfaces to the 3ds max tools.
  62. */
  63. class hctConstraintModifierFPInterface : public FPMixinInterface
  64. {
  65. public:
  66. BEGIN_FUNCTION_MAP
  67. PROP_TFNS(FPI_GetChildSpaceInWorld, iGetChildSpaceInWorld, FPI_SetChildSpaceInWorld, iSetChildSpaceInWorld, TYPE_MATRIX3_BV);
  68. PROP_TFNS(FPI_GetParentSpaceInWorld, iGetParentSpaceInWorld, FPI_SetParentSpaceInWorld, iSetParentSpaceInWorld, TYPE_MATRIX3_BV);
  69. FN_0 (FPI_ResetChildSpaceRotation, TYPE_BOOL, iResetChildSpaceRotation)
  70. FN_0 (FPI_ResetChildSpaceTranslation, TYPE_BOOL, iResetChildSpaceTranslation )
  71. FN_0 (FPI_ResetParentSpaceRotation, TYPE_BOOL, iResetParentSpaceRotation)
  72. FN_0 (FPI_ResetParentSpaceTranslation, TYPE_BOOL, iResetParentSpaceTranslation)
  73. END_FUNCTION_MAP
  74. /*virtual*/ FPInterfaceDesc* GetDesc() {return getCommonFPInterfaceDescriptor();}
  75. virtual FPInterfaceDesc* getCommonFPInterfaceDescriptor() = 0;
  76. // Access to the Child Space
  77. virtual Matrix3 iGetChildSpaceInWorld (TimeValue t)=0;
  78. virtual void iSetChildSpaceInWorld (Matrix3 childSpaceWorld, TimeValue t) = 0;
  79. // Access to the parent space
  80. virtual Matrix3 iGetParentSpaceInWorld (TimeValue t) = 0;
  81. virtual void iSetParentSpaceInWorld (Matrix3 parentSpaceWorld, TimeValue t) = 0;
  82. // Access to the 4 Reset buttons
  83. virtual BOOL iResetChildSpaceRotation () = 0;
  84. virtual BOOL iResetChildSpaceTranslation () = 0;
  85. virtual BOOL iResetParentSpaceRotation () = 0;
  86. virtual BOOL iResetParentSpaceTranslation () = 0;
  87. };
  88. #endif //INC_CONSTRAINT_MODIFIER_INTERFACE_H
  89. /*
  90. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  91. * Confidential Information of Havok.  (C) Copyright 1999-2009
  92. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  93. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  94. * rights, and intellectual property rights in the Havok software remain in
  95. * Havok and/or its suppliers.
  96. * Use of this software for evaluation purposes is subject to and indicates
  97. * acceptance of the End User licence Agreement for this product. A copy of
  98. * the license is included with this software and is also available at www.havok.com/tryhavok.
  99. */