Element type: | miSCENE_GROUP |
Data type: | miGroup |
Sizes: | int max_kids, int max_connections |
Defaults: | all nulls, max_* as given by size arguments |
typedef struct miGroup { miGeoScalar merge; /* merge tolerance */ miBoolean placeholder; /* is this a demand-loaded group? */ int spare0; /* not used */ miBoolean merge_group; /* perform merging on members? */ int max_kids; /* number of kids allocated */ int no_kids; /* number of kids actually used */ int max_connections;/* number of connections allocated */ int no_connections; /* number of connections used */ miTag userdata; /* optional user data blocks */ miUint label; /* optional label */ int spare1[3]; /* not used */ miTag kids[2]; /* kid list (instances) */ } miGroup; typedef struct { miTag instance[2]; /* the two face type object instances*/ miGeoIndex face[2]; /* indices of the two miFace's */ miGeoIndex curve[2]; /* indices of the two miCurves*/ miGeoRange range[2]; } miConnection;
A translator must provide: nothing.
A translator may provide: merge_group, merge, the
connection array, userdata, label.
Groups have two variable-sized sections, one for the list of instances and one for the list of connections. The latter exists only if the group is a merge group. The macro miGROUP_GET_CONNECTIONS(n) returns a miConnection pointer to the n-th connection. Note that instances must be added to groups with mi_scene_link, but the connection tags are written directly to the miConnection.
merge is the merge epsilon. It is used only in merge groups.
placeholder is reserved for internal use.
merge_group is miTRUE if this group is a merge group. Merge groups are treated like objects; all their subobjects are tessellated as one object. In fact, the Scene module treats merge groups like objects and lets GAP pick apart the group and its subtrees.
max_kids is the current size of the kids array.
no_kids is the number of instances stored in the kids array.
max_connections is the current size of the connection array.
no_connections is the number of connections in the connection array.
userdata allows attaching a user data block (miUserdata) or a chain of user data blocks. Shaders can retrieve the data with mi_query.
userdata allows attaching a user data block (miUserdata) or a chain of user data blocks. Shaders can retrieve the data with mi_query.
label is a numeric value assigned by applications.
kids is the beginning of the variable section of miGroup, consisting of an array of instance tags followed by an optional array of connections. Fields that follow the kids array in the C declaration in geoshader.h are not shown here, and are never used.
The data structure contains extra members such as groupjob for placeholder groups, which are reserved for future extensions. Do not use.
Copyright © 1986-2009 by mental images GmbH