|
|
|
/***
|
|
|
|
*
|
|
|
|
* 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
|
|
|
|
|
|
|
|
/*
|
|
|
|
==============================================================================
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
// must match definition in alias.h
|
|
|
|
#ifndef SYNCTYPE_T
|
|
|
|
#define SYNCTYPE_T
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
ST_SYNC = 0,
|
|
|
|
ST_RAND
|
|
|
|
} synctype_t;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
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
|
|
|
|
{
|
|
|
|
int ident; // LittleLong 'ISPR'
|
|
|
|
int version; // current version 2
|
|
|
|
} dsprite_t;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
int ident; // LittleLong 'ISPR'
|
|
|
|
int version; // current version 2
|
|
|
|
int type; // camera align
|
|
|
|
float boundingradius; // quick face culling
|
|
|
|
int bounds[2]; // mins\maxs
|
|
|
|
int numframes; // including groups
|
|
|
|
float beamlength; // ???
|
|
|
|
synctype_t synctype; // animation synctype
|
|
|
|
} dsprite_q1_t;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
int ident; // LittleLong 'ISPR'
|
|
|
|
int version; // current version 2
|
|
|
|
angletype_t type; // camera align
|
|
|
|
drawtype_t texFormat; // rendering mode
|
|
|
|
int boundingradius; // quick face culling
|
|
|
|
int bounds[2]; // mins\maxs
|
|
|
|
int numframes; // including groups
|
|
|
|
facetype_t facetype; // cullface (Xash3D ext)
|
|
|
|
synctype_t synctype; // animation synctype
|
|
|
|
} dsprite_hl_t;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
int origin[2];
|
|
|
|
int width;
|
|
|
|
int height;
|
|
|
|
} dspriteframe_t;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
int numframes;
|
|
|
|
} dspritegroup_t;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
float interval;
|
|
|
|
} dspriteinterval_t;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
frametype_t type;
|
|
|
|
} dframetype_t;
|
|
|
|
|
|
|
|
#endif//SPRITE_H
|