Houdini Engine 6.2
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
HAPI_Common.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  */
7 
8 #ifndef __HAPI_COMMON_h__
9 #define __HAPI_COMMON_h__
10 
11 #include "HAPI_API.h"
12 
13 /////////////////////////////////////////////////////////////////////////////
14 // Defines
15 
16 #define HAPI_POSITION_VECTOR_SIZE 3
17 #define HAPI_SCALE_VECTOR_SIZE 3
18 #define HAPI_SHEAR_VECTOR_SIZE 3
19 #define HAPI_NORMAL_VECTOR_SIZE 3
20 #define HAPI_QUATERNION_VECTOR_SIZE 4
21 #define HAPI_EULER_VECTOR_SIZE 3
22 #define HAPI_UV_VECTOR_SIZE 2
23 #define HAPI_COLOR_VECTOR_SIZE 4
24 #define HAPI_CV_VECTOR_SIZE 4
25 
26 #define HAPI_PRIM_MIN_VERTEX_COUNT 1
27 #define HAPI_PRIM_MAX_VERTEX_COUNT 16
28 
29 #define HAPI_INVALID_PARM_ID -1
30 
31 /// Common Default Attributes' Names
32 /// @{
33 #define HAPI_ATTRIB_POSITION "P"
34 #define HAPI_ATTRIB_UV "uv"
35 #define HAPI_ATTRIB_UV2 "uv2"
36 #define HAPI_ATTRIB_NORMAL "N"
37 #define HAPI_ATTRIB_TANGENT "tangentu"
38 #define HAPI_ATTRIB_TANGENT2 "tangentv"
39 #define HAPI_ATTRIB_COLOR "Cd"
40 #define HAPI_ATTRIB_NAME "name"
41 #define HAPI_ATTRIB_INSTANCE "instance"
42 #define HAPI_ATTRIB_ROT "rot"
43 #define HAPI_ATTRIB_SCALE "scale"
44 /// @}
45 
46 /// This is the name of the primitive group created from all the primitives
47 /// that are not in any user-defined group. This way, when you put all the
48 /// groups together you cover the entire mesh. This is important for some
49 /// clients where the mesh has to be defined in terms of submeshes that cover
50 /// the entire original mesh.
51 #define HAPI_UNGROUPED_GROUP_NAME "__ungrouped_group"
52 
53 /// Common image file format names (to use with the material extract APIs).
54 /// Note that you may still want to check if they are supported via
55 /// HAPI_GetSupportedImageFileFormats() since all formats are loaded
56 /// dynamically by Houdini on-demand so just because these formats are defined
57 /// here doesn't mean they are supported in your instance.
58 /// @{
59 #define HAPI_RAW_FORMAT_NAME "HAPI_RAW" // HAPI-only Raw Format
60 #define HAPI_PNG_FORMAT_NAME "PNG"
61 #define HAPI_JPEG_FORMAT_NAME "JPEG"
62 #define HAPI_BMP_FORMAT_NAME "Bitmap"
63 #define HAPI_TIFF_FORMAT_NAME "TIFF"
64 #define HAPI_TGA_FORMAT_NAME "Targa"
65 /// @}
66 
67 /// Default image file format's name - used when the image generated and has
68 /// no "original" file format and the user does not specify a format to
69 /// convert to.
70 #define HAPI_DEFAULT_IMAGE_FORMAT_NAME HAPI_PNG_FORMAT_NAME
71 
72 /// Name of subnet OBJ node containing the global nodes.
73 #define HAPI_GLOBAL_NODES_NODE_NAME "GlobalNodes"
74 
75 /// Environment variables.
76 #define HAPI_ENV_HIP "HIP"
77 #define HAPI_ENV_JOB "JOB"
78 #define HAPI_ENV_CLIENT_NAME "HAPI_CLIENT_NAME"
79 
80 /// [HAPI_CACHE]
81 /// Common cache names. You can see these same cache names in the
82 /// Cache Manager window in Houdini (Windows > Cache Manager).
83 #define HAPI_CACHE_COP2_COOK "COP Cook Cache"
84 #define HAPI_CACHE_COP2_FLIPBOOK "COP Flipbook Cache"
85 #define HAPI_CACHE_IMAGE "Image Cache"
86 #define HAPI_CACHE_OBJ "Object Transform Cache"
87 #define HAPI_CACHE_GL_TEXTURE "OpenGL Texture Cache"
88 #define HAPI_CACHE_GL_VERTEX "OpenGL Vertex Cache"
89 #define HAPI_CACHE_SOP "SOP Cache"
90 #define HAPI_CACHE_VEX "VEX File Cache"
91 /// [HAPI_CACHE]
92 
93 /// [HAPI_InputCurve]
94 /// HAPI input curve attribute
95 #define HAPI_ATTRIB_INPUT_CURVE_COORDS "hapi_input_curve_coords"
96 /// [HAPI_InputCurve]
97 
98 // Make sure our enums and structs are usable without those keywords, as-is,
99 // in C.
100 #ifdef __cplusplus
101  #define HAPI_C_ENUM_TYPEDEF( enum_name )
102  #define HAPI_C_STRUCT_TYPEDEF( struct_name )
103 #else
104  #define HAPI_C_ENUM_TYPEDEF( enum_name ) \
105  typedef enum enum_name enum_name;
106  #define HAPI_C_STRUCT_TYPEDEF( struct_name ) \
107  typedef struct struct_name struct_name;
108 #endif // __cplusplus
109 
110 /////////////////////////////////////////////////////////////////////////////
111 // Typedefs
112 
113 // C has no bool.
114 #ifdef __cplusplus
115  typedef bool HAPI_Bool;
116 #else
117  typedef char HAPI_Bool;
118 #endif // __cplusplus
119 
120 // x-bit Integers
121 // Thrift doesn't support unsigned integers, so we cast it as a 16-bit int, but only
122 // for automated code generation
123 #ifdef HAPI_AUTOGEN
124  typedef signed char int8_t;
125  typedef short int16_t;
126  typedef long long int64_t;
127  typedef short HAPI_UInt8; // 16-bit type for thrift
128 #else
129  #include <stdint.h>
130  #ifdef HAPI_THRIFT_ABI
131  typedef int16_t HAPI_UInt8;
132  #else
133  typedef uint8_t HAPI_UInt8;
134  HAPI_STATIC_ASSERT(sizeof(HAPI_UInt8) == 1, unsupported_size_of_uint8);
135  #endif
136 #endif
137 
138 typedef int8_t HAPI_Int8;
139 HAPI_STATIC_ASSERT(sizeof(HAPI_Int8) == 1, unsupported_size_of_int8);
140 typedef int16_t HAPI_Int16;
141 HAPI_STATIC_ASSERT(sizeof(HAPI_Int16) == 2, unsupported_size_of_int16);
142 typedef int64_t HAPI_Int64;
143 HAPI_STATIC_ASSERT(sizeof(HAPI_Int64) == 8, unsupported_size_of_long);
144 
145 
146 // The process id has to be uint on Windows and int on any other platform.
147 #if ( defined _WIN32 || defined WIN32 )
148  typedef unsigned int HAPI_ProcessId;
149 #else
150  typedef int HAPI_ProcessId;
151 #endif
152 
153 /// Has to be 64-bit.
154 typedef HAPI_Int64 HAPI_SessionId;
155 
156 /// Use this with HAPI_GetString() to get the value.
157 /// See @ref HAPI_Fundamentals_Strings.
158 typedef int HAPI_StringHandle;
159 
161 
162 /// See @ref HAPI_Nodes_Basics.
163 typedef int HAPI_NodeId;
164 
165 /// Either get this from the ::HAPI_ParmInfo or ::HAPI_GetParmIdFromName().
166 /// See @ref HAPI_Parameters.
167 typedef int HAPI_ParmId;
168 
169 /// Use this with ::HAPI_GetPartInfo().
170 /// See @ref HAPI_Parts.
171 typedef int HAPI_PartId;
172 
173 /// Use this with PDG functions
175 
176 /// Backwards compatibility for HAPI_PDG_WorkitemId
177 typedef HAPI_PDG_WorkItemId HAPI_PDG_WorkitemId;
178 
179 /// Use this with PDG functions
181 
182 /// When we load a HIP file, we associate a HIP file ID with the created nodes
183 /// so that they can be looked up later
184 typedef int HAPI_HIPFileId;
185 
186 /////////////////////////////////////////////////////////////////////////////
187 // Enums
188 
190 {
199 };
201 
203 {
208 };
210 
212 {
216 
217  /// Used for Results. Equivalent to ::HAPI_STATUSVERBOSITY_2
219  /// Used for Results. Equivalent to ::HAPI_STATUSVERBOSITY_0
221  /// Used for Results. Equivalent to ::HAPI_STATUSVERBOSITY_1
223  /// Used for Results. Equivalent to ::HAPI_STATUSVERBOSITY_2
225 };
227 
229 {
241 
248 
251 
253 
255 };
257 
259 {
262 };
264 typedef int HAPI_ErrorCodeBits;
265 
267 {
274 };
276 
278 {
279  /// Everything cook successfully without errors
281  /// You should abort the cook.
283  /// Only some objects failed.
290 
292 };
294 
296 {
302 };
304 
306 {
312 };
314 
316 {
321 };
323 
324 /// Represents the data type of a parm.
325 /// As you can see, some of these high level types share the same underlying
326 /// raw data type. For instance, both string and file parameter types can be
327 /// represented with strings, yet semantically they are different. We will
328 /// group high level parameter types that share an underlying raw data type
329 /// together, so you can always check the raw data type of a parameter based
330 /// on its high level data type by checking a range of values.
332 {
333  /// @{
338  /// }@
339 
340  /// @{
343  /// @}
344 
345  /// @{
350  /// @}
351 
353 
354  /// @{
357  /// @}
358 
359  /// @{
364  /// @}
365 
366  // Helpers
367 
368  /// Total number of supported parameter types.
370 
373 
376 
379 
382 
385 
388 
391 };
393 
394 /// Corresponds to the types as shown in the Houdini Type Properties
395 /// window and in DialogScript files. Available on HAPI_ParmInfo
396 /// See: <a href="http://www.sidefx.com/docs/houdini/ref/windows/optype.html#parmtypes">Parameter types</a>
397 ///
399 {
400  /// "int", "integer"
409  /// "toggle", "embed"
413  /// "vector", "vector3"
417  /// "intvector", "intvector3"
422  /// "dir", "direction"
424  /// "color", "rgb"
426  /// "color4", "rgba"
449 
450  /// The following apply to HAPI_PARMTYPE_FOLDER type parms.
451  /// Radio buttons Folder
453  /// Collapsible Folder
455  /// Simple Folder
457  /// Tabs Folder
459 };
461 
463 {
464  /// Parameter is not a menu
466  /// Menu Only, Single Selection
468  /// Mini Menu Only, Single Selection
470  /// Field + Single Selection Menu
472  /// Field + Multiple Selection Menu
474 };
476 
478 {
480  /// Just the presets binary blob
482  /// Presets blob within an .idx file format
485 };
487 
489 {
501 };
503 typedef int HAPI_NodeTypeBits;
504 
505 /// Flags used to filter compositions of node lists.
506 /// Flags marked 'Recursive Flag' will exclude children whos parent does not
507 /// satisfy the flag, even if the children themselves satisfy the flag.
509 {
512  /// Recursive Flag
514  /// Recursive Flag
521 
522  /// OBJ Node Specific Flags
527 
528  /// SOP Node Specific Flags
529  /// Looks for "curve"
531  /// Looks for Guide Geometry
533 
534  /// TOP Node Specific Flags
535  /// All TOP nodes except schedulers
537 
538  HAPI_NODEFLAGS_NON_BYPASS = 1 << 14 /// Nodes that are not bypassed
539 };
541 typedef int HAPI_NodeFlagsBits;
542 
544 {
550 };
552 
554 {
561 };
563 
565 {
571 };
573 
575 {
580 };
582 
584 {
590 };
592 
594 {
599 };
601 
603 {
611 };
613 
615 {
617 
627 
637 
639 };
641 
643 {
645  /// Implicit type based on data
647  /// Position
649  /// Homogeneous position
651  /// Direction vector
653  /// Normal
655  /// Color
657  /// Quaternion
659  /// 3x3 Matrix
661  /// Matrix
663  /// Parametric interval
665  /// "Private" (hidden)
667  /// 2x2 Bounding box
669  /// 3x3 Bounding box
671  /// Texture coordinate
674 };
676 
678 {
680 
681  /// Most geos will be of this type which essentially means a geo
682  /// not of the other types.
684 
685  /// An exposed edit node.
686  /// See @ref HAPI_IntermediateAssetsResults.
688 
689  /// An input geo that can accept geometry from the host.
690  /// See @ref HAPI_AssetInputs_MarshallingGeometryIntoHoudini.
692 
693  /// A curve.
694  /// See @ref HAPI_Curves.
696 
698 };
700 
702 {
711 };
713 
715 {
720 };
722 
724 {
730 };
732 
734 {
748 };
750 
752 {
753  HAPI_TRS = 0,
759 
761 };
763 
765 {
766  HAPI_XYZ = 0,
772 
774 };
776 
778 {
786 
788 };
790 
792 {
794  HAPI_IMAGE_PACKING_SINGLE, /// Single Channel
795  HAPI_IMAGE_PACKING_DUAL, /// Dual Channel
797  HAPI_IMAGE_PACKING_BGR, /// RGB Reversed
799  HAPI_IMAGE_PACKING_ABGR, /// RGBA Reversed
801 
804 };
806 
807 /// Used with ::HAPI_GetEnvInt() to retrieve basic information
808 /// about the HAPI implementation currently being linked
809 /// against. Note that as of HAPI version 2.0, these enum values are
810 /// guaranteed never to change so you can reliably get this information from
811 /// any post-2.0 version of HAPI. The same goes for the actual
812 /// ::HAPI_GetEnvInt() API call.
814 {
816 
817  /// The three components of the Houdini version that HAPI is
818  /// expecting to link against.
819  /// @{
824  /// @}
825 
826  /// The two components of the Houdini Engine (marketed) version.
827  /// @{
830  /// @}
831 
832  /// This is a monotonously increasing API version number that can be used
833  /// to lock against a certain API for compatibility purposes. Basically,
834  /// when this number changes code compiled against the HAPI.h methods
835  /// might no longer compile. Semantic changes to the methods will also
836  /// cause this version to increase. This number will be reset to 0
837  /// every time the Houdini Engine version is bumped.
839 
841 };
843 
844 /// This enum is to be used with ::HAPI_GetSessionEnvInt() to retrieve basic
845 /// session-specific information.
847 {
849 
850  /// License Type. See ::HAPI_License.
852 
854 };
856 
857 /// Identifies a memory cache
859 {
860  /// Current memory usage in MB. Setting this to 0 invokes
861  /// a cache clear.
863 
864  HAPI_CACHEPROP_HAS_MIN, /// True if it actually has a minimum size.
865  HAPI_CACHEPROP_MIN, /// Min cache memory limit in MB.
866  HAPI_CACHEPROP_HAS_MAX, /// True if it actually has a maximum size.
867  HAPI_CACHEPROP_MAX, /// Max cache memory limit in MB.
868 
869  /// How aggressive to cull memory. This only works for:
870  /// - ::HAPI_CACHE_COP2_COOK where:
871  /// 0 -> Never reduce inactive cache.
872  /// 1 -> Always reduce inactive cache.
873  /// - ::HAPI_CACHE_OBJ where:
874  /// 0 -> Never enforce the max memory limit.
875  /// 1 -> Always enforce the max memory limit.
876  /// - ::HAPI_CACHE_SOP where:
877  /// 0 -> When to Unload = Never
878  /// When to Limit Max Memory = Never
879  /// 1-2 -> When to Unload = Based on Flag
880  /// When to Limit Max Memory = Never
881  /// 3-4 -> When to Unload = Based on Flag
882  /// When to Limit Max Memory = Always
883  /// 5 -> When to Unload = Always
884  /// When to Limit Max Memory = Always
886 };
887 
889 
890 /// Type of sampling for heightfield
892 {
895 };
897 
898 /// Used with PDG functions
900 {
904 
906 };
908 
909 /// Used with PDG functions
911 {
912  /// An empty, undefined event. Should be ignored.
914 
915  /// Sent when a new work item is added by a node
917  /// Sent when a work item is deleted from a node
919  /// Sent when a work item's state changes
921 
922  /// Sent when a work item has a dependency added
924  /// Sent when a dependency is removed from a work item
926 
927  /// Sent from dynamic work items that generate from a cooked item
929  /// Sent when the parent item for a work item is deleted
931 
932  /// A node event that indicates that node is about to have all its work items cleared
934 
935  /// Sent when an error is issued by the node
937  /// Sent when an warning is issued by the node
939 
940  /// Sent for each node in the graph, when a cook completes
942 
943  /// A node event indicating that one more items in the node will be dirtied
945  /// A node event indicating that the node has finished dirtying items
947 
948  /// A event indicating that the entire graph is about to be dirtied
950 
951  /// A work item event that indicates the item has been selected in the TOPs UI
953 
954  /// Sent when a new node is created
956  /// Sent when a node was removed from the graph
958  /// Sent when a node was renamed
960  /// Sent when a node was connected to another node
962  /// Sent when a node is disconnected from another node
964  /// Sent when a node cooks for the first time
966 
967  /// Deprecated
969  /// Deprecated
971  /// Deprecated
973  /// Deprecated
975  /// Deprecated
977  /// Deprecated
979  /// Deprecated
981  /// Sent when an output file is added to a work item
983 
984  /// Deprecated
986  /// Sent for each node in the graph, when a cook starts
988  /// Deprecated
990  /// Deprecated
992 
993  /// Deprecated
995  /// Deprecated
997  /// A special enum that represents the OR of all event types
999  /// A special enum that represents the OR of both the `CookError` and `CookWarning` events
1001 
1002  /// Sent when a new scheduler is added to the graph
1004  /// Sent when a scheduler is removed from the graph
1006  /// Deprecated
1008  /// Deprecated
1010 
1011  /// Sent when a node finishes cooking
1013  /// Sent when a node finished generating
1015 
1017 };
1019 
1020 /// Used with PDG functions
1022 {
1033 };
1035 
1036 /// Backwards compatibility for HAPI_PDG_WorkitemState
1038 
1039 /////////////////////////////////////////////////////////////////////////////
1040 // Main API Structs
1041 
1042 // GENERICS -----------------------------------------------------------------
1043 
1044 /// A Transform with Quaternion rotation
1046 {
1047  float position[ HAPI_POSITION_VECTOR_SIZE ];
1048  float rotationQuaternion[ HAPI_QUATERNION_VECTOR_SIZE ];
1049  float scale[ HAPI_SCALE_VECTOR_SIZE ];
1050  float shear[ HAPI_SHEAR_VECTOR_SIZE ];
1051 
1053 };
1055 
1056 /// A Transform with Euler rotation
1058 {
1059  float position[ HAPI_POSITION_VECTOR_SIZE ];
1060  float rotationEuler[ HAPI_EULER_VECTOR_SIZE ];
1061  float scale[ HAPI_SCALE_VECTOR_SIZE ];
1062  float shear[ HAPI_SHEAR_VECTOR_SIZE ];
1063 
1066 };
1068 
1069 // SESSIONS -----------------------------------------------------------------
1070 
1071 /// Identifies a session
1073 {
1074  /// The type of session determines the which implementation will be
1075  /// used to communicate with the Houdini Engine library.
1077 
1078  /// Some session types support multiple simultaneous sessions. This means
1079  /// that each session needs to have a unique identifier.
1080  HAPI_SessionId id;
1081 };
1083 
1084 /// Options to configure a Thrift server being started from HARC.
1086 {
1087  /// Close the server automatically when all clients disconnect from it.
1089 
1090  /// Timeout in milliseconds for waiting on the server to
1091  /// signal that it's ready to serve. If the server fails
1092  /// to signal within this time interval, the start server call fails
1093  /// and the server process is terminated.
1094  float timeoutMs;
1095 
1096  // Specifies the maximum status verbosity that will be logged.
1098 };
1100 
1101 // TIME ---------------------------------------------------------------------
1102 
1103 /// Data for global timeline, used with ::HAPI_SetTimelineOptions()
1105 {
1106  float fps;
1107 
1108  float startTime;
1109  float endTime;
1110 };
1112 
1113 // ASSETS -------------------------------------------------------------------
1114 
1115 /// Meta-data about an HDA, returned by ::HAPI_GetAssetInfo()
1117 {
1118  /// Use the node id to get the asset's parameters.
1119  /// See @ref HAPI_Nodes_Basics.
1120  HAPI_NodeId nodeId;
1121 
1122  /// The objectNodeId differs from the regular nodeId in that for
1123  /// geometry based assets (SOPs) it will be the node id of the dummy
1124  /// object (OBJ) node instead of the asset node. For object based assets
1125  /// the objectNodeId will equal the nodeId. The reason the distinction
1126  /// exists is because transforms are always stored on the object node
1127  /// but the asset parameters may not be on the asset node if the asset
1128  /// is a geometry asset so we need both.
1129  HAPI_NodeId objectNodeId;
1130 
1131  /// It's possible to instantiate an asset without cooking it.
1132  /// See @ref HAPI_Assets_Cooking.
1134 
1135  HAPI_StringHandle nameSH; /// Instance name (the label + a number).
1136  HAPI_StringHandle labelSH; /// This is what any end user should be shown.
1137  HAPI_StringHandle filePathSH; /// Path to the .otl library file.
1138  HAPI_StringHandle versionSH; /// User-defined asset version.
1139  HAPI_StringHandle fullOpNameSH; /// Full asset name and namespace.
1140  HAPI_StringHandle helpTextSH; /// Asset help marked-up text.
1141  HAPI_StringHandle helpURLSH; /// Asset help URL.
1142 
1143  int objectCount; /// See @ref HAPI_Objects.
1144  int handleCount; /// See @ref HAPI_Handles.
1145 
1146  /// Transform inputs exposed by the asset. For OBJ assets this is the
1147  /// number of transform inputs on the OBJ node. For SOP assets, this is
1148  /// the singular transform input on the dummy wrapper OBJ node.
1149  /// See @ref HAPI_AssetInputs.
1151 
1152  /// Geometry inputs exposed by the asset. For SOP assets this is
1153  /// the number of geometry inputs on the SOP node itself. OBJ assets
1154  /// will always have zero geometry inputs.
1155  /// See @ref HAPI_AssetInputs.
1157 
1158  /// Geometry outputs exposed by the asset. For SOP assets this is
1159  /// the number of geometry outputs on the SOP node itself. OBJ assets
1160  /// will always have zero geometry outputs.
1161  /// See @ref HAPI_AssetInputs.
1163 
1164  /// For incremental updates. Indicates whether any of the assets's
1165  /// objects have changed. Refreshed only during an asset cook.
1167 
1168  /// For incremental updates. Indicates whether any of the asset's
1169  /// materials have changed. Refreshed only during an asset cook.
1171 };
1173 
1174 /// Options which affect how nodes are cooked.
1176 {
1177  /// Normally, geos are split into parts in two different ways. First it
1178  /// is split by group and within each group it is split by primitive type.
1179  ///
1180  /// For example, if you have a geo with group1 covering half of the mesh
1181  /// and volume1 and group2 covering the other half of the mesh, all of
1182  /// curve1, and volume2 you will end up with 5 parts. First two parts
1183  /// will be for the half-mesh of group1 and volume1, and the last three
1184  /// will cover group2.
1185  ///
1186  /// This toggle lets you disable the splitting by group and just have
1187  /// the geo be split by primitive type alone. By default, this is true
1188  /// and therefore geos will be split by group and primitive type. If
1189  /// set to false, geos will only be split by primitive type.
1191  HAPI_StringHandle splitGroupSH;
1192 
1193  /// This toggle lets you enable the splitting by unique values
1194  /// of a specified attribute. By default, this is false and
1195  /// the geo be split as described above.
1196  /// as described above. If this is set to true, and splitGeosByGroup
1197  /// set to false, mesh geos will be split on attribute values
1198  /// The attribute name to split on must be created with HAPI_SetCustomString
1199  /// and then the splitAttrSH handle set on the struct.
1201  HAPI_StringHandle splitAttrSH;
1202 
1203  /// For meshes only, this is enforced by convexing the mesh. Use -1
1204  /// to avoid convexing at all and get some performance boost.
1206 
1207  /// For curves only.
1208  /// If this is set to true, then all curves will be refined to a linear
1209  /// curve and you can no longer access the original CVs. You can control
1210  /// the refinement detail via ::HAPI_CookOptions::curveRefineLOD.
1211  /// If it's false, the curve type (NURBS, Bezier etc) will be left as is.
1213 
1214  /// Controls the number of divisions per unit distance when refining
1215  /// a curve to linear. The default in Houdini is 8.0.
1217 
1218  /// If this option is turned on, then we will recursively clear the
1219  /// errors and warnings (and messages) of all nodes before performing
1220  /// the cook.
1222 
1223  /// Decide whether to recursively cook all templated geos or not.
1225 
1226  /// Decide whether to split points by vertex attributes. This takes
1227  /// all vertex attributes and tries to copy them to their respective
1228  /// points. If two vertices have any difference in their attribute values,
1229  /// the corresponding point is split into two points. This is repeated
1230  /// until all the vertex attributes have been copied to the points.
1231  ///
1232  /// With this option enabled, you can reduce the total number of vertices
1233  /// on a game engine side as sharing of attributes (like UVs) is optimized.
1234  /// To make full use of this feature, you have to think of Houdini points
1235  /// as game engine vertices (sharable). With this option OFF (or before
1236  /// this feature existed) you had to map Houdini vertices to game engine
1237  /// vertices, to make sure all attribute values are accounted for.
1239 
1240  /// Choose how you want the cook to handle packed primitives.
1241  /// The default is: ::HAPI_PACKEDPRIM_INSTANCING_MODE_DISABLED
1243 
1244  /// Choose which special part types should be handled. Unhandled special
1245  /// part types will just be refined to ::HAPI_PARTTYPE_MESH.
1248 
1249  /// If enabled, sets the ::HAPI_PartInfo::hasChanged member during the
1250  /// cook. If disabled, the member will always be true. Checking for
1251  /// part changes can be expensive, so there is a potential performance
1252  /// gain when disabled.
1254 
1255  /// This toggle lets you enable the caching of the mesh topology.
1256  /// By default, this is false. If this is set to true, cooking a mesh
1257  /// geometry will update only the topology if the number of points changed.
1258  /// Use this to get better performance on deforming meshes.
1260 
1261  /// If enabled, calls to ::HAPI_CookNode() on an OBJ node will cook the output
1262  /// nodes of any nested SOP nodes. If none exist or the option is disabled,
1263  /// HAPI will instead cook the display nodes of any nested SOP nodes.
1265 
1266  /// For internal use only. :)
1268 };
1270 
1271 // NODES --------------------------------------------------------------------
1272 
1273 /// Meta-data for a Houdini Node
1275 {
1276  HAPI_NodeId id;
1277  HAPI_NodeId parentId;
1278  HAPI_StringHandle nameSH;
1280 
1281  /// Always true unless the asset's definition has changed due to loading
1282  /// a duplicate asset definition and from another OTL asset library
1283  /// file OR deleting the OTL asset library file used by this node's asset.
1285 
1286  /// Total number of cooks of this node.
1288 
1289  /// Use this unique id to grab the OP_Node pointer for this node.
1290  /// If you're linking against the C++ HDK, include the OP_Node.h header
1291  /// and call OP_Node::lookupNode().
1293 
1294  /// This is the internal node path in the Houdini scene graph. This path
1295  /// is meant to be abstracted away for most client purposes but for
1296  /// advanced uses it can come in handy.
1297  HAPI_StringHandle internalNodePathSH;
1298 
1299  /// Total number of parameters this asset has exposed. Includes hidden
1300  /// parameters.
1301  /// See @ref HAPI_Parameters.
1303 
1304  /// Number of values. A single parameter may have more than one value so
1305  /// this number is more than or equal to ::HAPI_NodeInfo::parmCount.
1306  /// @{
1310  /// @}
1311 
1312  /// The total number of choices among all the combo box parameters.
1313  /// See @ref HAPI_Parameters_ChoiceLists.
1315 
1316  /// The number of child nodes. This is 0 for all nodes that are not
1317  /// node networks.
1319 
1320  /// The number of inputs this specific node has.
1322 
1323  /// The number of outputs this specific node has.
1325 
1326  /// Nodes created via scripts or via ::HAPI_CreateNode() will be have
1327  /// this set to true. Only such nodes can be deleted using
1328  /// ::HAPI_DeleteNode().
1330 
1331  /// Indicates if this node will change over time
1333 };
1335 
1336 // PARAMETERS ---------------------------------------------------------------
1337 
1338 ///
1339 /// Contains parameter information like name, label, type, and size.
1340 ///
1342 {
1343  /// The parent id points to the id of the parent parm
1344  /// of this parm. The parent parm is something like a folder.
1345  HAPI_ParmId id;
1346 
1347  /// Parameter id of the parent of this parameter.
1348  HAPI_ParmId parentId;
1349 
1350  /// Child index within its immediate parent parameter.
1352 
1353  /// The HAPI type of the parm
1355 
1356  /// The Houdini script-type of the parm
1358 
1359  /// Some parameter types require additional type information.
1360  /// - File path parameters will indicate what file extensions they
1361  /// expect in a space-separated list of wild-cards. This is set
1362  /// in the Operator Type Properties using the File Pattern
1363  /// parameter property.
1364  /// For example, for filtering by PNG and JPG only: "*.png *.jpg"
1365  HAPI_StringHandle typeInfoSH;
1366 
1367  /// For the majority of parameter types permission will not be applicable.
1368  /// For file path parameters these permissions will indicate how the
1369  /// asset plans to use the file: whether it will only read it, only write
1370  /// to it, or both. This is set in the Operator Type Properties using
1371  /// the Browse Mode parameter property.
1373 
1374  /// Number of tags on this paramter.
1376 
1377  /// Tuple size. For scalar parameters this value is 1, but for vector
1378  /// parameters this value can be greater. For example, a 3 vector would
1379  /// have a size of 3. For folders and folder lists, this value is the
1380  /// number of children they own.
1381  int size;
1382 
1383  /// Any ::HAPI_ParmType can be a choice list. If this is set to
1384  /// ::HAPI_CHOICELISTTYPE_NONE, than this parameter is NOT a choice list.
1385  /// Otherwise, the parameter is a choice list of the indicated type.
1386  /// See @ref HAPI_Parameters_ChoiceLists.
1388 
1389  /// Any ::HAPI_ParmType can be a choice list. If the parameter is a
1390  /// choice list, this tells you how many choices it currently has.
1391  /// Note that some menu parameters can have a dynamic number of choices
1392  /// so it is important that this count is re-checked after every cook.
1393  /// See @ref HAPI_Parameters_ChoiceLists.
1395 
1396  /// Note that folders are not real parameters in Houdini so they do not
1397  /// have names. The folder names given here are generated from the name
1398  /// of the folderlist (or switcher) parameter which is a parameter. The
1399  /// folderlist parameter simply defines how many of the "next" parameters
1400  /// belong to the first folder, how many of the parameters after that
1401  /// belong to the next folder, and so on. This means that folder names
1402  /// can change just by reordering the folders around so don't rely on
1403  /// them too much. The only guarantee here is that the folder names will
1404  /// be unique among all other parameter names.
1405  HAPI_StringHandle nameSH;
1406 
1407  /// The label string for the parameter
1408  HAPI_StringHandle labelSH;
1409 
1410  /// If this parameter is a multiparm instance than the
1411  /// ::HAPI_ParmInfo::templateNameSH will be the hash-templated parm name,
1412  /// containing #'s for the parts of the name that use the instance number.
1413  /// Compared to the ::HAPI_ParmInfo::nameSH, the ::HAPI_ParmInfo::nameSH
1414  /// will be the ::HAPI_ParmInfo::templateNameSH but with the #'s
1415  /// replaced by the instance number. For regular parms, the
1416  /// ::HAPI_ParmInfo::templateNameSH is identical to the
1417  /// ::HAPI_ParmInfo::nameSH.
1418  HAPI_StringHandle templateNameSH;
1419 
1420  /// The help string for this parameter
1421  HAPI_StringHandle helpSH;
1422 
1423  /// Whether min/max exists for the parameter values.
1424  /// @{
1429  /// @}
1430 
1431  /// Parameter value range, shared between int and float parameters.
1432  /// @{
1433  float min;
1434  float max;
1435  float UIMin;
1436  float UIMax;
1437  /// @}
1438 
1439  /// Whether this parm should be hidden from the user entirely. This is
1440  /// mostly used to expose parameters as asset meta-data but not allow the
1441  /// user to directly modify them.
1443 
1444  /// Whether this parm should appear enabled or disabled.
1446 
1447  /// If true, it means this parameter doesn't actually exist on the node
1448  /// in Houdini but was added by Houdini Engine as a spare parameter.
1449  /// This is just for your information. The behaviour of this parameter
1450  /// is not any different than a non-spare parameter.
1452 
1453  HAPI_Bool joinNext; /// Whether this parm should be on the same line as
1454  /// the next parm.
1455  HAPI_Bool labelNone; /// Whether the label should be displayed.
1456 
1457  /// The index to use to look into the values array in order to retrieve
1458  /// the actual value(s) of this parameter.
1459  /// @{
1464  /// @}
1465 
1466  /// If this is a ::HAPI_PARMTYPE_NODE, this tells you what node types
1467  /// this parameter accepts.
1469 
1470  /// The node input parameter could have another subtype filter specified,
1471  /// like "Object: Geometry Only". In this case, this value will specify
1472  /// that extra filter. If the filter demands a node that HAPI does not
1473  /// support, both this and ::HAPI_ParmInfo::inputNodeType will be set to
1474  /// NONE as such a node is not settable through HAPI.
1476 
1477  /// See @ref HAPI_Parameters_MultiParms.
1478  /// @{
1480 
1481  int instanceNum; /// The index of the instance in the multiparm.
1482  int instanceLength; /// The number of parms in a multiparm instance.
1483  int instanceCount; /// The number of instances in a multiparm.
1484 
1485  /// First instance's ::HAPI_ParmInfo::instanceNum. Either 0 or 1.
1487 
1489  /// @}
1490 
1491  /// Provides the raw condition string which is used to evaluate the
1492  /// the visibility of a parm
1493  HAPI_StringHandle visibilityConditionSH;
1494 
1495  /// Provides the raw condition string which is used to evalute whether
1496  /// a parm is enabled or disabled
1497  HAPI_StringHandle disabledConditionSH;
1498 
1499  /// Whether or not the "Use Menu Item Token As Value" checkbox was checked in a integer menu item.
1501 };
1503 
1504 /// Meta-data for a combo-box / choice parm
1506 {
1507  HAPI_ParmId parentParmId;
1508  HAPI_StringHandle labelSH;
1509 
1510  /// This evaluates to the value of the token associated with the label
1511  /// applies to string menus only.
1512  HAPI_StringHandle valueSH;
1513 };
1515 
1516 // HANDLES ------------------------------------------------------------------
1517 
1518 ///
1519 /// Contains handle information such as the type of handle
1520 /// (translate, rotate, scale, softxform ...etc) and the number of
1521 /// parameters the current handle is bound to.
1522 ///
1524 {
1525  HAPI_StringHandle nameSH;
1526  HAPI_StringHandle typeNameSH;
1527 
1529 };
1531 
1532 ///
1533 /// Contains binding information that maps the handle parameter to
1534 /// the asset parameter. The index is only used for int and float vector
1535 /// and colour parms.
1536 ///
1538 {
1539  HAPI_StringHandle handleParmNameSH;
1540  HAPI_StringHandle assetParmNameSH;
1541 
1542  HAPI_ParmId assetParmId;
1544 };
1546 
1547 // OBJECTS ------------------------------------------------------------------
1548 
1549 /// Meta-data for an OBJ Node
1551 {
1552  HAPI_StringHandle nameSH;
1553 
1554  /// @deprecated This member is no longer used
1555  HAPI_StringHandle objectInstancePathSH;
1556 
1557  /// For incremental updates. Indicates whether the object's transform
1558  /// has changed. Refreshed only during an asset cook.
1560 
1561  /// For incremental updates. Indicates whether any of the object's
1562  /// geometry nodes have changed. Refreshed only during an asset cook.
1564 
1565  /// Whether the object is hidden and should not be shown. Some objects
1566  /// should be hidden but still brought into the host environment, for
1567  /// example those used only for instancing.
1568  /// See @ref HAPI_Instancing.
1570 
1571  /// See @ref HAPI_Instancing.
1573 
1574  /// Determine if this object is being instanced. Normally, this implies
1575  /// that while this object may not be visible, it should still be
1576  /// brought into the host application because it is needed by an instancer.
1577  /// See @ref HAPI_Instancing.
1579 
1580  /// @deprecated No longer used. See @ref HAPI_Geos
1582 
1583  /// Use the node id to get the node's parameters.
1584  /// Using the HDK, you can also get the raw node C++ pointer for this
1585  /// object's internal node.
1586  /// See @ref HAPI_Nodes_Basics.
1587  HAPI_NodeId nodeId;
1588 
1589  /// If the object is an instancer, this variable gives the object id of
1590  /// the object that should be instanced.
1591  /// See @ref HAPI_Instancing.
1592  HAPI_NodeId objectToInstanceId;
1593 };
1595 
1596 // GEOMETRY -----------------------------------------------------------------
1597 
1598 /// Meta-data for a SOP Node
1600 {
1602  HAPI_StringHandle nameSH;
1603 
1604  /// Use the node id to get the node's parameters.
1605  /// Using the HDK, you can also get the raw node C++ pointer for this
1606  /// object's internal node.
1607  HAPI_NodeId nodeId;
1608 
1609  /// Whether the SOP node has been exposed by dragging it into the
1610  /// editable nodes section of the asset definition.
1612 
1613  /// Has the templated flag turned on which means "expose as read-only".
1615 
1616  /// Final Result (Display SOP).
1618 
1619  /// For incremental updates.
1621 
1622  /// @deprecated This variable is deprecated and should no longer be used.
1623  /// Materials are now separate from parts. They are maintained at the
1624  /// asset level so you only need to check if the material itself has
1625  /// changed via ::HAPI_MaterialInfo::hasChanged instead of the material
1626  /// on the part.
1628 
1629  /// Groups.
1630  /// @{
1634  /// @}
1635 
1636  /// Total number of parts this geometry contains.
1637  /// See @ref HAPI_Parts.
1639 };
1641 
1642 /// Meta-data describing a Geo Part
1644 {
1645  /// Id to identify this part relative to it's Geo
1646  HAPI_PartId id;
1647  /// String handle for the name of the part
1648  HAPI_StringHandle nameSH;
1650 
1653  /// Number of points. Note that this is NOT the number
1654  /// of "positions" as "points" may imply. If your
1655  /// geometry has 3 points then set this to 3 and not 3*3.
1657 
1658  int attributeCounts[ HAPI_ATTROWNER_MAX ];
1659 
1660  /// If this is true, don't display this part. Load its data but then
1661  /// instance it where the corresponding instancer part tells you to
1662  /// instance it.
1664 
1665  /// The number of parts that this instancer part is instancing.
1666  /// For example, if we're instancing a curve and a box, they would come
1667  /// across as two parts, hence this count would be two.
1668  /// Call ::HAPI_GetInstancedPartIds() to get the list of ::HAPI_PartId.
1670 
1671  /// The number of instances that this instancer part is instancing.
1672  /// Using the same example as with ::HAPI_PartInfo::instancedPartCount,
1673  /// if I'm instancing the merge of a curve and a box 5 times, this count
1674  /// would be 5. To be clear, all instanced parts are instanced the same
1675  /// number of times and with the same transform for each instance.
1676  /// Call ::HAPI_GetInstancerPartTransforms() to get the transform of
1677  /// each instance.
1679 
1680  /// If this is false, the underlying attribute data appear to match that of
1681  /// the previous cook. In this case you may be able to re-used marshaled
1682  /// data from the previous cook.
1684 };
1686 
1687 /// Meta-data describing an attribute
1688 /// See @ref HAPI_Attributes.
1690 {
1692 
1695 
1696  /// When converting from the Houdini native GA geometry format to the
1697  /// GT geometry format HAPI uses, some attributes might change owners.
1698  /// For example, in Houdini GA curves can have points shared by
1699  /// vertices but the GT format only supports curve vertices
1700  /// (no points). This means that if you had point attributes on a curve
1701  /// in Houdini, when it comes out of HAPI those point attributes will now
1702  /// be vertex attributes. In this case, the ::HAPI_AttributeInfo::owner
1703  /// will be set to ::HAPI_ATTROWNER_VERTEX but the
1704  /// ::HAPI_AttributeInfo::originalOwner will be ::HAPI_ATTROWNER_POINT.
1706 
1707  /// Number of attributes. This count will match the number of values
1708  /// given the owner. For example, if the owner is ::HAPI_ATTROWNER_VERTEX
1709  /// this count will be the same as the ::HAPI_PartInfo::vertexCount.
1710  /// To be clear, this is not the number of values in the attribute, rather
1711  /// it is the number of attributes. If your geometry has three 3D points
1712  /// then this count will be 3 (not 3*3) while the
1713  /// ::HAPI_AttributeInfo::tupleSize will be 3.
1714  int count;
1715 
1716  /// Number of values per attribute.
1717  /// Note that this is NOT the memory size of the attribute. It is the
1718  /// number of values per attributes. Multiplying this by the
1719  /// size of the ::HAPI_AttributeInfo::storage will give you the memory
1720  /// size per attribute.
1722 
1723  /// Total number of elements for an array attribute.
1724  /// An array attribute can be thought of as a 2 dimensional array where
1725  /// the 2nd dimension can vary in size for each element in the 1st
1726  /// dimension. Therefore this returns the total number of values in
1727  /// the entire array.
1728  /// This should be used to determine the total storage
1729  /// size needed by multiplying with ::HAPI_AttributeInfo::storage.
1730  /// Note that this will be 0 for a non-array attribute.
1732 
1733  /// Attribute type info
1734  /// This is used to help identify the type of data stored in an attribute.
1735  /// Using the type is recommended over using just an attribute's name to identify
1736  /// its purpose.
1738 };
1740 
1741 // MATERIALS ----------------------------------------------------------------
1742 
1744 {
1745  /// This is the HAPI node id for the SHOP node this material is attached
1746  /// to. Use it to get access to the parameters (which contain the
1747  /// texture paths).
1748  /// IMPORTANT: When the ::HAPI_MaterialInfo::hasChanged is true this
1749  /// @p nodeId could have changed. Do not assume ::HAPI_MaterialInfo::nodeId
1750  /// will never change for a specific material.
1751  HAPI_NodeId nodeId;
1752 
1754 
1756 };
1758 
1759 /// Describes an image format, used with ::HAPI_GetSupportedImageFileFormats()
1761 {
1762  HAPI_StringHandle nameSH;
1763  HAPI_StringHandle descriptionSH;
1764  HAPI_StringHandle defaultExtensionSH;
1765 };
1767 
1768 /// Data for an image, used with ::HAPI_GetImageInfo() and ::HAPI_SetImageInfo()
1770 {
1771  /// Unlike the other members of this struct changing imageFileFormatNameSH
1772  /// and giving this struct back to ::HAPI_SetImageInfo() nothing will happen.
1773  /// Use this member variable to derive which image file format will be used
1774  /// by the ::HAPI_ExtractImageToFile() and ::HAPI_ExtractImageToMemory()
1775  /// functions if called with image_file_format_name set to NULL. This way,
1776  /// you can decide whether to ask for a file format conversion (slower) or
1777  /// not (faster).
1778  /// (Read-only)
1779  HAPI_StringHandle imageFileFormatNameSH;
1780 
1781  int xRes;
1782  int yRes;
1783 
1785 
1786  HAPI_Bool interleaved; /// ex: true = RGBRGBRGB, false = RRRGGGBBB
1788 
1789  /// Adjust the gamma of the image. For anything less than
1790  /// ::HAPI_IMAGE_DATA_INT16, you probably want to leave this as 2.2.
1791  double gamma;
1792 };
1794 
1795 // ANIMATION ----------------------------------------------------------------
1796 
1797 /// Data for a single Key Frame
1799 {
1800  float time;
1801  float value;
1802  float inTangent;
1803  float outTangent;
1804 };
1806 
1807 // VOLUMES ------------------------------------------------------------------
1808 
1809 ///
1810 /// This represents a volume primitive but does not contain the actual voxel
1811 /// values, which can be retrieved on a per-tile basis.
1812 ///
1813 /// See @ref HAPI_Volumes.
1814 ///
1816 {
1817  HAPI_StringHandle nameSH;
1818 
1820 
1821  /// Each voxel is identified with an index. The indices will range
1822  /// between:
1823  /// [ ( minX, minY, minZ ), ( minX+xLength, minY+yLength, minZ+zLength ) )
1824  /// @{
1825  int xLength;
1826  int yLength;
1827  int zLength;
1828  int minX;
1829  int minY;
1830  int minZ;
1831  /// @}
1832 
1833  /// Number of values per voxel.
1834  /// The tuple size field is 1 for scalars and 3 for vector data.
1836 
1837  /// Can be either ::HAPI_STORAGETYPE_INT or ::HAPI_STORAGETYPE_FLOAT.
1839 
1840  /// The dimensions of each tile.
1841  /// This can be 8 or 16, denoting an 8x8x8 or 16x16x16 tiles.
1843 
1844  /// The transform of the volume with respect to the lengths.
1845  /// The volume may be positioned anywhere in space.
1847 
1848  /// Denotes special situations where the volume tiles are not perfect
1849  /// cubes, but are tapered instead.
1851 
1852  /// If there is taper involved, denotes the amount of taper involved.
1853  /// @{
1854  float xTaper;
1855  float yTaper;
1856  /// @}
1857 };
1859 
1860 ///
1861 /// A HAPI_VolumeTileInfo represents an cube subarray of the volume.
1862 /// The size of each dimension is ::HAPI_VolumeInfo::tileSize
1863 /// bbox [(minX, minY, minZ), (minX+tileSize, minY+tileSize, minZ+tileSize))
1864 ///
1866 {
1867  int minX;
1868  int minY;
1869  int minZ;
1871 };
1873 
1874 ///
1875 /// Describes the visual settings of a volume.
1876 ///
1878 {
1880  float iso;
1881  float density;
1882 };
1884 
1885 // CURVES -------------------------------------------------------------------
1886 
1887 ///
1888 /// Represents the meta-data associated with a curve mesh (a number
1889 /// of curves of the same type).
1891 {
1893 
1894  /// The number of curves contained in this curve mesh.
1896 
1897  /// The number of control vertices (CVs) for all curves.
1899 
1900  /// The number of knots for all curves.
1902 
1903  /// Whether the curves in this curve mesh are periodic (closed by appending a new point)
1905 
1906  /// Whether the curves in this curve mesh are rational.
1908 
1909  /// Order of 1 is invalid. 0 means there is a varying order.
1910  int order;
1911 
1912  /// Whether the curve has knots.
1914 
1915  /// Similar to isPeriodic, but creates a polygon instead of a separate point
1917 };
1919 
1920 // Curve info dealing specifically with input curves
1922 {
1923  /// The desired curve type of the curve
1924  /// Note that this is NOT necessarily equal to the value in HAPI_CurveInfo
1925  /// in the case of curve refinement
1927 
1928  /// The desired order for your input curve
1929  /// This is your desired order, which may differ from HAPI_CurveInfo
1930  /// as it will do range checks and adjust the actual order accordingly
1931  int order;
1932 
1933  /// Whether or not the curve is closed
1934  /// May differ from HAPI_CurveInfo::isPeriodic depending on the curveType
1935  /// (e.g. A NURBs curve is never technically closed according to HAPI_CurveInfo)
1937 
1938  /// Whether or not to reverse the curve input
1940 
1941  // Input method type (CVs or Brekapoints)
1943 
1944  // Parameterization - Only used when inputMethod is BREAKPOINTS
1946 
1947 };
1949 
1950 // BASIC PRIMITIVES ---------------------------------------------------------
1951 
1952 /// Data for a Box Part
1954 {
1955  float center[ HAPI_POSITION_VECTOR_SIZE ];
1956  float size[ HAPI_SCALE_VECTOR_SIZE ];
1957  float rotation[ HAPI_EULER_VECTOR_SIZE ];
1958 };
1960 
1961 /// Data for a Sphere Part
1963 {
1964  float center[ HAPI_POSITION_VECTOR_SIZE ];
1965  float radius;
1966 };
1968 
1969 // PDG Structs --------------------------------------------------------------
1970 
1971 /// Data associated with a PDG Event
1973 {
1974  /// id of related node.
1975  HAPI_NodeId nodeId;
1976 
1977  /// id of related work item.
1978  HAPI_PDG_WorkItemId workItemId;
1979 
1980  /// id of related work item dependency.
1981  HAPI_PDG_WorkItemId dependencyId;
1982 
1983  /// ::HAPI_PDG_WorkItemState value of current state for state change.
1985 
1986  /// ::HAPI_PDG_WorkItemState value of last state for state change.
1988 
1989  /// ::HAPI_PDG_EventType event type.
1991 
1992  /// String handle of the event message (> 0 if there is a message).
1993  HAPI_StringHandle msgSH;
1994 };
1996 
1997 /// Info for a PDG work item
1999 {
2000  /// The work item's index
2001  int index;
2002 
2003  /// The number of output files reported by the work item.
2005 
2006  /// Name of the work item
2007  HAPI_StringHandle nameSH;
2008 };
2010 
2011 /// Backwards compatibility for HAPI_PDG_WorkitemInfo
2013 
2014 /// Data for a PDG output file
2016 {
2017  /// The file path of the output.
2019 
2020  /// The file tag of the output.
2021  int tagSH;
2022 
2023  /// Hash of the output file. Properties such as the file path and
2024  /// modification time of the file are typical inputs to the hash function,
2025  /// but this will vary based on the node that is producing the output file.
2026  HAPI_Int64 hash;
2027 };
2029 
2030 /// Backwards compatibility for HAPI_PDG_WorkitemResultInfo
2032 
2033 // SESSIONSYNC --------------------------------------------------------------
2034 
2035 ///
2036 /// Contains the information for synchronizing viewport between Houdini
2037 /// and other applications. When SessionSync is enabled, Houdini will
2038 /// update this struct with its viewport state. It will also update
2039 /// its own viewport if this struct has changed.
2040 /// The data stored is in Houdini's right-handed Y-up coordinate system.
2041 ///
2043 {
2044  /// The world position of the viewport camera's pivot.
2045  float position[ HAPI_POSITION_VECTOR_SIZE ];
2046 
2047  /// The direction of the viewport camera stored as a quaternion.
2048  float rotationQuaternion[ HAPI_QUATERNION_VECTOR_SIZE ];
2049 
2050  /// The offset from the pivot to the viewport camera's
2051  /// actual world position.
2052  float offset;
2053 };
2055 
2056 ///
2057 /// Contains the information for synchronizing general SessionSync
2058 /// state between Houdini and other applications. When SessionSync
2059 /// is enabled, Houdini will update this struct with its state.
2060 /// It will also update its internal state if this struct has
2061 /// changed.
2062 ///
2064 {
2065  /// Specifies whether Houdini's current time is used for Houdini Engine
2066  /// cooks. This is automatically enabled in SessionSync where
2067  /// Houdini's viewport forces cooks to use Houdini's current time.
2068  /// This is disabled in non-SessionSync mode, but can be toggled to
2069  /// override default behaviour.
2071 
2072  /// Specifies whether viewport synchronization is enabled. If enabled,
2073  /// in SessionSync, Houdini will update its own viewport using
2074  /// ::HAPI_Viewport.
2076 };
2078 
2079 /// Configuration options for Houdini's compositing context
2081 {
2082  /// Specifies the maximum allowed width of an image in the compositor
2084 
2085  /// Specifies the maximum allowed height of an image in the compositor
2087 };
2089 
2090 #endif // __HAPI_COMMON_h__
HAPI_License
Definition: HAPI_Common.h:189
HAPI_NodeId objectNodeId
Definition: HAPI_Common.h:1129
"vector", "vector3"
Definition: HAPI_Common.h:414
#define HAPI_QUATERNION_VECTOR_SIZE
Definition: HAPI_Common.h:20
Min cache memory limit in MB.
Definition: HAPI_Common.h:866
A event indicating that the entire graph is about to be dirtied.
Definition: HAPI_Common.h:949
HAPI_StringHandle disabledConditionSH
Definition: HAPI_Common.h:1497
Sent when a dependency is removed from a work item.
Definition: HAPI_Common.h:925
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1602
Sent when an output file is added to a work item.
Definition: HAPI_Common.h:982
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1405
int maximumResolutionX
Specifies the maximum allowed width of an image in the compositor.
Definition: HAPI_Common.h:2083
HAPI_NodeId nodeId
id of related node.
Definition: HAPI_Common.h:1975
Data for an image, used with HAPI_GetImageInfo() and HAPI_SetImageInfo()
Definition: HAPI_Common.h:1769
HAPI_StringHandle labelSH
Instance name (the label + a number).
Definition: HAPI_Common.h:1136
HAPI_StringHandle nameSH
String handle for the name of the part.
Definition: HAPI_Common.h:1648
HAPI_Bool isInstancer
See Instancing.
Definition: HAPI_Common.h:1572
HAPI_VolumeVisualType
Definition: HAPI_Common.h:602
Sent for each node in the graph, when a cook completes.
Definition: HAPI_Common.h:941
HAPI_Bool reverse
Whether or not to reverse the curve input.
Definition: HAPI_Common.h:1939
Sent when an error is issued by the node.
Definition: HAPI_Common.h:936
HAPI_ImageDataFormat dataFormat
Definition: HAPI_Common.h:1784
int parmStringValueCount
Definition: HAPI_Common.h:1309
HAPI_Bool clearErrorsAndWarnings
Definition: HAPI_Common.h:1221
Texture coordinate.
Definition: HAPI_Common.h:672
Recursive Flag.
Definition: HAPI_Common.h:515
Recursive Flag.
Definition: HAPI_Common.h:513
A work item event that indicates the item has been selected in the TOPs UI.
Definition: HAPI_Common.h:952
HAPI_ChoiceListType choiceListType
Definition: HAPI_Common.h:1387
int HAPI_NodeTypeBits
Definition: HAPI_Common.h:503
HAPI_PDG_WorkItemId HAPI_PDG_WorkitemId
Backwards compatibility for HAPI_PDG_WorkitemId.
Definition: HAPI_Common.h:177
int16_t HAPI_Int16
Definition: HAPI_Common.h:140
Data for a PDG output file.
Definition: HAPI_Common.h:2015
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1552
Sent when a node finished generating.
Definition: HAPI_Common.h:1014
HAPI_NodeId objectToInstanceId
Definition: HAPI_Common.h:1592
HAPI_PDG_WorkItemId dependencyId
id of related work item dependency.
Definition: HAPI_Common.h:1981
HAPI_Bool refineCurveToLinear
Definition: HAPI_Common.h:1212
HAPI_StatusVerbosity verbosity
Definition: HAPI_Common.h:1097
Used for Results. Equivalent to HAPI_STATUSVERBOSITY_1.
Definition: HAPI_Common.h:222
HAPI_ParmId id
Definition: HAPI_Common.h:1345
int HAPI_PDG_WorkItemId
Use this with PDG functions.
Definition: HAPI_Common.h:174
Just the presets binary blob.
Definition: HAPI_Common.h:481
int intValuesIndex
Whether the label should be displayed.
Definition: HAPI_Common.h:1460
"dir", "direction"
Definition: HAPI_Common.h:423
HAPI_Bool isEditable
Definition: HAPI_Common.h:1611
int HAPI_PDG_GraphContextId
Use this with PDG functions.
Definition: HAPI_Common.h:180
#define HAPI_POSITION_VECTOR_SIZE
Definition: HAPI_Common.h:16
HAPI_RampType rampType
Definition: HAPI_Common.h:1488
int floatValuesIndex
Whether the label should be displayed.
Definition: HAPI_Common.h:1461
HAPI_PackedPrimInstancingMode packedPrimInstancingMode
Definition: HAPI_Common.h:1242
Parametric interval.
Definition: HAPI_Common.h:664
HAPI_SessionEnvIntType
Definition: HAPI_Common.h:846
"toggle", "embed"
Definition: HAPI_Common.h:410
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1278
#define HAPI_API
Definition: HAPI_API.h:79
OBJ Node Specific Flags.
Definition: HAPI_Common.h:523
HAPI_NodeFlags
Definition: HAPI_Common.h:508
HAPI_GeoType
Definition: HAPI_Common.h:677
A special enum that represents the OR of all event types.
Definition: HAPI_Common.h:998
int instanceCount
The number of parms in a multiparm instance.
Definition: HAPI_Common.h:1483
HAPI_StringHandle visibilityConditionSH
Definition: HAPI_Common.h:1493
HAPI_Bool hasEverCooked
Definition: HAPI_Common.h:1133
int eventType
HAPI_PDG_EventType event type.
Definition: HAPI_Common.h:1990
HAPI_Bool haveMaterialsChanged
Definition: HAPI_Common.h:1170
HAPI_NodeType inputNodeType
Definition: HAPI_Common.h:1468
HAPI_StringHandle typeNameSH
Definition: HAPI_Common.h:1526
HAPI_Bool isPeriodic
Whether the curves in this curve mesh are periodic (closed by appending a new point) ...
Definition: HAPI_Common.h:1904
HAPI_RSTOrder
Definition: HAPI_Common.h:751
int parmFloatValueCount
Definition: HAPI_Common.h:1308
"intvector", "intvector3"
Definition: HAPI_Common.h:418
HAPI_CurveType
Definition: HAPI_Common.h:564
HAPI_PDG_State
Used with PDG functions.
Definition: HAPI_Common.h:899
HAPI_AttributeOwner owner
Definition: HAPI_Common.h:1693
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:1052
Sent when a work item has a dependency added.
Definition: HAPI_Common.h:923
Single Channel.
Definition: HAPI_Common.h:795
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1607
int uniqueHoudiniNodeId
Definition: HAPI_Common.h:1292
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1751
Sent when a node cooks for the first time.
Definition: HAPI_Common.h:965
int HAPI_HIPFileId
Definition: HAPI_Common.h:184
HAPI_ImageDataFormat
Definition: HAPI_Common.h:777
int handleCount
See Objects.
Definition: HAPI_Common.h:1144
Sent when a new node is created.
Definition: HAPI_Common.h:955
HAPI_PartType
Definition: HAPI_Common.h:701
int currentState
HAPI_PDG_WorkItemState value of current state for state change.
Definition: HAPI_Common.h:1984
HAPI_EnvIntType
Definition: HAPI_Common.h:813
HAPI_Bool isRational
Whether the curves in this curve mesh are rational.
Definition: HAPI_Common.h:1907
HAPI_Bool isValid
Definition: HAPI_Common.h:1284
HAPI_RSTOrder rstOrder
Definition: HAPI_Common.h:1065
int choiceIndex
Whether the label should be displayed.
Definition: HAPI_Common.h:1463
Sent when the parent item for a work item is deleted.
Definition: HAPI_Common.h:930
HAPI_PackedPrimInstancingMode
Definition: HAPI_Common.h:295
HAPI_StringHandle labelSH
The label string for the parameter.
Definition: HAPI_Common.h:1408
True if it actually has a maximum size.
Definition: HAPI_Common.h:867
HAPI_Permissions
Definition: HAPI_Common.h:305
Sent when a node is disconnected from another node.
Definition: HAPI_Common.h:963
Info for a PDG work item.
Definition: HAPI_Common.h:1998
#define HAPI_SHEAR_VECTOR_SIZE
Definition: HAPI_Common.h:18
Used for Results. Equivalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:218
HAPI_Bool cookTemplatedGeos
Decide whether to recursively cook all templated geos or not.
Definition: HAPI_Common.h:1224
HAPI_StringHandle helpSH
The help string for this parameter.
Definition: HAPI_Common.h:1421
HAPI_VolumeVisualType type
Definition: HAPI_Common.h:1879
3x3 Bounding box
Definition: HAPI_Common.h:670
HAPI_Bool autoClose
Close the server automatically when all clients disconnect from it.
Definition: HAPI_Common.h:1088
HAPI_StringHandle templateNameSH
Definition: HAPI_Common.h:1418
Meta-data about an HDA, returned by HAPI_GetAssetInfo()
Definition: HAPI_Common.h:1116
HAPI_AttributeOwner
Definition: HAPI_Common.h:553
int stringValuesIndex
Whether the label should be displayed.
Definition: HAPI_Common.h:1462
HAPI_InputCurveParameterization
Definition: HAPI_Common.h:583
HAPI_StringHandle fullOpNameSH
User-defined asset version.
Definition: HAPI_Common.h:1139
Only some objects failed.
Definition: HAPI_Common.h:284
HAPI_ErrorCode
Definition: HAPI_Common.h:258
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1762
HAPI_Bool createdPostAssetLoad
Definition: HAPI_Common.h:1329
HAPI_Bool splitGeosByAttribute
Definition: HAPI_Common.h:1200
HAPI_InputCurveParameterization breakpointParameterization
Definition: HAPI_Common.h:1945
Meta-data for an OBJ Node.
Definition: HAPI_Common.h:1550
HAPI_NodeType
Definition: HAPI_Common.h:488
HAPI_CurveType curveType
Definition: HAPI_Common.h:1892
int knotCount
The number of knots for all curves.
Definition: HAPI_Common.h:1901
HAPI_Bool hasUIMax
Definition: HAPI_Common.h:1428
Sent when a work item is deleted from a node.
Definition: HAPI_Common.h:918
HAPI_StringHandle handleParmNameSH
Definition: HAPI_Common.h:1539
int HAPI_StringHandle
Definition: HAPI_Common.h:158
HAPI_StatusVerbosity
Definition: HAPI_Common.h:211
Sent when a node finishes cooking.
Definition: HAPI_Common.h:1012
HAPI_AttributeOwner originalOwner
Definition: HAPI_Common.h:1705
Used for Results. Equivalent to HAPI_STATUSVERBOSITY_0.
Definition: HAPI_Common.h:220
Options to configure a Thrift server being started from HARC.
Definition: HAPI_Common.h:1085
Total number of supported parameter types.
Definition: HAPI_Common.h:369
HAPI_ChoiceListType
Definition: HAPI_Common.h:462
HAPI_Bool hasChanged
Definition: HAPI_Common.h:1683
HAPI_Bool isInstanced
Definition: HAPI_Common.h:1663
Everything cook successfully without errors.
Definition: HAPI_Common.h:280
HAPI_Bool spare
Definition: HAPI_Common.h:1451
Menu Only, Single Selection.
Definition: HAPI_Common.h:467
int index
The work item's index.
Definition: HAPI_Common.h:2001
HAPI_XYZOrder rotationOrder
Definition: HAPI_Common.h:1064
int curveCount
The number of curves contained in this curve mesh.
Definition: HAPI_Common.h:1895
HAPI_Bool cacheMeshTopology
Definition: HAPI_Common.h:1259
HAPI_PrmScriptType
Definition: HAPI_Common.h:398
A node event indicating that the node has finished dirtying items.
Definition: HAPI_Common.h:946
HAPI_Bool hasKnots
Whether the curve has knots.
Definition: HAPI_Common.h:1913
HAPI_STATIC_ASSERT(sizeof(HAPI_UInt8)==1, unsupported_size_of_uint8)
HAPI_XYZOrder
Definition: HAPI_Common.h:764
HAPI_CurveType curveType
Definition: HAPI_Common.h:1926
Data associated with a PDG Event.
Definition: HAPI_Common.h:1972
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1525
int HAPI_ParmId
Definition: HAPI_Common.h:167
int tagSH
The file tag of the output.
Definition: HAPI_Common.h:2021
HAPI_ParmId parentId
Parameter id of the parent of this parameter.
Definition: HAPI_Common.h:1348
Meta-data describing a Geo Part.
Definition: HAPI_Common.h:1643
int HAPI_ErrorCodeBits
Definition: HAPI_Common.h:264
HAPI_AttributeTypeInfo typeInfo
Definition: HAPI_Common.h:1737
int order
Order of 1 is invalid. 0 means there is a varying order.
Definition: HAPI_Common.h:1910
int instancedPartCount
Definition: HAPI_Common.h:1669
int tagCount
Number of tags on this paramter.
Definition: HAPI_Common.h:1375
int transformInputCount
See Handles.
Definition: HAPI_Common.h:1150
int outputCount
The number of outputs this specific node has.
Definition: HAPI_Common.h:1324
HAPI_Bool handleSpherePartTypes
Definition: HAPI_Common.h:1247
HAPI_PDG_WorkItemState
Used with PDG functions.
Definition: HAPI_Common.h:1021
int instanceStartOffset
The number of instances in a multiparm.
Definition: HAPI_Common.h:1486
int childIndex
Child index within its immediate parent parameter.
Definition: HAPI_Common.h:1351
HAPI_NodeId id
Definition: HAPI_Common.h:1276
HAPI_ImagePacking
Definition: HAPI_Common.h:791
Meta-data for a Houdini Node.
Definition: HAPI_Common.h:1274
HAPI_Transform transform
Definition: HAPI_Common.h:1846
HAPI_PDG_EventType
Used with PDG functions.
Definition: HAPI_Common.h:910
HAPI_SessionType
Definition: HAPI_Common.h:266
HAPI_StorageType storage
Definition: HAPI_Common.h:1694
Presets blob within an .idx file format.
Definition: HAPI_Common.h:483
int instanceLength
The index of the instance in the multiparm.
Definition: HAPI_Common.h:1482
int lastState
HAPI_PDG_WorkItemState value of last state for state change.
Definition: HAPI_Common.h:1987
HAPI_Permissions permissions
Definition: HAPI_Common.h:1372
Configuration options for Houdini's compositing context.
Definition: HAPI_Common.h:2080
HAPI_VolumeType
Definition: HAPI_Common.h:593
HAPI_ParmType type
The HAPI type of the parm.
Definition: HAPI_Common.h:1354
License Type. See HAPI_License.
Definition: HAPI_Common.h:851
HAPI_StringHandle descriptionSH
Definition: HAPI_Common.h:1763
HAPI_HeightFieldSampling
Type of sampling for heightfield.
Definition: HAPI_Common.h:891
Field + Multiple Selection Menu.
Definition: HAPI_Common.h:473
HAPI_ImagePacking packing
ex: true = RGBRGBRGB, false = RRRGGGBBB
Definition: HAPI_Common.h:1787
HAPI_Int64 HAPI_SessionId
Has to be 64-bit.
Definition: HAPI_Common.h:154
#define HAPI_SCALE_VECTOR_SIZE
Definition: HAPI_Common.h:17
HAPI_Bool labelNone
the next parm.
Definition: HAPI_Common.h:1455
HAPI_GeoType type
Definition: HAPI_Common.h:1601
HAPI_SessionId id
Definition: HAPI_Common.h:1080
int HAPI_ProcessId
Definition: HAPI_Common.h:150
HAPI_RampType
Definition: HAPI_Common.h:315
Options which affect how nodes are cooked.
Definition: HAPI_Common.h:1175
HAPI_ParmType
Definition: HAPI_Common.h:331
Homogeneous position.
Definition: HAPI_Common.h:650
HAPI_Bool useMenuItemTokenAsValue
Whether or not the "Use Menu Item Token As Value" checkbox was checked in a integer menu item...
Definition: HAPI_Common.h:1500
HAPI_CurveOrders
Definition: HAPI_Common.h:723
HAPI_Bool invisible
Definition: HAPI_Common.h:1442
HAPI_Bool joinNext
Definition: HAPI_Common.h:1453
A node event that indicates that node is about to have all its work items cleared.
Definition: HAPI_Common.h:933
HAPI_StringHandle splitAttrSH
Definition: HAPI_Common.h:1201
HAPI_Bool hasChanged
Definition: HAPI_Common.h:1755
Sent when a new scheduler is added to the graph.
Definition: HAPI_Common.h:1003
HAPI_PartType type
Definition: HAPI_Common.h:1649
HAPI_StringHandle valueSH
Definition: HAPI_Common.h:1512
Identifies a session.
Definition: HAPI_Common.h:1072
HAPI_Bool haveGeosChanged
Definition: HAPI_Common.h:1563
HAPI_StringHandle versionSH
Path to the .otl library file.
Definition: HAPI_Common.h:1138
HAPI_StorageType
Definition: HAPI_Common.h:614
HAPI_Bool hasMax
Definition: HAPI_Common.h:1426
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1120
HAPI_StringHandle defaultExtensionSH
Definition: HAPI_Common.h:1764
int maximumResolutionY
Specifies the maximum allowed height of an image in the compositor.
Definition: HAPI_Common.h:2086
Sent when a node was renamed.
Definition: HAPI_Common.h:959
HAPI_StringHandle assetParmNameSH
Definition: HAPI_Common.h:1540
Meta-data for a SOP Node.
Definition: HAPI_Common.h:1599
HAPI_Bool isDisplayGeo
Final Result (Display SOP).
Definition: HAPI_Common.h:1617
"Private" (hidden)
Definition: HAPI_Common.h:666
A Transform with Euler rotation.
Definition: HAPI_Common.h:1057
HAPI_Bool isTimeDependent
Indicates if this node will change over time.
Definition: HAPI_Common.h:1332
Sent from dynamic work items that generate from a cooked item.
Definition: HAPI_Common.h:928
HAPI_Bool hasGeoChanged
For incremental updates.
Definition: HAPI_Common.h:1620
Sent when a work item's state changes.
Definition: HAPI_Common.h:920
int vertexCount
The number of control vertices (CVs) for all curves.
Definition: HAPI_Common.h:1898
HAPI_StringHandle imageFileFormatNameSH
Definition: HAPI_Common.h:1779
int64_t HAPI_Int64
Definition: HAPI_Common.h:142
Data for global timeline, used with HAPI_SetTimelineOptions()
Definition: HAPI_Common.h:1104
HAPI_Bool hasMaterialChanged
Definition: HAPI_Common.h:1627
A node event indicating that one more items in the node will be dirtied.
Definition: HAPI_Common.h:944
HAPI_NodeId parentId
Definition: HAPI_Common.h:1277
Sent when a new work item is added by a node.
Definition: HAPI_Common.h:916
True if it actually has a minimum size.
Definition: HAPI_Common.h:865
RGBA Reversed.
Definition: HAPI_Common.h:800
HAPI_Bool isTemplated
Has the templated flag turned on which means "expose as read-only".
Definition: HAPI_Common.h:1614
Looks for Guide Geometry.
Definition: HAPI_Common.h:532
int totalCookCount
Total number of cooks of this node.
Definition: HAPI_Common.h:1287
HAPI_StringHandle filePathSH
This is what any end user should be shown.
Definition: HAPI_Common.h:1137
HAPI_Bool checkPartChanges
Definition: HAPI_Common.h:1253
char HAPI_Bool
Definition: HAPI_Common.h:117
HAPI_Bool hasUIMin
Definition: HAPI_Common.h:1427
HAPI_StringHandle typeInfoSH
Definition: HAPI_Common.h:1365
HAPI_PDG_WorkItemId workItemId
id of related work item.
Definition: HAPI_Common.h:1978
HAPI_NodeType type
Definition: HAPI_Common.h:1279
HAPI_StatusType
Definition: HAPI_Common.h:202
int extraFlags
For internal use only. :)
Definition: HAPI_Common.h:1267
HAPI_StringHandle splitGroupSH
Definition: HAPI_Common.h:1191
HAPI_PresetType
Definition: HAPI_Common.h:477
HAPI_StringHandle labelSH
Definition: HAPI_Common.h:1508
Data for a Box Part.
Definition: HAPI_Common.h:1953
HAPI_Bool interleaved
Definition: HAPI_Common.h:1786
int inputCount
The number of inputs this specific node has.
Definition: HAPI_Common.h:1321
HAPI_StringHandle helpURLSH
Asset help marked-up text.
Definition: HAPI_Common.h:1141
HAPI_ParmId parentParmId
Definition: HAPI_Common.h:1507
"int", "integer"
Definition: HAPI_Common.h:401
HAPI_Result
Definition: HAPI_Common.h:228
Direction vector.
Definition: HAPI_Common.h:652
int outputFileCount
The number of output files reported by the work item.
Definition: HAPI_Common.h:2004
HAPI_InputType
Definition: HAPI_Common.h:714
Max cache memory limit in MB.
Definition: HAPI_Common.h:885
HAPI_StringHandle nameSH
Name of the work item.
Definition: HAPI_Common.h:2007
HAPI_Bool splitGeosByGroup
Definition: HAPI_Common.h:1190
HAPI_State
Definition: HAPI_Common.h:277
HAPI_VolumeType type
Definition: HAPI_Common.h:1819
Sent for each node in the graph, when a cook starts.
Definition: HAPI_Common.h:987
int objectCount
Asset help URL.
Definition: HAPI_Common.h:1143
HAPI_StringHandle helpTextSH
Full asset name and namespace.
Definition: HAPI_Common.h:1140
Implicit type based on data.
Definition: HAPI_Common.h:646
Sent when a scheduler is removed from the graph.
Definition: HAPI_Common.h:1005
HAPI_Bool splitPointsByVertexAttributes
Definition: HAPI_Common.h:1238
HAPI_StorageType storage
Can be either HAPI_STORAGETYPE_INT or HAPI_STORAGETYPE_FLOAT.
Definition: HAPI_Common.h:1838
HAPI_InputCurveMethod
Definition: HAPI_Common.h:574
HAPI_InputCurveMethod inputMethod
Definition: HAPI_Common.h:1942
int HAPI_NodeFlagsBits
Definition: HAPI_Common.h:541
Used for Results. Equivalent to HAPI_STATUSVERBOSITY_2.
Definition: HAPI_Common.h:224
Data for a Sphere Part.
Definition: HAPI_Common.h:1962
Sent when a node was removed from the graph.
Definition: HAPI_Common.h:957
HAPI_AttributeTypeInfo
Definition: HAPI_Common.h:642
HAPI_Bool haveObjectsChanged
Definition: HAPI_Common.h:1166
A Transform with Quaternion rotation.
Definition: HAPI_Common.h:1045
#define HAPI_EULER_VECTOR_SIZE
Definition: HAPI_Common.h:21
HAPI_Bool cookUsingHoudiniTime
Definition: HAPI_Common.h:2070
HAPI_Bool hasTaper
Definition: HAPI_Common.h:1850
HAPI_GroupType
Definition: HAPI_Common.h:543
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1817
#define HAPI_C_STRUCT_TYPEDEF(struct_name)
Definition: HAPI_Common.h:106
HAPI_Bool isVisible
Definition: HAPI_Common.h:1569
Field + Single Selection Menu.
Definition: HAPI_Common.h:471
Sent when an warning is issued by the node.
Definition: HAPI_Common.h:938
int HAPI_NodeId
See Nodes Basics.
Definition: HAPI_Common.h:163
HAPI_PartId id
Id to identify this part relative to it's Geo.
Definition: HAPI_Common.h:1646
Describes an image format, used with HAPI_GetSupportedImageFileFormats()
Definition: HAPI_Common.h:1760
HAPI_CacheProperty
Identifies a memory cache.
Definition: HAPI_Common.h:858
HAPI_Bool isInstanced
Definition: HAPI_Common.h:1578
You should abort the cook.
Definition: HAPI_Common.h:282
Sent when a node was connected to another node.
Definition: HAPI_Common.h:961
int primitiveGroupCount
Definition: HAPI_Common.h:1632
HAPI_PrmScriptType scriptType
The Houdini script-type of the parm.
Definition: HAPI_Common.h:1357
Data for a single Key Frame.
Definition: HAPI_Common.h:1798
HAPI_Int64 totalArrayElements
Definition: HAPI_Common.h:1731
HAPI_StringHandle nameSH
Definition: HAPI_Common.h:1135
Mini Menu Only, Single Selection.
Definition: HAPI_Common.h:469
int HAPI_AssetLibraryId
Definition: HAPI_Common.h:160
HAPI_Bool isClosed
Similar to isPeriodic, but creates a polygon instead of a separate point.
Definition: HAPI_Common.h:1916
A special enum that represents the OR of both the CookError and CookWarning events.
Definition: HAPI_Common.h:1000
Parameter is not a menu.
Definition: HAPI_Common.h:465
2x2 Bounding box
Definition: HAPI_Common.h:668
#define HAPI_C_ENUM_TYPEDEF(enum_name)
[HAPI_InputCurve]
Definition: HAPI_Common.h:104
HAPI_TransformComponent
Definition: HAPI_Common.h:733
int filePathSH
The file path of the output.
Definition: HAPI_Common.h:2018
HAPI_Bool hasTransformChanged
Definition: HAPI_Common.h:1559
HAPI_StringHandle objectInstancePathSH
Definition: HAPI_Common.h:1555
int8_t HAPI_Int8
Definition: HAPI_Common.h:138
HAPI_Bool hasMin
Definition: HAPI_Common.h:1425
HAPI_StringHandle internalNodePathSH
Definition: HAPI_Common.h:1297
An empty, undefined event. Should be ignored.
Definition: HAPI_Common.h:913
HAPI_Bool preferOutputNodes
Definition: HAPI_Common.h:1264
HAPI_Bool disabled
Whether this parm should appear enabled or disabled.
Definition: HAPI_Common.h:1445
HAPI_Bool handleBoxPartTypes
Definition: HAPI_Common.h:1246
HAPI_StringHandle msgSH
String handle of the event message (> 0 if there is a message).
Definition: HAPI_Common.h:1993
Meta-data for a combo-box / choice parm.
Definition: HAPI_Common.h:1505
HAPI_SessionType type
Definition: HAPI_Common.h:1076
HAPI_NodeFlags inputNodeFlag
Definition: HAPI_Common.h:1475
int HAPI_PartId
Definition: HAPI_Common.h:171
HAPI_NodeId nodeId
Definition: HAPI_Common.h:1587
Dual Channel.
Definition: HAPI_Common.h:796
uint8_t HAPI_UInt8
Definition: HAPI_Common.h:133
HAPI_Bool isChildOfMultiParm
Definition: HAPI_Common.h:1479