diff --git a/engine/server/sv_ents.c b/engine/server/sv_ents.c index 834759192..7b6e0b617 100644 --- a/engine/server/sv_ents.c +++ b/engine/server/sv_ents.c @@ -1257,7 +1257,7 @@ void SV_WritePlayersToClient (client_t *client, edict_t *clent, qbyte *pvs, size continue; // not visible } - if (!((int)clent->v.dimension_mask & ((int)ent->v.dimension_mask | (int)ent->v.dimension_ghost))) + if (!((int)clent->v.dimension_see & ((int)ent->v.dimension_seen | (int)ent->v.dimension_ghost))) continue; //not in this dimension - sorry... } @@ -1289,9 +1289,14 @@ void SV_WritePlayersToClient (client_t *client, edict_t *clent, qbyte *pvs, size clst.transparency = vent->v.alpha; //QSG_DIMENSION_PLANES - if the only shared dimensions are ghost dimensions, Set half alpha. - if (((int)clent->v.dimension_mask & (int)ent->v.dimension_ghost)) - if (!((int)clent->v.dimension_mask & ((int)ent->v.dimension_mask & ~(int)ent->v.dimension_ghost)) ) - clst.transparency /= 2; + if (((int)clent->v.dimension_see & (int)ent->v.dimension_ghost)) + if (!((int)clent->v.dimension_see & ((int)ent->v.dimension_seen & ~(int)ent->v.dimension_ghost)) ) + { + if (ent->v.dimension_ghost_alpha) + clst.transparency *= ent->v.dimension_ghost_alpha; + else + clst.transparency *= 0.5; + } clst.fatness = vent->v.fatness; clst.localtime = cl->localtime; @@ -1958,8 +1963,10 @@ void SV_WriteEntitiesToClient (client_t *client, sizebuf_t *msg, qboolean ignore if (ent->v.drawonlytoclient != EDICT_TO_PROG(svprogfuncs, client->edict)) continue; - if (!((int)client->edict->v.dimension_mask & ((int)ent->v.dimension_mask | (int)ent->v.dimension_ghost))) + //QSG_DIMENSION_PLANES + if (!((int)client->edict->v.dimension_see & ((int)ent->v.dimension_seen | (int)ent->v.dimension_ghost))) continue; //not in this dimension - sorry... + #ifdef NQPROT if (nqprot) { @@ -2079,9 +2086,14 @@ void SV_WriteEntitiesToClient (client_t *client, sizebuf_t *msg, qboolean ignore state->trans = 1; //QSG_DIMENSION_PLANES - if the only shared dimensions are ghost dimensions, Set half alpha. - if (((int)client->edict->v.dimension_mask & (int)ent->v.dimension_ghost)) - if (!((int)client->edict->v.dimension_mask & ((int)ent->v.dimension_mask & ~(int)ent->v.dimension_ghost)) ) - state->trans /= 2; + if (((int)client->edict->v.dimension_see & (int)ent->v.dimension_ghost)) + if (!((int)client->edict->v.dimension_see & ((int)ent->v.dimension_seen & ~(int)ent->v.dimension_ghost)) ) + { + if (ent->v.dimension_ghost_alpha) + state->trans *= ent->v.dimension_ghost_alpha; + else + state->trans *= 0.5; + } #endif #ifdef PEXT_FATNESS state->fatness = ent->v.fatness;