#ifndef __VCSTRUCT_H #define __VSTRUCT_H struct VCAttribute { ElementHandle type; /* The element handle */ InstanceNo ino; VCEntity *first; int index; uint32 mode; uint32 cacheMode; uint32 registerMode; void *instanceData; uint32 instanceDataSize; uint32 instanceDataCount; VCUserDataList *userDataList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; }; struct VCCollision { InstanceNo ino; uint32 status; uint32 instanceCount; uint32 collReportCount; uint32 cacheMode; void *instanceData; uint32 instanceDataSize; uint32 instanceDataCount; VCCollisionReportData *collReportData; uint32 collReportDataSize; uint32 collReportDataCount; uint32 numCollisionsReported; VCUserDataList *userDataList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; }; struct VCIntersection { InstanceNo ino; uint32 status; uint32 instanceCount; uint32 intersectReportCount; uint32 cacheMode; void *instanceData; uint32 instanceDataSize; uint32 instanceDataCount; VCIntersectionReportData *intersectReportData; uint32 intersectReportDataSize; uint32 intersectReportDataCount; uint32 numIntersectionsReported; VCUserDataList *userDataList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; }; struct VCPosition { InstanceNo ino; VCEntity *entity; uint32 status; uint32 cacheMode; void *instanceData; VCUserDataList *userDataList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; }; struct VCXWindowId { InstanceNo ino; uint32 status; uint32 cacheMode; void *instanceData; uint32 instanceDataSize; uint32 instanceDataCount; VCUserDataList *userDataList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; }; struct VCVisualViewResource { InstanceNo ino; VCAttribute *attribute; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; }; struct VCPseudoGravity { InstanceNo ino; uint32 status; uint32 cacheMode; void *instanceData; VCUserDataList *userDataList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; }; struct VCMaterial { InstanceNo ino; char *name; uint32 status; uint32 cacheMode; void *instanceData; uint32 instanceDataSize; uint32 instanceDataCount; VCUserDataList *userDataList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; }; struct VCRadiator { InstanceNo ino; char *name; uint32 status; uint32 cacheMode; void *instanceData; VCUserDataList *userDataList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; }; struct VCTexture { InstanceNo ino; char *name; uint32 status; uint32 cacheMode; void *instanceData; uint32 instanceDataSize; uint32 instanceDataCount; VCUserDataList *userDataList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; }; struct VCRamp { InstanceNo ino; char *name; uint32 status; uint32 cacheMode; void *instanceData; uint32 instanceDataSize; uint32 instanceDataCount; VCUserDataList *userDataList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; }; struct VCInput { InstanceNo ino; uint32 status; uint32 cacheMode; void *instanceData; uint32 instanceDataSize; uint32 instanceDataCount; VCUserDataList *userDataList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; uint32 numWraps; uint32 head; }; struct VCTracker { InstanceNo ino; char *name; uint32 status; uint32 cacheMode; void *instanceData; uint32 instanceDataSize; uint32 instanceDataCount; VCUserDataList *userDataList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; }; struct VCSync { VCSync *next; InstanceNo ino; uint32 status; uint32 cacheMode; void *instanceData; uint32 instanceDataSize; uint32 instanceDataCount; VCUserDataList *userDataList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; }; struct VCMonitor { InstanceNo ino; char *name; uint32 status; uint32 cacheMode; void *instanceData; uint32 instanceDataSize; uint32 instanceDataCount; VCUserDataList *userDataList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *deleteFunctionList; VCCallbackFunctions *updateFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; }; typedef struct { VCAttribute *attribute; VCEntity *next; int32 index; int32 flags; VCUserDataList *userDataList; } VCAttributeData; typedef struct VCEntityData { dmMatrix apos; VCEntity *newParent; uint32 traverseMode; VCCallbackFunctions *createFuncList; VCCallbackFunctions *updateFuncList; VCCallbackFunctions *deleteFuncList; VCUserDataList *userData; void *vcPosCallbackInfo; void *objPosCallbackInfo; VCCallbackFunctions *entityRelocateCallbackList; uint32 entityRelocateMode; } VCEntityData; struct VCEntity { VCEntity *parent; /* Local parental ptr */ VCEntity *child; /* Local child ptr */ VCEntity *sibling; /* Local sibling ptr */ _VCObject *object; /* Hierarchy VL data */ InstanceNo ino; /* VCObject Instance No */ VCEntityData *systemData; int numAttributes; VCAttributeData *attributes;/* Hierarchy data objects */ }; typedef struct { VCColour backgroundColour; int backgroundColourSet; float32 nearClip; int nearClipSet; float32 farClip; int farClipSet; VCColour fogColour; uint32 fogMode; int fogColourSet; float32 nearFog; int nearFogSet; float32 farFog; int farFogSet; void *callbackHandle; }_VCBodyVisResInfo; typedef struct { char *resourceFile; float32 volume; int volumeSet; float32 spreadingRollOff; int spreadingRollOffSet; float32 atmosphericAbsorption; int atmosphericAbsorptionSet; void *callbackHandle; }_VCBodyAudioResInfo; struct VCBody { VCBody *next; _VCBody *body; uint32 bodySize; uint32 bodyCount; VCEntity *rootEntity; VCEntity *bodyPosEntity; InstanceNo ino; VCCallbackFunctions *bodyPartCreateList; _VCBodyPartList *bodyPartList; VCCallbackFunctions *attributeFuncList; VCCallbackFunctions *inputFuncList; VCCallbackFunctions *collisionFuncList; _VCBodyVisResInfo visualInfo; _VCBodyAudioResInfo audioInfo; }; struct _VCBody_InputFuncData { uint32 minKeyCode; uint32 maxKeyCode; char *limbName; }; struct _VCBody_CollideFuncData { char *limbName; }; struct _VCInput_FuncData { uint32 minKeyCode; uint32 maxKeyCode; }; struct VCUserDataList { VCUserDataList *next; uint32 vcId; void *data; }; struct VCCollisionReport_Traverse { uint32 instanceCount; VCCollision *collision; uint32 nextOffset; }; struct VCIntersectionReport_Traverse { uint32 instanceCount; VCIntersection *intersection; uint32 nextOffset; }; struct VCEntity_Traverse { VCEntity *currentObject; /* Current hierarchy pos */ VCEntity *startObject; /* Start hierarchy pos */ }; struct VCAttribute_EntityTraverse { VCEntity *entity; int32 index; }; struct VCEntity_AttributeTraverse { VCEntity *entity; int32 nextIndex; ElementHandle element; }; struct VCBody_Traverse { VCBody *body; }; struct VCVisualView_Traverse { duHashIterator hashIter; VCAttribute *visResource; }; struct VCBody_AttributeTraverse { VCBody *body; char *limbName; /* Request limb */ ElementHandle element; _VCBodyPartList *currentBodyPart; int currentAttribute; VCBody *currentBody; VCBody_Traverse bodyTraverseInfo; }; struct VCCallbackFunctions { VCCallbackFunctions *next; VC_CallbackFunc function; void *data; void *systemData; }; typedef union { VCEntity_Traverse entityT; VCEntity_AttributeTraverse entityAttributeT; VCAttribute_EntityTraverse attributeEntityT; VCBody_Traverse bodyT; VCBody_AttributeTraverse bodyAttributeT; VCCollisionReport_Traverse collReportT; VCIntersectionReport_Traverse intersectReportT; VCVisualView_Traverse viewT; }VC_Traverse; typedef struct { ElementHandle element; char *limbName; } _VCAttributeElementData; typedef struct { InstanceNo inst; VCCallbackFunctions *functionList; } _VCInstCallback; typedef struct { VCBody *body; _VCBodyPartList *bodyPart; }_VCBodyPartInfo; struct _VCTimer_CallbackInfo { VLTime lastTime; VLTime time; VLTimerMode mode; }; struct _VCBodyPartList { _VCBodyPartList *next; VCAttribute *bodyPartAttr; VCBody *body; uint32 inputNeeded; /* VCEntity *pickedObject; VCEntity_DropFunc dropFunc; void *dropData; VCAttribute *pickAttr; */ }; typedef struct { VCAttribute *bodyPartAttr; VCBody *body; VCEntity_DropFunc dropFunc; void *dropData; VCPickObjectData pickObject; }_VCBodyPickInfo; typedef struct { VCCallbackFunctions *relocateFunctionList; VCCallbackFunctions *createFunctionList; VCCallbackFunctions *invalidFunctionList; VCCallbackFunctions *updateFunctionList; VCCallbackFunctions *deleteFunctionList; void *createCallbackHandle; void *updateCallbackHandle; void *deleteCallbackHandle; uint32 relocateMode; } _VCObjectFunctions; typedef struct { _VCObjectFunctions functions; int explicitInstances; duHashTab *instTable; ElementHandle element; uint32 registered; } _VCAttributeCallback; typedef struct { _VCAttributeCallback *callbackList; int32 listSize; } _VCAttributeCallbackList; typedef struct { void *relocateCallbackHandle; void *invalidCallbackHandle; }_VCEntityRelocateCallbackHandles; typedef struct _VCSyncCallbackInfo { struct _VCSyncCallbackInfo *next; char *actorName; char *actorType; VCSync_Func updateFunc; VCSync_Func deleteFunc; void *data; }_VCSyncCallbackInfo; #endif