mirror of
https://github.com/ReactionQuake3/reaction.git
synced 2024-11-10 23:32:06 +00:00
Lens flares
This commit is contained in:
parent
0d5f00a159
commit
0b516b24ce
7 changed files with 104 additions and 135 deletions
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.155 2003/09/18 19:05:10 makro
|
||||||
|
// Lens flares
|
||||||
|
//
|
||||||
// Revision 1.154 2003/09/17 23:49:29 makro
|
// Revision 1.154 2003/09/17 23:49:29 makro
|
||||||
// Lens flares. Opendoor trigger_multiple fixes
|
// Lens flares. Opendoor trigger_multiple fixes
|
||||||
//
|
//
|
||||||
|
@ -1617,7 +1620,7 @@ typedef struct {
|
||||||
sfxHandle_t female_click;
|
sfxHandle_t female_click;
|
||||||
|
|
||||||
//Makro - lens flare shaders
|
//Makro - lens flare shaders
|
||||||
qhandle_t flareShader[NUM_FLARE_SHADERS];
|
qhandle_t flareShader[NUM_FLARE_SHADERS], sunFlareShader;
|
||||||
} cgMedia_t;
|
} cgMedia_t;
|
||||||
|
|
||||||
// The client game static (cgs) structure hold everything
|
// The client game static (cgs) structure hold everything
|
||||||
|
@ -1715,7 +1718,8 @@ typedef struct {
|
||||||
vec3_t clearColor;
|
vec3_t clearColor;
|
||||||
qboolean clearColorSet;
|
qboolean clearColorSet;
|
||||||
//Makro - sun flares
|
//Makro - sun flares
|
||||||
int lastSunTime, lastSunX, lastSunY, numFlares;
|
int lastSunTime, lastSunX, lastSunY, numFlares, sunFlareSize;
|
||||||
|
float sunAlpha;
|
||||||
vec3_t sunDir;
|
vec3_t sunDir;
|
||||||
} cgs_t;
|
} cgs_t;
|
||||||
|
|
||||||
|
@ -2148,6 +2152,9 @@ void CG_SetEntitySoundPosition(centity_t * cent);
|
||||||
#define ADDENTS_NOSKYPORTAL -1
|
#define ADDENTS_NOSKYPORTAL -1
|
||||||
#define ADDENTS_NORMAL 0
|
#define ADDENTS_NORMAL 0
|
||||||
#define ADDENTS_SKYPORTAL 1
|
#define ADDENTS_SKYPORTAL 1
|
||||||
|
//Makro - longest define in the history of mankind ?
|
||||||
|
#define GET_ZOOM_LEVEL ((cg.zoomLevel & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW && (cg.zoomLevel & RQ3_ZOOM_MED) == RQ3_ZOOM_MED) ? 6 : ((cg.zoomLevel & RQ3_ZOOM_MED) == RQ3_ZOOM_MED) ? 4 : ((cg.zoomLevel & RQ3_ZOOM_LOW) == RQ3_ZOOM_LOW) ? 2 : 1
|
||||||
|
|
||||||
void CG_AddPacketEntities(int mode);
|
void CG_AddPacketEntities(int mode);
|
||||||
void CG_Beam(centity_t * cent);
|
void CG_Beam(centity_t * cent);
|
||||||
void CG_AdjustPositionForMover(const vec3_t in, int moverNum, int fromTime, int toTime, vec3_t out);
|
void CG_AdjustPositionForMover(const vec3_t in, int moverNum, int fromTime, int toTime, vec3_t out);
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.142 2003/09/18 19:05:10 makro
|
||||||
|
// Lens flares
|
||||||
|
//
|
||||||
// Revision 1.141 2003/09/17 23:49:29 makro
|
// Revision 1.141 2003/09/17 23:49:29 makro
|
||||||
// Lens flares. Opendoor trigger_multiple fixes
|
// Lens flares. Opendoor trigger_multiple fixes
|
||||||
//
|
//
|
||||||
|
@ -2270,6 +2273,7 @@ static void CG_RegisterGraphics(void)
|
||||||
//Makro - lens flare shaders
|
//Makro - lens flare shaders
|
||||||
for (i=0; i<NUM_FLARE_SHADERS; i++)
|
for (i=0; i<NUM_FLARE_SHADERS; i++)
|
||||||
cgs.media.flareShader[i] = trap_R_RegisterShaderNoMip(va("gfx/2d/flare%.2d", i+1));
|
cgs.media.flareShader[i] = trap_R_RegisterShaderNoMip(va("gfx/2d/flare%.2d", i+1));
|
||||||
|
cgs.media.sunFlareShader = trap_R_RegisterShaderNoMip("gfx/2d/sunflare");
|
||||||
|
|
||||||
// register all the server specified models
|
// register all the server specified models
|
||||||
for (i = 1; i < MAX_MODELS; i++) {
|
for (i = 1; i < MAX_MODELS; i++) {
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.76 2003/09/18 19:05:10 makro
|
||||||
|
// Lens flares
|
||||||
|
//
|
||||||
// Revision 1.75 2003/09/17 23:49:29 makro
|
// Revision 1.75 2003/09/17 23:49:29 makro
|
||||||
// Lens flares. Opendoor trigger_multiple fixes
|
// Lens flares. Opendoor trigger_multiple fixes
|
||||||
//
|
//
|
||||||
|
@ -459,17 +462,19 @@ void CG_ParseSkyPortal(const char *str)
|
||||||
//lens flare
|
//lens flare
|
||||||
n = atoi(Info_ValueForKey(str, "ln"));
|
n = atoi(Info_ValueForKey(str, "ln"));
|
||||||
if (n > 0) {
|
if (n > 0) {
|
||||||
float alphamin, alphamax, sizemin, sizemax, dfactor = 0.5f;
|
float alphamin, alphamax, sizemin, sizemax, dfactor = 0.75f;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
cgs.numFlares = n;
|
cgs.numFlares = n;
|
||||||
cgs.sunDir[0] = atof(Info_ValueForKey(str, "lx"));
|
cgs.sunDir[0] = atof(Info_ValueForKey(str, "lx"));
|
||||||
cgs.sunDir[1] = atof(Info_ValueForKey(str, "ly"));
|
cgs.sunDir[1] = atof(Info_ValueForKey(str, "ly"));
|
||||||
cgs.sunDir[2] = atof(Info_ValueForKey(str, "lz"));
|
cgs.sunDir[2] = atof(Info_ValueForKey(str, "lz"));
|
||||||
alphamin = atof(Info_ValueForKey(str, "lamin"));
|
alphamin = Com_Clamp(0.0f, 1.0f, atof(Info_ValueForKey(str, "lamin")));
|
||||||
alphamax = atof(Info_ValueForKey(str, "lamax"));
|
alphamax = Com_Clamp(0.0f, 1.0f, atof(Info_ValueForKey(str, "lamax")));
|
||||||
sizemin = atof(Info_ValueForKey(str, "lsmin"));
|
sizemin = atof(Info_ValueForKey(str, "lsmin"));
|
||||||
sizemax = atof(Info_ValueForKey(str, "lsmax"));
|
sizemax = atof(Info_ValueForKey(str, "lsmax"));
|
||||||
|
cgs.sunFlareSize = atoi(Info_ValueForKey(str, "lsun"));
|
||||||
|
cgs.sunAlpha = Com_Clamp(0.0f, 1.0f, atof(Info_ValueForKey(str, "lsa")));
|
||||||
|
|
||||||
//generate flare parms
|
//generate flare parms
|
||||||
for (i=0; i<MAX_VISIBLE_FLARES; i++) {
|
for (i=0; i<MAX_VISIBLE_FLARES; i++) {
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.39 2003/09/18 19:05:10 makro
|
||||||
|
// Lens flares
|
||||||
|
//
|
||||||
// Revision 1.38 2003/09/17 23:49:29 makro
|
// Revision 1.38 2003/09/17 23:49:29 makro
|
||||||
// Lens flares. Opendoor trigger_multiple fixes
|
// Lens flares. Opendoor trigger_multiple fixes
|
||||||
//
|
//
|
||||||
|
@ -1012,8 +1015,8 @@ static void CG_PlayBufferedSounds(void)
|
||||||
void CG_AddLensFlare()
|
void CG_AddLensFlare()
|
||||||
{
|
{
|
||||||
vec3_t dir, dp;
|
vec3_t dir, dp;
|
||||||
float PI180 = M_PI/180, hfovx = cg.refdef.fov_x/2, hfovy = cg.refdef.fov_y/2,
|
float PI180 = M_PI/180, pitch, yaw, cx, cy,
|
||||||
p, y, cx, cy;
|
hfovx = cg.refdef.fov_x/2, hfovy = cg.refdef.fov_y/2;
|
||||||
int i, timeDelta = 0;
|
int i, timeDelta = 0;
|
||||||
qboolean visible = qfalse;
|
qboolean visible = qfalse;
|
||||||
|
|
||||||
|
@ -1021,22 +1024,28 @@ void CG_AddLensFlare()
|
||||||
dp[0] = DotProduct(dir, cg.refdef.viewaxis[0]);
|
dp[0] = DotProduct(dir, cg.refdef.viewaxis[0]);
|
||||||
dp[1] = DotProduct(dir, cg.refdef.viewaxis[1]);
|
dp[1] = DotProduct(dir, cg.refdef.viewaxis[1]);
|
||||||
dp[2] = DotProduct(dir, cg.refdef.viewaxis[2]);
|
dp[2] = DotProduct(dir, cg.refdef.viewaxis[2]);
|
||||||
y = 90 - acos(dp[1])/PI180;
|
yaw = 90.0f - acos(dp[1])/PI180;
|
||||||
p = 90 - acos(dp[2])/PI180;
|
pitch = 90.0f - acos(dp[2])/PI180;
|
||||||
//if the sun is in fov
|
//if the sun is in fov
|
||||||
if (dp[0] > 0 && abs(y) <= hfovx && abs(p) <= hfovy) {
|
if (dp[0] > 0 && abs(yaw) <= hfovx && abs(pitch) <= hfovy) {
|
||||||
//do a trace
|
//do a trace
|
||||||
vec3_t end;
|
vec3_t end;
|
||||||
trace_t tr;
|
trace_t tr;
|
||||||
|
|
||||||
VectorMA(cg.refdef.vieworg, 16384, dir, end);
|
VectorMA(cg.refdef.vieworg, 16384, dir, end);
|
||||||
CG_Trace(&tr, cg.refdef.vieworg, NULL, NULL, end, 0, CONTENTS_SOLID);
|
CG_Trace(&tr, cg.refdef.vieworg, NULL, NULL, end, 0, CONTENTS_SOLID);
|
||||||
//if we hit the sky
|
//if we either hit the sky or did a full trace (most likely noclipping)
|
||||||
if (tr.surfaceFlags & SURF_SKY)
|
if ((tr.surfaceFlags & SURF_SKY) || tr.fraction == 1.0f)
|
||||||
{
|
{
|
||||||
//get the screen co-ordinates for the sun
|
//get the screen co-ordinates of the sun
|
||||||
cx = (1.0f - (float)(y + hfovx)/cg.refdef.fov_x) * 640;
|
//cx = (1.0f - (float)(y + hfovx)/cg.refdef.fov_x) * 640;
|
||||||
cy = (1.0f - (float)(p + hfovy)/cg.refdef.fov_y) * 480;
|
//cy = (1.0f - (float)(p + hfovy)/cg.refdef.fov_y) * 480;
|
||||||
|
//cx = 320 * (1 - dp[1] / sin(hfovx * PI180));
|
||||||
|
//cy = 240 * (1 - dp[2] / sin(hfovy * PI180));
|
||||||
|
//cx = 320 * (1 - (float)yaw / hfovx);
|
||||||
|
//cy = 240 * (1 - (float)pitch / hfovy);
|
||||||
|
cx = 320 * (1.0f - dp[1] / (cos(yaw * PI180) * tan(hfovx * PI180)));
|
||||||
|
cy = 240 * (1.0f - dp[2] / (cos(pitch * PI180) * tan(hfovy * PI180)));
|
||||||
cgs.lastSunX = cx;
|
cgs.lastSunX = cx;
|
||||||
cgs.lastSunY = cy;
|
cgs.lastSunY = cy;
|
||||||
cgs.lastSunTime = cg.time;
|
cgs.lastSunTime = cg.time;
|
||||||
|
@ -1052,13 +1061,31 @@ void CG_AddLensFlare()
|
||||||
}
|
}
|
||||||
//add the sprites
|
//add the sprites
|
||||||
if (visible || cgs.lastSunTime) {
|
if (visible || cgs.lastSunTime) {
|
||||||
float len = 0, fade = 1.0f;
|
float len = 0, fade = 1.0f, color[4];
|
||||||
|
float fovFactor = 1.0f, size, hsize;
|
||||||
|
|
||||||
|
if (cg.refdef.fov_x < 90)
|
||||||
|
fovFactor = 5 - 0.05f * cg.refdef.fov_x;
|
||||||
|
color[0] = color[1] = color[2] = 1.0f;
|
||||||
|
color[3] = cgs.sunAlpha;
|
||||||
|
if (!visible) {
|
||||||
|
fade = 1.0f - (float)timeDelta / FLARE_FADEOUT_TIME;
|
||||||
|
color[3] *= fade;
|
||||||
|
}
|
||||||
|
//sun
|
||||||
|
if (cgs.sunFlareSize > 0) {
|
||||||
|
size = cgs.sunFlareSize * fovFactor;
|
||||||
|
hsize = size/2;
|
||||||
|
trap_R_SetColor(color);
|
||||||
|
CG_DrawPic(cgs.lastSunX - hsize, cgs.lastSunY - hsize, size, size, cgs.media.sunFlareShader);
|
||||||
|
}
|
||||||
|
|
||||||
|
//reflection particles
|
||||||
VectorSet(dir, 320-cgs.lastSunX, 240-cgs.lastSunY, 0);
|
VectorSet(dir, 320-cgs.lastSunX, 240-cgs.lastSunY, 0);
|
||||||
len = 2 * VectorNormalize(dir);
|
len = 2 * VectorNormalize(dir);
|
||||||
if (!visible)
|
|
||||||
fade = 1.0f - (float)timeDelta / FLARE_FADEOUT_TIME;
|
|
||||||
for (i=0; i<cgs.numFlares; i++) {
|
for (i=0; i<cgs.numFlares; i++) {
|
||||||
float color[4];
|
size = cg.flareShaderSize[i] * fovFactor;
|
||||||
|
hsize = size/2.0f;
|
||||||
dp[2] = len / cgs.numFlares * (i+1);
|
dp[2] = len / cgs.numFlares * (i+1);
|
||||||
dp[0] = cgs.lastSunX + dp[2] * dir[0];
|
dp[0] = cgs.lastSunX + dp[2] * dir[0];
|
||||||
dp[1] = cgs.lastSunY + dp[2] * dir[1];
|
dp[1] = cgs.lastSunY + dp[2] * dir[1];
|
||||||
|
@ -1069,8 +1096,8 @@ void CG_AddLensFlare()
|
||||||
if (!visible)
|
if (!visible)
|
||||||
color[3] *= fade;
|
color[3] *= fade;
|
||||||
trap_R_SetColor(color);
|
trap_R_SetColor(color);
|
||||||
CG_DrawPic(dp[0]-cg.flareShaderSize[i]/2.0f, dp[1]-cg.flareShaderSize[i]/2.0f,
|
CG_DrawPic(dp[0] - hsize, dp[1] - hsize, size, size,
|
||||||
cg.flareShaderSize[i], cg.flareShaderSize[i], cgs.media.flareShader[cg.flareShaderNum[i]]);
|
cgs.media.flareShader[cg.flareShaderNum[i]]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
--------------------Configuration: cgame - Win32 Release--------------------
|
--------------------Configuration: cgame - Win32 Release--------------------
|
||||||
</h3>
|
</h3>
|
||||||
<h3>Command Lines</h3>
|
<h3>Command Lines</h3>
|
||||||
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP315.tmp" with contents
|
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP2CC.tmp" with contents
|
||||||
[
|
[
|
||||||
/nologo /G6 /ML /W4 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FR"Release/" /Fp"Release/cgame.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
|
/nologo /G6 /ML /W4 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FR"Release/" /Fp"Release/cgame.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
|
||||||
"C:\Games\Quake3\rq3source\reaction\cgame\cg_view.c"
|
"C:\Games\Quake3\rq3source\reaction\cgame\cg_view.c"
|
||||||
]
|
]
|
||||||
Creating command line "cl.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP315.tmp"
|
Creating command line "cl.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP2CC.tmp"
|
||||||
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP316.tmp" with contents
|
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP2CD.tmp" with contents
|
||||||
[
|
[
|
||||||
/nologo /base:"0x30000000" /subsystem:windows /dll /incremental:no /pdb:"Release/cgamex86.pdb" /map:"Release/cgamex86.map" /machine:I386 /def:".\cgame.def" /out:"../Release/cgamex86.dll" /implib:"Release/cgamex86.lib"
|
/nologo /base:"0x30000000" /subsystem:windows /dll /incremental:no /pdb:"Release/cgamex86.pdb" /map:"Release/cgamex86.map" /machine:I386 /def:".\cgame.def" /out:"../Release/cgamex86.dll" /implib:"Release/cgamex86.lib"
|
||||||
.\Release\bg_misc.obj
|
.\Release\bg_misc.obj
|
||||||
|
@ -43,13 +43,13 @@ Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP316.tmp" with conte
|
||||||
.\Release\q_shared.obj
|
.\Release\q_shared.obj
|
||||||
.\Release\ui_shared.obj
|
.\Release\ui_shared.obj
|
||||||
]
|
]
|
||||||
Creating command line "link.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP316.tmp"
|
Creating command line "link.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP2CD.tmp"
|
||||||
<h3>Output Window</h3>
|
<h3>Output Window</h3>
|
||||||
Compiling...
|
Compiling...
|
||||||
cg_view.c
|
cg_view.c
|
||||||
Linking...
|
Linking...
|
||||||
Creating library Release/cgamex86.lib and object Release/cgamex86.exp
|
Creating library Release/cgamex86.lib and object Release/cgamex86.exp
|
||||||
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP31A.tmp" with contents
|
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP2D1.tmp" with contents
|
||||||
[
|
[
|
||||||
/nologo /o"Release/cgame.bsc"
|
/nologo /o"Release/cgame.bsc"
|
||||||
.\Release\bg_misc.sbr
|
.\Release\bg_misc.sbr
|
||||||
|
@ -79,7 +79,7 @@ Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP31A.tmp" with conte
|
||||||
.\Release\q_math.sbr
|
.\Release\q_math.sbr
|
||||||
.\Release\q_shared.sbr
|
.\Release\q_shared.sbr
|
||||||
.\Release\ui_shared.sbr]
|
.\Release\ui_shared.sbr]
|
||||||
Creating command line "bscmake.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP31A.tmp"
|
Creating command line "bscmake.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP2D1.tmp"
|
||||||
Creating browse info file...
|
Creating browse info file...
|
||||||
<h3>Output Window</h3>
|
<h3>Output Window</h3>
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// $Log$
|
// $Log$
|
||||||
|
// Revision 1.79 2003/09/18 19:08:40 makro
|
||||||
|
// Lens flares
|
||||||
|
//
|
||||||
// Revision 1.78 2003/09/18 00:05:05 makro
|
// Revision 1.78 2003/09/18 00:05:05 makro
|
||||||
// Lens flares. Opendoor trigger_multiple fixes
|
// Lens flares. Opendoor trigger_multiple fixes
|
||||||
//
|
//
|
||||||
|
@ -421,7 +424,7 @@ void G_RunDlight(gentity_t * ent)
|
||||||
/*QUAKED misc_lens_flare (0 1 0) (-8 -8 -8) (8 8 8) ?
|
/*QUAKED misc_lens_flare (0 1 0) (-8 -8 -8) (8 8 8) ?
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void Think_Flare_Target(gentity_t *ent)
|
void Think_SetupFlare(gentity_t *ent)
|
||||||
{
|
{
|
||||||
char info[MAX_INFO_STRING]={0};
|
char info[MAX_INFO_STRING]={0};
|
||||||
vec3_t dir;
|
vec3_t dir;
|
||||||
|
@ -438,8 +441,8 @@ void Think_Flare_Target(gentity_t *ent)
|
||||||
} else {
|
} else {
|
||||||
VectorCopy(ent->s.origin2, dir);
|
VectorCopy(ent->s.origin2, dir);
|
||||||
}
|
}
|
||||||
trap_GetConfigstring(CS_SKYPORTAL, info, sizeof(info));
|
|
||||||
VectorNormalize(dir);
|
VectorNormalize(dir);
|
||||||
|
trap_GetConfigstring(CS_SKYPORTAL, info, sizeof(info));
|
||||||
|
|
||||||
Info_SetValueForKey(info, "ln", va("%d", ent->count));
|
Info_SetValueForKey(info, "ln", va("%d", ent->count));
|
||||||
Info_SetValueForKey(info, "lx", va("%f", dir[0]));
|
Info_SetValueForKey(info, "lx", va("%f", dir[0]));
|
||||||
|
@ -449,6 +452,8 @@ void Think_Flare_Target(gentity_t *ent)
|
||||||
Info_SetValueForKey(info, "lamax", va("%f", ent->health_saved/1000.0f));
|
Info_SetValueForKey(info, "lamax", va("%f", ent->health_saved/1000.0f));
|
||||||
Info_SetValueForKey(info, "lsmin", va("%d", ent->damage));
|
Info_SetValueForKey(info, "lsmin", va("%d", ent->damage));
|
||||||
Info_SetValueForKey(info, "lsmax", va("%d", ent->damage_radius));
|
Info_SetValueForKey(info, "lsmax", va("%d", ent->damage_radius));
|
||||||
|
Info_SetValueForKey(info, "lsun", va("%d", ent->mass));
|
||||||
|
Info_SetValueForKey(info, "lsa", va("%f", ent->speed));
|
||||||
trap_SetConfigstring(CS_SKYPORTAL, info);
|
trap_SetConfigstring(CS_SKYPORTAL, info);
|
||||||
|
|
||||||
G_FreeEntity(ent, __LINE__, __FILE__);
|
G_FreeEntity(ent, __LINE__, __FILE__);
|
||||||
|
@ -465,10 +470,26 @@ void SP_misc_lens_flare(gentity_t *ent)
|
||||||
G_SpawnInt("maxsize", "128", &ent->damage_radius);
|
G_SpawnInt("maxsize", "128", &ent->damage_radius);
|
||||||
|
|
||||||
G_SpawnFloat("alphamin", "0.5", &f);
|
G_SpawnFloat("alphamin", "0.5", &f);
|
||||||
|
if (f > 1)
|
||||||
|
f = 1;
|
||||||
|
else if (f < 0)
|
||||||
|
f = 0;
|
||||||
ent->health = f * 1000;
|
ent->health = f * 1000;
|
||||||
|
|
||||||
G_SpawnFloat("alphamax", "1", &f);
|
G_SpawnFloat("alphamax", "1", &f);
|
||||||
|
if (f > 1)
|
||||||
|
f = 1;
|
||||||
|
else if (f < 0)
|
||||||
|
f = 0;
|
||||||
ent->health_saved = f * 1000;
|
ent->health_saved = f * 1000;
|
||||||
|
if (ent->health_saved < ent->health) {
|
||||||
|
int tmp = ent->health_saved;
|
||||||
|
ent->health_saved = ent->health;
|
||||||
|
ent->health = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
G_SpawnInt("sunsize", "0", &ent->mass);
|
||||||
|
G_SpawnFloat("sunalpha", "0.5", &ent->speed);
|
||||||
|
|
||||||
if (!ent->target) {
|
if (!ent->target) {
|
||||||
if (!G_SpawnVector("direction", "0 0 1", ent->s.origin2)) {
|
if (!G_SpawnVector("direction", "0 0 1", ent->s.origin2)) {
|
||||||
|
@ -476,7 +497,7 @@ void SP_misc_lens_flare(gentity_t *ent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ent->think = Think_Flare_Target;
|
ent->think = Think_SetupFlare;
|
||||||
ent->nextthink = level.time + FRAMETIME;
|
ent->nextthink = level.time + FRAMETIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -710,9 +731,16 @@ void SP_misc_portal_camera(gentity_t * ent)
|
||||||
void Think_SetupSkyPortal(gentity_t *ent)
|
void Think_SetupSkyPortal(gentity_t *ent)
|
||||||
{
|
{
|
||||||
char info[MAX_INFO_STRING]={0};
|
char info[MAX_INFO_STRING]={0};
|
||||||
trap_GetConfigstring(CS_SKYPORTAL, info, sizeof(info));
|
qboolean isSet = qfalse;
|
||||||
|
int n = 0;
|
||||||
|
|
||||||
if (!info[0]) {
|
trap_GetConfigstring(CS_SKYPORTAL, info, sizeof(info));
|
||||||
|
if (info[0]) {
|
||||||
|
n = atoi(Info_ValueForKey(info, "n"));
|
||||||
|
if (n)
|
||||||
|
isSet = qtrue;
|
||||||
|
}
|
||||||
|
if (!isSet) {
|
||||||
gentity_t *skyportal = G_Find(NULL, FOFS(targetname), ent->target);
|
gentity_t *skyportal = G_Find(NULL, FOFS(targetname), ent->target);
|
||||||
|
|
||||||
//G_Printf("^1 SKY PORTAL !!!\n");
|
//G_Printf("^1 SKY PORTAL !!!\n");
|
||||||
|
@ -736,7 +764,7 @@ void Think_SetupSkyPortal(gentity_t *ent)
|
||||||
ent->s.origin2[0] = atof(Info_ValueForKey(info, "x"));
|
ent->s.origin2[0] = atof(Info_ValueForKey(info, "x"));
|
||||||
ent->s.origin2[1] = atof(Info_ValueForKey(info, "y"));
|
ent->s.origin2[1] = atof(Info_ValueForKey(info, "y"));
|
||||||
ent->s.origin2[2] = atof(Info_ValueForKey(info, "z"));
|
ent->s.origin2[2] = atof(Info_ValueForKey(info, "z"));
|
||||||
ent->r.ownerNum = atoi(Info_ValueForKey(info, "n"));
|
ent->r.ownerNum = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
ent->nextthink = 0;
|
ent->nextthink = 0;
|
||||||
|
|
|
@ -6,108 +6,6 @@
|
||||||
--------------------Configuration: game - Win32 Release--------------------
|
--------------------Configuration: game - Win32 Release--------------------
|
||||||
</h3>
|
</h3>
|
||||||
<h3>Command Lines</h3>
|
<h3>Command Lines</h3>
|
||||||
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP322.tmp" with contents
|
|
||||||
[
|
|
||||||
/nologo /G6 /ML /W4 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FR"c:\reactionoutput/" /Fp"c:\reactionoutput/game.pch" /YX /Fo"c:\reactionoutput/" /Fd"c:\reactionoutput/" /FD /c
|
|
||||||
"C:\Games\Quake3\rq3source\reaction\game\g_misc.c"
|
|
||||||
]
|
|
||||||
Creating command line "cl.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP322.tmp"
|
|
||||||
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP323.tmp" with contents
|
|
||||||
[
|
|
||||||
kernel32.lib user32.lib winmm.lib /nologo /base:"0x20000000" /subsystem:windows /dll /incremental:no /pdb:"c:\reactionoutput/qagamex86.pdb" /map:"c:\reactionoutput/qagamex86.map" /machine:I386 /def:".\game.def" /out:"..\Release/qagamex86.dll" /implib:"c:\reactionoutput/qagamex86.lib"
|
|
||||||
\reactionoutput\ai_chat.obj
|
|
||||||
\reactionoutput\ai_cmd.obj
|
|
||||||
\reactionoutput\ai_dmnet.obj
|
|
||||||
\reactionoutput\ai_dmq3.obj
|
|
||||||
\reactionoutput\ai_main.obj
|
|
||||||
\reactionoutput\ai_team.obj
|
|
||||||
\reactionoutput\ai_vcmd.obj
|
|
||||||
\reactionoutput\bg_misc.obj
|
|
||||||
\reactionoutput\bg_pmove.obj
|
|
||||||
\reactionoutput\bg_slidemove.obj
|
|
||||||
\reactionoutput\g_active.obj
|
|
||||||
\reactionoutput\g_arenas.obj
|
|
||||||
\reactionoutput\g_bot.obj
|
|
||||||
\reactionoutput\g_client.obj
|
|
||||||
\reactionoutput\g_cmds.obj
|
|
||||||
\reactionoutput\g_combat.obj
|
|
||||||
\reactionoutput\g_fileio.obj
|
|
||||||
\reactionoutput\g_items.obj
|
|
||||||
\reactionoutput\g_main.obj
|
|
||||||
\reactionoutput\g_matchmode.obj
|
|
||||||
\reactionoutput\g_mem.obj
|
|
||||||
\reactionoutput\g_misc.obj
|
|
||||||
\reactionoutput\g_missile.obj
|
|
||||||
\reactionoutput\g_mover.obj
|
|
||||||
\reactionoutput\g_session.obj
|
|
||||||
\reactionoutput\g_spawn.obj
|
|
||||||
\reactionoutput\g_svcmds.obj
|
|
||||||
\reactionoutput\g_syscalls.obj
|
|
||||||
\reactionoutput\g_target.obj
|
|
||||||
\reactionoutput\g_team.obj
|
|
||||||
\reactionoutput\g_teamplay.obj
|
|
||||||
\reactionoutput\g_trigger.obj
|
|
||||||
\reactionoutput\g_unlagged.obj
|
|
||||||
\reactionoutput\g_utils.obj
|
|
||||||
\reactionoutput\g_weapon.obj
|
|
||||||
\reactionoutput\q_math.obj
|
|
||||||
\reactionoutput\q_shared.obj
|
|
||||||
\reactionoutput\rxn_game.obj
|
|
||||||
\reactionoutput\zcam.obj
|
|
||||||
\reactionoutput\zcam_target.obj
|
|
||||||
]
|
|
||||||
Creating command line "link.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP323.tmp"
|
|
||||||
<h3>Output Window</h3>
|
|
||||||
Compiling...
|
|
||||||
g_misc.c
|
|
||||||
Linking...
|
|
||||||
Creating library c:\reactionoutput/qagamex86.lib and object c:\reactionoutput/qagamex86.exp
|
|
||||||
Creating temporary file "D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP327.tmp" with contents
|
|
||||||
[
|
|
||||||
/nologo /o"c:\reactionoutput/game.bsc"
|
|
||||||
\reactionoutput\ai_chat.sbr
|
|
||||||
\reactionoutput\ai_cmd.sbr
|
|
||||||
\reactionoutput\ai_dmnet.sbr
|
|
||||||
\reactionoutput\ai_dmq3.sbr
|
|
||||||
\reactionoutput\ai_main.sbr
|
|
||||||
\reactionoutput\ai_team.sbr
|
|
||||||
\reactionoutput\ai_vcmd.sbr
|
|
||||||
\reactionoutput\bg_misc.sbr
|
|
||||||
\reactionoutput\bg_pmove.sbr
|
|
||||||
\reactionoutput\bg_slidemove.sbr
|
|
||||||
\reactionoutput\g_active.sbr
|
|
||||||
\reactionoutput\g_arenas.sbr
|
|
||||||
\reactionoutput\g_bot.sbr
|
|
||||||
\reactionoutput\g_client.sbr
|
|
||||||
\reactionoutput\g_cmds.sbr
|
|
||||||
\reactionoutput\g_combat.sbr
|
|
||||||
\reactionoutput\g_fileio.sbr
|
|
||||||
\reactionoutput\g_items.sbr
|
|
||||||
\reactionoutput\g_main.sbr
|
|
||||||
\reactionoutput\g_matchmode.sbr
|
|
||||||
\reactionoutput\g_mem.sbr
|
|
||||||
\reactionoutput\g_misc.sbr
|
|
||||||
\reactionoutput\g_missile.sbr
|
|
||||||
\reactionoutput\g_mover.sbr
|
|
||||||
\reactionoutput\g_session.sbr
|
|
||||||
\reactionoutput\g_spawn.sbr
|
|
||||||
\reactionoutput\g_svcmds.sbr
|
|
||||||
\reactionoutput\g_syscalls.sbr
|
|
||||||
\reactionoutput\g_target.sbr
|
|
||||||
\reactionoutput\g_team.sbr
|
|
||||||
\reactionoutput\g_teamplay.sbr
|
|
||||||
\reactionoutput\g_trigger.sbr
|
|
||||||
\reactionoutput\g_unlagged.sbr
|
|
||||||
\reactionoutput\g_utils.sbr
|
|
||||||
\reactionoutput\g_weapon.sbr
|
|
||||||
\reactionoutput\q_math.sbr
|
|
||||||
\reactionoutput\q_shared.sbr
|
|
||||||
\reactionoutput\rxn_game.sbr
|
|
||||||
\reactionoutput\zcam.sbr
|
|
||||||
\reactionoutput\zcam_target.sbr]
|
|
||||||
Creating command line "bscmake.exe @D:\DOCUME~1\Andrei\LOCALS~1\Temp\RSP327.tmp"
|
|
||||||
Creating browse info file...
|
|
||||||
<h3>Output Window</h3>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue