mirror of
https://github.com/nzp-team/fteqw.git
synced 2025-01-31 12:40:43 +00:00
Small changes, a few bugs fixed.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@905 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
67950ee8ac
commit
2000d01334
8 changed files with 108 additions and 6 deletions
|
@ -591,7 +591,7 @@ static galiastexnum_t *GL_ChooseSkin(galiasinfo_t *inf, char *modelname, entity_
|
|||
|
||||
int tc, bc;
|
||||
|
||||
if (!gl_nocolors.value)
|
||||
if (!gl_nocolors.value && !cls.q2server)
|
||||
{
|
||||
if (e->scoreboard)
|
||||
{
|
||||
|
@ -809,6 +809,9 @@ static galiastexnum_t *GL_ChooseSkin(galiasinfo_t *inf, char *modelname, entity_
|
|||
}
|
||||
}
|
||||
|
||||
if (!inf->numskins)
|
||||
return NULL;
|
||||
|
||||
skins = (galiasskin_t*)((char *)inf + inf->ofsskins);
|
||||
if (e->skinnum >= 0 && e->skinnum < inf->numskins)
|
||||
skins += e->skinnum;
|
||||
|
@ -2322,13 +2325,15 @@ static void Q2_LoadSkins(char *skins)
|
|||
int i;
|
||||
galiastexnum_t *texnums;
|
||||
galiasskin_t *outskin = (galiasskin_t *)((char *)galias + galias->ofsskins);
|
||||
galias->numskins = pq2inmodel->num_skins;
|
||||
|
||||
for (i = 0; i < pq2inmodel->num_skins; i++)
|
||||
for (i = 0; i < pq2inmodel->num_skins; i++, outskin++)
|
||||
{
|
||||
texnums = Hunk_Alloc(sizeof(*texnums));
|
||||
outskin->ofstexnums = (char *)texnums - (char *)outskin;
|
||||
outskin->texnums=1;
|
||||
|
||||
COM_CleanUpPath(skins); //blooming tanks.
|
||||
texnums->base = Mod_LoadReplacementTexture(skins, true, false, true);
|
||||
outskin->skinwidth = 0;
|
||||
outskin->skinheight = 0;
|
||||
|
@ -2374,6 +2379,8 @@ void GL_LoadQ2Model (model_t *mod, void *buffer)
|
|||
|
||||
pq2inmodel = (md2_t *)buffer;
|
||||
|
||||
//FIXME: Endian
|
||||
|
||||
version = LittleLong (pq2inmodel->version);
|
||||
if (version != MD2ALIAS_VERSION)
|
||||
Sys_Error ("%s has wrong version number (%i should be %i)",
|
||||
|
@ -2390,6 +2397,8 @@ void GL_LoadQ2Model (model_t *mod, void *buffer)
|
|||
|
||||
mod->flags = 0;
|
||||
|
||||
loadmodel->numframes = pq2inmodel->num_frames;
|
||||
|
||||
size = sizeof(galiasinfo_t)
|
||||
+ pq2inmodel->num_frames*sizeof(galiasgroup_t)
|
||||
+ pq2inmodel->num_skins*sizeof(galiasskin_t);
|
||||
|
@ -2800,6 +2809,8 @@ void GL_LoadQ3Model(model_t *mod, void *buffer)
|
|||
surf = (md3Surface_t *)((qbyte *)header + header->ofsSurfaces);
|
||||
for (s = 0; s < header->numSurfaces; s++)
|
||||
{
|
||||
if (surf->ident != MD3_IDENT)
|
||||
Con_Printf("Warning: md3 sub-surface doesn't match ident\n");
|
||||
size = sizeof(galiasinfo_t) + sizeof(galiasgroup_t)*header->numFrames;
|
||||
galias = Hunk_Alloc(size);
|
||||
galias->groupofs = sizeof(*galias); //frame groups
|
||||
|
|
|
@ -247,6 +247,11 @@ qboolean Draw_RealPicFromWad (mpic_t *out, char *name)
|
|||
|
||||
if (texnum)
|
||||
{
|
||||
if (!in)
|
||||
{
|
||||
out->width = image_width;
|
||||
out->height = image_height;
|
||||
}
|
||||
gl->texnum = texnum;
|
||||
gl->sl = 0;
|
||||
gl->sh = 1;
|
||||
|
|
|
@ -3038,6 +3038,8 @@ void GLMod_LoadSprite2Model (model_t *mod, void *buffer)
|
|||
frame->down = frame->height - origin[1];
|
||||
frame->left = -origin[0];
|
||||
frame->right = frame->width - origin[0];
|
||||
|
||||
pframetype++;
|
||||
}
|
||||
|
||||
mod->type = mod_sprite;
|
||||
|
|
|
@ -805,7 +805,7 @@ void CM_Init(void);
|
|||
|
||||
qboolean CM_SetAreaPortalState (int portalnum, qboolean open);
|
||||
qboolean CM_HeadnodeVisible (int nodenum, qbyte *visbits);
|
||||
qboolean CM_AreasConnected (int area1, int area2);
|
||||
qboolean VARGS CM_AreasConnected (int area1, int area2);
|
||||
int CM_NumClusters (void);
|
||||
int CM_ClusterSize (void);
|
||||
int CM_LeafContents (int leafnum);
|
||||
|
@ -824,7 +824,7 @@ struct model_s *CM_TempBoxModel(vec3_t mins, vec3_t maxs);
|
|||
|
||||
void Mod_ParseInfoFromEntityLump(char *data);
|
||||
|
||||
void CMQ2_SetAreaPortalState (int portalnum, qboolean open);
|
||||
void VARGS CMQ2_SetAreaPortalState (int portalnum, qboolean open);
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
@ -1806,6 +1806,75 @@ void PPL_BaseBModelTextures(entity_t *e)
|
|||
R_IBrokeTheArrays();
|
||||
}
|
||||
|
||||
void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point, float degrees );
|
||||
void PerpendicularVector( vec3_t dst, const vec3_t src );
|
||||
void R_DrawBeam( entity_t *e )
|
||||
{
|
||||
#define NUM_BEAM_SEGS 6
|
||||
|
||||
int i;
|
||||
float r, g, b;
|
||||
|
||||
vec3_t perpvec;
|
||||
vec3_t direction, normalized_direction;
|
||||
vec3_t start_points[NUM_BEAM_SEGS], end_points[NUM_BEAM_SEGS];
|
||||
vec3_t oldorigin, origin;
|
||||
|
||||
oldorigin[0] = e->oldorigin[0];
|
||||
oldorigin[1] = e->oldorigin[1];
|
||||
oldorigin[2] = e->oldorigin[2];
|
||||
|
||||
origin[0] = e->origin[0];
|
||||
origin[1] = e->origin[1];
|
||||
origin[2] = e->origin[2];
|
||||
|
||||
normalized_direction[0] = direction[0] = oldorigin[0] - origin[0];
|
||||
normalized_direction[1] = direction[1] = oldorigin[1] - origin[1];
|
||||
normalized_direction[2] = direction[2] = oldorigin[2] - origin[2];
|
||||
|
||||
if ( VectorNormalize( normalized_direction ) == 0 )
|
||||
return;
|
||||
|
||||
PerpendicularVector( perpvec, normalized_direction );
|
||||
VectorScale( perpvec, e->frame / 2, perpvec );
|
||||
|
||||
for ( i = 0; i < 6; i++ )
|
||||
{
|
||||
RotatePointAroundVector( start_points[i], normalized_direction, perpvec, (360.0/NUM_BEAM_SEGS)*i );
|
||||
VectorAdd( start_points[i], origin, start_points[i] );
|
||||
VectorAdd( start_points[i], direction, end_points[i] );
|
||||
}
|
||||
|
||||
qglDisable( GL_TEXTURE_2D );
|
||||
qglEnable( GL_BLEND );
|
||||
qglDepthMask( GL_FALSE );
|
||||
qglDisable(GL_ALPHA_TEST);
|
||||
|
||||
r = ( d_8to24rgbtable[e->skinnum & 0xFF] ) & 0xFF;
|
||||
g = ( d_8to24rgbtable[e->skinnum & 0xFF] >> 8 ) & 0xFF;
|
||||
b = ( d_8to24rgbtable[e->skinnum & 0xFF] >> 16 ) & 0xFF;
|
||||
|
||||
r *= 1/255.0F;
|
||||
g *= 1/255.0F;
|
||||
b *= 1/255.0F;
|
||||
|
||||
qglColor4f( r, g, b, e->alpha );
|
||||
|
||||
qglBegin( GL_TRIANGLE_STRIP );
|
||||
for ( i = 0; i < NUM_BEAM_SEGS; i++ )
|
||||
{
|
||||
qglVertex3fv( start_points[i] );
|
||||
qglVertex3fv( end_points[i] );
|
||||
qglVertex3fv( start_points[(i+1)%NUM_BEAM_SEGS] );
|
||||
qglVertex3fv( end_points[(i+1)%NUM_BEAM_SEGS] );
|
||||
}
|
||||
qglEnd();
|
||||
|
||||
qglEnable( GL_TEXTURE_2D );
|
||||
qglDisable( GL_BLEND );
|
||||
qglDepthMask( GL_TRUE );
|
||||
}
|
||||
|
||||
void PPL_BaseEntTextures(void)
|
||||
{
|
||||
extern qboolean r_inmirror;
|
||||
|
@ -1849,6 +1918,11 @@ void PPL_BaseEntTextures(void)
|
|||
continue;
|
||||
}
|
||||
|
||||
if (currententity->flags & Q2RF_BEAM)
|
||||
{
|
||||
R_DrawBeam(currententity);
|
||||
continue;
|
||||
}
|
||||
if (!currententity->model)
|
||||
continue;
|
||||
|
||||
|
@ -2419,6 +2493,9 @@ void PPL_DrawEntFullBrights(void)
|
|||
if (!Cam_DrawPlayer(0, currententity->keynum-1))
|
||||
continue;
|
||||
|
||||
if (currententity->flags & Q2RF_BEAM)
|
||||
continue;
|
||||
|
||||
if (!currententity->model)
|
||||
continue;
|
||||
|
||||
|
|
|
@ -731,6 +731,9 @@ void GLR_DrawEntitiesOnList (void)
|
|||
if (!Cam_DrawPlayer(0, currententity->keynum-1))
|
||||
continue;
|
||||
|
||||
if (currententity->flags & Q2RF_BEAM)
|
||||
continue;
|
||||
|
||||
if (!currententity->model)
|
||||
continue;
|
||||
|
||||
|
@ -787,6 +790,9 @@ void GLR_DrawEntitiesOnList (void)
|
|||
if (cl.viewentity[r_refdef.currentplayernum] && currententity->keynum == cl.viewentity[r_refdef.currentplayernum])
|
||||
continue;
|
||||
|
||||
if (currententity->flags & Q2RF_BEAM)
|
||||
continue;
|
||||
|
||||
if (!currententity->model)
|
||||
continue;
|
||||
|
||||
|
|
|
@ -3899,7 +3899,7 @@ void GL_BuildLightmaps (void)
|
|||
gl_lightmap_format = GL_RGB;
|
||||
if (COM_CheckParm ("-lm_4"))
|
||||
gl_lightmap_format = GL_RGBA;
|
||||
if (*gl_lightmapmode.string)
|
||||
/* if (*gl_lightmapmode.string)
|
||||
{
|
||||
switch(*gl_lightmapmode.string)
|
||||
{
|
||||
|
@ -3924,6 +3924,7 @@ void GL_BuildLightmaps (void)
|
|||
break;
|
||||
}
|
||||
}
|
||||
*/
|
||||
if (cl.worldmodel->fromgame == fg_quake3 && gl_lightmap_format != GL_RGB && gl_lightmap_format != GL_RGBA)
|
||||
gl_lightmap_format = GL_RGB;
|
||||
|
||||
|
|
|
@ -401,7 +401,7 @@ void R_DrawSkyChain (msurface_t *s)
|
|||
|
||||
GL_DisableMultitexture();
|
||||
|
||||
if (r_fastsky.value||!solidskytexture) //this is for visability only... we'd otherwise not stoop this low (and this IS low)
|
||||
if (r_fastsky.value||(!solidskytexture&&!usingskybox)) //this is for visability only... we'd otherwise not stoop this low (and this IS low)
|
||||
{
|
||||
int fc;
|
||||
qbyte *pal;
|
||||
|
|
Loading…
Reference in a new issue