reman3/Rayman_X/cpa/public/GAM/PlayAnim/Interpol/a3x_glob.h

479 lines
16 KiB
C

/* ***********************************************************************************/
/* * "a3x_glob.h" **/
/* * Written by : Sébastien Rubens **/
/* * Tabulations : 4 char **/
/* ***********************************************************************************/
#ifndef A3X_GLOB_H
#define A3X_GLOB_H
#include "specif\a3x_pref.h"
/* ***********************************************************************************/
/* Main Defines*/
#define KillChannels
/* ***********************************************************************************/
/* Defines*/
#define SEB_Invalid 0xFFFF
#define xZero ((SEB_xReal) 0.0)
#define xOne ((SEB_xReal) 1.0)
#define xHalfOne ((SEB_xReal) 0.5)
/*#define xEps ((SEB_xReal) 0.0001)*/
/*#define xOneSubEps ((SEB_xReal) 0.9999)*/
#define xHalfPi ((SEB_xReal) 1.570796326795)
#define xPi ((SEB_xReal) 3.14159265359)
#define xTwoPi ((SEB_xReal) 6.28318530718)
#define xExpandValue ((SEB_xReal)3.05185094759971922971282082583e-5)
#define xCompactValue 32767.0f
#define lEps 1
#define lOne 32767
#define lOneSubEps 32766
#define lDecSin 3L
#define lNbSin 8192L /* Size of sinus table*/
#define lNbSinDiv2 (lNbSin >> 1)
#define lNbSinDiv4 (lNbSin >> 2)
#define lNbSin34 (lNbSinDiv4 * 3)
#define lMaskNbSin (lNbSin - 1)
/* ***********************************************************************************/
#define SEB_xMaskQuatOri 0x0001
#define SEB_xMaskQuatSca 0x0002
#define SEB_xMaskScaleValues 0x0004
#define SEB_xMaskPosition 0x0008
#define SEB_xMaskAllLow 0x000F
#define SEB_xMaskIdQuatOri 0x0010
#define SEB_xMaskIdQuatSca 0x0020
#define SEB_xMaskIdScaleValues 0x0040
#define SEB_xMaskLastKey 0x0080
#define SEB_xMaskZeroAngCentre 0x0100
#define SEB_xTypeWrapLastKey 0x0200
#define SEB_xTypeChangeOfHierarchy 0x0400
#define SEB_xTypeHierarchized 0x0800
#define SEB_xTypeSoundEvent 0x1000
/* ***********************************************************************************/
/* Types definitions*/
/* ***********************************************************************************/
/* ----------------------------------------------------------------------------------*/
/* Matrices, vectors and quaternions definitions*/
/* ----------------------------------------------------------------------------------*/
typedef SEB_xReal tdxMatrix33[3][3];
typedef SEB_xReal tdxVector3[3];
typedef SEB_xReal tdxQuater4[4];
typedef unsigned long tdxULongVector3[3];
typedef signed short tdxSShortQuater4[4];
typedef char tdFileName[256];
/* ----------------------------------------------------------------------------------*/
/* Stack definition*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstStackInfos_ {
unsigned long ulPosAlloc;
unsigned long ulStackPos;
unsigned long ulMaxPos;
unsigned long ulResetPos;
} tdstStackInfos;
/* ----------------------------------------------------------------------------------*/
/* Cutted animations definition*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstCuttedAnim_ {
unsigned short uwStartFrame;
unsigned short uwEndFrame;
unsigned short uwPrevAnim;
unsigned short uwNextAnim;
unsigned short uwMaxNumberOfElements;
unsigned short uwAlign;
} tdstCuttedAnim;
/* ----------------------------------------------------------------------------------*/
/* NTTO*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileNTTO_ {
#ifndef U64
unsigned short uwTypeOfObject; /* + hierarchized object info !*/
unsigned short ucNumberInTable; /* temporary a short AR9810*/
unsigned char ucTransparency;
#else
unsigned short uwTypeOfObject; /* + hierarchized object info !*/
unsigned char ucNumberInTable;
unsigned char ucTransparency;
#endif
} tdstFileNTTO;
typedef struct tdstNTTO_ {
#ifndef U64
unsigned short uwTypeOfObject; /* + hierarchized object info !*/
unsigned short ucNumberInTable; /* temporary a short AR9810*/
unsigned char ucTransparency;
#else
unsigned short uwTypeOfObject; /* + hierarchized object info !*/
unsigned char ucNumberInTable;
unsigned char ucTransparency;
#endif
} tdstNTTO;
/* ----------------------------------------------------------------------------------*/
/* Hierarchy*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileHierarchy_ {
unsigned short uwChild;
unsigned short uwFather;
} tdstFileHierarchy;
typedef struct tdstBinHierarchy_ {
unsigned short uwChild;
unsigned short uwFather;
} tdstBinHierarchy;
typedef struct tdstHierarchy_ {
unsigned short uwChild;
unsigned short uwFather;
} tdstHierarchy;
/* ----------------------------------------------------------------------------------*/
/* Only Frame*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileOnlyFrame_ {
unsigned short uwNumOfAngularSpeedQuat;
unsigned short uwNumOfSpeedVector;
unsigned short uwHierarchyNbCouples;
unsigned short uwNumOfHierarchyCouples;
unsigned short uwNumOfSavedFrame;
unsigned short uwAlign;
} tdstFileOnlyFrame;
typedef struct tdstBinOnlyFrame_ {
signed long slNumOfAngularSpeedQuat;
signed long slNumOfSpeedVector;
unsigned short uwHierarchyNbCouples;
unsigned short uwNumOfSavedFrame;
signed long slNumOfHierarchyCouples;
tdxQuater4 tdxAngularSpeedQuat; /* only for binarisation*/
tdxVector3 tdxSpeedVector; /* only for binarisation*/
} tdstBinOnlyFrame;
typedef struct tdstOnlyFrame_ {
unsigned short uwNumOfAngularSpeedQuat;
unsigned short uwNumOfSpeedVector;
unsigned short uwHierarchyNbCouples;
unsigned short uwNumOfFirstHierarchyCouple;
unsigned short uwNumOfSavedFrame;
/* unsigned short uwAlign; // AR9811 To save memory...*/
} tdstOnlyFrame;
/* ----------------------------------------------------------------------------------*/
/* Channel*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileChannel_ {
unsigned short uwNumberOfKeys;
unsigned short uwChannelNumber;
unsigned short uwNumOfLocalPivotPos;
unsigned short uwAlign;
} tdstFileChannel;
typedef struct tdstBinChannel_ {
unsigned short uwNumberOfKeys;
unsigned short uwChannelNumber;
signed long slNumOfLocalPivotPos;
/* signed long slNumOfFrameNTTO; // in tdstBinFrame*/
signed long slNumOfFrames;
/* signed short slNumOfKeyFrame; // in tdstBinFrame*/
unsigned short uwUsedChannel; /* only for binarisation*/
unsigned short uwGenerateChannel; /* only for binarisation*/
tdxVector3 a3_xLocalPivotPos; /* only for binarisation*/
} tdstBinChannel;
typedef struct tdstChannel_ {
unsigned short uwNumberOfKeys;
unsigned short uwChannelNumber;
unsigned short uwNumOfLocalPivotPos;
unsigned short uwNumOfFirstFrame;
unsigned long ulNumOfFirstFrameKF;
unsigned short uwNumOfFirstKeyFrame;
/* unsigned short uwAlign; // AR9811 To save memory...*/
} tdstChannel;
/* ----------------------------------------------------------------------------------*/
/* Frames KF*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFrameKF_ {
unsigned short uwNumOfKeyFrame;
/* unsigned short uwAlign; //AR9808 Too much memory lost*/
} tdstFrameKF;
/* ----------------------------------------------------------------------------------*/
/* Frame*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileFrame_ {
/* signed short swNumberInTable;*/
/* unsigned short uwTypeOfObject; // + hierarchized object info !*/
unsigned short uwNumOfNTTO;
/* unsigned short uwAlign; //AR9808 Too much memory lost*/
} tdstFileFrame;
typedef struct tdstBinFrame_ {
signed short swNumberInTable;
unsigned short uwTypeOfObject;
unsigned short uwFrameNumber;
unsigned char ucTransparency;
unsigned char ucAlign;
tdxQuater4 a4_xQuatOri; /* Orientation of quaternion*/
tdxQuater4 a4_xQuatSca; /* Orientation of scale*/
tdxVector3 a3_xScaleValues; /* Scaling values*/
tdxVector3 a3_xPosition; /* Channel position*/
tdxVector3 a3_xWorldPivotPosition; /* Pivot position in world axes*/
SEB_xReal xDistMaster;
SEB_xReal xInterpolationParameter;
unsigned short uwMask; /* Interpolation mask to speed up calculation*/
unsigned short uwAttribute; /* Key attribute*/
unsigned short uwChildrenInHierarchy; /* only for binarisation*/
signed long slNumOfNTTO;
signed long slNumOfQuatOri;
signed long slNumOfQuatSca;
signed long slNumOfScaleValues;
signed long slNumOfPosition;
} tdstBinFrame;
typedef struct tdstFrame_ {
/* signed short swNumberInTable;*/
/* unsigned short uwTypeOfObject; // + hierarchized object info !*/
/* unsigned short uwNumOfNTTO;*/
unsigned short uwNumOfNTTO;
/* unsigned short uwAlign; //AR9808 Too much memory lost*/
} tdstFrame;
/* ----------------------------------------------------------------------------------*/
/* Key Frame*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileKeyFrame_ {
unsigned short uwFrameNumber;
unsigned short uwMask;
unsigned short uwNumOfQuatOri;
unsigned short uwNumOfQuatSca;
unsigned short uwNumOfScaleValues;
unsigned short uwNumOfPosition;
signed short swInterpolationParameter;
} tdstFileKeyFrame;
typedef struct tdstKeyFrame_ {
tdxVector3 a3_xWorldPivotPosition;
SEB_xReal xDistMaster;
unsigned short uwFrameNumber;
unsigned short uwMask;
unsigned short uwNumOfQuatOri;
unsigned short uwNumOfQuatSca;
unsigned short uwNumOfScaleValues;
unsigned short uwNumOfPosition;
unsigned short uwAngQuatOri;
unsigned short uwAngQuatSca;
unsigned short uwAngObjCentre;
signed short swInterpolationParameter;
} tdstKeyFrame;
/* ----------------------------------------------------------------------------------*/
/* A3D General*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileA3dAnimationGENERAL_ {
unsigned short uwAnimationSpeed;
unsigned short uwNumberOfVectors;
unsigned short uwNumberOfQuaternions;
unsigned short uwNumberOfHierarchies;
unsigned short uwNumberOfSavedNTTO;
unsigned short uwNumberOfSavedFrames;
unsigned short uwNumberOfChannels;
unsigned short uwNumberOfFrames;
unsigned short uwNumberOfKeyFrames;
unsigned short uwNumberOfEvents;
unsigned short uwNumOfFirstPosition;
unsigned short uwStartFrame;
unsigned short uwEndFrame;
unsigned short uwFakeAnimSpeed;
unsigned short uwFlags;
unsigned short uwNumOfAnimationTranslationOffset;
unsigned short uwNumOfAnimationRotationOffset;
unsigned short uwNumberOfMorphData;
} tdstFileA3dAnimationGENERAL;
/* For fast load (reduced structure)*/
typedef struct tdstShortA3dGENERAL_
{
unsigned short uwNumberOfFrames;
unsigned short uwFrameRate;
unsigned short uwMaxNumberOfElements;
unsigned short uwNumberOfEvents;
unsigned short uwNumberOfMorphData;
unsigned short uwAlign;
tdxVector3 a3_xAnimationTranslationOffset;
tdxSShortQuater4 a4_uwAnimationRotationOffset; /* Can be Eliminated... See later*/
} tdstShortA3dGENERAL;
typedef struct tdstBinA3dAnimationGENERAL_ {
unsigned short uwAnimationSpeed;
unsigned short uwNumberOfSavedVectors;
unsigned short uwNumberOfSavedQuaternions;
unsigned short uwNumberOfHierarchies;
unsigned short uwNumberOfSavedNTTO;
unsigned short uwNumberOfSavedFrames;
unsigned short uwNumberOfChannels;
unsigned short uwNumberOfFrames;
unsigned short uwNumberOfKeyFrames;
unsigned short uwNumberOfEvents;
unsigned short uwNumberOfMorphData;
unsigned short uwAlign;
unsigned short uwStartFrame;
unsigned short uwEndFrame;
unsigned short uwFlags;
unsigned short uwFakeAnimSpeed;
signed long slNumOfAnimationTranslationOffset;
signed long slNumOfAnimationRotationOffset;
signed long slNumOfPositions;
signed long slNumOfSavedVectors;
signed long slNumOfSavedQuaternions;
signed long slNumOfHierarchies;
signed long slNumOfSavedNTTO;
signed long slNumOfOnlyFrames;
signed long slNumOfChannels;
signed long slNumOfEvents;
signed long slNumOfMorphData;
/* ----------------*/
signed long slNumOfFramesNTTO;
/* Before optimisation*/
unsigned short uwNumberOfVectors;
unsigned short uwNumberOfQuaternions;
signed long slNumOfVectors;
signed long slNumOfQuaternions;
tdxVector3 uwAnimationTranslationOffset;
tdxQuater4 uwAnimationRotationOffset;
} tdstBinA3dAnimationGENERAL;
typedef struct tdstA3dGENERAL_ {
unsigned short uwAnimationSpeed;
unsigned short uwNumberOfVectors;
unsigned short uwNumberOfQuaternions;
unsigned short uwNumberOfHierarchies;
unsigned short uwNumberOfNTTO;
unsigned short uwNumberOfSavedFrames;
unsigned short uwNumberOfChannels;
unsigned short uwNumberOfFrames;
unsigned short uwNumberOfKeyFrames;
unsigned short uwNumberOfEvents;
unsigned short uwNumOfFirstPosition;
unsigned short uwStartFrame;
unsigned short uwEndFrame;
unsigned short uwFakeAnimSpeed;
unsigned short uwFlags;
unsigned short uwNumOfAnimationTranslationOffset;
unsigned short uwNumOfAnimationRotationOffset;
unsigned short uwNumberOfMorphData;
unsigned short uwNumOfFirstVector;
unsigned short uwNumOfFirstQuaternion;
unsigned short uwNumOfFirstHierarchy;
unsigned short uwNumOfFirstNTTO;
unsigned short uwNumOfFirstOnlyFrame;
unsigned short uwNumOfFirstChannel;
unsigned short uwNumOfFirstEvent;
unsigned short uwNumOfFirstMorphData;
} tdstA3dGENERAL;
/* ----------------------------------------------------------------------------------*/
/* Morph Data*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileMorphData_ {
unsigned char ucTarget;
unsigned char ucMorphingAmount;
unsigned short uwChannelNumber;
unsigned short uwFrameNumber;
unsigned short uwAlign; /* Usefull for storage structures AR9809*/
} tdstFileMorphData; /*AR9803 Written into binary file*/
typedef struct tdstBinMorphData_ {
unsigned char ucTarget;
unsigned char ucMorphingAmount;
unsigned short uwChannelNumber;
unsigned short uwFrameNumber;
unsigned short uwAlign;
} tdstBinMorphData; /*AR9803 Filled by scripts*/
/* ----------------------------------------------------------------------------------*/
/* Event definition*/
/* ----------------------------------------------------------------------------------*/
#define A3i_Version 0x1110 /* 1.17 */
/* AR9809 Now, this structure is common (event loaded the same way than PC)*/
/* Storage structure*/
typedef struct tdstFileEvent_ {
unsigned short usEventNumberInTBL;
unsigned short uwFrameNumber;
unsigned short uwChannelNumber;
unsigned short uwAlign;
} tdstFileEvent;
/* Binarisation structure*/
typedef struct tdstBinEvent_ {
unsigned short usEventNumberInTBL;
unsigned short uwFrameNumber;
unsigned short uwChannelNumber;
} tdstBinEvent;
/* ***********************************************************************************/
#endif