2018-04-13 18:23:45 +02:00
|
|
|
/***
|
|
|
|
*
|
|
|
|
* Copyright (c) 1996-2002, Valve LLC. All rights reserved.
|
2021-01-03 02:28:45 +01:00
|
|
|
*
|
|
|
|
* This product contains software technology licensed from Id
|
|
|
|
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
|
2018-04-13 18:23:45 +02:00
|
|
|
* All Rights Reserved.
|
|
|
|
*
|
|
|
|
* Use, distribution, and modification of this source code and/or resulting
|
|
|
|
* object code is restricted to non-commercial enhancements to products from
|
|
|
|
* Valve LLC. All other use, distribution, or modification is prohibited
|
|
|
|
* without written permission from Valve LLC.
|
|
|
|
*
|
|
|
|
****/
|
|
|
|
|
|
|
|
#ifndef ALIAS_H
|
|
|
|
#define ALIAS_H
|
|
|
|
|
2023-02-14 16:29:18 +01:00
|
|
|
#include "build.h"
|
|
|
|
#include STDINT_H
|
|
|
|
#include "synctype.h"
|
|
|
|
|
2018-04-13 18:23:45 +02:00
|
|
|
/*
|
|
|
|
==============================================================================
|
|
|
|
|
|
|
|
ALIAS MODELS
|
|
|
|
|
|
|
|
Alias models are position independent, so the cache manager can move them.
|
|
|
|
==============================================================================
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define IDALIASHEADER (('O'<<24)+('P'<<16)+('D'<<8)+'I') // little-endian "IDPO"
|
|
|
|
|
|
|
|
#define ALIAS_VERSION 6
|
|
|
|
|
|
|
|
// client-side model flags
|
|
|
|
#define ALIAS_ROCKET 0x0001 // leave a trail
|
|
|
|
#define ALIAS_GRENADE 0x0002 // leave a trail
|
|
|
|
#define ALIAS_GIB 0x0004 // leave a trail
|
|
|
|
#define ALIAS_ROTATE 0x0008 // rotate (bonus items)
|
|
|
|
#define ALIAS_TRACER 0x0010 // green split trail
|
|
|
|
#define ALIAS_ZOMGIB 0x0020 // small blood trail
|
|
|
|
#define ALIAS_TRACER2 0x0040 // orange split trail + rotate
|
|
|
|
#define ALIAS_TRACER3 0x0080 // purple trail
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
ALIAS_SINGLE = 0,
|
|
|
|
ALIAS_GROUP
|
|
|
|
} aliasframetype_t;
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
ALIAS_SKIN_SINGLE = 0,
|
|
|
|
ALIAS_SKIN_GROUP
|
|
|
|
} aliasskintype_t;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
2023-02-14 16:29:18 +01:00
|
|
|
int32_t ident;
|
|
|
|
int32_t version;
|
2018-04-13 18:23:45 +02:00
|
|
|
vec3_t scale;
|
|
|
|
vec3_t scale_origin;
|
|
|
|
float boundingradius;
|
|
|
|
vec3_t eyeposition;
|
2023-02-14 16:29:18 +01:00
|
|
|
int32_t numskins;
|
|
|
|
int32_t skinwidth;
|
|
|
|
int32_t skinheight;
|
|
|
|
int32_t numverts;
|
|
|
|
int32_t numtris;
|
|
|
|
int32_t numframes;
|
|
|
|
uint32_t synctype; // was synctype_t
|
|
|
|
int32_t flags;
|
2018-04-13 18:23:45 +02:00
|
|
|
float size;
|
|
|
|
} daliashdr_t;
|
|
|
|
|
2023-02-14 16:29:18 +01:00
|
|
|
STATIC_ASSERT( sizeof( daliashdr_t ) == 84, "invalid daliashdr_t size" );
|
|
|
|
|
2018-04-13 18:23:45 +02:00
|
|
|
typedef struct
|
|
|
|
{
|
2023-02-14 16:29:18 +01:00
|
|
|
int32_t onseam;
|
|
|
|
int32_t s;
|
|
|
|
int32_t t;
|
2018-04-13 18:23:45 +02:00
|
|
|
} stvert_t;
|
|
|
|
|
2023-02-14 16:29:18 +01:00
|
|
|
STATIC_ASSERT( sizeof( stvert_t ) == 12, "invalid stvert_t size" );
|
|
|
|
|
2018-04-13 18:23:45 +02:00
|
|
|
typedef struct dtriangle_s
|
|
|
|
{
|
2023-02-14 16:29:18 +01:00
|
|
|
int32_t facesfront;
|
|
|
|
int32_t vertindex[3];
|
2018-04-13 18:23:45 +02:00
|
|
|
} dtriangle_t;
|
|
|
|
|
2023-02-14 16:29:18 +01:00
|
|
|
STATIC_ASSERT( sizeof( dtriangle_t ) == 16, "invalid dtriangle_t size" );
|
|
|
|
|
2018-04-13 18:23:45 +02:00
|
|
|
#define DT_FACES_FRONT 0x0010
|
|
|
|
#define ALIAS_ONSEAM 0x0020
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
trivertex_t bboxmin; // lightnormal isn't used
|
|
|
|
trivertex_t bboxmax; // lightnormal isn't used
|
|
|
|
char name[16]; // frame name from grabbing
|
|
|
|
} daliasframe_t;
|
|
|
|
|
2023-02-14 16:29:18 +01:00
|
|
|
STATIC_ASSERT( sizeof( daliasframe_t ) == 24, "invalid daliasframe_t size" );
|
|
|
|
|
2018-04-13 18:23:45 +02:00
|
|
|
typedef struct
|
|
|
|
{
|
2023-02-14 16:29:18 +01:00
|
|
|
int32_t numframes;
|
2018-04-13 18:23:45 +02:00
|
|
|
trivertex_t bboxmin; // lightnormal isn't used
|
|
|
|
trivertex_t bboxmax; // lightnormal isn't used
|
|
|
|
} daliasgroup_t;
|
|
|
|
|
2023-02-14 16:29:18 +01:00
|
|
|
STATIC_ASSERT( sizeof( daliasgroup_t ) == 12, "invalid daliasgrou_t size" );
|
|
|
|
|
2018-04-13 18:23:45 +02:00
|
|
|
typedef struct
|
|
|
|
{
|
2023-02-14 16:29:18 +01:00
|
|
|
int32_t numskins;
|
2018-04-13 18:23:45 +02:00
|
|
|
} daliasskingroup_t;
|
|
|
|
|
2023-02-14 16:29:18 +01:00
|
|
|
STATIC_ASSERT( sizeof( daliasskingroup_t ) == 4, "invalid daliasskingroup_t size" );
|
|
|
|
|
2018-04-13 18:23:45 +02:00
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
float interval;
|
|
|
|
} daliasinterval_t;
|
|
|
|
|
2023-02-14 16:29:18 +01:00
|
|
|
STATIC_ASSERT( sizeof( daliasinterval_t ) == 4, "invalid daliasinterval_t size" );
|
|
|
|
|
2018-04-13 18:23:45 +02:00
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
float interval;
|
|
|
|
} daliasskininterval_t;
|
|
|
|
|
2023-02-14 16:29:18 +01:00
|
|
|
STATIC_ASSERT( sizeof( daliasskininterval_t ) == 4, "invalid daliasskininterval_t size" );
|
|
|
|
|
2018-04-13 18:23:45 +02:00
|
|
|
typedef struct
|
|
|
|
{
|
2023-02-14 16:29:18 +01:00
|
|
|
uint32_t type; // was aliasframetype_t
|
2018-04-13 18:23:45 +02:00
|
|
|
} daliasframetype_t;
|
|
|
|
|
2023-02-14 16:29:18 +01:00
|
|
|
STATIC_ASSERT( sizeof( daliasframetype_t ) == 4, "invalid daliasframetype_t size" );
|
|
|
|
|
2018-04-13 18:23:45 +02:00
|
|
|
typedef struct
|
|
|
|
{
|
2023-02-14 16:29:18 +01:00
|
|
|
uint32_t type; // was aliasskintype_t
|
2018-04-13 18:23:45 +02:00
|
|
|
} daliasskintype_t;
|
|
|
|
|
2023-02-14 16:29:18 +01:00
|
|
|
STATIC_ASSERT( sizeof( daliasskintype_t ) == 4, "invalid daliasskintype_t size" );
|
|
|
|
|
2019-10-27 20:26:57 +01:00
|
|
|
#endif//ALIAS_H
|