You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
3.3 KiB
136 lines
3.3 KiB
/*** |
|
* |
|
* Copyright (c) 1996-2002, Valve LLC. All rights reserved. |
|
* |
|
* This product contains software technology licensed from Id |
|
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc. |
|
* 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 SPRITE_H |
|
#define SPRITE_H |
|
|
|
#include "build.h" |
|
#include STDINT_H |
|
#include "synctype.h" |
|
|
|
/* |
|
============================================================================== |
|
|
|
SPRITE MODELS |
|
|
|
.spr extended version (Half-Life compatible sprites with some Xash3D extensions) |
|
============================================================================== |
|
*/ |
|
|
|
#define IDSPRITEHEADER (('P'<<24)+('S'<<16)+('D'<<8)+'I') // little-endian "IDSP" |
|
|
|
#define SPRITE_VERSION_Q1 1 // Quake sprites |
|
#define SPRITE_VERSION_HL 2 // Half-Life sprites |
|
#define SPRITE_VERSION_32 32 // Captain Obvious mode on |
|
|
|
typedef enum |
|
{ |
|
FRAME_SINGLE = 0, |
|
FRAME_GROUP, |
|
FRAME_ANGLED // Xash3D ext |
|
} frametype_t; |
|
|
|
typedef enum |
|
{ |
|
SPR_NORMAL = 0, |
|
SPR_ADDITIVE, |
|
SPR_INDEXALPHA, |
|
SPR_ALPHTEST, |
|
} drawtype_t; |
|
|
|
typedef enum |
|
{ |
|
SPR_FWD_PARALLEL_UPRIGHT = 0, |
|
SPR_FACING_UPRIGHT, |
|
SPR_FWD_PARALLEL, |
|
SPR_ORIENTED, |
|
SPR_FWD_PARALLEL_ORIENTED, |
|
} angletype_t; |
|
|
|
typedef enum |
|
{ |
|
SPR_CULL_FRONT = 0, // oriented sprite will be draw with one face |
|
SPR_CULL_NONE, // oriented sprite will be draw back face too |
|
} facetype_t; |
|
|
|
// generic helper |
|
typedef struct |
|
{ |
|
int32_t ident; // LittleLong 'ISPR' |
|
int32_t version; // current version 2 |
|
} dsprite_t; |
|
|
|
STATIC_ASSERT( sizeof( dsprite_t ) == 8, "invalid dsprite_t size" ); |
|
|
|
typedef struct |
|
{ |
|
int32_t ident; // LittleLong 'ISPR' |
|
int32_t version; // current version 2 |
|
int32_t type; // camera align |
|
float boundingradius; // quick face culling |
|
int32_t bounds[2]; // mins\maxs |
|
int32_t numframes; // including groups |
|
float beamlength; // ??? |
|
uint32_t synctype; // animation synctype, was synctype_t |
|
} dsprite_q1_t; |
|
|
|
STATIC_ASSERT( sizeof( dsprite_q1_t ) == 36, "invalid dsprite_q1_t size" ); |
|
|
|
typedef struct |
|
{ |
|
int32_t ident; // LittleLong 'ISPR' |
|
int32_t version; // current version 2 |
|
uint32_t type; // camera align, was angletype_t |
|
uint32_t texFormat; // rendering mode, was drawtype_t |
|
int32_t boundingradius; // quick face culling |
|
int32_t bounds[2]; // mins\maxs |
|
int32_t numframes; // including groups |
|
uint32_t facetype; // cullface (Xash3D ext), was facetype_t |
|
uint32_t synctype; // animation synctype, was synctype_t |
|
} dsprite_hl_t; |
|
|
|
STATIC_ASSERT( sizeof( dsprite_hl_t ) == 40, "invalid dsprite_hl_t size" ); |
|
|
|
typedef struct |
|
{ |
|
int32_t origin[2]; |
|
int32_t width; |
|
int32_t height; |
|
} dspriteframe_t; |
|
|
|
STATIC_ASSERT( sizeof( dspriteframe_t ) == 16, "invalid dspriteframe_t size" ); |
|
|
|
typedef struct |
|
{ |
|
int32_t numframes; |
|
} dspritegroup_t; |
|
|
|
STATIC_ASSERT( sizeof( dspritegroup_t ) == 4, "invalid dspritegroup_t size" ); |
|
|
|
typedef struct |
|
{ |
|
float interval; |
|
} dspriteinterval_t; |
|
|
|
STATIC_ASSERT( sizeof( dspriteinterval_t ) == 4, "invalid dspriteinterval_t size" ); |
|
|
|
typedef struct |
|
{ |
|
uint32_t type; // was frametype_t |
|
} dframetype_t; |
|
|
|
STATIC_ASSERT( sizeof( dframetype_t ) == 4, "invalid dframetype_t size" ); |
|
|
|
#endif//SPRITE_H
|
|
|