mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-26 22:01:50 +00:00
UDC_EXTEFFECT sucks
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1427 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
dcabb778f6
commit
25a65bbf8e
4 changed files with 1 additions and 242 deletions
|
@ -90,10 +90,6 @@ typedef struct {
|
||||||
builtin_t pr_builtin[1024];
|
builtin_t pr_builtin[1024];
|
||||||
extern BuiltinList_t BuiltinList[];
|
extern BuiltinList_t BuiltinList[];
|
||||||
|
|
||||||
qboolean pr_udc_exteffect_enabled;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func_t SpectatorConnect;
|
func_t SpectatorConnect;
|
||||||
func_t SpectatorThink;
|
func_t SpectatorThink;
|
||||||
func_t SpectatorDisconnect;
|
func_t SpectatorDisconnect;
|
||||||
|
@ -6247,7 +6243,7 @@ lh_extension_t FTE_Protocol_Extensions[] =
|
||||||
{"FTE_PEXT_VWEAP"},
|
{"FTE_PEXT_VWEAP"},
|
||||||
{"FTE_PEXT_Q2BSP"}, //supports q2 maps. No bugs are apparent.
|
{"FTE_PEXT_Q2BSP"}, //supports q2 maps. No bugs are apparent.
|
||||||
{"FTE_PEXT_Q3BSP"}, //quake3 bsp support. dp probably has an equivelent, but this is queryable per client.
|
{"FTE_PEXT_Q3BSP"}, //quake3 bsp support. dp probably has an equivelent, but this is queryable per client.
|
||||||
{"UDC_EXTEFFECT", 0, &pr_udc_exteffect_enabled}, //hmm. crap.
|
{NULL}, //UDC_EXTEFFECT, no longer supported
|
||||||
{NULL}, //splitscreen - not queryable.
|
{NULL}, //splitscreen - not queryable.
|
||||||
{"FTE_HEXEN2"}, //client can use hexen2 maps. server can use hexen2 progs
|
{"FTE_HEXEN2"}, //client can use hexen2 maps. server can use hexen2 progs
|
||||||
{"FTE_PEXT_SPAWNSTATIC"}, //means that static entities can have alpha/scale and anything else the engine supports on normal ents. (Added for >256 models, while still being compatable - previous system failed with -1 skins)
|
{"FTE_PEXT_SPAWNSTATIC"}, //means that static entities can have alpha/scale and anything else the engine supports on normal ents. (Added for >256 models, while still being compatable - previous system failed with -1 skins)
|
||||||
|
@ -9727,13 +9723,6 @@ void PR_RegisterFields(void) //it's just easier to do it this way.
|
||||||
|
|
||||||
fieldfloat(clientcolors);
|
fieldfloat(clientcolors);
|
||||||
|
|
||||||
//UDC_EXTEFFECT... yuckie
|
|
||||||
PR_RegisterFieldVar(svprogfuncs, ev_float, "fieldcolor", (int)&((entvars_t*)0)->seefcolour, -1);
|
|
||||||
PR_RegisterFieldVar(svprogfuncs, ev_float, "fieldsizex", (int)&((entvars_t*)0)->seefsizex, -1);
|
|
||||||
PR_RegisterFieldVar(svprogfuncs, ev_float, "fieldsizey", (int)&((entvars_t*)0)->seefsizey, -1);
|
|
||||||
PR_RegisterFieldVar(svprogfuncs, ev_float, "fieldsizez", (int)&((entvars_t*)0)->seefsizez, -1);
|
|
||||||
PR_RegisterFieldVar(svprogfuncs, ev_float, "fieldoffset", (int)&((entvars_t*)0)->seefoffset, -1);
|
|
||||||
|
|
||||||
//hexen 2 stuff
|
//hexen 2 stuff
|
||||||
fieldfloat(playerclass);
|
fieldfloat(playerclass);
|
||||||
fieldfloat(hull);
|
fieldfloat(hull);
|
||||||
|
|
|
@ -210,13 +210,6 @@ typedef struct entvars_s
|
||||||
float dimension_solid;
|
float dimension_solid;
|
||||||
float dimension_hit;
|
float dimension_hit;
|
||||||
|
|
||||||
//udc_exeffect support. hacky I know.
|
|
||||||
float seefcolour;
|
|
||||||
float seefsizex;
|
|
||||||
float seefsizey;
|
|
||||||
float seefsizez;
|
|
||||||
float seefoffset;
|
|
||||||
|
|
||||||
//hexen2 stuff
|
//hexen2 stuff
|
||||||
float playerclass; //hexen2 requirements
|
float playerclass; //hexen2 requirements
|
||||||
float hull;
|
float hull;
|
||||||
|
|
|
@ -332,26 +332,6 @@ typedef struct {
|
||||||
|
|
||||||
#define MAX_BACK_BUFFERS 16
|
#define MAX_BACK_BUFFERS 16
|
||||||
|
|
||||||
enum seef_e{
|
|
||||||
SEEF_BRIGHTFIELD,
|
|
||||||
SEEF_DARKLIGHT,
|
|
||||||
SEEF_DARKFIELD,
|
|
||||||
SEEF_LIGHT
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct specialenteffects_s {
|
|
||||||
enum seef_e efnum;
|
|
||||||
int entnum;
|
|
||||||
|
|
||||||
vec3_t size;
|
|
||||||
char offset;
|
|
||||||
qbyte colour; //matches q1 palette
|
|
||||||
|
|
||||||
float die;
|
|
||||||
|
|
||||||
struct specialenteffects_s *next;
|
|
||||||
} specialenteffects_t;
|
|
||||||
|
|
||||||
typedef struct client_s
|
typedef struct client_s
|
||||||
{
|
{
|
||||||
client_conn_state_t state;
|
client_conn_state_t state;
|
||||||
|
@ -526,8 +506,6 @@ typedef struct client_s
|
||||||
qbyte vweap;
|
qbyte vweap;
|
||||||
} otherclientsknown[MAX_CLIENTS]; //updated as needed. Flag at a time, or all flags.
|
} otherclientsknown[MAX_CLIENTS]; //updated as needed. Flag at a time, or all flags.
|
||||||
|
|
||||||
specialenteffects_t *enteffects;
|
|
||||||
|
|
||||||
struct client_s *controller;
|
struct client_s *controller;
|
||||||
struct client_s *controlled;
|
struct client_s *controlled;
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
void SV_CleanupEnts(void);
|
void SV_CleanupEnts(void);
|
||||||
|
|
||||||
extern qboolean pr_udc_exteffect_enabled;
|
|
||||||
|
|
||||||
extern cvar_t sv_nailhack;
|
extern cvar_t sv_nailhack;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1336,193 +1334,6 @@ void SV_WritePlayerToClient(sizebuf_t *msg, clstate_t *ent)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef PEXT_SEEF1
|
|
||||||
#define EFNQ_DARKLIGHT 16
|
|
||||||
#define EFNQ_DARKFIELD 32
|
|
||||||
#define EFNQ_LIGHT 64
|
|
||||||
|
|
||||||
#define EFQW_DARKLIGHT 256
|
|
||||||
#define EFQW_DARKFIELD 512
|
|
||||||
#define EFQW_LIGHT 1024
|
|
||||||
|
|
||||||
void SV_RemoveEffect(client_t *to, edict_t *ent, int seefmask)
|
|
||||||
{
|
|
||||||
specialenteffects_t *prev = NULL;
|
|
||||||
specialenteffects_t *ef;
|
|
||||||
int en = NUM_FOR_EDICT(svprogfuncs, ent);
|
|
||||||
for (ef = to->enteffects; ef; ef = ef->next)
|
|
||||||
{
|
|
||||||
if (ef->entnum == en && ef->efnum & seefmask)
|
|
||||||
{
|
|
||||||
if (prev)
|
|
||||||
prev->next = ef->next;
|
|
||||||
else
|
|
||||||
to->enteffects = ef->next;
|
|
||||||
Z_Free(ef);
|
|
||||||
|
|
||||||
if (ef->efnum & seefmask & 1>>SEEF_BRIGHTFIELD)
|
|
||||||
{
|
|
||||||
ClientReliableWrite_Begin(to, svc_temp_entity, 4);
|
|
||||||
ClientReliableWrite_Byte(to, TE_SEEF_BRIGHTFIELD);
|
|
||||||
ClientReliableWrite_Short(to, en|0x8000);
|
|
||||||
}
|
|
||||||
if (ef->efnum & seefmask & 1>>SEEF_DARKLIGHT)
|
|
||||||
{
|
|
||||||
ClientReliableWrite_Begin(to, svc_temp_entity, 4);
|
|
||||||
ClientReliableWrite_Byte(to, SEEF_DARKLIGHT);
|
|
||||||
ClientReliableWrite_Short(to, en|0x8000);
|
|
||||||
}
|
|
||||||
if (ef->efnum & seefmask & 1>>SEEF_DARKFIELD)
|
|
||||||
{
|
|
||||||
ClientReliableWrite_Begin(to, svc_temp_entity, 4);
|
|
||||||
ClientReliableWrite_Byte(to, SEEF_DARKFIELD);
|
|
||||||
ClientReliableWrite_Short(to, en|0x8000);
|
|
||||||
}
|
|
||||||
if (ef->efnum & seefmask & 1>>SEEF_LIGHT)
|
|
||||||
{
|
|
||||||
ClientReliableWrite_Begin(to, svc_temp_entity, 4);
|
|
||||||
ClientReliableWrite_Byte(to, SEEF_LIGHT);
|
|
||||||
ClientReliableWrite_Short(to, en|0x8000);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
prev = ef;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SV_AddEffect(client_t *to, edict_t *ent, int seefno)
|
|
||||||
{
|
|
||||||
specialenteffects_t *prev = NULL;
|
|
||||||
specialenteffects_t *ef;
|
|
||||||
int en = NUM_FOR_EDICT(svprogfuncs, ent);
|
|
||||||
|
|
||||||
for (ef = to->enteffects; ef; ef = ef->next)
|
|
||||||
{
|
|
||||||
if (ef->entnum == en && ef->efnum == 1<<seefno)
|
|
||||||
{
|
|
||||||
if (ef->colour != ent->v->seefcolour || ef->offset != ent->v->seefoffset || ef->size[0] != ent->v->seefsizex || ef->size[1] != ent->v->seefsizey || ef->size[2] != ent->v->seefsizez || ef->die < sv.time)
|
|
||||||
{
|
|
||||||
if (prev)
|
|
||||||
prev->next = ef->next;
|
|
||||||
else
|
|
||||||
to->enteffects = ef->next;
|
|
||||||
Z_Free(ef);
|
|
||||||
ef = NULL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return; //still the same state.
|
|
||||||
}
|
|
||||||
prev = ef;
|
|
||||||
}
|
|
||||||
|
|
||||||
ef = Z_Malloc(sizeof(specialenteffects_t));
|
|
||||||
ef->die = sv.time + 10;
|
|
||||||
ef->next = to->enteffects;
|
|
||||||
to->enteffects = ef;
|
|
||||||
ef->efnum = 1<<seefno;
|
|
||||||
ef->entnum = en;
|
|
||||||
ef->colour = ent->v->seefcolour;
|
|
||||||
if (!ef->colour)
|
|
||||||
ef->colour = 111;
|
|
||||||
ef->offset = ent->v->seefoffset;
|
|
||||||
ef->size[0] = ent->v->seefsizex;
|
|
||||||
if (!ef->size[0])
|
|
||||||
ef->offset = 64;
|
|
||||||
ef->size[1] = ent->v->seefsizey;
|
|
||||||
if (!ef->size[1])
|
|
||||||
ef->offset = 64;
|
|
||||||
ef->size[2] = ent->v->seefsizez;
|
|
||||||
if (!ef->size[2])
|
|
||||||
ef->offset = 64;
|
|
||||||
|
|
||||||
ClientReliableWrite_Begin(to, svc_temp_entity, 20);
|
|
||||||
ClientReliableWrite_Byte(to, TE_SEEF_BRIGHTFIELD+seefno);
|
|
||||||
ClientReliableWrite_Short(to, en);
|
|
||||||
switch(seefno)
|
|
||||||
{
|
|
||||||
case SEEF_BRIGHTFIELD:
|
|
||||||
ClientReliableWrite_Coord(to, ef->size[0]);
|
|
||||||
ClientReliableWrite_Coord(to, ef->size[1]);
|
|
||||||
ClientReliableWrite_Coord(to, ef->size[2]);
|
|
||||||
ClientReliableWrite_Char (to, ef->offset);
|
|
||||||
ClientReliableWrite_Byte (to, ef->colour);
|
|
||||||
break;
|
|
||||||
case SEEF_DARKFIELD:
|
|
||||||
ClientReliableWrite_Byte (to, ef->colour);
|
|
||||||
break;
|
|
||||||
case SEEF_DARKLIGHT:
|
|
||||||
case SEEF_LIGHT:
|
|
||||||
ClientReliableWrite_Coord(to, ef->size[0]);
|
|
||||||
ClientReliableWrite_Coord(to, ef->size[1]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
void SV_SendExtraEntEffects(client_t *to, edict_t *ent)
|
|
||||||
{
|
|
||||||
#ifdef PEXT_SEEF1
|
|
||||||
int removeeffects = 0;
|
|
||||||
if (pr_udc_exteffect_enabled)
|
|
||||||
{
|
|
||||||
if (to->fteprotocolextensions & PEXT_SEEF1)
|
|
||||||
{
|
|
||||||
if (progstype != PROG_QW)
|
|
||||||
{
|
|
||||||
if ((int)ent->v->effects & (EF_BRIGHTFIELD|EFNQ_DARKLIGHT|EFNQ_DARKFIELD|EFNQ_LIGHT) || to->enteffects)
|
|
||||||
{
|
|
||||||
if ((int)ent->v->effects & EF_BRIGHTFIELD)
|
|
||||||
SV_AddEffect(to, ent, SEEF_BRIGHTFIELD);
|
|
||||||
else
|
|
||||||
removeeffects |= 1<<SEEF_BRIGHTFIELD;
|
|
||||||
|
|
||||||
if ((int)ent->v->effects & EFNQ_DARKLIGHT)
|
|
||||||
SV_AddEffect(to, ent, SEEF_DARKLIGHT);
|
|
||||||
else
|
|
||||||
removeeffects |= 1<<SEEF_DARKLIGHT;
|
|
||||||
|
|
||||||
if ((int)ent->v->effects & EFNQ_DARKFIELD)
|
|
||||||
SV_AddEffect(to, ent, SEEF_DARKFIELD);
|
|
||||||
else
|
|
||||||
removeeffects |= 1<<SEEF_DARKFIELD;
|
|
||||||
|
|
||||||
if ((int)ent->v->effects & EFNQ_LIGHT)
|
|
||||||
SV_AddEffect(to, ent, SEEF_LIGHT);
|
|
||||||
else
|
|
||||||
removeeffects |= 1<<SEEF_LIGHT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ((int)ent->v->effects & (EF_BRIGHTFIELD|EFQW_DARKLIGHT|EFQW_DARKFIELD|EFQW_LIGHT) || to->enteffects)
|
|
||||||
{
|
|
||||||
if ((int)ent->v->effects & EF_BRIGHTFIELD)
|
|
||||||
SV_AddEffect(to, ent, SEEF_BRIGHTFIELD);
|
|
||||||
else
|
|
||||||
removeeffects |= 1<<SEEF_BRIGHTFIELD;
|
|
||||||
|
|
||||||
if ((int)ent->v->effects & EFQW_DARKLIGHT)
|
|
||||||
SV_AddEffect(to, ent, SEEF_DARKLIGHT);
|
|
||||||
else
|
|
||||||
removeeffects |= 1<<SEEF_DARKLIGHT;
|
|
||||||
|
|
||||||
if ((int)ent->v->effects & EFQW_DARKFIELD)
|
|
||||||
SV_AddEffect(to, ent, SEEF_DARKFIELD);
|
|
||||||
else
|
|
||||||
removeeffects |= 1<<SEEF_DARKFIELD;
|
|
||||||
|
|
||||||
if ((int)ent->v->effects & EFQW_LIGHT)
|
|
||||||
SV_AddEffect(to, ent, SEEF_LIGHT);
|
|
||||||
else
|
|
||||||
removeeffects |= 1<<SEEF_LIGHT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (to->enteffects)
|
|
||||||
SV_RemoveEffect(to, ent, removeeffects);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
/*
|
/*
|
||||||
=============
|
=============
|
||||||
SV_WritePlayersToClient
|
SV_WritePlayersToClient
|
||||||
|
@ -1920,10 +1731,6 @@ void SV_WritePlayersToClient (client_t *client, edict_t *clent, qbyte *pvs, size
|
||||||
ClientReliableWrite_Short(client, client->otherclientsknown[j].vweap);
|
ClientReliableWrite_Short(client, client->otherclientsknown[j].vweap);
|
||||||
ClientReliable_FinishWrite(client);
|
ClientReliable_FinishWrite(client);
|
||||||
}
|
}
|
||||||
if (!sv.demostatevalid)
|
|
||||||
{
|
|
||||||
SV_SendExtraEntEffects(client, cl->edict);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2746,14 +2553,6 @@ void SV_WriteEntitiesToClient (client_t *client, sizebuf_t *msg, qboolean ignore
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!sv.demostatevalid)
|
|
||||||
{
|
|
||||||
for (i = 0; i < pack->num_entities; i++)
|
|
||||||
{
|
|
||||||
SV_SendExtraEntEffects(client, EDICT_NUM(svprogfuncs, pack->entities[i].number));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// encode the packet entities as a delta from the
|
// encode the packet entities as a delta from the
|
||||||
// last packetentities acknowledged by the client
|
// last packetentities acknowledged by the client
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue