29 Sep 2007

This commit is contained in:
g-cont 2007-09-29 00:00:00 +04:00 committed by Alibek Omarov
parent c67bfbc6cf
commit ae2afd01af
40 changed files with 1863 additions and 3326 deletions

View File

@ -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 текстур

View File

@ -7,7 +7,6 @@
#include "platform.h"
#include <basemath.h>
#include <bspmodel.h>
#include <materials.h>
#include "utils.h"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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];

View File

@ -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
//============================================================================

View File

@ -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)

View File

@ -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

View 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"

View File

@ -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
//

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);
}

View File

@ -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;

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 );
}
}

View File

@ -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

View File

@ -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();
};

View File

@ -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

View File

@ -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;
}

View File

@ -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?

View File

@ -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');
};

View File

@ -86,8 +86,4 @@ void() func_place_model =
func_setup();
pev->movetype = MOVETYPE_NONE;
};
void func_areaportal( void )
{
}
};