102 lines
3.9 KiB
C
102 lines
3.9 KiB
C
// Filename:- glm_code.h
|
|
//
|
|
|
|
|
|
#ifndef GLM_CODE_H
|
|
#define GLM_CODE_H
|
|
|
|
#include "mdx_format.h"
|
|
|
|
|
|
|
|
////////////////////////////////////////////////
|
|
//
|
|
// Jake's stuff...
|
|
#define MAX_G2_SURFACES 1000 // this is the max surfaces any model can have. IMPORTANT - used everywhere
|
|
#define MAX_G2_LODS 10 // this restriction mainly a MODVIEW thing, but carcass will only build 10 LODs as well because of surfacename rules (ie "xxxx_n" names)
|
|
|
|
#define MAX_BONE_OVERRIDES 32
|
|
#define MAX_POSSIBLE_BONES 512
|
|
|
|
#define BONE_ANGLES_ABSOLUTE 0x0001
|
|
#define BONE_ANGLES_ADDITIVE 0x0002
|
|
#define BONE_ANGLES_RELATIVE 0x0004
|
|
#define BONE_ANIM_OVERRIDE 0x0008
|
|
#define BONE_ANIM_OVERRIDE_LOOP 0x0010
|
|
#define BONE_ANIM_NEW_ANIM 0x0020
|
|
|
|
|
|
typedef struct {
|
|
int boneNumber;
|
|
vec3_t angles;
|
|
int flags;
|
|
int startFrame;
|
|
int endFrame;
|
|
float currentFrame;
|
|
float newFrame;
|
|
float animSpeed;
|
|
} boneInfo_t;
|
|
|
|
|
|
typedef enum
|
|
{
|
|
SURF_ERROR, // needed to replace where Jake just did "return 0", which couldn't be distinguished from SURF_ON
|
|
SURF_ON,// = SURF_ERROR,
|
|
SURF_OFF,
|
|
SURF_NO_DESCENDANTS,
|
|
SURF_INHERENTLYOFF // can never be set, but may be returned on query
|
|
} SurfaceOnOff_t; // enumerations for offFlags used in surfaceInfo_t
|
|
|
|
typedef struct {
|
|
int ident; // ident of this surface - required so the materials renderer knows what sort of surface this refers to
|
|
SurfaceOnOff_t offFlags; // what the flags are for this model
|
|
int surface; // index into array held inside the model definition of pointers to the actual surface data loaded in - used by both client and game
|
|
void *boneList; // pointer to transformed bone list for this surface - required client side for rendering DONOT USE IN GAME SIDE
|
|
void *surfaceData; // pointer to surface data loaded into file - only used by client renderer DO NOT USE IN GAME SIDE - if there is a vid restart this will be out of wack on the game
|
|
} surfaceInfo_t;
|
|
|
|
/*
|
|
typedef struct {
|
|
float matrix[3][4];
|
|
} mdxBone_t;
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
float m[4][4];
|
|
}mdxBone4_t;
|
|
|
|
|
|
//
|
|
////////////////////////////////////////////////
|
|
|
|
|
|
bool GLMModel_Parse(struct ModelContainer *pContainer, LPCSTR psLocalFilename, HTREEITEM hTreeItem_Parent = NULL);
|
|
SurfaceOnOff_t GLMModel_Surface_GetStatus( ModelHandle_t hModel, int iSurfaceIndex );
|
|
void GLMModel_DeleteExtra(void);
|
|
bool GLMModel_SurfaceContainsBoneReference(ModelHandle_t hModel, int iLODNumber, int iSurfaceNumber, int iBoneNumber);
|
|
LPCSTR GLMModel_BoneInfo( ModelHandle_t hModel, int iBoneIndex );
|
|
LPCSTR GLMModel_SurfaceVertInfo( ModelHandle_t hModel, int iSurfaceIndex );
|
|
LPCSTR GLMModel_SurfaceInfo( ModelHandle_t hModel, int iSurfaceIndex, bool bShortVersionForTag );
|
|
bool GLMModel_SurfaceIsTag(ModelHandle_t hModel, int iSurfaceindex );
|
|
bool GLMModel_SurfaceIsON(ModelHandle_t hModel, int iSurfaceIndex );
|
|
LPCSTR GLMModel_GetSurfaceName( ModelHandle_t hModel, int iSurfaceIndex );
|
|
LPCSTR GLMModel_GetSurfaceShaderName( ModelHandle_t hModel, int iSurfaceIndex );
|
|
LPCSTR GLMModel_GetBoneName( ModelHandle_t hModel, int iBoneIndex );
|
|
bool R_GLMModel_Tree_ReEvalSurfaceText(ModelHandle_t hModel, HTREEITEM hTreeItem = NULL, bool bDeadFromHereOn = false);
|
|
bool GLMModel_Surface_Off( ModelHandle_t hModel, int iSurfaceIndex );
|
|
bool GLMModel_Surface_On( ModelHandle_t hModel, int iSurfaceIndex );
|
|
bool GLMModel_Surface_NoDescendants(ModelHandle_t hModel, int iSurfaceIndex );
|
|
bool GLMModel_Surface_SetStatus( ModelHandle_t hModel, int iSurfaceIndex, SurfaceOnOff_t eStatus );
|
|
void GLMModel_Surfaces_DefaultAll(ModelHandle_t hModel);
|
|
mdxaBone_t *GLMModel_GetBasePoseMatrix(ModelHandle_t hModel, int iBoneIndex);
|
|
bool GLMModel_GetBounds(ModelHandle_t hModel, int iLODNumber, int iFrameNumber, vec3_t &v3Mins, vec3_t &v3Maxs);
|
|
int GLMModel_EnsureGenerated_VertEdgeInfo(ModelHandle_t hModel, int iLOD, SurfaceEdgeInfoPerLOD_t &SurfaceEdgeInfoPerLOD);
|
|
void *GLMModel_GetDefaultGLA(void);
|
|
|
|
#endif // #ifndef GLM_CODE_H
|
|
|
|
|
|
////////////// eof ////////////
|
|
|