|
|
@ -46,7 +46,7 @@ short GAME_EXPORT R_LookupColor( byte r, byte g, byte b ) |
|
|
|
float rf, gf, bf; |
|
|
|
float rf, gf, bf; |
|
|
|
|
|
|
|
|
|
|
|
bestdiff = 999999; |
|
|
|
bestdiff = 999999; |
|
|
|
best = 65535; |
|
|
|
best = -1; |
|
|
|
|
|
|
|
|
|
|
|
for( i = 0; i < 256; i++ ) |
|
|
|
for( i = 0; i < 256; i++ ) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -683,42 +683,46 @@ void CL_ParseViewBeam( sizebuf_t *msg, int beamType ) |
|
|
|
switch( beamType ) |
|
|
|
switch( beamType ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
case TE_BEAMPOINTS: |
|
|
|
case TE_BEAMPOINTS: |
|
|
|
|
|
|
|
case TE_BEAMENTPOINT: |
|
|
|
|
|
|
|
case TE_BEAMENTS: |
|
|
|
|
|
|
|
if( beamType == TE_BEAMENTS ) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
startEnt = MSG_ReadShort( msg ); |
|
|
|
|
|
|
|
endEnt = MSG_ReadShort( msg ); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if( beamType == TE_BEAMENTPOINT ) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
startEnt = MSG_ReadShort( msg ); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
start[0] = MSG_ReadCoord( msg ); |
|
|
|
start[0] = MSG_ReadCoord( msg ); |
|
|
|
start[1] = MSG_ReadCoord( msg ); |
|
|
|
start[1] = MSG_ReadCoord( msg ); |
|
|
|
start[2] = MSG_ReadCoord( msg ); |
|
|
|
start[2] = MSG_ReadCoord( msg ); |
|
|
|
|
|
|
|
} |
|
|
|
end[0] = MSG_ReadCoord( msg ); |
|
|
|
end[0] = MSG_ReadCoord( msg ); |
|
|
|
end[1] = MSG_ReadCoord( msg ); |
|
|
|
end[1] = MSG_ReadCoord( msg ); |
|
|
|
end[2] = MSG_ReadCoord( msg ); |
|
|
|
end[2] = MSG_ReadCoord( msg ); |
|
|
|
|
|
|
|
} |
|
|
|
modelIndex = MSG_ReadShort( msg ); |
|
|
|
modelIndex = MSG_ReadShort( msg ); |
|
|
|
startFrame = MSG_ReadByte( msg ); |
|
|
|
startFrame = MSG_ReadByte( msg ); |
|
|
|
frameRate = (float)MSG_ReadByte( msg ); |
|
|
|
frameRate = (float)MSG_ReadByte( msg ) * 0.1f; |
|
|
|
life = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
life = (float)MSG_ReadByte( msg ) * 0.1f; |
|
|
|
width = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
width = (float)MSG_ReadByte( msg ) * 0.1f; |
|
|
|
noise = (float)(MSG_ReadByte( msg ) * 0.01f); |
|
|
|
noise = (float)MSG_ReadByte( msg ) * 0.01f; |
|
|
|
r = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
|
|
|
|
g = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
|
|
|
|
b = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
|
|
|
|
a = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
|
|
|
|
speed = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
|
|
|
|
R_BeamPoints( start, end, modelIndex, life, width, noise, a, speed, startFrame, frameRate, r, g, b ); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case TE_BEAMENTPOINT: |
|
|
|
|
|
|
|
startEnt = MSG_ReadShort( msg ); |
|
|
|
|
|
|
|
end[0] = MSG_ReadCoord( msg ); |
|
|
|
|
|
|
|
end[1] = MSG_ReadCoord( msg ); |
|
|
|
|
|
|
|
end[2] = MSG_ReadCoord( msg ); |
|
|
|
|
|
|
|
modelIndex = MSG_ReadShort( msg ); |
|
|
|
|
|
|
|
startFrame = MSG_ReadByte( msg ); |
|
|
|
|
|
|
|
frameRate = (float)MSG_ReadByte( msg ); |
|
|
|
|
|
|
|
life = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
|
|
|
|
width = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
|
|
|
|
noise = (float)(MSG_ReadByte( msg ) * 0.01f); |
|
|
|
|
|
|
|
r = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
r = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
g = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
g = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
b = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
b = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
a = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
a = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
speed = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
speed = (float)MSG_ReadByte( msg ) * 0.1f; |
|
|
|
|
|
|
|
if( beamType == TE_BEAMENTS ) |
|
|
|
|
|
|
|
R_BeamEnts( startEnt, endEnt, modelIndex, life, width, noise, a, speed, startFrame, frameRate, r, g, b ); |
|
|
|
|
|
|
|
else if( beamType == TE_BEAMENTPOINT ) |
|
|
|
R_BeamEntPoint( startEnt, end, modelIndex, life, width, noise, a, speed, startFrame, frameRate, r, g, b ); |
|
|
|
R_BeamEntPoint( startEnt, end, modelIndex, life, width, noise, a, speed, startFrame, frameRate, r, g, b ); |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
R_BeamPoints( start, end, modelIndex, life, width, noise, a, speed, startFrame, frameRate, r, g, b ); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case TE_LIGHTNING: |
|
|
|
case TE_LIGHTNING: |
|
|
|
start[0] = MSG_ReadCoord( msg ); |
|
|
|
start[0] = MSG_ReadCoord( msg ); |
|
|
@ -727,27 +731,11 @@ void CL_ParseViewBeam( sizebuf_t *msg, int beamType ) |
|
|
|
end[0] = MSG_ReadCoord( msg ); |
|
|
|
end[0] = MSG_ReadCoord( msg ); |
|
|
|
end[1] = MSG_ReadCoord( msg ); |
|
|
|
end[1] = MSG_ReadCoord( msg ); |
|
|
|
end[2] = MSG_ReadCoord( msg ); |
|
|
|
end[2] = MSG_ReadCoord( msg ); |
|
|
|
life = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
life = (float)MSG_ReadByte( msg ) * 0.1f; |
|
|
|
width = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
width = (float)MSG_ReadByte( msg ) * 0.1f; |
|
|
|
noise = (float)(MSG_ReadByte( msg ) * 0.01f); |
|
|
|
noise = (float)MSG_ReadByte( msg ) * 0.01f; |
|
|
|
modelIndex = MSG_ReadShort( msg ); |
|
|
|
modelIndex = MSG_ReadShort( msg ); |
|
|
|
R_BeamLightning( start, end, modelIndex, life, width, noise, 0.6F, 3.5f ); |
|
|
|
R_BeamLightning( start, end, modelIndex, life, width, noise, 0.6f, 3.5f ); |
|
|
|
break; |
|
|
|
|
|
|
|
case TE_BEAMENTS: |
|
|
|
|
|
|
|
startEnt = MSG_ReadShort( msg ); |
|
|
|
|
|
|
|
endEnt = MSG_ReadShort( msg ); |
|
|
|
|
|
|
|
modelIndex = MSG_ReadShort( msg ); |
|
|
|
|
|
|
|
startFrame = MSG_ReadByte( msg ); |
|
|
|
|
|
|
|
frameRate = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
|
|
|
|
life = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
|
|
|
|
width = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
|
|
|
|
noise = (float)(MSG_ReadByte( msg ) * 0.01f); |
|
|
|
|
|
|
|
r = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
|
|
|
|
g = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
|
|
|
|
b = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
|
|
|
|
a = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
|
|
|
|
speed = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
|
|
|
|
R_BeamEnts( startEnt, endEnt, modelIndex, life, width, noise, a, speed, startFrame, frameRate, r, g, b ); |
|
|
|
|
|
|
|
break; |
|
|
|
break; |
|
|
|
case TE_BEAM: |
|
|
|
case TE_BEAM: |
|
|
|
break; |
|
|
|
break; |
|
|
@ -773,21 +761,21 @@ void CL_ParseViewBeam( sizebuf_t *msg, int beamType ) |
|
|
|
end[2] = MSG_ReadCoord( msg ); |
|
|
|
end[2] = MSG_ReadCoord( msg ); |
|
|
|
modelIndex = MSG_ReadShort( msg ); |
|
|
|
modelIndex = MSG_ReadShort( msg ); |
|
|
|
startFrame = MSG_ReadByte( msg ); |
|
|
|
startFrame = MSG_ReadByte( msg ); |
|
|
|
frameRate = (float)(MSG_ReadByte( msg )); |
|
|
|
frameRate = (float)MSG_ReadByte( msg ) * 0.1f; |
|
|
|
life = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
life = (float)MSG_ReadByte( msg ) * 0.1f; |
|
|
|
width = (float)(MSG_ReadByte( msg )); |
|
|
|
width = (float)MSG_ReadByte( msg ); |
|
|
|
noise = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
noise = (float)MSG_ReadByte( msg ) * 0.01f; |
|
|
|
r = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
r = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
g = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
g = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
b = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
b = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
a = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
a = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
speed = (float)(MSG_ReadByte( msg ) / 0.1f); |
|
|
|
speed = (float)MSG_ReadByte( msg ) * 0.1f; |
|
|
|
R_BeamCirclePoints( beamType, start, end, modelIndex, life, width, noise, a, speed, startFrame, frameRate, r, g, b ); |
|
|
|
R_BeamCirclePoints( beamType, start, end, modelIndex, life, width, noise, a, speed, startFrame, frameRate, r, g, b ); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case TE_BEAMFOLLOW: |
|
|
|
case TE_BEAMFOLLOW: |
|
|
|
startEnt = MSG_ReadShort( msg ); |
|
|
|
startEnt = MSG_ReadShort( msg ); |
|
|
|
modelIndex = MSG_ReadShort( msg ); |
|
|
|
modelIndex = MSG_ReadShort( msg ); |
|
|
|
life = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
life = (float)MSG_ReadByte( msg ) * 0.1f; |
|
|
|
width = (float)MSG_ReadByte( msg ); |
|
|
|
width = (float)MSG_ReadByte( msg ); |
|
|
|
r = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
r = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
g = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
g = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
@ -800,15 +788,15 @@ void CL_ParseViewBeam( sizebuf_t *msg, int beamType ) |
|
|
|
endEnt = MSG_ReadShort( msg ); |
|
|
|
endEnt = MSG_ReadShort( msg ); |
|
|
|
modelIndex = MSG_ReadShort( msg ); |
|
|
|
modelIndex = MSG_ReadShort( msg ); |
|
|
|
startFrame = MSG_ReadByte( msg ); |
|
|
|
startFrame = MSG_ReadByte( msg ); |
|
|
|
frameRate = (float)MSG_ReadByte( msg ); |
|
|
|
frameRate = (float)MSG_ReadByte( msg ) * 0.1f; |
|
|
|
life = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
life = (float)MSG_ReadByte( msg ) * 0.1f; |
|
|
|
width = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
width = (float)MSG_ReadByte( msg ) * 0.1f; |
|
|
|
noise = (float)(MSG_ReadByte( msg ) * 0.01f); |
|
|
|
noise = (float)MSG_ReadByte( msg ) * 0.01f; |
|
|
|
r = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
r = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
g = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
g = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
b = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
b = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
a = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
a = (float)MSG_ReadByte( msg ) / 255.0f; |
|
|
|
speed = (float)(MSG_ReadByte( msg ) * 0.1f); |
|
|
|
speed = (float)MSG_ReadByte( msg ) * 0.1f; |
|
|
|
R_BeamRing( startEnt, endEnt, modelIndex, life, width, noise, a, speed, startFrame, frameRate, r, g, b ); |
|
|
|
R_BeamRing( startEnt, endEnt, modelIndex, life, width, noise, a, speed, startFrame, frameRate, r, g, b ); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case TE_BEAMHOSE: |
|
|
|
case TE_BEAMHOSE: |
|
|
@ -1265,7 +1253,7 @@ void GAME_EXPORT R_BloodStream( const vec3_t org, const vec3_t dir, int pcolor, |
|
|
|
particle_t *p; |
|
|
|
particle_t *p; |
|
|
|
int i, j; |
|
|
|
int i, j; |
|
|
|
float arc; |
|
|
|
float arc; |
|
|
|
float accel = speed; |
|
|
|
int accel = speed; // must be integer due to bug in GoldSrc
|
|
|
|
|
|
|
|
|
|
|
|
for( arc = 0.05f, i = 0; i < 100; i++ ) |
|
|
|
for( arc = 0.05f, i = 0; i < 100; i++ ) |
|
|
|
{ |
|
|
|
{ |
|
|
|