Module twilight: Change committed
warp at icculus.org
warp at icculus.org
Wed Jan 29 15:09:12 EST 2003
Commiter : warp
CVSROOT : /cvs/cvsroot/twilight
Module : twilight
Commit time: 2003-01-29 20:09:12 UTC
Log message:
A little cleanup that I forgot, and the windows project files. (Untested.)
Modified files:
nq/nq.dsp nq/nq.vcproj qw/qw.dsp qw/qw.vcproj
src/renderer/twilight_renderer.dsp
src/renderer/twilight_renderer.vcproj
Removed files:
qw/gl_alias.c qw/r_part.c
------=MIME.647db1a5217c57296d935b26062ece76
Content-Type: text/plain; name="twilight.20030129.200912.warp.diff"
Content-Disposition: attachment; filename="twilight.20030129.200912.warp.diff"
Content-Transfer-Encoding: 8bit
Index: twilight/nq/nq.dsp
diff -u twilight/nq/nq.dsp:1.52 twilight/nq/nq.dsp:1.53
--- twilight/nq/nq.dsp:1.52 Tue Aug 6 10:59:07 2002
+++ twilight/nq/nq.dsp Wed Jan 29 15:09:02 2003
@@ -132,10 +132,6 @@
# End Source File
# Begin Source File
-SOURCE=.\gl_alias.c
-# End Source File
-# Begin Source File
-
SOURCE=.\gl_draw.c
# End Source File
# Begin Source File
@@ -209,10 +205,6 @@
# Begin Source File
SOURCE=.\r_explosion.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\r_part.c
# End Source File
# Begin Source File
Index: twilight/nq/nq.vcproj
diff -u twilight/nq/nq.vcproj:1.1 twilight/nq/nq.vcproj:1.2
--- twilight/nq/nq.vcproj:1.1 Sat Nov 23 23:27:48 2002
+++ twilight/nq/nq.vcproj Wed Jan 29 15:09:02 2003
@@ -165,9 +165,6 @@
RelativePath=".\console.c">
</File>
<File
- RelativePath=".\gl_alias.c">
- </File>
- <File
RelativePath=".\gl_draw.c">
</File>
<File
@@ -223,9 +220,6 @@
</File>
<File
RelativePath=".\r_explosion.c">
- </File>
- <File
- RelativePath=".\r_part.c">
</File>
<File
RelativePath=".\sbar.c">
Index: twilight/qw/gl_alias.c
diff -u twilight/qw/gl_alias.c:1.16 twilight/qw/gl_alias.c:removed
--- twilight/qw/gl_alias.c:1.16 Wed Jan 29 15:00:42 2003
+++ twilight/qw/gl_alias.c Wed Jan 29 15:09:12 2003
@@ -1,570 +0,0 @@
-/*
- $RCSfile: gl_alias.c,v $
-
- Copyright (C) 1996-1997 Id Software, Inc.
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to:
-
- Free Software Foundation, Inc.
- 59 Temple Place - Suite 330
- Boston, MA 02111-1307, USA
-
-*/
-static const char rcsid[] =
- "$Id: gl_alias.c,v 1.16 2003/01/29 20:00:42 warp Exp $";
-
-#include "twiconfig.h"
-
-#include "render.h"
-#include "client.h"
-#include "cvar.h"
-#include "sys.h"
-#include "matrixlib.h"
-
-void R_DrawOpaqueAliasModels (entity_t *ents[], int num_ents, qboolean viewent);
-extern vec3_t lightcolor;
-
-extern void R_Torch (entity_t *ent, qboolean torch2);
-extern model_t *mdl_fire;
-
-#define NUMVERTEXNORMALS 162
-float r_avertexnormals[NUMVERTEXNORMALS][3] = {
-#include "anorms.h"
-};
-
-static float shadelight;
-
-// precalculated dot products for quantized angles
-#define SHADEDOT_QUANT 16
-static float r_avertexnormal_dots[SHADEDOT_QUANT][256] =
-#include "anorm_dots.h"
- ;
-
-static float *shadedots = r_avertexnormal_dots[0];
-
-/*
-=============================================================
-
- ALIAS MODELS
-
-=============================================================
-*/
-
-// These variables are passed between the setup code, and the renderer.
-static int anim;
-static qboolean has_top = false, has_bottom = false, has_fb = false, draw;
-static vec4_t top, bottom;
-static skin_t *skin;
-static vec_t *mod_origin, *mod_angles;
-static aliashdr_t *paliashdr;
-static matrix4x4_t *matrix;
-
-/*
- * START OF NON-COMMON CODE.
- */
-
-
-/*
-=================
-R_SetupAliasFrame
-
-=================
-*/
-static void
-R_SetupAliasFrame (aliashdr_t *paliashdr, entity_t *e)
-{
- float l;
- int pose_num, i;
- maliasframedesc_t *frame;
- maliaspose_t *pose;
-
- frame = &paliashdr->frames[e->frame[0]];
-
- if (frame->numposes > 1)
- pose_num = (int) (cl.time / frame->interval) % frame->numposes;
- else
- pose_num = 0;
-
- pose = &frame->poses[pose_num];
-
- for (i = 0; i < paliashdr->numverts; i++) {
- VectorCopy(pose->vertices[i].v, v_array_v(i));
- tc0_array(i, 0) = tc1_array(i, 0) = paliashdr->tcarray[i].s;
- tc0_array(i, 1) = tc1_array(i, 1) = paliashdr->tcarray[i].t;
-
- l = shadedots[pose->normal_indices[i]] * shadelight;
- VectorScale(lightcolor, l, cf_array_v(i));
- cf_array(i, 3) = 1;
- }
- TWI_FtoUB (cf_array_v(0), c_array_v(0), paliashdr->numverts * 4);
-}
-
-/*
-=================
-R_SetupAliasBlendedFrame
-
-Please forgive me for the duplicated code here..
- -- Zephaniah E. Hull.
-=================
-*/
-static void
-R_SetupAliasBlendedFrame (aliashdr_t *paliashdr, entity_t *e)
-{
- float d, frac;
- int i1, i2, i, j;
- maliaspose_t *poses[4];
- float fracs[4];
- int num_frames = 0;
- maliasframedesc_t *frame;
-
- for (i = 0; i < 2; i++) {
- if (e->frame_frac[i] < (1.0/65536.0))
- continue;
- frame = &paliashdr->frames[e->frame[i]];
- if (frame->numposes > 1) {
- i1 = (int) (cl.time / e->frame_interval[i]) % frame->numposes;
- frac = (cl.time / e->frame_interval[i]);
- frac -= floor(frac);
- i2 = (i1 + 1) % frame->numposes;
- poses[num_frames] = &frame->poses[i1];
- fracs[num_frames] = (1 - frac) * e->frame_frac[i];
- if (fracs[num_frames] > (1.0/65536.0))
- num_frames++;
- poses[num_frames] = &frame->poses[i2];
- fracs[num_frames] = frac * e->frame_frac[i];
- if (fracs[num_frames] > (1.0/65536.0))
- num_frames++;
- } else {
- poses[num_frames] = &frame->poses[0];
- fracs[num_frames++] = e->frame_frac[i];
- }
- }
-
- switch (num_frames) {
- case 0:
- Sys_Error("Eik! %s\n", e->model->name);
- return; // Never reached.
- case 1:
- for (i = 0; i < paliashdr->numverts; i++) {
- v_array(i, 0) = poses[0]->vertices[i].v[0];
- v_array(i, 1) = poses[0]->vertices[i].v[1];
- v_array(i, 2) = poses[0]->vertices[i].v[2];
-
- d = shadedots[poses[0]->normal_indices[i]];
- d *= shadelight;
- VectorScale (lightcolor, d, cf_array_v(i));
- cf_array(i, 3) = 1;
-
- tc0_array(i, 0) = tc1_array(i, 0) = paliashdr->tcarray[i].s;
- tc0_array(i, 1) = tc1_array(i, 1) = paliashdr->tcarray[i].t;
- }
- break;
- case 2:
- for (i = 0; i < paliashdr->numverts; i++) {
- v_array(i, 0) = poses[0]->vertices[i].v[0] * fracs[0];
- v_array(i, 0) += poses[1]->vertices[i].v[0] * fracs[1];
- v_array(i, 1) = poses[0]->vertices[i].v[1] * fracs[0];
- v_array(i, 1) += poses[1]->vertices[i].v[1] * fracs[1];
- v_array(i, 2) = poses[0]->vertices[i].v[2] * fracs[0];
- v_array(i, 2) += poses[1]->vertices[i].v[2] * fracs[1];
-
- d = shadedots[poses[0]->normal_indices[i]] * fracs[0];
- d += shadedots[poses[1]->normal_indices[i]] * fracs[1];
- d *= shadelight;
- VectorScale (lightcolor, d, cf_array_v(i));
- cf_array(i, 3) = 1;
-
- tc0_array(i, 0) = tc1_array(i, 0) = paliashdr->tcarray[i].s;
- tc0_array(i, 1) = tc1_array(i, 1) = paliashdr->tcarray[i].t;
- }
- break;
- case 3:
- for (i = 0; i < paliashdr->numverts; i++) {
- v_array(i, 0) = poses[0]->vertices[i].v[0] * fracs[0];
- v_array(i, 0) += poses[1]->vertices[i].v[0] * fracs[1];
- v_array(i, 0) += poses[2]->vertices[i].v[0] * fracs[2];
- v_array(i, 1) = poses[0]->vertices[i].v[1] * fracs[0];
- v_array(i, 1) += poses[1]->vertices[i].v[1] * fracs[1];
- v_array(i, 1) += poses[2]->vertices[i].v[1] * fracs[2];
- v_array(i, 2) = poses[0]->vertices[i].v[2] * fracs[0];
- v_array(i, 2) += poses[1]->vertices[i].v[2] * fracs[1];
- v_array(i, 2) += poses[2]->vertices[i].v[2] * fracs[2];
-
- d = shadedots[poses[0]->normal_indices[i]] * fracs[0];
- d += shadedots[poses[1]->normal_indices[i]] * fracs[1];
- d += shadedots[poses[2]->normal_indices[i]] * fracs[2];
- d *= shadelight;
- VectorScale (lightcolor, d, cf_array_v(i));
- cf_array(i, 3) = 1;
-
- tc0_array(i, 0) = tc1_array(i, 0) = paliashdr->tcarray[i].s;
- tc0_array(i, 1) = tc1_array(i, 1) = paliashdr->tcarray[i].t;
- }
- break;
- default:
- for (i = 0; i < paliashdr->numverts; i++) {
- v_array(i, 0) = 0;
- v_array(i, 1) = 0;
- v_array(i, 2) = 0;
- d = 0;
- for (j = 0; j < num_frames; j++) {
- v_array(i, 0) += poses[j]->vertices[i].v[0] * fracs[j];
- v_array(i, 1) += poses[j]->vertices[i].v[1] * fracs[j];
- v_array(i, 2) += poses[j]->vertices[i].v[2] * fracs[j];
- d += shadedots[poses[j]->normal_indices[i]] * fracs[j];
- }
-
- d *= shadelight;
- VectorScale (lightcolor, d, cf_array_v(i));
- cf_array(i, 3) = 1;
-
- tc0_array(i, 0) = tc1_array(i, 0) = paliashdr->tcarray[i].s;
- tc0_array(i, 1) = tc1_array(i, 1) = paliashdr->tcarray[i].t;
- }
- break;
- }
- TWI_FtoUB (cf_array_v(0), c_array_v(0), paliashdr->numverts * 4);
-}
-
-
-/*
-=================
-R_SetupAliasModel
-
-=================
-*/
-static void
-R_SetupAliasModel (entity_t *e, qboolean viewent)
-{
- int lnum;
- model_t *clmodel = e->model;
- rdlight_t *rd;
- vec3_t dist;
- float f;
-
- draw = false;
-
- if (gl_particletorches->ivalue) {
- if (clmodel->modflags & (FLAG_TORCH1|FLAG_TORCH2)) {
- if (cl.time >= e->time_left) {
- R_Torch(e, clmodel->modflags & FLAG_TORCH2);
- e->time_left = cl.time + 0.10;
- }
- if (!(clmodel->modflags & FLAG_TORCH2) && mdl_fire)
- clmodel = mdl_fire;
- else
- return;
- }
- }
-
- if (!viewent) {
- vec3_t mins, maxs;
-
- Mod_MinsMaxs (clmodel, e->origin, e->angles, mins, maxs);
-
- if (Vis_CullBox (mins, maxs)) {
- return;
- }
- }
-
- /*
- * get lighting information
- */
- if (!(clmodel->modflags & FLAG_FULLBRIGHT) || gl_fb->ivalue) {
- shadelight = R_LightPoint (e->origin);
-
- // always give the gun some light
- if (viewent) {
- lightcolor[0] = max (lightcolor[0], 24);
- lightcolor[1] = max (lightcolor[1], 24);
- lightcolor[2] = max (lightcolor[2], 24);
- }
-
- for (lnum = 0; lnum < r_numdlights; lnum++)
- {
- rd = r_dlight + lnum;
- VectorSubtract (e->origin, rd->origin, dist);
- f = DotProduct (dist, dist) + LIGHTOFFSET;
- if (f < rd->cullradius2)
- {
- f = ((1.0f / f) - rd->lightsubtract) * 200.0f;
- if (f > 0)
- VectorMA (lightcolor, f, rd->light, lightcolor);
- }
- }
-
- // ZOID: never allow players to go totally black
- if (clmodel->modflags & FLAG_PLAYER) {
- lightcolor[0] = max (lightcolor[0], 8);
- lightcolor[1] = max (lightcolor[1], 8);
- lightcolor[2] = max (lightcolor[2], 8);
- }
- } else if ((clmodel->modflags & FLAG_FULLBRIGHT) && !gl_fb->ivalue)
- lightcolor[0] = lightcolor[1] = lightcolor[2] = 256;
-
- shadedots = r_avertexnormal_dots[((int) (e->angles[1]
- * (SHADEDOT_QUANT / 360.0))) & (SHADEDOT_QUANT - 1)];
-
- VectorScale(lightcolor, 1.0f / 200.0f, lightcolor);
-
- if (!e->last_light[0] && !e->last_light[1] && !e->last_light[2])
- VectorCopy (lightcolor, e->last_light);
- else {
- VectorAdd (lightcolor, e->last_light, lightcolor);
- VectorScale (lightcolor, 0.5f, lightcolor);
- VectorCopy (lightcolor, e->last_light);
- }
-
- shadelight = 1;
-
- /*
- * locate the proper data
- */
- paliashdr = clmodel->alias;
- matrix = &e->matrix;
-
- c_alias_polys += paliashdr->numtris;
-
- skin = &paliashdr->skins[e->skinnum % paliashdr->numskins];
- anim = (int) (cl.time / skin->interval) % skin->frames;
-
- if (e->skin)
- skin = e->skin;
-
- has_top = has_bottom = has_fb = false;
-
- if (e->colormap && !gl_nocolors->ivalue) {
- if ((has_top = !!skin->top[anim].indices.num))
- VectorCopy4 (e->colormap->top, top);
- if ((has_bottom = !!skin->bottom[anim].indices.num))
- VectorCopy4 (e->colormap->bottom, bottom);
- }
-
- has_fb = !!skin->fb[anim].indices.num;
-
- if (gl_im_animation->ivalue && !(clmodel->modflags & FLAG_NO_IM_ANIM))
- R_SetupAliasBlendedFrame (paliashdr, e);
- else
- R_SetupAliasFrame (paliashdr, e);
-
- if (gl_im_transform->ivalue && !(clmodel->modflags & FLAG_NO_IM_FORM)) {
- mod_origin = e->origin;
- mod_angles = e->angles;
- } else {
- mod_origin = e->msg_origins[0];
- mod_angles = e->msg_angles[0];
- }
- draw = true;
-}
-/*
- * END OF NON-COMMON CODE!
- */
-
-static void
-R_DrawSubSkin (aliashdr_t *paliashdr, skin_sub_t *skin, vec4_t color)
-{
- if (color)
- TWI_FtoUBMod(cf_array_v(0), c_array_v(0), color, paliashdr->numverts*4);
-
- qglBindTexture (GL_TEXTURE_2D, skin->texnum);
- qglDrawRangeElements(GL_TRIANGLES, 0, paliashdr->numverts,
- skin->indices.num, GL_UNSIGNED_INT, skin->indices.i);
-}
-
-static void
-R_DrawAliasModel ()
-{
- qglPushMatrix ();
-
- qglMultTransposeMatrixf ((GLfloat *) matrix);
-
- TWI_PreVDrawCVA (0, paliashdr->numverts);
-
- if (!has_top && !has_bottom)
- R_DrawSubSkin (paliashdr, &skin->base[anim], NULL);
- else
- R_DrawSubSkin (paliashdr, &skin->base_team[anim], NULL);
-
- if (has_top || has_bottom || has_fb) {
- qglEnable (GL_BLEND);
- qglDepthMask (GL_FALSE);
- }
-
- if (has_top)
- R_DrawSubSkin (paliashdr, &skin->top[anim], top);
-
- if (has_bottom)
- R_DrawSubSkin (paliashdr, &skin->bottom[anim], bottom);
-
- if (has_fb) {
- qglDisableClientState (GL_COLOR_ARRAY);
- qglColor4fv (whitev);
-
- R_DrawSubSkin (paliashdr, &skin->fb[anim], NULL);
-
- qglEnableClientState (GL_COLOR_ARRAY);
- }
-
- if (has_top || has_bottom || has_fb) {
- qglDepthMask (GL_TRUE);
- qglDisable (GL_BLEND);
- }
-
- TWI_PostVDrawCVA ();
-
- qglPopMatrix ();
-}
-
-static void
-R_DrawSubSkinNV (aliashdr_t *paliashdr, skin_indices_t *ind, skin_sub_t *s0,
- skin_sub_t *s1)
-{
- qglBindTexture (GL_TEXTURE_2D, s0->texnum);
- if (s1) {
- qglActiveTextureARB (GL_TEXTURE1_ARB);
- qglEnable (GL_TEXTURE_2D);
- qglBindTexture (GL_TEXTURE_2D, s1->texnum);
- }
- qglDrawRangeElements(GL_TRIANGLES, 0, paliashdr->numverts,
- ind->num, GL_UNSIGNED_INT, ind->i);
- if (s1) {
- qglDisable (GL_TEXTURE_2D);
- qglActiveTextureARB (GL_TEXTURE0_ARB);
- }
-}
-
-static void
-R_DrawAliasModelNV ()
-{
- qglPushMatrix ();
-
- qglMultTransposeMatrixf ((GLfloat *) matrix);
-
- TWI_PreVDraw (0, paliashdr->numverts);
-
- if (has_fb) {
- qglCombinerOutputNV (GL_COMBINER0_NV, GL_RGB, GL_SPARE0_NV, GL_SPARE1_NV, GL_DISCARD_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE);
- qglFinalCombinerInputNV (GL_VARIABLE_D_NV, GL_SPARE1_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
- if (!has_top && !has_bottom)
- R_DrawSubSkinNV (paliashdr, &skin->base_fb_i[anim],
- &skin->base[anim], &skin->fb[anim]);
- else
- R_DrawSubSkinNV (paliashdr, &skin->base_team_fb_i[anim],
- &skin->base_team[anim], &skin->fb[anim]);
- qglFinalCombinerInputNV (GL_VARIABLE_D_NV, GL_ZERO, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
- } else {
- qglCombinerOutputNV (GL_COMBINER0_NV, GL_RGB, GL_SPARE0_NV, GL_DISCARD_NV, GL_DISCARD_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE);
- if (!has_top && !has_bottom)
- R_DrawSubSkinNV (paliashdr, &skin->base[anim].indices,
- &skin->base[anim], NULL);
- else
- R_DrawSubSkinNV (paliashdr, &skin->base_team[anim].indices,
- &skin->base_team[anim], NULL);
- }
-
- if (has_top || has_bottom) {
- qglEnable (GL_BLEND);
- qglDepthMask (GL_FALSE);
-
- qglCombinerOutputNV (GL_COMBINER0_NV, GL_RGB, GL_DISCARD_NV, GL_DISCARD_NV, GL_SPARE0_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE);
-
- qglCombinerParameterfvNV (GL_CONSTANT_COLOR0_NV, top);
- qglCombinerParameterfvNV (GL_CONSTANT_COLOR1_NV, bottom);
-
- R_DrawSubSkinNV (paliashdr, &skin->top_bottom_i[anim], &skin->top[anim], &skin->bottom[anim]);
-
- qglCombinerParameterfvNV (GL_CONSTANT_COLOR0_NV, whitev);
- qglCombinerParameterfvNV (GL_CONSTANT_COLOR1_NV, whitev);
-
- qglDepthMask (GL_TRUE);
- qglDisable (GL_BLEND);
- }
-
- TWI_PostVDraw ();
-
- qglPopMatrix ();
-}
-
-//============================================================================
-
-/*
-=============
-R_DrawOpaqueAliasModels
-=============
-*/
-void
-R_DrawOpaqueAliasModels (entity_t *ents[], int num_ents, qboolean viewent)
-{
- int i;
- entity_t *e;
-
- if (gl_affinemodels->ivalue)
- qglHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
- qglEnableClientState (GL_COLOR_ARRAY);
- qglBlendFunc (GL_ONE, GL_ONE);
-
- if (gl_nv_register_combiners) {
- qglEnable (GL_REGISTER_COMBINERS_NV);
-
- qglCombinerInputNV (GL_COMBINER0_NV, GL_RGB, GL_VARIABLE_A_NV, GL_TEXTURE0_ARB, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
- qglCombinerInputNV (GL_COMBINER0_NV, GL_ALPHA, GL_VARIABLE_A_NV, GL_TEXTURE0_ARB, GL_UNSIGNED_IDENTITY_NV, GL_ALPHA);
-
- qglCombinerParameterfvNV (GL_CONSTANT_COLOR0_NV, whitev);
- qglCombinerInputNV (GL_COMBINER0_NV, GL_RGB, GL_VARIABLE_B_NV, GL_CONSTANT_COLOR0_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
- qglCombinerInputNV (GL_COMBINER0_NV, GL_ALPHA, GL_VARIABLE_B_NV, GL_ZERO, GL_UNSIGNED_INVERT_NV, GL_ALPHA);
-
- qglCombinerInputNV (GL_COMBINER0_NV, GL_RGB, GL_VARIABLE_C_NV, GL_TEXTURE1_ARB, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
- qglCombinerInputNV (GL_COMBINER0_NV, GL_ALPHA, GL_VARIABLE_C_NV, GL_TEXTURE1_ARB, GL_UNSIGNED_IDENTITY_NV, GL_ALPHA);
-
- qglCombinerParameterfvNV (GL_CONSTANT_COLOR1_NV, whitev);
- qglCombinerInputNV (GL_COMBINER0_NV, GL_RGB, GL_VARIABLE_D_NV, GL_CONSTANT_COLOR1_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
- qglCombinerInputNV (GL_COMBINER0_NV, GL_ALPHA, GL_VARIABLE_D_NV, GL_ZERO, GL_UNSIGNED_INVERT_NV, GL_ALPHA);
-
-// qglCombinerOutputNV (GL_COMBINER0_NV, GL_RGB, GL_DISCARD_NV, GL_DISCARD_NV, GL_SPARE0_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE);
-
- qglFinalCombinerInputNV (GL_VARIABLE_A_NV, GL_SPARE0_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
- qglFinalCombinerInputNV (GL_VARIABLE_B_NV, GL_PRIMARY_COLOR_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
- qglFinalCombinerInputNV (GL_VARIABLE_C_NV, GL_ZERO, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
- qglFinalCombinerInputNV (GL_VARIABLE_D_NV, GL_ZERO, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
- qglFinalCombinerInputNV (GL_VARIABLE_G_NV, GL_ZERO, GL_UNSIGNED_INVERT_NV, GL_ALPHA);
- for (i = 0; i < num_ents; i++) {
- e = ents[i];
-
- if (e->model->type == mod_alias) {
- R_SetupAliasModel (e, viewent);
- if (draw)
- R_DrawAliasModelNV ();
- }
- }
-
- qglDisable (GL_REGISTER_COMBINERS_NV);
- } else {
- for (i = 0; i < num_ents; i++) {
- e = ents[i];
-
- if (e->model->type == mod_alias) {
- R_SetupAliasModel (e, viewent);
- if (draw)
- R_DrawAliasModel ();
- }
- }
- }
-
- qglBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- qglDisableClientState (GL_COLOR_ARRAY);
- qglColor4fv (whitev);
- if (gl_affinemodels->ivalue)
- qglHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
-}
Index: twilight/qw/qw.dsp
diff -u twilight/qw/qw.dsp:1.57 twilight/qw/qw.dsp:1.58
--- twilight/qw/qw.dsp:1.57 Tue Aug 6 10:59:09 2002
+++ twilight/qw/qw.dsp Wed Jan 29 15:09:02 2003
@@ -137,10 +137,6 @@
# End Source File
# Begin Source File
-SOURCE=.\gl_alias.c
-# End Source File
-# Begin Source File
-
SOURCE=.\gl_draw.c
# End Source File
# Begin Source File
@@ -198,10 +194,6 @@
# Begin Source File
SOURCE=.\r_explosion.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\r_part.c
# End Source File
# Begin Source File
Index: twilight/qw/qw.vcproj
diff -u twilight/qw/qw.vcproj:1.1 twilight/qw/qw.vcproj:1.2
--- twilight/qw/qw.vcproj:1.1 Sat Nov 23 23:27:48 2002
+++ twilight/qw/qw.vcproj Wed Jan 29 15:09:02 2003
@@ -168,9 +168,6 @@
RelativePath=".\console.c">
</File>
<File
- RelativePath=".\gl_alias.c">
- </File>
- <File
RelativePath=".\gl_draw.c">
</File>
<File
@@ -214,9 +211,6 @@
</File>
<File
RelativePath=".\r_explosion.c">
- </File>
- <File
- RelativePath=".\r_part.c">
</File>
<File
RelativePath=".\sbar.c">
Index: twilight/qw/r_part.c
diff -u twilight/qw/r_part.c:1.100 twilight/qw/r_part.c:removed
--- twilight/qw/r_part.c:1.100 Wed Jan 29 15:00:42 2003
+++ twilight/qw/r_part.c Wed Jan 29 15:09:12 2003
@@ -1,1559 +0,0 @@
-/*
- $RCSfile: r_part.c,v $
-
- Copyright (C) 1996-1997 Id Software, Inc.
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to:
-
- Free Software Foundation, Inc.
- 59 Temple Place - Suite 330
- Boston, MA 02111-1307, USA
-
-*/
-static const char rcsid[] =
- "$Id: r_part.c,v 1.100 2003/01/29 20:00:42 warp Exp $";
-
-#include "twiconfig.h"
-
-#include <stdlib.h> /* for rand() and calloc() */
-#include <string.h> /* for memcpy() */
-
-#include "quakedef.h"
-#include "collision.h"
-#include "common.h"
-#include "client.h"
-#include "cvar.h"
-#include "mathlib.h"
-#include "render.h"
-#include "r_explosion.h"
-
-memzone_t *part_zone;
-
-extern int beam_tex_lightning;
-extern int part_tex_dot;
-extern int part_tex_spark;
-extern int part_tex_smoke;
-extern int part_tex_smoke_beam;
-extern int part_tex_smoke_ring;
-
-static cvar_t *r_particles, *r_particle_physics;
-static cvar_t *r_base_particles, *r_beam_particles, *r_xbeam_particles;
-
-static int ramp1[8] = { 0x6f, 0x6d, 0x6b, 0x69, 0x67, 0x65, 0x63, 0x61 };
-static int ramp2[8] = { 0x6f, 0x6e, 0x6d, 0x6c, 0x6b, 0x6a, 0x68, 0x66 };
-static int ramp3[8] = { 0x6d, 0x6b, 6, 5, 4, 3 };
-
-typedef enum
-{
- pt_static,
- pt_grav,
- pt_slowgrav,
- pt_fire,
- pt_explode, pt_explode2,
- pt_blob, pt_blob2,
- pt_torch, pt_torch2,
- pt_teleport1, pt_teleport2,
- pt_rtrail, pt_rtrail_ring, pt_railtrail, pt_lightning
-}
-ptype_t;
-
-typedef struct
-{
- vec3_t org, up, right;
- vec4_t color;
- float scale;
-}
-smokering_t;
-
-static smokering_t *smokerings;
-static int num_smokerings, max_smokerings;
-
-inline qboolean
-new_smokering (vec3_t org, vec3_t up, vec3_t right, float scale, vec4_t color)
-{
- smokering_t *ring;
-
- if (num_smokerings >= max_smokerings)
- return false;
-
- ring = &smokerings[num_smokerings++];
-
- VectorCopy (org, ring->org);
- VectorCopy (up, ring->up);
- VectorCopy (right, ring->right);
- VectorCopy4 (color, ring->color);
- ring->scale = scale;
-
- return true;
-}
-
-typedef struct
-{
- vec3_t org1;
- vec3_t org2;
- vec3_t org_center;
-
- vec3_t normal;
- vec4_t color1;
- vec4_t color2;
- float scale;
- float ramp;
- float die;
- float rstep;
- ptype_t type;
-}
-beam_particle_t;
-
-static beam_particle_t *beam_particles, **free_beam_particles;
-static int num_beam_particles, max_beam_particles;
-
-inline qboolean
-new_beam_particle (ptype_t type, vec3_t org1, vec3_t org2, vec4_t color1,
- vec4_t color2, float ramp, float rstep, float scale, float die)
-{
- beam_particle_t *p;
- float length;
-
- if (num_beam_particles >= max_beam_particles)
- // Out of particles
- return false;
-
- p = &beam_particles[num_beam_particles++];
- p->type = type;
- VectorCopy (org1, p->org1);
- VectorCopy (org2, p->org2);
- VectorCopy4 (color1, p->color1);
- VectorCopy4 (color2, p->color2);
- p->ramp = ramp;
- p->rstep = rstep;
- p->die = cl.time + die;
- p->scale = scale;
-
- VectorSubtract (org1, org2, p->normal);
- length = VectorNormalize (p->normal);
- VectorMA (org1, length/2, p->normal, p->org_center);
-
- return true;
-}
-
-typedef struct
-{
- vec3_t org1;
- vec3_t org2;
- vec3_t normal;
- float len;
-
- vec4_t color;
- float thickness;
- float scroll;
- float repeat_scale;
-
- float die;
- ptype_t type;
-}
-xbeam_particle_t;
-
-static xbeam_particle_t *xbeam_particles, **free_xbeam_particles;
-static int num_xbeam_particles, max_xbeam_particles;
-
-inline qboolean
-new_xbeam_particle (ptype_t type, vec3_t org1, vec3_t org2, vec4_t color,
- float thickness, float scroll, float repeat_scale, float die)
-{
- xbeam_particle_t *p;
-
- if (num_xbeam_particles >= max_xbeam_particles)
- // Out of particles
- return false;
-
- p = &xbeam_particles[num_xbeam_particles++];
- p->type = type;
- VectorCopy (org1, p->org1);
- VectorCopy (org2, p->org2);
- VectorCopy4 (color, p->color);
- p->die = cl.time + die;
- p->thickness = thickness;
- p->scroll = scroll;
- p->repeat_scale = repeat_scale;
-
- // Get the normal and length of the xbeam. (FIXME: Put in the struct!)
- VectorSubtract (p->org2, p->org1, p->normal);
- p->len = VectorNormalize(p->normal);
-
- return true;
-}
-
-typedef struct
-{
- ptype_t type;
- vec3_t org;
- vec3_t vel;
- vec4_t color;
-
- // how much bounce-back from a surface the particle hits (0 = no physics,
- // 1 = stop and slide, 2 = keep bouncing forever, 1.5 is typical)
- float bounce;
-
- float die;
- float ramp;
- float scale;
- qboolean draw;
-}
-base_particle_t;
-
-static base_particle_t *base_particles, **free_base_particles;
-static int num_base_particles, max_base_particles;
-
-inline qboolean
-new_base_particle (ptype_t type, vec3_t org, vec3_t vel, vec4_t color,
- float ramp, float scale, float die, float bounce)
-{
- base_particle_t *p;
-
- if (num_base_particles >= max_base_particles)
- // Out of particles
- return false;
-
- p = &base_particles[num_base_particles++];
- p->type = type;
- VectorCopy (org, p->org);
- VectorCopy (vel, p->vel);
- VectorCopy4 (color, p->color);
- p->ramp = ramp;
- p->die = cl.time + die;
- p->scale = scale;
- p->bounce = bounce;
-
- return true;
-}
-
-inline qboolean
-new_base_particle_oc (ptype_t type, vec3_t org, vec3_t vel, int color,
- float ramp, float scale, float die, float bounce)
-{
- vec4_t vcolor;
-
- VectorCopy4 (d_8tofloattable[color], vcolor);
- return new_base_particle (type, org, vel, vcolor, ramp, scale, die,
- bounce);
-}
-
-static void
-Part_AllocArrays ()
-{
- if (max_base_particles)
- {
- base_particles = (base_particle_t *) Zone_Alloc (part_zone,
- max_base_particles * sizeof (base_particle_t));
- free_base_particles = (base_particle_t **) Zone_Alloc (part_zone,
- max_base_particles * sizeof (base_particle_t *));
- }
- else
- {
- base_particles = NULL;
- free_base_particles = NULL;
- }
- if (max_beam_particles)
- {
- beam_particles = (beam_particle_t *) Zone_Alloc (part_zone,
- max_beam_particles * sizeof (beam_particle_t));
- free_beam_particles = (beam_particle_t **) Zone_Alloc (part_zone,
- max_beam_particles * sizeof (beam_particle_t *));
- }
- else
- {
- beam_particles = NULL;
- free_beam_particles = NULL;
- }
- if (max_xbeam_particles)
- {
- xbeam_particles = (xbeam_particle_t *) Zone_Alloc (part_zone,
- max_xbeam_particles * sizeof (xbeam_particle_t));
- free_xbeam_particles = (xbeam_particle_t **) Zone_Alloc (part_zone,
- max_xbeam_particles * sizeof (xbeam_particle_t *));
- }
- else
- {
- xbeam_particles = NULL;
- free_xbeam_particles = NULL;
- }
- if (max_smokerings)
- {
- smokerings = (smokering_t *) Zone_Alloc (part_zone,
- max_smokerings * sizeof (smokering_t));
- }
- else
- {
- smokerings = NULL;
- }
-}
-
-static void
-Part_FreeArrays ()
-{
- if (base_particles)
- {
- Zone_Free (base_particles);
- Zone_Free (free_base_particles);
- }
- if (beam_particles)
- {
- Zone_Free (beam_particles);
- Zone_Free (free_beam_particles);
- }
- if (xbeam_particles)
- {
- Zone_Free (xbeam_particles);
- Zone_Free (free_xbeam_particles);
- }
- if (smokerings)
- Zone_Free (smokerings);
-}
-
-static void
-Part_CB (cvar_t *cvar)
-{
- cvar = cvar;
-
- if (!r_particles || !r_base_particles || !r_beam_particles || !r_xbeam_particles)
- return;
-
- if (!r_particles->ivalue)
- {
- max_base_particles = 0;
- max_beam_particles = max_xbeam_particles = max_smokerings = 0;
- }
- else
- {
- max_base_particles = r_base_particles->ivalue;
- max_beam_particles = r_beam_particles->ivalue;
- max_xbeam_particles = r_xbeam_particles->ivalue;
- max_smokerings = max_beam_particles;
- }
-
- Part_FreeArrays ();
- Part_AllocArrays ();
-}
-
-/*
-===============
-R_InitParticles
-===============
-*/
-void
-R_InitParticles (void)
-{
- part_zone = Zone_AllocZone ("Particle zone.");
-
- r_particles = Cvar_Get ("r_particles", "1", CVAR_NONE, &Part_CB);
- r_base_particles = Cvar_Get ("r_base_particles", "2048", CVAR_NONE, &Part_CB);
- r_beam_particles = Cvar_Get ("r_beam_particles", "2048", CVAR_NONE, &Part_CB);
- r_xbeam_particles = Cvar_Get ("r_xbeam_particles", "2048", CVAR_NONE, &Part_CB);
-
- r_particle_physics = Cvar_Get ("r_particle_physics", "0", CVAR_NONE, &Part_CB);
-
- Part_AllocArrays ();
-}
-
-/*
-===============
-R_EntityParticles
-===============
-*/
-
-#define NUMVERTEXNORMALS 162
-extern float r_avertexnormals[NUMVERTEXNORMALS][3];
-vec3_t avelocities[NUMVERTEXNORMALS];
-float beamlength = 16;
-
-void
-R_EntityParticles (entity_t *ent)
-{
- int i;
- float angle, dist, sr, sp, sy, cr, cp, cy;
- vec3_t forward, org;
-
- if (!avelocities[0][0])
- for (i = 0; i < NUMVERTEXNORMALS * 3; i++)
- avelocities[0][i] = (rand () & 255) * 0.01;
-
- dist = 64;
- for (i = 0; i < NUMVERTEXNORMALS; i++)
- {
- angle = cl.time * avelocities[i][0];
- sy = Q_sin (angle);
- cy = Q_cos (angle);
- angle = cl.time * avelocities[i][1];
- sp = Q_sin (angle);
- cp = Q_cos (angle);
- angle = cl.time * avelocities[i][2];
- sr = Q_sin (angle);
- cr = Q_cos (angle);
-
- forward[0] = cp * cy;
- forward[1] = cp * sy;
- forward[2] = -sp;
- org[0] = ent->origin[0] + r_avertexnormals[i][0] * dist
- + forward[0] * beamlength;
- org[1] = ent->origin[1] + r_avertexnormals[i][1] * dist
- + forward[1] * beamlength;
- org[2] = ent->origin[2] + r_avertexnormals[i][2] * dist
- + forward[2] * beamlength;
- new_base_particle_oc (pt_explode, org, r_origin, 0x6f, 0, -1, 0.01, 0);
- }
-}
-
-/*
-===============
-R_ClearParticles
-===============
-*/
-void
-R_ClearParticles (void)
-{
- num_base_particles = 0;
- num_beam_particles = 0;
- num_xbeam_particles = 0;
-}
-
-void
-R_ReadPointFile_f (void)
-{
- extern cvar_t *cl_mapname;
- FILE *f;
- vec3_t org;
- int r, c;
- char name[MAX_OSPATH];
-
- snprintf (name, sizeof (name), "maps/%s.pts", cl_mapname->svalue);
-
- COM_FOpenFile (name, &f, true);
- if (!f)
- {
- Com_Printf ("couldn't open %s\n", name);
- return;
- }
-
- Com_Printf ("Reading %s...\n", name);
- c = 0;
- for (;;)
- {
- r = fscanf (f, "%f %f %f\n", &org[0], &org[1], &org[2]);
- if (r != 3)
- break;
-
- c++;
- new_base_particle_oc (pt_static, org, r_origin, (-c) & 15, 0, -1,
- 99999, 0);
- }
-
- fclose (f);
- Com_Printf ("%i points read\n", c);
-}
-
-/*
-===============
-R_ParseParticleEffect
-
-Parse an effect out of the server message
-===============
-*/
-void
-R_ParseParticleEffect (void)
-{
- vec3_t org, dir;
- int i, count, msgcount, color;
-
- for (i = 0; i < 3; i++)
- org[i] = MSG_ReadCoord ();
- for (i = 0; i < 3; i++)
- dir[i] = MSG_ReadChar () * (1.0 / 16);
- msgcount = MSG_ReadByte ();
- color = MSG_ReadByte ();
- count = (msgcount == 255) ? 1024 : msgcount;
-
- R_RunParticleEffect (org, dir, color, count);
-}
-
-/*
-===============
-R_ParticleExplosion2
-
-===============
-*/
-void
-R_ParticleExplosion2 (vec3_t org, int colorStart, int colorLength)
-{
- int i, j, colorMod, color;
- vec3_t porg, vel;
-
- colorMod = 0;
- for (i = 0; i < 512; i++)
- {
- color = colorStart + (colorMod % colorLength);
- colorMod++;
- for (j = 0; j < 3; j++)
- {
- porg[j] = org[j] + ((rand () % 32) - 16);
- vel[j] = (rand () % 512) - 256;
- }
- new_base_particle_oc (pt_blob, porg, vel, color, 0, -1, 0.3, 0);
- }
-}
-
-/*
-===============
-R_BlobExplosion
-
-===============
-*/
-void
-R_BlobExplosion (vec3_t org)
-{
- int i, j, color;
- float pdie;
- vec3_t porg, pvel;
- ptype_t ptype;
-
- for (i = 0; i < 1024; i++)
- {
- pdie = 1 + (rand () & 8) * 0.05;
- if (i & 1)
- {
- ptype = pt_blob;
- color = 66 + rand() % 6;
- }
- else
- {
- ptype = pt_blob2;
- color = 150 + rand() % 6;
- }
-
- for (j = 0; j < 3; j++)
- {
- porg[j] = org[j] + ((rand () % 32) - 16);
- pvel[j] = (rand () % 512) - 256;
- }
- new_base_particle_oc (ptype, porg, pvel, color, 0, -1, pdie, 0);
- }
-}
-
-/*
-===============
-R_RunParticleEffect
-
-===============
-*/
-void
-R_RunParticleEffect (vec3_t org, vec3_t dir, int color, int count)
-{
- int i, j, pcolor;
- float pdie;
- vec3_t porg, pvel;
-
- if (count == 1024)
- {
- // Special case used by id1 progs
- R_NewExplosion (org);
- return;
- }
-
- for (i = 0; i < count; i++)
- {
- pdie = 0.1 * (rand () % 5);
- pcolor = (color & ~7) + (rand () & 7);
- for (j = 0; j < 3; j++)
- {
- porg[j] = org[j] + ((rand () & 15) - 8);
- pvel[j] = dir[j] * 15; // + (rand()%300)-150;
- }
- new_base_particle_oc (pt_slowgrav, porg, pvel, pcolor, 0, -1, pdie, 0);
- }
-}
-
-
-/*
-===============
-R_LavaSplash
-
-===============
-*/
-void
-R_LavaSplash (vec3_t org)
-{
- int i, j, pcolor;
- float vel, pdie;
- vec3_t dir, porg, pvel;
-
- for (i = -16; i < 16; i++)
- {
- for (j = -16; j < 16; j++)
- {
- pdie = 2 + (rand () & 31) * 0.02;
- pcolor = 224 + (rand () & 7);
-
- dir[0] = j * 8 + (rand () & 7);
- dir[1] = i * 8 + (rand () & 7);
- dir[2] = 256;
-
- porg[0] = org[0] + dir[0];
- porg[1] = org[1] + dir[1];
- porg[2] = org[2] + (rand () & 63);
-
- VectorNormalizeFast (dir);
- vel = 50 + (rand () & 63);
- VectorScale (dir, vel, pvel);
- new_base_particle_oc (pt_slowgrav, porg, pvel, pcolor, 0, -1,
- pdie, 0);
- }
- }
-}
-
-/*
-==========
-R_Torch
-
-==========
-*/
-void
-R_Torch (entity_t *ent, qboolean torch2)
-{
- vec3_t porg, pvel;
- vec4_t color;
-
- if (!r_particles->ivalue)
- return;
-
- VectorSet4 (color, 0.89, 0.59, 0.31, 0.5);
- VectorSet (pvel, (rand() & 3) - 2, (rand() & 3) - 2, 0);
- VectorSet (porg, ent->origin[0], ent->origin[1],
- ent->origin[2] + 4);
-
- if (torch2)
- {
- // used for large torches (eg, start map near spawn)
- porg[2] = ent->origin[2] - 2;
- VectorSet (pvel, (rand() & 7) - 4, (rand() & 7) - 4, 0);
- new_base_particle (pt_torch2, porg, pvel, color, rand () & 3,
- ent->frame[0] ? 30 : 10, 5, 0);
- }
- else
- // wall torches
- new_base_particle (pt_torch, porg, pvel, color, rand () & 3,
- 10, 5, 0);
-}
-
-void
-R_RailTrail (vec3_t start, vec3_t end)
-{
- vec3_t vec, org, vel, right;
- vec4_t color;
- float sr, sp, sy, cr, cp, cy, len, roll = 0.0f;
-
- VectorSubtract (end, start, vec);
- Vector2Angles (vec, org);
-
- org[0] *= (M_PI * 2 / 360);
- org[1] *= (M_PI * 2 / 360);
-
- sp = Q_sin (org[0]);
- cp = Q_cos (org[0]);
- sy = Q_sin (org[1]);
- cy = Q_cos (org[1]);
-
- len = VectorNormalize(vec);
- VectorScale (vec, 1.5, vec);
- VectorSet (right, sy, cy, 0);
-
- while (len > 0)
- {
- VectorCopy (d_8tofloattable[(rand() & 3) + 225], color); color[3] = 0.5;
- new_base_particle (pt_railtrail, start, vec3_origin, color,
- 0, 2.5, 1.0, 0);
-
- VectorMA (start, 4, right, org);
- VectorScale (right, 8, vel);
- VectorCopy (d_8tofloattable[(rand() & 7) + 206], color); color[3] = 0.5;
- new_base_particle (pt_railtrail, org, vel, color,
- 0, 5.0, 1.0, 0);
-
- roll += 7.5 * (M_PI / 180.0);
-
- if (roll > 2*M_PI)
- roll -= 2*M_PI;
-
- sr = Q_sin (roll);
- cr = Q_cos (roll);
- right[0] = (cr * sy - sr * sp * cy);
- right[1] = -(sr * sp * sy + cr * cy);
- right[2] = -sr * cp;
-
- len -= 1.5;
- VectorAdd (start, vec, start);
- }
-}
-
-void
-R_RocketTrail (vec3_t start, vec3_t end)
-{
- vec4_t color;
-
- if (!VectorCompare (start, end))
- {
- VectorSet4 (color, 0.5, 0.2, 0.2, 0.5);
- new_beam_particle (pt_rtrail, start, end, color, color, 0, 8, 10, 15);
- }
-}
-
-void
-R_Lightning (vec3_t start, vec3_t end, float die)
-{
- vec4_t color;
- float rs = 1.0f/1024.0f;
-
- if (!VectorCompare (start, end))
- {
- VectorSet4 (color, 1, 1, 1, 1);
- new_xbeam_particle(pt_lightning,start,end,color,8.0,5.0,rs,die);
- }
-}
-
-void
-R_ParticleTrail (vec3_t start, vec3_t end, int type)
-{
- vec3_t vec, porg, pvel;
- float len, pdie, pramp;
- int j, lsub, pcolor;
- static int tracercount;
- ptype_t ptype;
-
- VectorSubtract (end, start, vec);
- len = VectorNormalize (vec);
-
- while (len > 0)
- {
- lsub = 3;
-
- pdie = 2;
- VectorClear(porg);
- VectorClear(pvel);
- pramp = 0;
- pcolor = 0;
- ptype = 0;
-
- switch (type)
- {
- case EF_GRENADE:
- // smoke
- pramp = (rand () & 3) + 2;
- pcolor = ramp3[(int) pramp];
- ptype = pt_fire;
- for (j = 0; j < 3; j++)
- porg[j] = start[j] + ((rand () % 6) - 3);
- break;
-
- case EF_ZOMGIB:
- // slight blood
- lsub += 3;
- case EF_GIB:
- // blood
- ptype = pt_grav;
- pcolor = 0x40 + (rand () & 3);
- for (j = 0; j < 3; j++)
- porg[j] = start[j] + ((rand () % 6) - 3);
- R_Stain (start, 32, 64, 32, 32, 32, 192, 64, 64, 32);
- break;
-
- case EF_TRACER:
- case EF_TRACER2:
- // tracer
- pdie = 0.5;
- ptype = pt_static;
- if (type == EF_TRACER)
- pcolor = 52 + ((tracercount & 4) << 1);
- else
- pcolor = 230 + ((tracercount & 4) << 1);
-
- tracercount++;
-
- VectorCopy (start, porg);
- if (tracercount & 1)
- {
- pvel[0] = 30 * vec[1];
- pvel[1] = 30 * -vec[0];
- }
- else
- {
- pvel[0] = 30 * -vec[1];
- pvel[1] = 30 * vec[0];
- }
- break;
-
- case EF_TRACER3:
- // voor trail
- pcolor = 9 * 16 + 8 + (rand () & 3);
- ptype = pt_static;
- pdie = 0.3;
- for (j = 0; j < 3; j++)
- porg[j] = start[j] + ((rand () & 15) - 8);
- break;
- }
-
- new_base_particle_oc (ptype, porg, pvel, pcolor, pramp, -1, pdie, 0);
-
- VectorMA (start, lsub, vec, start);
- len -= lsub;
- }
-}
-
-/*
-===============
-R_Move_Base_Particles
-===============
-*/
-static void
-R_Move_Base_Particles (void)
-{
-#ifdef MOD_POINTINLEAF
- mleaf_t *mleaf;
-#endif
- base_particle_t *p;
- int i, j, k, activeparticles, maxparticle;
- float grav, dvel, frametime;
- vec3_t v, oldorg;
-
- if (!max_base_particles)
- return;
-
- qglBindTexture (GL_TEXTURE_2D, part_tex_dot);
-
- frametime = cl.time - cl.oldtime;
- grav = frametime * 800 * 0.05;
- dvel = 4 * frametime;
-
- activeparticles = 0;
- maxparticle = -1;
- j = 0;
-
- for (k = 0, p = base_particles; k < num_base_particles; k++, p++)
- {
- if (p->die <= cl.time)
- {
- free_base_particles[j++] = p;
- continue;
- }
-
- maxparticle = k;
- activeparticles++;
-
- p->draw = true;
-
- if (r_particle_physics->ivalue)
- {
-#ifdef MOD_POINTINLEAF
- mleaf = Mod_PointInLeaf(p->org, cl.worldmodel);
- if ((mleaf->contents == CONTENTS_SOLID) ||
- (mleaf->contents == CONTENTS_SKY))
- p->die = -1;
- if (mleaf->visframe != vis_framecount)
- p->draw = false;
-#endif
-
- VectorCopy(p->org, oldorg);
- }
-
- VectorMA (p->org, frametime, p->vel, p->org);
- if (p->bounce && r_particle_physics->ivalue)
- {
- vec3_t normal;
- float dist;
- if (TraceLine (cl.worldmodel, oldorg, p->org, v, normal) < 1) {
- VectorCopy (v, p->org);
- if (p->bounce < 0)
- {
- p->die = -1;
- free_base_particles[j++] = p;
- continue;
- }
- else
- {
- dist = DotProduct (p->vel, normal) * -p->bounce;
- VectorMA (p->vel, dist, normal, p->vel);
- if (DotProduct (p->vel, p->vel) < 0.03)
- VectorClear (p->vel);
- }
- }
- }
-
- switch (p->type)
- {
- case pt_static:
- break;
- case pt_fire:
- p->ramp += frametime * 5;
- if (p->ramp >= 6)
- p->die = -1;
- else
- p->color[3] -= frametime;
- p->vel[2] += grav;
- break;
-
- case pt_explode:
- p->ramp += frametime * 10;
- if (p->ramp >= 8)
- p->die = -1;
- else
- VectorCopy (d_8tofloattable[ramp1[(int) p->ramp]],
- p->color);
- for (i = 0; i < 3; i++)
- p->vel[i] += p->vel[i] * dvel;
- p->vel[2] -= grav;
- break;
-
- case pt_explode2:
- p->ramp += frametime * 15;
- if (p->ramp >= 8)
- p->die = -1;
- else
- VectorCopy (d_8tofloattable[ramp2[(int) p->ramp]],
- p->color);
- for (i = 0; i < 3; i++)
- p->vel[i] -= p->vel[i] * frametime;
- p->vel[2] -= grav;
- break;
-
- case pt_blob:
- for (i = 0; i < 3; i++)
- p->vel[i] += p->vel[i] * dvel;
- p->vel[2] -= grav;
- break;
-
- case pt_blob2:
- for (i = 0; i < 2; i++)
- p->vel[i] -= p->vel[i] * dvel;
- p->vel[2] -= grav;
- break;
-
- case pt_grav:
- case pt_slowgrav:
- if (r_particle_physics->ivalue)
- {
- p->die = 9999;
- p->bounce = 1.5;
- p->color[3] -= (frametime * 1.5);
- p->vel[2] -= grav * 9.8;
- }
- else
- p->vel[2] -= grav;
-
- break;
- case pt_torch:
- p->color[3] -= (frametime * 64 / 255);
- p->scale -= frametime * 2;
- p->vel[2] += grav * 0.4;
- if (p->scale <= 0)
- p->die = -1;
- break;
- case pt_torch2:
- p->color[3] -= frametime * 0.25;
- p->scale -= frametime * 4;
- p->vel[2] += grav;
- if (p->scale <= 0)
- p->die = -1;
- break;
- case pt_railtrail:
- p->color[3] -= frametime * 0.5;
- if (p->color[3] <= 0)
- p->die = -1;
- break;
-
- default:
- break;
- }
-
- if (p->color[3] <= 0)
- p->die = -1;
-
- if ((p->die <= cl.time))
- {
- free_base_particles[j++] = p;
- continue;
- }
- }
-
- k = 0;
- while (maxparticle >= activeparticles)
- {
- *free_base_particles[k++] = base_particles[maxparticle--];
- while (maxparticle >= activeparticles
- && base_particles[maxparticle].die <= cl.time)
- maxparticle--;
- }
- num_base_particles = activeparticles;
-}
-
-
-/*
-===============
-R_Draw_Base_Particles
-===============
-*/
-static void
-R_Draw_Base_Particles (void)
-{
- base_particle_t *p;
- int i;
- float scale, *corner;
-
- if (!max_base_particles)
- return;
-
- qglBindTexture (GL_TEXTURE_2D, part_tex_dot);
-
- v_index = 0;
-
- for (i = 0, p = base_particles; i < num_base_particles; i++, p++)
- {
- if (p->die <= cl.time || !p->draw)
- continue;
-
- if (p->scale < 0)
- {
- scale = ((p->org[0] - r_origin[0]) * vpn[0])
- + ((p->org[1] - r_origin[1]) * vpn[1])
- + ((p->org[2] - r_origin[2]) * vpn[2]);
- if (scale < 20)
- scale = -p->scale;
- else
- scale = (-p->scale) + scale * 0.004;
- }
- else
- scale = p->scale;
-
- VectorCopy4 (p->color, cf_array_v(v_index + 0));
- VectorCopy4 (p->color, cf_array_v(v_index + 1));
- VectorCopy4 (p->color, cf_array_v(v_index + 2));
- VectorCopy4 (p->color, cf_array_v(v_index + 3));
- VectorSet2(tc_array_v(v_index + 0), 1, 1);
- VectorSet2(tc_array_v(v_index + 1), 0, 1);
- VectorSet2(tc_array_v(v_index + 2), 0, 0);
- VectorSet2(tc_array_v(v_index + 3), 1, 0);
-
- corner = v_array_v(v_index);
- VectorTwiddleS (p->org, vup, vright, scale * -0.5, v_array_v(v_index));
- VectorTwiddle(corner, vup, 1, vright, 0, scale, v_array_v(v_index+1));
- VectorTwiddle(corner, vup, 1, vright, 1, scale, v_array_v(v_index+2));
- VectorTwiddle(corner, vup, 0, vright, 1, scale, v_array_v(v_index+3));
-
- v_index += 4;
-
- if ((v_index + 4) >= MAX_VERTEX_ARRAYS)
- {
- TWI_FtoUB (cf_array_v(0), c_array_v(0), v_index * 4);
- TWI_PreVDrawCVA (0, v_index);
- qglDrawArrays (GL_QUADS, 0, v_index);
- TWI_PostVDrawCVA ();
- v_index = 0;
- }
- }
-
- if (v_index)
- {
- TWI_FtoUB (cf_array_v(0), c_array_v(0), v_index * 4);
- TWI_PreVDrawCVA (0, v_index);
- qglDrawArrays (GL_QUADS, 0, v_index);
- TWI_PostVDrawCVA ();
- v_index = 0;
- }
-}
-
-extern float bubble_sintable[17], bubble_costable[17];
-
-/*
-===============
-R_Move_XBeam_Particles
-===============
-*/
-static void
-R_Move_XBeam_Particles (void)
-{
- xbeam_particle_t *p;
- int i, j, activeparticles, maxparticle;
- float frametime;
-
- if (!max_xbeam_particles)
- return;
-
- frametime = cl.time - cl.oldtime;
-
- activeparticles = 0;
- maxparticle = -1;
- j = 0;
-
- for (i = 0, p = xbeam_particles; i < num_xbeam_particles; i++, p++)
- {
- if (p->die < cl.time)
- {
- free_xbeam_particles[j++] = p;
- continue;
- }
-
- maxparticle = i;
- activeparticles++;
-
- switch (p->type)
- {
- case pt_lightning:
- break;
- default:
- break;
- }
-
- if (p->die <= cl.time)
- {
- free_xbeam_particles[j++] = p;
- continue;
- }
- }
-
- i = 0;
- while (maxparticle >= activeparticles)
- {
- *free_xbeam_particles[i++] = xbeam_particles[maxparticle--];
- while (maxparticle >= activeparticles &&
- xbeam_particles[maxparticle].die <= cl.time)
- maxparticle--;
- }
- num_xbeam_particles = activeparticles;
-}
-
-extern inline void
-Calc_XBeam_Verts (int i, vec3_t start, vec3_t end, vec3_t offset,
- float t1, float t2)
-{
- // near right corner
- VectorAdd (start, offset, v_array_v(i + 0));
- VectorSet2 (tc_array_v(i + 0), 0, t1);
- // near left corner
- VectorSubtract(start, offset, v_array_v(i + 1));
- VectorSet2 (tc_array_v(i + 1), 1, t1);
- // far left corner
- VectorSubtract(end , offset, v_array_v(i + 2));
- VectorSet2 (tc_array_v(i + 2), 1, t2);
- // far right corner
- VectorAdd (end , offset, v_array_v(i + 3));
- VectorSet2 (tc_array_v(i + 3), 0, t2);
-}
-
-static int xbeam_elements[18] = {0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11};
-
-static void
-DrawXBeam (xbeam_particle_t *p)
-{
- int i;
- float t1, t2;
- vec3_t v_up, v_right, v_offset;
-
- // Up, pointing towards view, and rotates around beam normal.
- // Get direction from start of beam to viewer.
- VectorSubtract (r_origin, p->org1, v_up);
- // Remove the portion of the vector that moves along the beam.
- // (This leaves only a a vector pointing directly away from the beam.)
- t1 = -DotProduct(v_up, p->normal);
- VectorMA(v_up, t1, p->normal, v_up);
- // Normalize the up.
- VectorNormalizeFast(v_up);
- // Generate right vector from dir and up, result already normalized.
- CrossProduct (p->normal, v_up, v_right);
-
- // Calculate the T coordinates, scrolling. (Texcoords)
- t1 = cl.time * -p->scroll;
- t1 = t1 - (int) t1;
- t2 = t1 + p->repeat_scale * p->len;
-
- /*
- * The beam is 3 polygons in this configuration:
- * * 2
- * * *
- * 1******
- * * *
- * * 3
- * They are showing different portions of the beam texture, creating an
- * illusion of a beam that appears to curl around in 3D space.
- * (Realize that the whole polygon assembly orients itself to face
- * the viewer)
- */
-
- // Polygon 1, verts 0-3.
- VectorScale(v_right, p->thickness, v_offset);
- Calc_XBeam_Verts(0, p->org1, p->org2, v_offset, t1, t2);
- // Polygon 2, verts 4-7.
- VectorAdd(v_right, v_up, v_offset);
- VectorScale(v_offset, p->thickness * 0.70710681f, v_offset);
- Calc_XBeam_Verts(4, p->org1, p->org2, v_offset, t1 + 0.33, t2 + 0.33);
- // Polygon 3, verts 8-11.
- VectorSubtract(v_right, v_up, v_offset);
- VectorScale(v_offset, p->thickness * 0.70710681f, v_offset);
- Calc_XBeam_Verts(8, p->org1, p->org2, v_offset, t1 + 0.66, t2 + 0.66);
-
- for (i = 0; i < 12; i++)
- VectorCopy4 (p->color, cf_array_v(v_index + i));
-
- memcpy(vindices + i_index, xbeam_elements, sizeof(xbeam_elements));
-
- i_index += 18;
- v_index += 12;
-}
-
-/*
-===============
-R_Draw_XBeam_Particles
-===============
-*/
-static void
-R_Draw_XBeam_Particles (void)
-{
- xbeam_particle_t *p;
- int k;
-
- if (!max_xbeam_particles)
- return;
-
- qglBindTexture (GL_TEXTURE_2D, beam_tex_lightning);
- v_index = 0;
- i_index = 0;
-
- for (k = 0, p = xbeam_particles; k < num_xbeam_particles; k++, p++)
- {
- if (p->die < cl.time)
- continue;
-
- DrawXBeam (p);
-
- if (((i_index + 6) > MAX_VERTEX_INDICES)
- || ((v_index + 4) > MAX_VERTEX_ARRAYS))
- {
- TWI_FtoUB (cf_array_v(0), c_array_v(0), v_index * 4);
- TWI_PreVDrawCVA (0, v_index);
- qglDrawElements(GL_TRIANGLES, i_index, GL_UNSIGNED_INT, vindices);
- TWI_PostVDrawCVA ();
- v_index = 0;
- i_index = 0;
- }
- }
-
- if (v_index || i_index)
- {
- TWI_FtoUB (cf_array_v(0), c_array_v(0), v_index * 4);
- TWI_PreVDrawCVA (0, v_index);
- qglDrawElements(GL_TRIANGLES, i_index, GL_UNSIGNED_INT, vindices);
- TWI_PostVDrawCVA ();
- v_index = 0;
- i_index = 0;
- }
-}
-
-/*
-===============
-R_Move_Beam_Particles
-===============
-*/
-static void
-R_Move_Beam_Particles (void)
-{
- beam_particle_t *p;
- int i, j, activeparticles, maxparticle;
- float frametime;
- vec3_t v_diff1, v_right1, v_up, v_dist;
-
- if (!max_beam_particles)
- return;
-
- frametime = cl.time - cl.oldtime;
-
- activeparticles = 0;
- maxparticle = -1;
- j = 0;
-
- for (i = 0, p = beam_particles; i < num_beam_particles; i++, p++)
- {
- if (p->die < cl.time)
- {
- free_beam_particles[j++] = p;
- continue;
- }
-
- maxparticle = i;
- activeparticles++;
-
- switch (p->type)
- {
- case pt_rtrail:
- case pt_rtrail_ring:
- p->ramp += frametime * p->rstep;
- if (p->rstep > 0.0)
- p->rstep -= frametime;
-
- p->color1[3] -= frametime * 0.4;
- if (p->color1[3] <= 0)
- p->die = -1;
- if (p->color1[1] < p->color1[0])
- {
- p->color1[1] += frametime * 0.40;
- p->color1[2] += frametime * 0.40;
- }
-
- p->color2[3] -= frametime * 0.4;
- if (p->color2[3] <= 0)
- p->die = -1;
- if (p->color2[1] < p->color2[0])
- {
- p->color2[1] += frametime * 0.40;
- p->color2[2] += frametime * 0.40;
-
- }
- VectorSubtract (r_origin, p->org_center, v_diff1);
- VectorVectors (p->normal, v_right1, v_up);
- v_dist[0] = DotProduct(v_diff1, v_right1);
- v_dist[1] = DotProduct(v_diff1, v_up);
- v_dist[2] = 0;
- if (DotProduct(v_dist, v_dist) < (p->scale * p->scale))
- {
- new_smokering(p->org_center, v_up, v_right1, p->scale/2, p->color2);
- p->type = pt_rtrail_ring;
- } else
- p->type = pt_rtrail;
- break;
- default:
- break;
- }
-
- if (p->die <= cl.time)
- {
- free_beam_particles[j++] = p;
- continue;
- }
- }
-
- i = 0;
- while (maxparticle >= activeparticles)
- {
- *free_beam_particles[i++] = beam_particles[maxparticle--];
- while (maxparticle >= activeparticles &&
- beam_particles[maxparticle].die <= cl.time)
- maxparticle--;
- }
- num_beam_particles = activeparticles;
-}
-
-static void
-DrawBeam (beam_particle_t *p)
-{
- float dp;
- vec3_t v_up, v_right1, v_right2, v_diff1, v_diff2;
-
- VectorSubtract (r_origin, p->org1, v_diff1);
- VectorNormalizeFast (v_diff1);
- CrossProduct (p->normal, v_diff1, v_right1);
-
- VectorSubtract (r_origin, p->org2, v_diff2);
- VectorNormalizeFast (v_diff2);
- CrossProduct (p->normal, v_diff2, v_right2);
-
- VectorCopy (p->normal, v_up);
-
- VectorTwiddle (p->org1,v_up,-1,v_right1, 1,p->scale,v_array_v(v_index + 0));
- VectorTwiddle (p->org1,v_up, 1,v_right1,-1,p->scale,v_array_v(v_index + 1));
- VectorTwiddle (p->org2,v_up, 1,v_right2,-1,p->scale,v_array_v(v_index + 2));
- VectorTwiddle (p->org2,v_up,-1,v_right2, 1,p->scale,v_array_v(v_index + 3));
-
- VectorCopy4 (p->color1, cf_array_v(v_index + 0));
- VectorCopy4 (p->color1, cf_array_v(v_index + 1));
- VectorCopy4 (p->color2, cf_array_v(v_index + 2));
- VectorCopy4 (p->color2, cf_array_v(v_index + 3));
-
- dp = DotProduct(p->org1, p->normal) / 64;
- dp -= p->ramp;
- VectorSet2 (tc_array_v(v_index + 0), 1, dp);
- VectorSet2 (tc_array_v(v_index + 1), 0, dp);
- dp = DotProduct(p->org2, p->normal) / 64;
- dp -= p->ramp;
- VectorSet2 (tc_array_v(v_index + 2), 0, dp);
- VectorSet2 (tc_array_v(v_index + 3), 1, dp);
-
- vindices[i_index + 0] = v_index + 0;
- vindices[i_index + 1] = v_index + 1;
- vindices[i_index + 2] = v_index + 2;
- vindices[i_index + 3] = v_index + 0;
- vindices[i_index + 4] = v_index + 2;
- vindices[i_index + 5] = v_index + 3;
- i_index += 6;
- v_index += 4;
-}
-
-/*
-===============
-R_Draw_Beam_Particles
-===============
-*/
-static void
-R_Draw_Beam_Particles (void)
-{
- beam_particle_t *p;
- int k;
-
- if (!max_beam_particles)
- return;
-
- qglBindTexture (GL_TEXTURE_2D, part_tex_smoke_beam);
- v_index = 0;
- i_index = 0;
-
- for (k = 0, p = beam_particles; k < num_beam_particles; k++, p++)
- {
- if (p->die < cl.time)
- continue;
-
- switch (p->type) {
- case pt_rtrail:
- DrawBeam (p);
- break;
- default:
- break;
- }
-
- if (((i_index + 6) > MAX_VERTEX_INDICES)
- || ((v_index + 4) > MAX_VERTEX_ARRAYS))
- {
- TWI_FtoUB (cf_array_v(0), c_array_v(0), v_index * 4);
- TWI_PreVDrawCVA (0, v_index);
- qglDrawElements(GL_TRIANGLES, i_index, GL_UNSIGNED_INT, vindices);
- TWI_PostVDrawCVA ();
- v_index = 0;
- i_index = 0;
- }
- }
-
- if (v_index || i_index)
- {
- TWI_FtoUB (cf_array_v(0), c_array_v(0), v_index * 4);
- TWI_PreVDrawCVA (0, v_index);
- qglDrawElements(GL_TRIANGLES, i_index, GL_UNSIGNED_INT, vindices);
- TWI_PostVDrawCVA ();
- v_index = 0;
- i_index = 0;
- }
-}
-
-/*
-===============
-R_Draw_SmokeRings
-===============
-*/
-static void
-R_Draw_SmokeRings (void)
-{
- smokering_t *p;
- int k;
- vec_t *corner;
-
- if (!max_smokerings)
- return;
-
- qglBindTexture (GL_TEXTURE_2D, part_tex_smoke_ring);
- v_index = 0;
-
- for (k = 0, p = smokerings; k < num_smokerings; k++, p++)
- {
- VectorCopy4 (p->color, cf_array_v(v_index + 0));
- VectorCopy4 (p->color, cf_array_v(v_index + 1));
- VectorCopy4 (p->color, cf_array_v(v_index + 2));
- VectorCopy4 (p->color, cf_array_v(v_index + 3));
- VectorSet2(tc_array_v(v_index + 0), 1, 1);
- VectorSet2(tc_array_v(v_index + 1), 0, 1);
- VectorSet2(tc_array_v(v_index + 2), 0, 0);
- VectorSet2(tc_array_v(v_index + 3), 1, 0);
-
- corner = v_array_v(v_index);
- VectorTwiddleS (p->org, p->up, p->right, p->scale * -0.5,
- v_array_v(v_index));
- VectorTwiddle (corner, p->up, p->scale, p->right, 0 , 1,
- v_array_v(v_index+1));
- VectorTwiddle (corner, p->up, p->scale, p->right, p->scale, 1,
- v_array_v(v_index+2));
- VectorTwiddle (corner, p->up, 0 , p->right, p->scale, 1,
- v_array_v(v_index+3));
-
- v_index += 4;
-
- if ((v_index + 4) > MAX_VERTEX_ARRAYS)
- {
- TWI_FtoUB (cf_array_v(0), c_array_v(0), v_index * 4);
- TWI_PreVDrawCVA (0, v_index);
- qglDrawArrays (GL_QUADS, 0, v_index);
- TWI_PostVDrawCVA ();
- v_index = 0;
- }
- }
-
- if (v_index)
- {
- TWI_FtoUB (cf_array_v(0), c_array_v(0), v_index * 4);
- TWI_PreVDrawCVA (0, v_index);
- qglDrawArrays (GL_QUADS, 0, v_index);
- TWI_PostVDrawCVA ();
- v_index = 0;
- }
-
- num_smokerings = 0;
-}
-
-/*
-===============
-R_MoveParticles
-===============
-*/
-void
-R_MoveParticles (void)
-{
- R_Move_Base_Particles();
- R_Move_XBeam_Particles();
- R_Move_Beam_Particles();
-}
-
-/*
-===============
-R_DrawParticles
-===============
-*/
-void
-R_DrawParticles (void)
-{
- qglEnableClientState (GL_COLOR_ARRAY);
- if (gl_cull->ivalue)
- qglDisable (GL_CULL_FACE);
-
- R_Draw_Base_Particles();
- R_Draw_XBeam_Particles();
- R_Draw_Beam_Particles();
- R_Draw_SmokeRings ();
-
- if (gl_cull->ivalue)
- qglEnable (GL_CULL_FACE);
-
- qglDisableClientState (GL_COLOR_ARRAY);
- qglColor4fv (whitev);
-}
-
Index: twilight/src/renderer/twilight_renderer.dsp
diff -u twilight/src/renderer/twilight_renderer.dsp:1.19 twilight/src/renderer/twilight_renderer.dsp:1.20
--- twilight/src/renderer/twilight_renderer.dsp:1.19 Wed Jan 29 03:23:26 2003
+++ twilight/src/renderer/twilight_renderer.dsp Wed Jan 29 15:09:02 2003
@@ -89,6 +89,14 @@
# End Source File
# Begin Source File
+SOURCE=.\gl_alias.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\gl_alias.h
+# End Source File
+# Begin Source File
+
SOURCE=.\gl_arrays.c
# End Source File
# Begin Source File
@@ -190,6 +198,14 @@
# Begin Source File
SOURCE=.\pointers.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\r_part.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\r_part.h
# End Source File
# Begin Source File
Index: twilight/src/renderer/twilight_renderer.vcproj
diff -u twilight/src/renderer/twilight_renderer.vcproj:1.1 twilight/src/renderer/twilight_renderer.vcproj:1.2
--- twilight/src/renderer/twilight_renderer.vcproj:1.1 Sat Nov 23 23:27:49 2002
+++ twilight/src/renderer/twilight_renderer.vcproj Wed Jan 29 15:09:02 2003
@@ -109,6 +109,9 @@
RelativePath=".\dyngl.c">
</File>
<File
+ RelativePath=".\gl_alias.c">
+ </File>
+ <File
RelativePath=".\gl_arrays.c">
</File>
<File
@@ -139,6 +142,9 @@
RelativePath=".\pointers.c">
</File>
<File
+ RelativePath=".\r_part.c">
+ </File>
+ <File
RelativePath=".\sky.c">
</File>
<File
@@ -158,6 +164,9 @@
RelativePath=".\dyngl.h">
</File>
<File
+ RelativePath=".\gl_alias.h">
+ </File>
+ <File
RelativePath=".\gl_arrays.h">
</File>
<File
@@ -186,6 +195,9 @@
</File>
<File
RelativePath=".\pointers.h">
+ </File>
+ <File
+ RelativePath=".\r_part.h">
</File>
<File
RelativePath=".\sky.h">
More information about the twilight-commits
mailing list