2
0
mirror of https://github.com/FWGS/xash3d-fwgs synced 2024-11-29 05:20:23 +01:00

engine: alias: migrate header to stdint.h, remove usage of enums in data structs for portability, add static sizeof checks

This commit is contained in:
Alibek Omarov 2023-02-14 18:29:18 +03:00
parent 9b0ac7cb32
commit 858597832d

View File

@ -16,6 +16,10 @@
#ifndef ALIAS_H #ifndef ALIAS_H
#define ALIAS_H #define ALIAS_H
#include "build.h"
#include STDINT_H
#include "synctype.h"
/* /*
============================================================================== ==============================================================================
@ -39,16 +43,6 @@ Alias models are position independent, so the cache manager can move them.
#define ALIAS_TRACER2 0x0040 // orange split trail + rotate #define ALIAS_TRACER2 0x0040 // orange split trail + rotate
#define ALIAS_TRACER3 0x0080 // purple trail #define ALIAS_TRACER3 0x0080 // purple trail
// must match definition in sprite.h
#ifndef SYNCTYPE_T
#define SYNCTYPE_T
typedef enum
{
ST_SYNC = 0,
ST_RAND
} synctype_t;
#endif
typedef enum typedef enum
{ {
ALIAS_SINGLE = 0, ALIAS_SINGLE = 0,
@ -63,36 +57,42 @@ typedef enum
typedef struct typedef struct
{ {
int ident; int32_t ident;
int version; int32_t version;
vec3_t scale; vec3_t scale;
vec3_t scale_origin; vec3_t scale_origin;
float boundingradius; float boundingradius;
vec3_t eyeposition; vec3_t eyeposition;
int numskins; int32_t numskins;
int skinwidth; int32_t skinwidth;
int skinheight; int32_t skinheight;
int numverts; int32_t numverts;
int numtris; int32_t numtris;
int numframes; int32_t numframes;
synctype_t synctype; uint32_t synctype; // was synctype_t
int flags; int32_t flags;
float size; float size;
} daliashdr_t; } daliashdr_t;
STATIC_ASSERT( sizeof( daliashdr_t ) == 84, "invalid daliashdr_t size" );
typedef struct typedef struct
{ {
int onseam; int32_t onseam;
int s; int32_t s;
int t; int32_t t;
} stvert_t; } stvert_t;
STATIC_ASSERT( sizeof( stvert_t ) == 12, "invalid stvert_t size" );
typedef struct dtriangle_s typedef struct dtriangle_s
{ {
int facesfront; int32_t facesfront;
int vertindex[3]; int32_t vertindex[3];
} dtriangle_t; } dtriangle_t;
STATIC_ASSERT( sizeof( dtriangle_t ) == 16, "invalid dtriangle_t size" );
#define DT_FACES_FRONT 0x0010 #define DT_FACES_FRONT 0x0010
#define ALIAS_ONSEAM 0x0020 #define ALIAS_ONSEAM 0x0020
@ -103,36 +103,50 @@ typedef struct
char name[16]; // frame name from grabbing char name[16]; // frame name from grabbing
} daliasframe_t; } daliasframe_t;
STATIC_ASSERT( sizeof( daliasframe_t ) == 24, "invalid daliasframe_t size" );
typedef struct typedef struct
{ {
int numframes; int32_t numframes;
trivertex_t bboxmin; // lightnormal isn't used trivertex_t bboxmin; // lightnormal isn't used
trivertex_t bboxmax; // lightnormal isn't used trivertex_t bboxmax; // lightnormal isn't used
} daliasgroup_t; } daliasgroup_t;
STATIC_ASSERT( sizeof( daliasgroup_t ) == 12, "invalid daliasgrou_t size" );
typedef struct typedef struct
{ {
int numskins; int32_t numskins;
} daliasskingroup_t; } daliasskingroup_t;
STATIC_ASSERT( sizeof( daliasskingroup_t ) == 4, "invalid daliasskingroup_t size" );
typedef struct typedef struct
{ {
float interval; float interval;
} daliasinterval_t; } daliasinterval_t;
STATIC_ASSERT( sizeof( daliasinterval_t ) == 4, "invalid daliasinterval_t size" );
typedef struct typedef struct
{ {
float interval; float interval;
} daliasskininterval_t; } daliasskininterval_t;
STATIC_ASSERT( sizeof( daliasskininterval_t ) == 4, "invalid daliasskininterval_t size" );
typedef struct typedef struct
{ {
aliasframetype_t type; uint32_t type; // was aliasframetype_t
} daliasframetype_t; } daliasframetype_t;
STATIC_ASSERT( sizeof( daliasframetype_t ) == 4, "invalid daliasframetype_t size" );
typedef struct typedef struct
{ {
aliasskintype_t type; uint32_t type; // was aliasskintype_t
} daliasskintype_t; } daliasskintype_t;
STATIC_ASSERT( sizeof( daliasskintype_t ) == 4, "invalid daliasskintype_t size" );
#endif//ALIAS_H #endif//ALIAS_H