29 Sep 2007
This commit is contained in:
parent
c67bfbc6cf
commit
ae2afd01af
|
@ -9,6 +9,8 @@ SV_ClipToLinks SV_ClipMoveToEntities
|
|||
Глобальные задачи:
|
||||
1. Полная отладка PRVM
|
||||
2. Пофиксить зависание bsplib при работе
|
||||
3. Отладка и имплементация физики (physic.dll)
|
||||
|
||||
|
||||
Текущие задачи:
|
||||
1. Перенести основные части gamed.dll в движок OK
|
||||
|
@ -41,6 +43,8 @@ SV_ClipToLinks SV_ClipMoveToEntities
|
|||
//==================================================
|
||||
// то, что уже готово
|
||||
//==================================================
|
||||
+Добавлены func_areaportal
|
||||
+исправлен overflow при компиляции в release
|
||||
+подключена система использования gl_ext при загрузке DDS Текстур по двум критериям(наличие расширения и наличие Pow2)
|
||||
-убран последний DDS FPU формат
|
||||
+исправлен баг с загрузкой BGRA_32 текстур
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
|
||||
#include "platform.h"
|
||||
#include <basemath.h>
|
||||
#include <bspmodel.h>
|
||||
#include <materials.h>
|
||||
#include "utils.h"
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
#include "platform.h"
|
||||
#include <basemath.h>
|
||||
#include "utils.h"
|
||||
#include "studio.h"
|
||||
|
||||
#define FILEBUFFER (2 * 1024 * 1024)
|
||||
#define MAXTRIANGLES 2048 //TODO: tune this
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#include "platform.h"
|
||||
#include <basemath.h>
|
||||
#include "utils.h"
|
||||
#include <sprite.h>
|
||||
|
||||
#define MAX_BUFFER_SIZE ((sizeof(frames) * MAX_FRAMES) + (MAX_FRAME_DIM * 2 * MAX_FRAMES))
|
||||
#define MAX_FRAMES 1024
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
//=======================================================================
|
||||
|
||||
#include "mdllib.h"
|
||||
#include "activity.h"
|
||||
#include "activitymap.h"
|
||||
|
||||
int used[MAXSTUDIOTRIANGLES]; // the command list holds counts and s/t values
|
||||
short commands[MAXSTUDIOTRIANGLES * 13]; //that are valid for every frame
|
||||
|
|
|
@ -55,5 +55,5 @@ if exist server.dat move server.dat D:\Xash3D\xash\server.dat
|
|||
echo Build succeeded!
|
||||
echo Please wait. Xash is now loading
|
||||
cd D:\Xash3D\
|
||||
xash.exe +map skytest -log -debug -dev 4
|
||||
xash.exe +map qctest -log -debug
|
||||
:done
|
|
@ -20,7 +20,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
// cl_newfx.c -- MORE entity effects parsing and management
|
||||
|
||||
#include "client.h"
|
||||
#include "studio.h"
|
||||
|
||||
extern cparticle_t *active_particles, *free_particles;
|
||||
extern cparticle_t particles[MAX_PARTICLES];
|
||||
|
|
|
@ -56,10 +56,12 @@ typedef struct sizebuf_s
|
|||
int errorcount; // cause by errors
|
||||
} sizebuf_t;
|
||||
|
||||
#define SZ_GetSpace(buf, len) _SZ_GetSpace(buf, len, __FILE__, __LINE__ )
|
||||
#define SZ_Write(buf, data, len) _SZ_Write(buf, data, len, __FILE__, __LINE__ )
|
||||
void SZ_Init (sizebuf_t *buf, byte *data, int length);
|
||||
void SZ_Clear (sizebuf_t *buf);
|
||||
void *SZ_GetSpace (sizebuf_t *buf, int length);
|
||||
void SZ_Write (sizebuf_t *buf, void *data, int length);
|
||||
void *_SZ_GetSpace (sizebuf_t *buf, int length, const char *filename, int fileline);
|
||||
void _SZ_Write (sizebuf_t *buf, void *data, int length, const char *filename, int fileline);
|
||||
void SZ_Print (sizebuf_t *buf, char *data); // strcats onto the sizebuf
|
||||
|
||||
//============================================================================
|
||||
|
|
|
@ -25,7 +25,7 @@ void _MSG_WriteChar (sizebuf_t *sb, int c, const char *filename, int fileline)
|
|||
if (c < -128 || c > 127)
|
||||
Msg("MSG_WriteChar: range error %d (called at %s:%i)\n", c, filename, fileline);
|
||||
|
||||
buf = SZ_GetSpace (sb, 1);
|
||||
buf = _SZ_GetSpace (sb, 1, filename, fileline );
|
||||
buf[0] = c;
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@ void _MSG_WriteByte (sizebuf_t *sb, int c, const char *filename, int fileline)
|
|||
if (c < 0 || c > 255)
|
||||
Msg("MSG_WriteByte: range error %d (called at %s:%i)\n", c, filename, fileline);
|
||||
|
||||
buf = SZ_GetSpace (sb, 1);
|
||||
buf = _SZ_GetSpace (sb, 1, filename, fileline);
|
||||
buf[0] = c;
|
||||
}
|
||||
|
||||
|
@ -47,7 +47,7 @@ void _MSG_WriteShort (sizebuf_t *sb, int c, const char *filename, int fileline)
|
|||
if (c < -32767 || c > 32767)
|
||||
Msg("MSG_WriteShort: range error %d (called at %s:%i)\n", c, filename, fileline);
|
||||
|
||||
buf = SZ_GetSpace (sb, 2);
|
||||
buf = _SZ_GetSpace (sb, 2, filename, fileline);
|
||||
buf[0] = c&0xff;
|
||||
buf[1] = c>>8;
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ void _MSG_WriteWord (sizebuf_t *sb, int c, const char *filename, int fileline)
|
|||
if (c < 0 || c > 65535)
|
||||
Msg("MSG_WriteWord: range error %d (called at %s:%i)\n", c, filename, fileline);
|
||||
|
||||
buf = SZ_GetSpace (sb, 2);
|
||||
buf = _SZ_GetSpace (sb, 2, filename, fileline);
|
||||
buf[0] = c&0xff;
|
||||
buf[1] = c>>8;
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ void _MSG_WriteLong (sizebuf_t *sb, int c, const char *filename, int fileline)
|
|||
{
|
||||
byte *buf;
|
||||
|
||||
buf = SZ_GetSpace (sb, 4);
|
||||
buf = _SZ_GetSpace (sb, 4, filename, fileline);
|
||||
buf[0] = (c>>0 ) & 0xff;
|
||||
buf[1] = (c>>8 ) & 0xff;
|
||||
buf[2] = (c>>16) & 0xff;
|
||||
|
@ -83,21 +83,20 @@ void _MSG_WriteFloat (sizebuf_t *sb, float f, const char *filename, int fileline
|
|||
int l;
|
||||
} dat;
|
||||
|
||||
|
||||
dat.f = f;
|
||||
dat.l = LittleLong (dat.l);
|
||||
SZ_Write (sb, &dat.l, 4);
|
||||
_SZ_Write (sb, &dat.l, 4, filename, fileline);
|
||||
}
|
||||
|
||||
void _MSG_WriteString (sizebuf_t *sb, char *s, const char *filename, int fileline)
|
||||
{
|
||||
if (!s || !*s) _MSG_WriteChar (sb, 0, filename, fileline );
|
||||
else SZ_Write (sb, s, strlen(s)+1);
|
||||
else _SZ_Write (sb, s, strlen(s)+1, filename, fileline);
|
||||
}
|
||||
|
||||
void _MSG_WriteUnterminatedString (sizebuf_t *sb, const char *s, const char *filename, int fileline)
|
||||
{
|
||||
if (s && *s) SZ_Write (sb, (byte *)s, (int)strlen(s));
|
||||
if (s && *s) _SZ_Write (sb, (byte *)s, (int)strlen(s), filename, fileline);
|
||||
}
|
||||
|
||||
void _MSG_WriteCoord (sizebuf_t *sb, float f, const char *filename, int fileline)
|
||||
|
@ -508,7 +507,7 @@ void SZ_Clear (sizebuf_t *buf)
|
|||
buf->overflowed = false;
|
||||
}
|
||||
|
||||
void *SZ_GetSpace (sizebuf_t *buf, int length)
|
||||
void *_SZ_GetSpace (sizebuf_t *buf, int length, const char *filename, int fileline )
|
||||
{
|
||||
void *data;
|
||||
|
||||
|
@ -517,7 +516,7 @@ void *SZ_GetSpace (sizebuf_t *buf, int length)
|
|||
if (length > buf->maxsize)
|
||||
Host_Error("SZ_GetSpace: length[%i] > buffer maxsize [%i]\n", length, buf->maxsize );
|
||||
|
||||
MsgWarn("SZ_GetSpace: overflow [cursize %d maxsize %d]\n", buf->cursize + length, buf->maxsize );
|
||||
MsgWarn("SZ_GetSpace: overflow [cursize %d maxsize %d], called at %s:%i\n", buf->cursize + length, buf->maxsize, filename, fileline );
|
||||
SZ_Clear (buf);
|
||||
buf->overflowed = true;
|
||||
}
|
||||
|
@ -527,9 +526,9 @@ void *SZ_GetSpace (sizebuf_t *buf, int length)
|
|||
return data;
|
||||
}
|
||||
|
||||
void SZ_Write (sizebuf_t *buf, void *data, int length)
|
||||
void _SZ_Write (sizebuf_t *buf, void *data, int length, const char *filename, int fileline)
|
||||
{
|
||||
Mem_Copy(SZ_GetSpace(buf, length), data, length);
|
||||
Mem_Copy(_SZ_GetSpace(buf, length, filename, fileline), data, length);
|
||||
}
|
||||
|
||||
void SZ_Print (sizebuf_t *buf, char *data)
|
||||
|
|
|
@ -262,10 +262,6 @@ SOURCE=.\server\sv_main.c
|
|||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\server\sv_phys.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\server\sv_physics.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
|
|
@ -19,9 +19,6 @@
|
|||
//register new types
|
||||
#include "basetypes.h"
|
||||
#include "basemath.h"
|
||||
#include "studio.h"
|
||||
#include "sprite.h"
|
||||
#include "bspmodel.h"
|
||||
#include <ref_system.h>
|
||||
#include "vprogs.h"
|
||||
#include "const.h"
|
||||
|
|
|
@ -242,7 +242,7 @@ void SV_PrepWorldFrame (void);
|
|||
void SV_Physics (edict_t *ent);
|
||||
void SV_DropToFloor (edict_t *ent);
|
||||
void SV_CheckGround (edict_t *ent);
|
||||
|
||||
bool SV_MoveStep (edict_t *ent, vec3_t move, bool relink);
|
||||
//
|
||||
// sv_send.c
|
||||
//
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#define AI_ACTOR (1<<10) // disable ai for actor
|
||||
#define AI_DRIVER (1<<11) // npc or player driving vehcicle or train
|
||||
#define AI_SPECTATOR (1<<12) // spectator mode for clients
|
||||
#define AI_WATERJUMP (1<<13) // npc or player take out of water
|
||||
|
||||
// edict->solid values
|
||||
typedef enum
|
||||
|
|
|
@ -40,7 +40,7 @@ void SV_UpdateEntityState( edict_t *ent)
|
|||
VectorCopy (ent->progs.sv->old_origin, ent->priv.sv->s.old_origin);
|
||||
|
||||
ent->priv.sv->s.modelindex = (int)ent->progs.sv->modelindex;
|
||||
ent->priv.sv->s.weaponmodel = SV_ModelIndex(PRVM_GetString(ent->progs.sv->weaponmodel));
|
||||
ent->priv.sv->s.weaponmodel = 0; // attached weaponmodel
|
||||
|
||||
ent->priv.sv->s.skin = (short)ent->progs.sv->skin; // studio model skin
|
||||
ent->priv.sv->s.body = (byte)ent->progs.sv->body; // studio model submodel
|
||||
|
|
|
@ -91,7 +91,7 @@ void SetMinMaxSize (edict_t *e, float *min, float *max, bool rotate)
|
|||
//test for stats
|
||||
void PF_SetStats( void )
|
||||
{
|
||||
edict_t *e;
|
||||
edict_t *e;
|
||||
int stat_num;
|
||||
const char *string;
|
||||
short value;
|
||||
|
@ -195,6 +195,15 @@ void PF_setmodel( void )
|
|||
SV_SetModel( e, PRVM_G_STRING(OFS_PARM1) );
|
||||
}
|
||||
|
||||
void PF_areaportalstate( void )
|
||||
{
|
||||
int portalnum = (int)PRVM_G_FLOAT(OFS_PARM0);
|
||||
bool state = (bool)PRVM_G_FLOAT(OFS_PARM1);
|
||||
|
||||
CM_SetAreaPortalState( portalnum, state );
|
||||
Msg("protal %d, state %s\n", portalnum, state ? "open" : "close" );
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
PF_sprint
|
||||
|
@ -337,7 +346,7 @@ void PF_sound (void)
|
|||
|
||||
if (volume < 0 || volume > 255)
|
||||
{
|
||||
VM_Warning("SV_StartSound: volume must be in range 0-1\n");
|
||||
VM_Warning("SV_StartSound: volume must be in range 0 - 255\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -354,7 +363,7 @@ void PF_sound (void)
|
|||
}
|
||||
|
||||
sound_idx = SV_SoundIndex( sample );
|
||||
SV_StartSound (NULL, entity, channel, sound_idx, volume, attenuation, 0 );
|
||||
SV_StartSound (NULL, entity, channel, sound_idx, volume / 255.0f, attenuation, 0 );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -682,47 +691,28 @@ void PF_findradius (void)
|
|||
{
|
||||
edict_t *ent, *chain;
|
||||
vec_t radius, radius2;
|
||||
vec3_t org, eorg, mins, maxs;
|
||||
vec3_t org, eorg;
|
||||
int i;
|
||||
int numtouchedicts;
|
||||
edict_t *touchedicts[MAX_EDICTS];
|
||||
|
||||
chain = (edict_t *)prog->edicts;
|
||||
|
||||
VectorCopy(PRVM_G_VECTOR(OFS_PARM0), org);
|
||||
radius = PRVM_G_FLOAT(OFS_PARM1);
|
||||
radius2 = radius * radius;
|
||||
|
||||
mins[0] = org[0] - (radius + 1);
|
||||
mins[1] = org[1] - (radius + 1);
|
||||
mins[2] = org[2] - (radius + 1);
|
||||
maxs[0] = org[0] + (radius + 1);
|
||||
maxs[1] = org[1] + (radius + 1);
|
||||
maxs[2] = org[2] + (radius + 1);
|
||||
|
||||
numtouchedicts = 0;//SV_EntitiesInBox(mins, maxs, MAX_EDICTS, touchedicts);
|
||||
|
||||
if (numtouchedicts > MAX_EDICTS)
|
||||
ent = prog->edicts;
|
||||
for (i = 1; i < prog->num_edicts ; i++, ent = PRVM_NEXT_EDICT(ent))
|
||||
{
|
||||
// this never happens
|
||||
MsgWarn("SV_EntitiesInBox returned %i edicts, max was %i\n", numtouchedicts, MAX_EDICTS);
|
||||
numtouchedicts = MAX_EDICTS;
|
||||
}
|
||||
for (i = 0; i < numtouchedicts; i++)
|
||||
{
|
||||
ent = touchedicts[i];
|
||||
prog->xfunction->builtinsprofile++;
|
||||
|
||||
if (ent->progs.sv->solid == SOLID_NOT) continue;
|
||||
if (ent->priv.sv->free) continue;
|
||||
if (ent->progs.sv->solid == SOLID_NOT) continue;
|
||||
VectorSubtract(org, ent->progs.sv->origin, eorg);
|
||||
VectorMAMAM(1, eorg, 0.5f, ent->progs.sv->mins, 0.5f, ent->progs.sv->maxs, eorg);
|
||||
|
||||
if (DotProduct(eorg, eorg) < radius2)
|
||||
{
|
||||
ent->progs.sv->chain = PRVM_EDICT_TO_PROG(chain);
|
||||
chain = ent;
|
||||
}
|
||||
}
|
||||
|
||||
VM_RETURN_EDICT(chain);
|
||||
}
|
||||
|
||||
|
@ -756,6 +746,7 @@ void PF_walkmove (void)
|
|||
{
|
||||
edict_t *ent;
|
||||
float yaw, dist;
|
||||
vec3_t move;
|
||||
mfunction_t *oldf;
|
||||
int oldpev;
|
||||
|
||||
|
@ -780,11 +771,17 @@ void PF_walkmove (void)
|
|||
if (!((int)ent->progs.sv->aiflags & (AI_ONGROUND|AI_FLY|AI_SWIM)))
|
||||
return;
|
||||
|
||||
yaw = yaw*M_PI*2 / 360;
|
||||
|
||||
move[0] = cos(yaw)*dist;
|
||||
move[1] = sin(yaw)*dist;
|
||||
move[2] = 0;
|
||||
|
||||
// save program state, because SV_movestep may call other progs
|
||||
oldf = prog->xfunction;
|
||||
oldpev = prog->globals.server->pev;
|
||||
|
||||
PRVM_G_FLOAT(OFS_RETURN) = SV_WalkMove(ent, yaw, dist);
|
||||
PRVM_G_FLOAT(OFS_RETURN) = SV_MoveStep(ent, move, true);
|
||||
|
||||
// restore program state
|
||||
prog->xfunction = oldf;
|
||||
|
@ -801,6 +798,8 @@ void() droptofloor
|
|||
void PF_droptofloor (void)
|
||||
{
|
||||
edict_t *ent;
|
||||
vec3_t end;
|
||||
trace_t trace;
|
||||
|
||||
// assume failure if it returns early
|
||||
PRVM_G_FLOAT(OFS_RETURN) = 0;
|
||||
|
@ -817,10 +816,25 @@ void PF_droptofloor (void)
|
|||
return;
|
||||
}
|
||||
|
||||
SV_DropToFloor( ent );
|
||||
VectorCopy (ent->progs.sv->origin, end);
|
||||
end[2] -= 256;
|
||||
trace = SV_Trace(ent->progs.sv->origin, ent->progs.sv->mins, ent->progs.sv->maxs, end, ent, MASK_SOLID );
|
||||
|
||||
ent->progs.sv->aiflags = (int)ent->progs.sv->aiflags | AI_ONGROUND;
|
||||
PRVM_G_FLOAT(OFS_RETURN) = 1;
|
||||
if (trace.startsolid)
|
||||
{
|
||||
VM_Warning("droptofloor: %s startsolid at %g %g %g\n", PRVM_GetString(ent->progs.sv->classname), ent->progs.sv->origin[0], ent->progs.sv->origin[1], ent->progs.sv->origin[2]);
|
||||
SV_FreeEdict (ent);
|
||||
return;
|
||||
}
|
||||
|
||||
if (trace.fraction != 1)
|
||||
{
|
||||
VectorCopy (trace.endpos, ent->progs.sv->origin);
|
||||
SV_LinkEdict (ent);
|
||||
ent->progs.sv->aiflags = (int)ent->progs.sv->aiflags | AI_ONGROUND;
|
||||
ent->progs.sv->groundentity = PRVM_EDICT_TO_PROG(trace.ent);
|
||||
PRVM_G_FLOAT(OFS_RETURN) = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1368,7 +1382,7 @@ VM_traceon, // #29 void() traceon
|
|||
VM_traceoff, // #30 void() traceoff
|
||||
VM_eprint, // #31 void(entity e) eprint
|
||||
PF_walkmove, // #32 float(float yaw, float dist) walkmove
|
||||
NULL, // #33
|
||||
PF_areaportalstate, // #33
|
||||
PF_droptofloor, // #34 float() droptofloor
|
||||
PF_lightstyle, // #35 void(float style, string value) lightstyle
|
||||
VM_rint, // #36 float(float v) rint
|
||||
|
|
|
@ -137,7 +137,7 @@ SV_FindIndex
|
|||
*/
|
||||
int SV_FindIndex (const char *name, int start, int end, bool create)
|
||||
{
|
||||
int i;
|
||||
int i = 0;
|
||||
|
||||
if (!name || !name[0]) return 0;
|
||||
|
||||
|
@ -148,7 +148,7 @@ int SV_FindIndex (const char *name, int start, int end, bool create)
|
|||
|
||||
if (i == end)
|
||||
{
|
||||
MsgWarn ("SV_FindIndex: %d out range [%d - %d]\n", start, end );
|
||||
MsgWarn ("SV_FindIndex: %d out of range [%d - %d]\n", start, end );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -160,7 +160,7 @@ int SV_FindIndex (const char *name, int start, int end, bool create)
|
|||
// send the update to everyone
|
||||
SZ_Clear (&sv.multicast);
|
||||
MSG_Begin(svc_configstring);
|
||||
MSG_WriteShort (&sv.multicast, start+i);
|
||||
MSG_WriteShort (&sv.multicast, start + i);
|
||||
MSG_WriteString (&sv.multicast, (char *)name);
|
||||
MSG_Send(MSG_ALL_R, vec3_origin, NULL );
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -232,8 +232,8 @@ void _MSG_Send (msgtype_t to, vec3_t origin, edict_t *ent, const char *filename,
|
|||
if ( mask && (!(mask[cluster>>3] & (1<<(cluster&7))))) continue;
|
||||
}
|
||||
|
||||
if (reliable) SZ_Write (&client->netchan.message, sv.multicast.data, sv.multicast.cursize);
|
||||
else SZ_Write (&client->datagram, sv.multicast.data, sv.multicast.cursize);
|
||||
if (reliable) _SZ_Write (&client->netchan.message, sv.multicast.data, sv.multicast.cursize, filename, fileline);
|
||||
else _SZ_Write (&client->datagram, sv.multicast.data, sv.multicast.cursize, filename, fileline);
|
||||
}
|
||||
SZ_Clear (&sv.multicast);
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ void SV_PutClientInServer (edict_t *ent)
|
|||
client->ps.fov = 90;
|
||||
|
||||
client->ps.fov = bound(1, client->ps.fov, 160);
|
||||
client->ps.gunindex = SV_ModelIndex("models/weapons/v_eagle.mdl");
|
||||
client->ps.gunindex = SV_ModelIndex(PRVM_GetString(ent->progs.sv->weaponmodel));
|
||||
|
||||
// clear entity state values
|
||||
ent->progs.sv->effects = 0;
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
void SP_info_player_start (edict_t *ent){}
|
||||
void SP_info_player_deathmatch (edict_t *ent){}
|
||||
void SP_worldspawn (edict_t *ent)
|
||||
{
|
||||
// help icon for statusbar
|
||||
SV_ImageIndex ("i_help");
|
||||
SV_ImageIndex ("help");
|
||||
SV_ImageIndex ("field_3");
|
||||
}
|
||||
|
||||
void SP_func_wall(edict_t *self)
|
||||
{
|
||||
self->priv.sv->solid = SOLID_BSP;
|
||||
PF_setmodel (self, self->priv.sv->model);
|
||||
SV_LinkEdict(self);
|
||||
}
|
|
@ -502,7 +502,7 @@ void VID_InitRender( void )
|
|||
CreateRender = (void *)render_dll.main;
|
||||
re = CreateRender( &ri );
|
||||
|
||||
if(!re->Init( global_hInstance, MainWndProc )) Sys_Error("can't init render.dll\n");
|
||||
if(!re->Init( global_hInstance, MainWndProc )) Sys_Error("VID_InitRender: can't init render.dll\nUpdate your opengl drivers\n");
|
||||
|
||||
reflib_active = true;
|
||||
}
|
||||
|
|
|
@ -1,135 +0,0 @@
|
|||
/***
|
||||
*
|
||||
* 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 ACTIVITY_H
|
||||
#define ACTIVITY_H
|
||||
|
||||
|
||||
typedef enum {
|
||||
ACT_RESET = 0, // Set m_Activity to this invalid value to force a reset to m_IdealActivity
|
||||
ACT_IDLE = 1,
|
||||
ACT_GUARD,
|
||||
ACT_WALK,
|
||||
ACT_RUN,
|
||||
ACT_FLY, // Fly (and flap if appropriate)
|
||||
ACT_SWIM,
|
||||
ACT_HOP, // vertical jump
|
||||
ACT_LEAP, // long forward jump
|
||||
ACT_FALL,
|
||||
ACT_LAND,
|
||||
ACT_STRAFE_LEFT,
|
||||
ACT_STRAFE_RIGHT,
|
||||
ACT_ROLL_LEFT, // tuck and roll, left
|
||||
ACT_ROLL_RIGHT, // tuck and roll, right
|
||||
ACT_TURN_LEFT, // turn quickly left (stationary)
|
||||
ACT_TURN_RIGHT, // turn quickly right (stationary)
|
||||
ACT_CROUCH, // the act of crouching down from a standing position
|
||||
ACT_CROUCHIDLE, // holding body in crouched position (loops)
|
||||
ACT_STAND, // the act of standing from a crouched position
|
||||
ACT_USE,
|
||||
ACT_SIGNAL1,
|
||||
ACT_SIGNAL2,
|
||||
ACT_SIGNAL3,
|
||||
ACT_TWITCH,
|
||||
ACT_COWER,
|
||||
ACT_SMALL_FLINCH,
|
||||
ACT_BIG_FLINCH,
|
||||
ACT_RANGE_ATTACK1,
|
||||
ACT_RANGE_ATTACK2,
|
||||
ACT_MELEE_ATTACK1,
|
||||
ACT_MELEE_ATTACK2,
|
||||
ACT_RELOAD,
|
||||
ACT_ARM, // pull out gun, for instance
|
||||
ACT_DISARM, // reholster gun
|
||||
ACT_EAT, // monster chowing on a large food item (loop)
|
||||
ACT_DIESIMPLE,
|
||||
ACT_DIEBACKWARD,
|
||||
ACT_DIEFORWARD,
|
||||
ACT_DIEVIOLENT,
|
||||
ACT_BARNACLE_HIT, // barnacle tongue hits a monster
|
||||
ACT_BARNACLE_PULL, // barnacle is lifting the monster ( loop )
|
||||
ACT_BARNACLE_CHOMP, // barnacle latches on to the monster
|
||||
ACT_BARNACLE_CHEW, // barnacle is holding the monster in its mouth ( loop )
|
||||
ACT_SLEEP,
|
||||
ACT_INSPECT_FLOOR, // for active idles, look at something on or near the floor
|
||||
ACT_INSPECT_WALL, // for active idles, look at something directly ahead of you ( doesn't HAVE to be a wall or on a wall )
|
||||
ACT_IDLE_ANGRY, // alternate idle animation in which the monster is clearly agitated. (loop)
|
||||
ACT_WALK_HURT, // limp (loop)
|
||||
ACT_RUN_HURT, // limp (loop)
|
||||
ACT_HOVER, // Idle while in flight
|
||||
ACT_GLIDE, // Fly (don't flap)
|
||||
ACT_FLY_LEFT, // Turn left in flight
|
||||
ACT_FLY_RIGHT, // Turn right in flight
|
||||
ACT_DETECT_SCENT, // this means the monster smells a scent carried by the air
|
||||
ACT_SNIFF, // this is the act of actually sniffing an item in front of the monster
|
||||
ACT_BITE, // some large monsters can eat small things in one bite. This plays one time, EAT loops.
|
||||
ACT_THREAT_DISPLAY, // without attacking, monster demonstrates that it is angry. (Yell, stick out chest, etc )
|
||||
ACT_FEAR_DISPLAY, // monster just saw something that it is afraid of
|
||||
ACT_EXCITED, // for some reason, monster is excited. Sees something he really likes to eat, or whatever.
|
||||
ACT_SPECIAL_ATTACK1, // very monster specific special attacks.
|
||||
ACT_SPECIAL_ATTACK2,
|
||||
ACT_COMBAT_IDLE, // agitated idle.
|
||||
ACT_WALK_SCARED,
|
||||
ACT_RUN_SCARED,
|
||||
ACT_VICTORY_DANCE, // killed a player, do a victory dance.
|
||||
ACT_DIE_HEADSHOT, // die, hit in head.
|
||||
ACT_DIE_CHESTSHOT, // die, hit in chest
|
||||
ACT_DIE_GUTSHOT, // die, hit in gut
|
||||
ACT_DIE_BACKSHOT, // die, hit in back
|
||||
ACT_FLINCH_HEAD,
|
||||
ACT_FLINCH_CHEST,
|
||||
ACT_FLINCH_STOMACH,
|
||||
ACT_FLINCH_LEFTARM,
|
||||
ACT_FLINCH_RIGHTARM,
|
||||
ACT_FLINCH_LEFTLEG,
|
||||
ACT_FLINCH_RIGHTLEG,
|
||||
ACT_VM_NONE, //weapon viewmodel animations
|
||||
ACT_VM_DEPLOY, //deploy
|
||||
ACT_VM_DEPLOY_EMPTY, //deploy empty weapon
|
||||
ACT_VM_HOLSTER, //holster empty weapon
|
||||
ACT_VM_HOLSTER_EMPTY,
|
||||
ACT_VM_IDLE1,
|
||||
ACT_VM_IDLE2,
|
||||
ACT_VM_IDLE3,
|
||||
ACT_VM_RANGE_ATTACK1,
|
||||
ACT_VM_RANGE_ATTACK2,
|
||||
ACT_VM_RANGE_ATTACK3,
|
||||
ACT_VM_MELEE_ATTACK1,
|
||||
ACT_VM_MELEE_ATTACK2,
|
||||
ACT_VM_MELEE_ATTACK3,
|
||||
ACT_VM_SHOOT_EMPTY,
|
||||
ACT_VM_START_RELOAD,
|
||||
ACT_VM_RELOAD,
|
||||
ACT_VM_RELOAD_EMPTY,
|
||||
ACT_VM_TURNON,
|
||||
ACT_VM_TURNOFF,
|
||||
ACT_VM_PUMP, //user animations
|
||||
ACT_VM_PUMP_EMPTY,
|
||||
ACT_VM_START_CHARGE,
|
||||
ACT_VM_CHARGE,
|
||||
ACT_VM_OVERLOAD,
|
||||
ACT_VM_IDLE_EMPTY,
|
||||
} Activity;
|
||||
|
||||
|
||||
typedef struct {
|
||||
int type;
|
||||
char *name;
|
||||
} activity_map_t;
|
||||
|
||||
extern activity_map_t activity_map[];
|
||||
|
||||
|
||||
#endif //ACTIVITY_H
|
|
@ -1,127 +0,0 @@
|
|||
/***
|
||||
*
|
||||
* 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 ACTIVITYMAP_H
|
||||
#define ACTIVITYMAP_H
|
||||
|
||||
#define _A( a ) { a, #a }
|
||||
|
||||
activity_map_t activity_map[] =
|
||||
{
|
||||
_A( ACT_IDLE ),
|
||||
_A( ACT_GUARD ),
|
||||
_A( ACT_WALK ),
|
||||
_A( ACT_RUN ),
|
||||
_A( ACT_FLY ),
|
||||
_A( ACT_SWIM ),
|
||||
_A( ACT_HOP ),
|
||||
_A( ACT_LEAP ),
|
||||
_A( ACT_FALL ),
|
||||
_A( ACT_LAND ),
|
||||
_A( ACT_STRAFE_LEFT ),
|
||||
_A( ACT_STRAFE_RIGHT ),
|
||||
_A( ACT_ROLL_LEFT ),
|
||||
_A( ACT_ROLL_RIGHT ),
|
||||
_A( ACT_TURN_LEFT ),
|
||||
_A( ACT_TURN_RIGHT ),
|
||||
_A( ACT_CROUCH ),
|
||||
_A( ACT_CROUCHIDLE ),
|
||||
_A( ACT_STAND ),
|
||||
_A( ACT_USE ),
|
||||
_A( ACT_SIGNAL1 ),
|
||||
_A( ACT_SIGNAL2 ),
|
||||
_A( ACT_SIGNAL3 ),
|
||||
_A( ACT_TWITCH ),
|
||||
_A( ACT_COWER ),
|
||||
_A( ACT_SMALL_FLINCH ),
|
||||
_A( ACT_BIG_FLINCH ),
|
||||
_A( ACT_RANGE_ATTACK1 ),
|
||||
_A( ACT_RANGE_ATTACK2 ),
|
||||
_A( ACT_MELEE_ATTACK1 ),
|
||||
_A( ACT_MELEE_ATTACK2 ),
|
||||
_A( ACT_RELOAD ),
|
||||
_A( ACT_ARM ),
|
||||
_A( ACT_DISARM ),
|
||||
_A( ACT_EAT ),
|
||||
_A( ACT_DIESIMPLE ),
|
||||
_A( ACT_DIEBACKWARD ),
|
||||
_A( ACT_DIEFORWARD ),
|
||||
_A( ACT_DIEVIOLENT ),
|
||||
_A( ACT_BARNACLE_HIT ),
|
||||
_A( ACT_BARNACLE_PULL ),
|
||||
_A( ACT_BARNACLE_CHOMP ),
|
||||
_A( ACT_BARNACLE_CHEW ),
|
||||
_A( ACT_SLEEP ),
|
||||
_A( ACT_INSPECT_FLOOR ),
|
||||
_A( ACT_INSPECT_WALL ),
|
||||
_A( ACT_IDLE_ANGRY ),
|
||||
_A( ACT_WALK_HURT ),
|
||||
_A( ACT_RUN_HURT ),
|
||||
_A( ACT_HOVER ),
|
||||
_A( ACT_GLIDE ),
|
||||
_A( ACT_FLY_LEFT ),
|
||||
_A( ACT_FLY_RIGHT ),
|
||||
_A( ACT_DETECT_SCENT ),
|
||||
_A( ACT_SNIFF ),
|
||||
_A( ACT_BITE ),
|
||||
_A( ACT_THREAT_DISPLAY ),
|
||||
_A( ACT_FEAR_DISPLAY ),
|
||||
_A( ACT_EXCITED ),
|
||||
_A( ACT_SPECIAL_ATTACK1 ),
|
||||
_A( ACT_SPECIAL_ATTACK2 ),
|
||||
_A( ACT_COMBAT_IDLE ),
|
||||
_A( ACT_WALK_SCARED ),
|
||||
_A( ACT_RUN_SCARED ),
|
||||
_A( ACT_VICTORY_DANCE ),
|
||||
_A( ACT_DIE_HEADSHOT ),
|
||||
_A( ACT_DIE_CHESTSHOT ),
|
||||
_A( ACT_DIE_GUTSHOT ),
|
||||
_A( ACT_DIE_BACKSHOT ),
|
||||
_A( ACT_FLINCH_HEAD ),
|
||||
_A( ACT_FLINCH_CHEST ),
|
||||
_A( ACT_FLINCH_STOMACH ),
|
||||
_A( ACT_FLINCH_LEFTARM ),
|
||||
_A( ACT_FLINCH_RIGHTARM ),
|
||||
_A( ACT_FLINCH_LEFTLEG ),
|
||||
_A( ACT_FLINCH_RIGHTLEG ),
|
||||
_A( ACT_VM_NONE), //invalid animation
|
||||
_A( ACT_VM_DEPLOY), //deploy
|
||||
_A( ACT_VM_DEPLOY_EMPTY), //deploy empty weapon
|
||||
_A( ACT_VM_HOLSTER), //holster empty weapon
|
||||
_A( ACT_VM_HOLSTER_EMPTY),
|
||||
_A( ACT_VM_IDLE1),
|
||||
_A( ACT_VM_IDLE2),
|
||||
_A( ACT_VM_IDLE3),
|
||||
_A( ACT_VM_RANGE_ATTACK1),
|
||||
_A( ACT_VM_RANGE_ATTACK2),
|
||||
_A( ACT_VM_RANGE_ATTACK3),
|
||||
_A( ACT_VM_MELEE_ATTACK1),
|
||||
_A( ACT_VM_MELEE_ATTACK2),
|
||||
_A( ACT_VM_MELEE_ATTACK3),
|
||||
_A( ACT_VM_SHOOT_EMPTY),
|
||||
_A( ACT_VM_START_RELOAD),
|
||||
_A( ACT_VM_RELOAD),
|
||||
_A( ACT_VM_RELOAD_EMPTY),
|
||||
_A( ACT_VM_TURNON),
|
||||
_A( ACT_VM_TURNOFF),
|
||||
_A( ACT_VM_PUMP), //user animations
|
||||
_A( ACT_VM_PUMP_EMPTY),
|
||||
_A( ACT_VM_START_CHARGE),
|
||||
_A( ACT_VM_CHARGE),
|
||||
_A( ACT_VM_OVERLOAD),
|
||||
_A( ACT_VM_IDLE_EMPTY),
|
||||
0, NULL
|
||||
};
|
||||
|
||||
#endif//ACTIVITYMAP_H
|
|
@ -6,7 +6,7 @@
|
|||
#define BASEMATH_H
|
||||
|
||||
#include <math.h>
|
||||
#include "bspmodel.h"
|
||||
#include "ref_format.h"
|
||||
|
||||
#define SIDE_FRONT 0
|
||||
#define SIDE_BACK 1
|
||||
|
|
|
@ -56,12 +56,14 @@ typedef vec_t vec3_t[3];
|
|||
typedef vec_t vec4_t[4];
|
||||
typedef long fs_offset_t;
|
||||
typedef vec_t matrix3x4[3][4];
|
||||
typedef struct { int fileofs; int filelen; }lump_t;
|
||||
typedef struct { byte r; byte g; byte b; } color24;
|
||||
typedef struct { int fileofs; int filelen; } lump_t;
|
||||
typedef struct { int type; char *name; } activity_map_t;
|
||||
typedef struct { uint b:5; uint g:6; uint r:5; } color16;
|
||||
typedef struct { byte r:8; byte g:8; byte b:8; } color24;
|
||||
typedef struct { byte r; byte g; byte b; byte a; } color32;
|
||||
typedef struct { const char *name; void **func; } dllfunc_t;
|
||||
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL ((void *)0)
|
||||
#endif
|
||||
|
|
|
@ -1,228 +0,0 @@
|
|||
//=======================================================================
|
||||
// Copyright XashXT Group 2007 ©
|
||||
// bspmodel.h - world model header
|
||||
//=======================================================================
|
||||
#ifndef BSPMODEL_H
|
||||
#define BSPMODEL_H
|
||||
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
BRUSH MODELS
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
//header
|
||||
#define BSPMOD_VERSION 38
|
||||
#define IDBSPMODHEADER (('P'<<24)+('S'<<16)+('B'<<8)+'I') // little-endian "IBSP"
|
||||
|
||||
// 16 bit short limits
|
||||
#define MAX_KEY 32
|
||||
#define MAX_MAP_AREAS 256
|
||||
#define MAX_VALUE 1024
|
||||
#define MAX_MAP_MODELS 2048 // mesh models and sprites too
|
||||
#define MAX_MAP_AREAPORTALS 1024
|
||||
#define MAX_MAP_ENTITIES 2048
|
||||
#define MAX_MAP_TEXINFO 8192
|
||||
#define MAX_MAP_BRUSHES 16384
|
||||
#define MAX_MAP_PLANES 65536
|
||||
#define MAX_MAP_NODES 65536
|
||||
#define MAX_MAP_BRUSHSIDES 65536
|
||||
#define MAX_MAP_LEAFS 65536
|
||||
#define MAX_MAP_VERTS 65536
|
||||
#define MAX_MAP_FACES 65536
|
||||
#define MAX_MAP_LEAFFACES 65536
|
||||
#define MAX_MAP_LEAFBRUSHES 65536
|
||||
#define MAX_MAP_PORTALS 65536
|
||||
#define MAX_MAP_EDGES 128000
|
||||
#define MAX_MAP_SURFEDGES 256000
|
||||
#define MAX_MAP_ENTSTRING 0x40000
|
||||
#define MAX_MAP_LIGHTING 0x400000
|
||||
#define MAX_MAP_VISIBILITY 0x100000
|
||||
|
||||
//lump offset
|
||||
#define LUMP_ENTITIES 0
|
||||
#define LUMP_PLANES 1
|
||||
#define LUMP_VERTEXES 2
|
||||
#define LUMP_VISIBILITY 3
|
||||
#define LUMP_NODES 4
|
||||
#define LUMP_TEXINFO 5
|
||||
#define LUMP_FACES 6
|
||||
#define LUMP_LIGHTING 7
|
||||
#define LUMP_LEAFS 8
|
||||
#define LUMP_LEAFFACES 9
|
||||
#define LUMP_LEAFBRUSHES 10
|
||||
#define LUMP_EDGES 11
|
||||
#define LUMP_SURFEDGES 12
|
||||
#define LUMP_MODELS 13
|
||||
#define LUMP_BRUSHES 14
|
||||
#define LUMP_BRUSHSIDES 15
|
||||
#define LUMP_POP 16
|
||||
#define LUMP_AREAS 17
|
||||
#define LUMP_AREAPORTALS 18
|
||||
#define HEADER_LUMPS 19
|
||||
|
||||
|
||||
// the visibility lump consists of a header with a count, then
|
||||
// byte offsets for the PVS and PHS of each cluster, then the raw
|
||||
// compressed bit vectors
|
||||
#define DVIS_PVS 0
|
||||
#define DVIS_PHS 1
|
||||
|
||||
//other limits
|
||||
#define MAXLIGHTMAPS 4
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int ident;
|
||||
int version;
|
||||
lump_t lumps[HEADER_LUMPS];
|
||||
} dheader_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float mins[3], maxs[3];
|
||||
float origin[3]; // for sounds or lights
|
||||
int headnode;
|
||||
int firstface; // submodels just draw faces
|
||||
int numfaces; // without walking the bsp tree
|
||||
} dmodel_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float point[3];
|
||||
} dvertex_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float normal[3];
|
||||
float dist;
|
||||
int type; // PLANE_X - PLANE_ANYZ ?remove? trivial to regenerate
|
||||
} dplane_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int planenum;
|
||||
int children[2]; // negative numbers are -(leafs+1), not nodes
|
||||
short mins[3]; // for frustom culling
|
||||
short maxs[3];
|
||||
word firstface;
|
||||
word numfaces; // counting both sides
|
||||
} dnode_t;
|
||||
|
||||
typedef struct texinfo_s
|
||||
{
|
||||
float vecs[2][4]; // [s/t][xyz offset]
|
||||
int flags; // miptex flags + overrides
|
||||
int value; // light emission, etc
|
||||
char texture[32]; // texture name (textures/*.jpg)
|
||||
int nexttexinfo; // for animations, -1 = end of chain
|
||||
} texinfo_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
word v[2]; // vertex numbers
|
||||
} dedge_t;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
word planenum;
|
||||
short side;
|
||||
int firstedge; // we must support > 64k edges
|
||||
short numedges;
|
||||
short texinfo;
|
||||
|
||||
// lighting info
|
||||
byte styles[MAXLIGHTMAPS];
|
||||
int lightofs; // start of [numstyles*surfsize] samples
|
||||
} dface_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int contents; // OR of all brushes (not needed?)
|
||||
short cluster;
|
||||
short area;
|
||||
short mins[3]; // for frustum culling
|
||||
short maxs[3];
|
||||
|
||||
word firstleafface;
|
||||
word numleaffaces;
|
||||
word firstleafbrush;
|
||||
word numleafbrushes;
|
||||
} dleaf_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
word planenum; // facing out of the leaf
|
||||
short texinfo;
|
||||
} dbrushside_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int firstside;
|
||||
int numsides;
|
||||
int contents;
|
||||
} dbrush_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int numclusters;
|
||||
int bitofs[8][2]; // bitofs[numclusters][2]
|
||||
} dvis_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int portalnum;
|
||||
int otherarea;
|
||||
} dareaportal_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int numareaportals;
|
||||
int firstareaportal;
|
||||
} darea_t;
|
||||
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
ENGINE TRACE FORMAT
|
||||
==============================================================================
|
||||
*/
|
||||
typedef struct cplane_s
|
||||
{
|
||||
vec3_t normal;
|
||||
float dist;
|
||||
byte type; // for fast side tests
|
||||
byte signbits; // signx + (signy<<1) + (signz<<1)
|
||||
byte pad[2];
|
||||
} cplane_t;
|
||||
|
||||
|
||||
typedef struct cmodel_s
|
||||
{
|
||||
int modidx; //edict index
|
||||
char name[64]; //model name
|
||||
|
||||
vec3_t mins, maxs; // boundbox
|
||||
vec3_t origin; // for sounds or lights
|
||||
int headnode; // bsp info
|
||||
|
||||
int numframes; //sprite framecount
|
||||
void *extradata; //for studio models
|
||||
} cmodel_t;
|
||||
|
||||
typedef struct csurface_s
|
||||
{
|
||||
char name[16];
|
||||
int flags;
|
||||
int value;
|
||||
} csurface_t;
|
||||
|
||||
typedef struct mapsurface_s
|
||||
{
|
||||
csurface_t c;
|
||||
char rname[32];
|
||||
} mapsurface_t;
|
||||
|
||||
#endif//BSPMODEL_H
|
|
@ -1,9 +1,60 @@
|
|||
//=======================================================================
|
||||
// Copyright XashXT Group 2007 ©
|
||||
// studio.h - studio model header
|
||||
// ref_format.h - xash supported formats
|
||||
//=======================================================================
|
||||
#ifndef STUDIO_H
|
||||
#define STUDIO_H
|
||||
#ifndef REF_FORMAT_H
|
||||
#define REF_FORMAT_H
|
||||
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
SPRITE MODELS
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
// header
|
||||
#define SPRITE_VERSION_HALF 2
|
||||
#define SPRITE_VERSION_XASH 3
|
||||
#define IDSPRITEHEADER (('P'<<24)+('S'<<16)+('D'<<8)+'I') // little-endian "IDSP"
|
||||
|
||||
// render format
|
||||
#define SPR_VP_PARALLEL_UPRIGHT 0
|
||||
#define SPR_FACING_UPRIGHT 1
|
||||
#define SPR_VP_PARALLEL 2
|
||||
#define SPR_ORIENTED 3
|
||||
#define SPR_VP_PARALLEL_ORIENTED 4
|
||||
|
||||
#define SPR_NORMAL 0 // solid sprite
|
||||
#define SPR_ADDITIVE 1
|
||||
#define SPR_INDEXALPHA 2
|
||||
#define SPR_ALPHTEST 3
|
||||
#define SPR_ADDGLOW 4 // same as additive, but without depthtest
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int ident;
|
||||
int version;
|
||||
int type;
|
||||
int texFormat;
|
||||
float boundingradius;
|
||||
int width;
|
||||
int height;
|
||||
int numframes;
|
||||
float framerate; //xash auto-animate
|
||||
uint rgbacolor; //packed rgba color
|
||||
} dsprite_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int origin[2];
|
||||
int width;
|
||||
int height;
|
||||
} dspriteframe_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int type;
|
||||
} frametype_t;
|
||||
|
||||
/*
|
||||
==============================================================================
|
||||
|
@ -14,7 +65,7 @@ Studio models are position independent, so the cache manager can move them.
|
|||
==============================================================================
|
||||
*/
|
||||
|
||||
//header
|
||||
// header
|
||||
#define STUDIO_VERSION 10
|
||||
#define IDSTUDIOHEADER (('T'<<24)+('S'<<16)+('D'<<8)+'I') // little-endian "IDST"
|
||||
#define IDSEQGRPHEADER (('Q'<<24)+('S'<<16)+('D'<<8)+'I') // little-endian "IDSQ"
|
||||
|
@ -38,17 +89,17 @@ Studio models are position independent, so the cache manager can move them.
|
|||
#define MAXSTUDIOATTACHMENTS 32 // max attachments per model
|
||||
|
||||
// model global flags
|
||||
#define STUDIO_STATIC 0x0001 //model without anims
|
||||
#define STUDIO_RAGDOLL 0x0002 //ragdoll animation pose
|
||||
#define STUDIO_STATIC 0x0001 // model without anims
|
||||
#define STUDIO_RAGDOLL 0x0002 // ragdoll animation pose
|
||||
|
||||
// lighting & rendermode options
|
||||
#define STUDIO_NF_FLATSHADE 0x0001
|
||||
#define STUDIO_NF_CHROME 0x0002
|
||||
#define STUDIO_NF_FULLBRIGHT 0x0004
|
||||
#define STUDIO_NF_RESERVED 0x0008 //reserved
|
||||
#define STUDIO_NF_BLENDED 0x0010
|
||||
#define STUDIO_NF_ADDITIVE 0x0020
|
||||
#define STUDIO_NF_TRANSPARENT 0x0040
|
||||
#define STUDIO_NF_RESERVED 0x0008 // reserved
|
||||
#define STUDIO_NF_BLENDED 0x0010 // rendering as semiblended
|
||||
#define STUDIO_NF_ADDITIVE 0x0020 // rendering with additive mode
|
||||
#define STUDIO_NF_TRANSPARENT 0x0040 // use texture with alpha channel
|
||||
|
||||
// motion flags
|
||||
#define STUDIO_X 0x0001
|
||||
|
@ -72,7 +123,7 @@ Studio models are position independent, so the cache manager can move them.
|
|||
// sequence flags
|
||||
#define STUDIO_LOOPING 0x0001
|
||||
|
||||
//render flags
|
||||
// render flags
|
||||
#define STUDIO_RENDER 0x0001
|
||||
#define STUDIO_EVENTS 0x0002
|
||||
|
||||
|
@ -338,4 +389,224 @@ typedef struct
|
|||
int normindex; // normal vec3_t
|
||||
} mstudiomesh_t;
|
||||
|
||||
#endif//STUDIO_H
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
BRUSH MODELS
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
//header
|
||||
#define BSPMOD_VERSION 38
|
||||
#define IDBSPMODHEADER (('P'<<24)+('S'<<16)+('B'<<8)+'I') // little-endian "IBSP"
|
||||
|
||||
// 16 bit short limits
|
||||
#define MAX_KEY 32
|
||||
#define MAX_MAP_AREAS 256
|
||||
#define MAX_VALUE 1024
|
||||
#define MAX_MAP_MODELS 2048 // mesh models and sprites too
|
||||
#define MAX_MAP_AREAPORTALS 1024
|
||||
#define MAX_MAP_ENTITIES 2048
|
||||
#define MAX_MAP_TEXINFO 8192
|
||||
#define MAX_MAP_BRUSHES 16384
|
||||
#define MAX_MAP_PLANES 65536
|
||||
#define MAX_MAP_NODES 65536
|
||||
#define MAX_MAP_BRUSHSIDES 65536
|
||||
#define MAX_MAP_LEAFS 65536
|
||||
#define MAX_MAP_VERTS 65536
|
||||
#define MAX_MAP_FACES 65536
|
||||
#define MAX_MAP_LEAFFACES 65536
|
||||
#define MAX_MAP_LEAFBRUSHES 65536
|
||||
#define MAX_MAP_PORTALS 65536
|
||||
#define MAX_MAP_EDGES 128000
|
||||
#define MAX_MAP_SURFEDGES 256000
|
||||
#define MAX_MAP_ENTSTRING 0x40000
|
||||
#define MAX_MAP_LIGHTING 0x400000
|
||||
#define MAX_MAP_VISIBILITY 0x100000
|
||||
|
||||
//lump offset
|
||||
#define LUMP_ENTITIES 0
|
||||
#define LUMP_PLANES 1
|
||||
#define LUMP_VERTEXES 2
|
||||
#define LUMP_VISIBILITY 3
|
||||
#define LUMP_NODES 4
|
||||
#define LUMP_TEXINFO 5
|
||||
#define LUMP_FACES 6
|
||||
#define LUMP_LIGHTING 7
|
||||
#define LUMP_LEAFS 8
|
||||
#define LUMP_LEAFFACES 9
|
||||
#define LUMP_LEAFBRUSHES 10
|
||||
#define LUMP_EDGES 11
|
||||
#define LUMP_SURFEDGES 12
|
||||
#define LUMP_MODELS 13
|
||||
#define LUMP_BRUSHES 14
|
||||
#define LUMP_BRUSHSIDES 15
|
||||
#define LUMP_POP 16 // unused
|
||||
#define LUMP_AREAS 17
|
||||
#define LUMP_AREAPORTALS 18
|
||||
#define HEADER_LUMPS 19
|
||||
|
||||
|
||||
// the visibility lump consists of a header with a count, then
|
||||
// byte offsets for the PVS and PHS of each cluster, then the raw
|
||||
// compressed bit vectors
|
||||
#define DVIS_PVS 0
|
||||
#define DVIS_PHS 1
|
||||
|
||||
//other limits
|
||||
#define MAXLIGHTMAPS 4
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int ident;
|
||||
int version;
|
||||
lump_t lumps[HEADER_LUMPS];
|
||||
} dheader_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float mins[3], maxs[3];
|
||||
float origin[3]; // for sounds or lights
|
||||
int headnode;
|
||||
int firstface; // submodels just draw faces
|
||||
int numfaces; // without walking the bsp tree
|
||||
} dmodel_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float point[3];
|
||||
} dvertex_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float normal[3];
|
||||
float dist;
|
||||
int type; // PLANE_X - PLANE_ANYZ ?remove? trivial to regenerate
|
||||
} dplane_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int planenum;
|
||||
int children[2]; // negative numbers are -(leafs+1), not nodes
|
||||
short mins[3]; // for frustom culling
|
||||
short maxs[3];
|
||||
word firstface;
|
||||
word numfaces; // counting both sides
|
||||
} dnode_t;
|
||||
|
||||
typedef struct texinfo_s
|
||||
{
|
||||
float vecs[2][4]; // [s/t][xyz offset]
|
||||
int flags; // miptex flags + overrides
|
||||
int value; // light emission, etc
|
||||
char texture[32]; // texture name (textures/*.jpg)
|
||||
int nexttexinfo; // for animations, -1 = end of chain
|
||||
} texinfo_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
word v[2]; // vertex numbers
|
||||
} dedge_t;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
word planenum;
|
||||
short side;
|
||||
int firstedge; // we must support > 64k edges
|
||||
short numedges;
|
||||
short texinfo;
|
||||
|
||||
// lighting info
|
||||
byte styles[MAXLIGHTMAPS];
|
||||
int lightofs; // start of [numstyles*surfsize] samples
|
||||
} dface_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int contents; // OR of all brushes (not needed?)
|
||||
short cluster;
|
||||
short area;
|
||||
short mins[3]; // for frustum culling
|
||||
short maxs[3];
|
||||
|
||||
word firstleafface;
|
||||
word numleaffaces;
|
||||
word firstleafbrush;
|
||||
word numleafbrushes;
|
||||
} dleaf_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
word planenum; // facing out of the leaf
|
||||
short texinfo;
|
||||
} dbrushside_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int firstside;
|
||||
int numsides;
|
||||
int contents;
|
||||
} dbrush_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int numclusters;
|
||||
int bitofs[8][2]; // bitofs[numclusters][2]
|
||||
} dvis_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int portalnum;
|
||||
int otherarea;
|
||||
} dareaportal_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int numareaportals;
|
||||
int firstareaportal;
|
||||
} darea_t;
|
||||
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
ENGINE TRACE FORMAT
|
||||
==============================================================================
|
||||
*/
|
||||
typedef struct cplane_s
|
||||
{
|
||||
vec3_t normal;
|
||||
float dist;
|
||||
byte type; // for fast side tests
|
||||
byte signbits; // signx + (signy<<1) + (signz<<1)
|
||||
byte pad[2];
|
||||
} cplane_t;
|
||||
|
||||
|
||||
typedef struct cmodel_s
|
||||
{
|
||||
int modidx; //edict index
|
||||
char name[64]; //model name
|
||||
|
||||
vec3_t mins, maxs; // boundbox
|
||||
vec3_t origin; // for sounds or lights
|
||||
int headnode; // bsp info
|
||||
|
||||
int numframes; //sprite framecount
|
||||
void *extradata; //for studio models
|
||||
} cmodel_t;
|
||||
|
||||
typedef struct csurface_s
|
||||
{
|
||||
char name[16];
|
||||
int flags;
|
||||
int value;
|
||||
} csurface_t;
|
||||
|
||||
typedef struct mapsurface_s
|
||||
{
|
||||
csurface_t c;
|
||||
char rname[32];
|
||||
} mapsurface_t;
|
||||
|
||||
#endif//REF_FORMAT_H
|
|
@ -5,9 +5,7 @@
|
|||
#ifndef REF_SYSTEM_H
|
||||
#define REF_SYSTEM_H
|
||||
|
||||
#include "studio.h"
|
||||
#include "sprite.h"
|
||||
#include "bspmodel.h"
|
||||
#include "ref_format.h"
|
||||
#include "version.h"
|
||||
|
||||
|
||||
|
@ -82,10 +80,10 @@ enum comp_format
|
|||
PF_RGBA_32, // already prepared ".bmp", ".tga" or ".jpg" image
|
||||
PF_ARGB_32, // uncompressed dds image
|
||||
PF_RGB_24, // uncompressed dds or another 24-bit image
|
||||
PF_DXT1, // nvidia DXT5 format
|
||||
PF_DXT2, // nvidia DXT5 format
|
||||
PF_DXT3, // nvidia DXT5 format
|
||||
PF_DXT4, // nvidia DXT5 format
|
||||
PF_DXT1, // nvidia DXT1 format
|
||||
PF_DXT2, // nvidia DXT2 format
|
||||
PF_DXT3, // nvidia DXT3 format
|
||||
PF_DXT4, // nvidia DXT4 format
|
||||
PF_DXT5, // nvidia DXT5 format
|
||||
PF_ATI1N, // ati 1N texture
|
||||
PF_ATI2N, // ati 2N texture
|
||||
|
@ -98,6 +96,113 @@ enum comp_format
|
|||
PF_TOTALCOUNT, // must be last
|
||||
};
|
||||
|
||||
enum ai_activity
|
||||
{
|
||||
ACT_RESET = 0, // Set m_Activity to this invalid value to force a reset to m_IdealActivity
|
||||
ACT_IDLE = 1,
|
||||
ACT_GUARD,
|
||||
ACT_WALK,
|
||||
ACT_RUN,
|
||||
ACT_FLY, // Fly (and flap if appropriate)
|
||||
ACT_SWIM,
|
||||
ACT_HOP, // vertical jump
|
||||
ACT_LEAP, // long forward jump
|
||||
ACT_FALL,
|
||||
ACT_LAND,
|
||||
ACT_STRAFE_LEFT,
|
||||
ACT_STRAFE_RIGHT,
|
||||
ACT_ROLL_LEFT, // tuck and roll, left
|
||||
ACT_ROLL_RIGHT, // tuck and roll, right
|
||||
ACT_TURN_LEFT, // turn quickly left (stationary)
|
||||
ACT_TURN_RIGHT, // turn quickly right (stationary)
|
||||
ACT_CROUCH, // the act of crouching down from a standing position
|
||||
ACT_CROUCHIDLE, // holding body in crouched position (loops)
|
||||
ACT_STAND, // the act of standing from a crouched position
|
||||
ACT_USE,
|
||||
ACT_SIGNAL1,
|
||||
ACT_SIGNAL2,
|
||||
ACT_SIGNAL3,
|
||||
ACT_TWITCH,
|
||||
ACT_COWER,
|
||||
ACT_SMALL_FLINCH,
|
||||
ACT_BIG_FLINCH,
|
||||
ACT_RANGE_ATTACK1,
|
||||
ACT_RANGE_ATTACK2,
|
||||
ACT_MELEE_ATTACK1,
|
||||
ACT_MELEE_ATTACK2,
|
||||
ACT_RELOAD,
|
||||
ACT_ARM, // pull out gun, for instance
|
||||
ACT_DISARM, // reholster gun
|
||||
ACT_EAT, // monster chowing on a large food item (loop)
|
||||
ACT_DIESIMPLE,
|
||||
ACT_DIEBACKWARD,
|
||||
ACT_DIEFORWARD,
|
||||
ACT_DIEVIOLENT,
|
||||
ACT_BARNACLE_HIT, // barnacle tongue hits a monster
|
||||
ACT_BARNACLE_PULL, // barnacle is lifting the monster ( loop )
|
||||
ACT_BARNACLE_CHOMP, // barnacle latches on to the monster
|
||||
ACT_BARNACLE_CHEW, // barnacle is holding the monster in its mouth ( loop )
|
||||
ACT_SLEEP,
|
||||
ACT_INSPECT_FLOOR, // for active idles, look at something on or near the floor
|
||||
ACT_INSPECT_WALL, // for active idles, look at something directly ahead of you
|
||||
ACT_IDLE_ANGRY, // alternate idle animation in which the monster is clearly agitated. (loop)
|
||||
ACT_WALK_HURT, // limp (loop)
|
||||
ACT_RUN_HURT, // limp (loop)
|
||||
ACT_HOVER, // Idle while in flight
|
||||
ACT_GLIDE, // Fly (don't flap)
|
||||
ACT_FLY_LEFT, // Turn left in flight
|
||||
ACT_FLY_RIGHT, // Turn right in flight
|
||||
ACT_DETECT_SCENT, // this means the monster smells a scent carried by the air
|
||||
ACT_SNIFF, // this is the act of actually sniffing an item in front of the monster
|
||||
ACT_BITE, // some large monsters can eat small things in one bite. This plays one time, EAT loops.
|
||||
ACT_THREAT_DISPLAY, // without attacking, monster demonstrates that it is angry. (Yell, stick out chest, etc )
|
||||
ACT_FEAR_DISPLAY, // monster just saw something that it is afraid of
|
||||
ACT_EXCITED, // for some reason, monster is excited. Sees something he really likes to eat, or whatever
|
||||
ACT_SPECIAL_ATTACK1,// very monster specific special attacks.
|
||||
ACT_SPECIAL_ATTACK2,
|
||||
ACT_COMBAT_IDLE, // agitated idle.
|
||||
ACT_WALK_SCARED,
|
||||
ACT_RUN_SCARED,
|
||||
ACT_VICTORY_DANCE, // killed a player, do a victory dance.
|
||||
ACT_DIE_HEADSHOT, // die, hit in head.
|
||||
ACT_DIE_CHESTSHOT, // die, hit in chest
|
||||
ACT_DIE_GUTSHOT, // die, hit in gut
|
||||
ACT_DIE_BACKSHOT, // die, hit in back
|
||||
ACT_FLINCH_HEAD,
|
||||
ACT_FLINCH_CHEST,
|
||||
ACT_FLINCH_STOMACH,
|
||||
ACT_FLINCH_LEFTARM,
|
||||
ACT_FLINCH_RIGHTARM,
|
||||
ACT_FLINCH_LEFTLEG,
|
||||
ACT_FLINCH_RIGHTLEG,
|
||||
ACT_VM_NONE, // weapon viewmodel animations
|
||||
ACT_VM_DEPLOY, // deploy
|
||||
ACT_VM_DEPLOY_EMPTY,// deploy empty weapon
|
||||
ACT_VM_HOLSTER, // holster empty weapon
|
||||
ACT_VM_HOLSTER_EMPTY,
|
||||
ACT_VM_IDLE1,
|
||||
ACT_VM_IDLE2,
|
||||
ACT_VM_IDLE3,
|
||||
ACT_VM_RANGE_ATTACK1,
|
||||
ACT_VM_RANGE_ATTACK2,
|
||||
ACT_VM_RANGE_ATTACK3,
|
||||
ACT_VM_MELEE_ATTACK1,
|
||||
ACT_VM_MELEE_ATTACK2,
|
||||
ACT_VM_MELEE_ATTACK3,
|
||||
ACT_VM_SHOOT_EMPTY,
|
||||
ACT_VM_START_RELOAD,
|
||||
ACT_VM_RELOAD,
|
||||
ACT_VM_RELOAD_EMPTY,
|
||||
ACT_VM_TURNON,
|
||||
ACT_VM_TURNOFF,
|
||||
ACT_VM_PUMP, // pumping gun
|
||||
ACT_VM_PUMP_EMPTY,
|
||||
ACT_VM_START_CHARGE,
|
||||
ACT_VM_CHARGE,
|
||||
ACT_VM_OVERLOAD,
|
||||
ACT_VM_IDLE_EMPTY,
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
MSG_ONE,
|
||||
|
@ -153,6 +258,113 @@ static bpc_desc_t PFDesc[] =
|
|||
{PF_RGBA_GN, "system", GL_RGBA, GL_UNSIGNED_BYTE, 4, 1, -32},
|
||||
};
|
||||
|
||||
static activity_map_t activity_map[] =
|
||||
{
|
||||
{ACT_IDLE, "ACT_IDLE" },
|
||||
{ACT_GUARD, "ACT_GUARD" },
|
||||
{ACT_WALK, "ACT_WALK" },
|
||||
{ACT_RUN, "ACT_RUN" },
|
||||
{ACT_FLY, "ACT_FLY" },
|
||||
{ACT_SWIM, "ACT_SWIM", },
|
||||
{ACT_HOP, "ACT_HOP", },
|
||||
{ACT_LEAP, "ACT_LEAP" },
|
||||
{ACT_FALL, "ACT_FALL" },
|
||||
{ACT_LAND, "ACT_LAND" },
|
||||
{ACT_STRAFE_LEFT, "ACT_STRAFE_LEFT" },
|
||||
{ACT_STRAFE_RIGHT, "ACT_STRAFE_RIGHT" },
|
||||
{ACT_ROLL_LEFT, "ACT_ROLL_LEFT" },
|
||||
{ACT_ROLL_RIGHT, "ACT_ROLL_RIGHT" },
|
||||
{ACT_TURN_LEFT, "ACT_TURN_LEFT" },
|
||||
{ACT_TURN_RIGHT, "ACT_TURN_RIGHT" },
|
||||
{ACT_CROUCH, "ACT_CROUCH" },
|
||||
{ACT_CROUCHIDLE, "ACT_CROUCHIDLE" },
|
||||
{ACT_STAND, "ACT_STAND" },
|
||||
{ACT_USE, "ACT_USE" },
|
||||
{ACT_SIGNAL1, "ACT_SIGNAL1" },
|
||||
{ACT_SIGNAL2, "ACT_SIGNAL2" },
|
||||
{ACT_SIGNAL3, "ACT_SIGNAL3" },
|
||||
{ACT_TWITCH, "ACT_TWITCH" },
|
||||
{ACT_COWER, "ACT_COWER" },
|
||||
{ACT_SMALL_FLINCH, "ACT_SMALL_FLINCH" },
|
||||
{ACT_BIG_FLINCH, "ACT_BIG_FLINCH" },
|
||||
{ACT_RANGE_ATTACK1, "ACT_RANGE_ATTACK1" },
|
||||
{ACT_RANGE_ATTACK2, "ACT_RANGE_ATTACK2" },
|
||||
{ACT_MELEE_ATTACK1, "ACT_MELEE_ATTACK1" },
|
||||
{ACT_MELEE_ATTACK2, "ACT_MELEE_ATTACK2" },
|
||||
{ACT_RELOAD, "ACT_RELOAD" },
|
||||
{ACT_ARM, "ACT_ARM" },
|
||||
{ACT_DISARM, "ACT_DISARM" },
|
||||
{ACT_EAT, "ACT_EAT" },
|
||||
{ACT_DIESIMPLE, "ACT_DIESIMPLE" },
|
||||
{ACT_DIEBACKWARD, "ACT_DIEBACKWARD" },
|
||||
{ACT_DIEFORWARD, "ACT_DIEFORWARD" },
|
||||
{ACT_DIEVIOLENT, "ACT_DIEVIOLENT" },
|
||||
{ACT_BARNACLE_HIT, "ACT_BARNACLE_HIT" },
|
||||
{ACT_BARNACLE_PULL, "ACT_BARNACLE_PULL" },
|
||||
{ACT_BARNACLE_CHOMP, "ACT_BARNACLE_CHOMP" },
|
||||
{ACT_BARNACLE_CHEW, "ACT_BARNACLE_CHEW" },
|
||||
{ACT_SLEEP, "ACT_SLEEP" },
|
||||
{ACT_INSPECT_FLOOR, "ACT_INSPECT_FLOOR" },
|
||||
{ACT_INSPECT_WALL, "ACT_INSPECT_WALL" },
|
||||
{ACT_IDLE_ANGRY, "ACT_IDLE_ANGRY" },
|
||||
{ACT_WALK_HURT, "ACT_WALK_HURT" },
|
||||
{ACT_RUN_HURT, "ACT_RUN_HURT" },
|
||||
{ACT_HOVER, "ACT_HOVER" },
|
||||
{ACT_GLIDE, "ACT_GLIDE" },
|
||||
{ACT_FLY_LEFT, "ACT_FLY_LEFT" },
|
||||
{ACT_FLY_RIGHT, "ACT_FLY_RIGHT" },
|
||||
{ACT_DETECT_SCENT, "ACT_DETECT_SCENT" },
|
||||
{ACT_SNIFF, "ACT_SNIFF" },
|
||||
{ACT_BITE, "ACT_BITE" },
|
||||
{ACT_THREAT_DISPLAY, "ACT_THREAT_DISPLAY" },
|
||||
{ACT_FEAR_DISPLAY, "ACT_FEAR_DISPLAY" },
|
||||
{ACT_EXCITED, "ACT_EXCITED" },
|
||||
{ACT_SPECIAL_ATTACK1, "ACT_SPECIAL_ATTACK1" },
|
||||
{ACT_SPECIAL_ATTACK2, "ACT_SPECIAL_ATTACK2" },
|
||||
{ACT_COMBAT_IDLE, "ACT_COMBAT_IDLE" },
|
||||
{ACT_WALK_SCARED, "ACT_WALK_SCARED" },
|
||||
{ACT_RUN_SCARED, "ACT_RUN_SCARED" },
|
||||
{ACT_VICTORY_DANCE, "ACT_VICTORY_DANCE" },
|
||||
{ACT_DIE_HEADSHOT, "ACT_DIE_HEADSHOT" },
|
||||
{ACT_DIE_CHESTSHOT, "ACT_DIE_CHESTSHOT" },
|
||||
{ACT_DIE_GUTSHOT, "ACT_DIE_GUTSHOT" },
|
||||
{ACT_DIE_BACKSHOT, "ACT_DIE_BACKSHOT" },
|
||||
{ACT_FLINCH_HEAD, "ACT_FLINCH_HEAD" },
|
||||
{ACT_FLINCH_CHEST, "ACT_FLINCH_CHEST" },
|
||||
{ACT_FLINCH_STOMACH, "ACT_FLINCH_STOMACH" },
|
||||
{ACT_FLINCH_LEFTARM, "ACT_FLINCH_LEFTARM" },
|
||||
{ACT_FLINCH_RIGHTARM, "ACT_FLINCH_RIGHTARM" },
|
||||
{ACT_FLINCH_LEFTLEG, "ACT_FLINCH_LEFTLEG" },
|
||||
{ACT_FLINCH_RIGHTLEG, "ACT_FLINCH_RIGHTLEG" },
|
||||
{ACT_VM_NONE, "ACT_VM_NONE" }, // invalid animation
|
||||
{ACT_VM_DEPLOY, "ACT_VM_DEPLOY" }, // deploy
|
||||
{ACT_VM_DEPLOY_EMPTY, "ACT_VM_DEPLOY_EMPTY" }, // deploy empty weapon
|
||||
{ACT_VM_HOLSTER, "ACT_VM_HOLSTER" }, // holster empty weapon
|
||||
{ACT_VM_HOLSTER_EMPTY, "ACT_VM_HOLSTER_EMPTY" },
|
||||
{ACT_VM_IDLE1, "ACT_VM_IDLE1" },
|
||||
{ACT_VM_IDLE2, "ACT_VM_IDLE2" },
|
||||
{ACT_VM_IDLE3, "ACT_VM_IDLE3" },
|
||||
{ACT_VM_RANGE_ATTACK1, "ACT_VM_RANGE_ATTACK1" },
|
||||
{ACT_VM_RANGE_ATTACK2, "ACT_VM_RANGE_ATTACK2" },
|
||||
{ACT_VM_RANGE_ATTACK3, "ACT_VM_RANGE_ATTACK3" },
|
||||
{ACT_VM_MELEE_ATTACK1, "ACT_VM_MELEE_ATTACK1" },
|
||||
{ACT_VM_MELEE_ATTACK2, "ACT_VM_MELEE_ATTACK2" },
|
||||
{ACT_VM_MELEE_ATTACK3, "ACT_VM_MELEE_ATTACK3" },
|
||||
{ACT_VM_SHOOT_EMPTY, "ACT_VM_SHOOT_EMPTY" },
|
||||
{ACT_VM_START_RELOAD, "ACT_VM_START_RELOAD" },
|
||||
{ACT_VM_RELOAD, "ACT_VM_RELOAD" },
|
||||
{ACT_VM_RELOAD_EMPTY, "ACT_VM_RELOAD_EMPTY" },
|
||||
{ACT_VM_TURNON, "ACT_VM_TURNON" },
|
||||
{ACT_VM_TURNOFF, "ACT_VM_TURNOFF" },
|
||||
{ACT_VM_PUMP, "ACT_VM_PUMP" }, // user animations
|
||||
{ACT_VM_PUMP_EMPTY, "ACT_VM_PUMP_EMPTY" },
|
||||
{ACT_VM_START_CHARGE, "ACT_VM_START_CHARGE" },
|
||||
{ACT_VM_CHARGE, "ACT_VM_CHARGE" },
|
||||
{ACT_VM_OVERLOAD, "ACT_VM_CHARGE" },
|
||||
{ACT_VM_IDLE_EMPTY, "ACT_VM_IDLE_EMPTY" },
|
||||
{0, NULL },
|
||||
};
|
||||
|
||||
#define IMAGE_CUBEMAP 0x00000001
|
||||
#define IMAGE_HAS_ALPHA 0x00000002
|
||||
#define IMAGE_PREMULT 0x00000004 // indices who need in additional premultiply
|
||||
|
|
|
@ -1,59 +0,0 @@
|
|||
//=======================================================================
|
||||
// Copyright XashXT Group 2007 ©
|
||||
// studio.h - sprite model header
|
||||
//=======================================================================
|
||||
#ifndef SPRITE_H
|
||||
#define SPRITE_H
|
||||
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
SPRITE MODELS
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
//header
|
||||
#define SPRITE_VERSION_HALF 2
|
||||
#define SPRITE_VERSION_XASH 3
|
||||
#define IDSPRITEHEADER (('P'<<24)+('S'<<16)+('D'<<8)+'I') // little-endian "IDSP"
|
||||
|
||||
//render format
|
||||
#define SPR_VP_PARALLEL_UPRIGHT 0
|
||||
#define SPR_FACING_UPRIGHT 1
|
||||
#define SPR_VP_PARALLEL 2
|
||||
#define SPR_ORIENTED 3
|
||||
#define SPR_VP_PARALLEL_ORIENTED 4
|
||||
|
||||
#define SPR_NORMAL 0 //solid sprite
|
||||
#define SPR_ADDITIVE 1
|
||||
#define SPR_INDEXALPHA 2
|
||||
#define SPR_ALPHTEST 3
|
||||
#define SPR_ADDGLOW 4 //same as additive, but without depthtest
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int ident;
|
||||
int version;
|
||||
int type;
|
||||
int texFormat;
|
||||
float boundingradius;
|
||||
int width;
|
||||
int height;
|
||||
int numframes;
|
||||
float framerate; //xash auto-animate
|
||||
uint rgbacolor; //packed rgba color
|
||||
} dsprite_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int origin[2];
|
||||
int width;
|
||||
int height;
|
||||
} dspriteframe_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int type;
|
||||
} frametype_t;
|
||||
|
||||
#endif//SPRITE_H
|
|
@ -56,6 +56,6 @@ if exist server.dat move server.dat D:\Xash3D\xash\server.dat
|
|||
echo Build succeeded!
|
||||
echo Please wait. Xash is now loading
|
||||
cd D:\Xash3D\
|
||||
xash.exe -game valve +map lighttest -debug -log
|
||||
rem bin\bsplib -game xash +map dm_qstyle -vis -rad -full -log
|
||||
xash.exe +map qctest -debug -log
|
||||
rem bin\bsplib -game xash +map qctest -vis -rad -full -log
|
||||
:done
|
|
@ -32,9 +32,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include <basemath.h>
|
||||
#include "ref_system.h"
|
||||
#include "materials.h"
|
||||
#include "studio.h"
|
||||
#include "sprite.h"
|
||||
#include "bspmodel.h"
|
||||
#include "const.h"
|
||||
|
||||
#ifndef GL_COLOR_INDEX8_EXT
|
||||
|
|
|
@ -46,11 +46,14 @@ static bool VerifyDriver( void )
|
|||
{
|
||||
char buffer[1024];
|
||||
|
||||
strcpy( buffer, qglGetString( GL_RENDERER ) );
|
||||
strcpy( buffer, qglGetString( GL_RENDERER ));
|
||||
strlwr( buffer );
|
||||
if ( strcmp( buffer, "gdi generic" ) == 0 )
|
||||
|
||||
if (!strcmp( buffer, "gdi generic" ))
|
||||
{
|
||||
if ( !glw_state.mcd_accelerated )
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -502,7 +505,7 @@ bool GLimp_InitGL (void)
|
|||
goto fail;
|
||||
}
|
||||
|
||||
if ( !qwglMakeCurrent( glw_state.hDC, glw_state.hGLRC ) )
|
||||
if ( !qwglMakeCurrent( glw_state.hDC, glw_state.hGLRC ) )
|
||||
{
|
||||
Msg("GLimp_Init() - qwglMakeCurrent failed\n");
|
||||
goto fail;
|
||||
|
@ -607,3 +610,4 @@ void GLimp_AppActivate( bool active )
|
|||
ShowWindow( glw_state.hWnd, SW_MINIMIZE );
|
||||
}
|
||||
}
|
||||
|
|
@ -42,6 +42,7 @@ ents/funcs/func_door.c
|
|||
ents/funcs/func_button.c
|
||||
ents/funcs/func_path_corner.c
|
||||
ents/funcs/func_train.c
|
||||
ents/funcs/func_areaportal.c
|
||||
|
||||
//ITEMS
|
||||
ents/items/items.c
|
||||
|
|
|
@ -270,6 +270,7 @@ void() PutClientInServer =
|
|||
pev->origin = spawn_spot.origin + '0 0 1'; // Move to the spawnspot location
|
||||
pev->angles = spawn_spot.angles; // Face the angle the spawnspot indicates
|
||||
pev->fixangle = TRUE; // Turn this way immediately
|
||||
pev->weaponmodel = "models/weapons/v_eagle.mdl"; // FIXME: rename to viewmodel
|
||||
|
||||
dprint("PutClientInServer()\n");
|
||||
|
||||
|
@ -290,7 +291,7 @@ void() PutClientInServer =
|
|||
|
||||
setstats( pev, STAT_HEALTH_ICON, "i_health");
|
||||
setstats( pev, STAT_HEALTH, ftos(pev->health));
|
||||
//setstats( pev, STAT_HELPICON, "i_help");
|
||||
setstats( pev, STAT_HELPICON, "i_help");
|
||||
|
||||
GetLevelParms();
|
||||
};
|
||||
|
|
|
@ -218,6 +218,7 @@ void() traceon = #29; // turns statment trace on
|
|||
void() traceoff = #30;
|
||||
void(entity e) eprint = #31; // prints an entire edict
|
||||
float(float yaw, float dist) walkmove = #32; // returns TRUE or FALSE
|
||||
void areaportal_state( float num, float state ) = #33;
|
||||
float() droptofloor = #34; // TRUE if landed on floor
|
||||
void(float style, string value) lightstyle = #35;
|
||||
float(float v) rint = #36; // round to nearest int
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
.float count;
|
||||
.float style;
|
||||
|
||||
void use_areaportal( void )
|
||||
{
|
||||
pev->count = 1; // toggle state
|
||||
areaportal_state( pev->style, pev->count);
|
||||
}
|
||||
|
||||
/*QUAKED func_areaportal (0 0 0) ?
|
||||
|
||||
This is a non-visible object that divides the world into
|
||||
areas that are seperated when this portal is not activated.
|
||||
Usually enclosed in the middle of a door.
|
||||
*/
|
||||
void func_areaportal( void )
|
||||
{
|
||||
pev->use = use_areaportal;
|
||||
pev->count = 0; // always start closed;
|
||||
}
|
|
@ -83,6 +83,17 @@ void() func_mover_stop =
|
|||
|
||||
void() func_mover_stop_dead =
|
||||
{
|
||||
entity t;
|
||||
|
||||
// lookup all areaportals
|
||||
t = find(world, targetname, pev->target);
|
||||
while(t)
|
||||
{
|
||||
if(t->classname == "func_areaportal")
|
||||
areaportal_state( t->style, FALSE );
|
||||
t = find(t, targetname, pev->target);
|
||||
}
|
||||
|
||||
func_mover_stop_general();
|
||||
};
|
||||
|
||||
|
@ -160,7 +171,6 @@ void() func_mover_fire =
|
|||
|
||||
void() func_mover_touch =
|
||||
{
|
||||
bprint("door touch\n");
|
||||
if(other.classname != "player") //Are you a player?
|
||||
return;
|
||||
if(other == world) //Are you the world?
|
||||
|
|
|
@ -6,11 +6,11 @@ This is the spawning function to the map entity 'func_path_corner'
|
|||
Currently only trains use this to tell their next stop position;
|
||||
*/
|
||||
|
||||
void() func_path_corner =
|
||||
void() path_corner =
|
||||
{
|
||||
if (!pev->targetname)
|
||||
objerror ("monster_movetarget: no targetname");
|
||||
|
||||
pev->solid = SOLID_TRIGGER;
|
||||
pev->solid = SOLID_NOT;
|
||||
setsize (pev, '-8 -8 -8', '8 8 8');
|
||||
};
|
|
@ -86,8 +86,4 @@ void() func_place_model =
|
|||
func_setup();
|
||||
|
||||
pev->movetype = MOVETYPE_NONE;
|
||||
};
|
||||
|
||||
void func_areaportal( void )
|
||||
{
|
||||
}
|
||||
};
|
Reference in New Issue