Title |
Data B> |
Data Name |
No |
typedef struct SprCluster {
Uint16 no; / * Cluster number * /
Uint16 angleSeq; / * Rotation order * /
MthXyz angle; / * Rotation in the coordinate system of the parent cluster * /
MthXyz point; / * origin coordinates in parent cluster coordinate system * /
SprObject3D * object / * 3D object * /
SprCluster * next; / * Next cluster * /
SprCluster * child; / * Child cluster * /
SprInbetInf * inbetInf; / * Inter-object connection polygon information * /
void (*transStart)(SprCluster*);
/ * User callback routine before starting coordinate conversion * /
void (transEnd)(SprCluster*, SprObject3D*, MthMatrix*, MthXyz*);
/ * User callback routine after coordinate transformation * /
void * context; / * User context area * /
} SprCluster;no is for user callback routines to identify the cluster table and is optional.
angleSeq = ROT_SEQ_ZYX: Rotate objects in order of Z → Y → X = ROT_SEQ_ZXY: “Z → X → Y” = ROT_SEQ_YZX: “Y → Z → X” = ROT_SEQ_YXZ: “Y → X → Z” = ROT_SEQ_XYZ: “X → Y → Z” = ROT_SEQ_XZY: “X → Z → Y”
If 3D object, next cluster and child cluster are not connected, each Set object, next, and child to 0.If there is no inter-object connection polygon information, set inbetInf to 0.
transStart is the user callback that is called before the coordinate transformation of this cluster starts Specifies a routine. Within the routine, move the cluster, Make changes. Set to 0 if there is no callback routine.
[Calling sequence of transStart routine] void transStart(SprCluster *cluster);
cluster: Local cluster table