コード例 #1
0
/*
==============
RB_AddCoronaFlares
==============
*/
void RB_AddCoronaFlares( void ) {
	corona_t	*cor;
	int			i;
 
	if ( r_flares->integer != 1 && r_flares->integer != 3 ) {
		return;
	}

	cor = backEnd.refdef.coronas;
	for ( i = 0 ; i < backEnd.refdef.num_coronas ; i++, cor++ ) {
		RB_AddFlare( (void *)cor, R_PointFogNum( &backEnd.refdef, cor->origin, 0 ), cor->origin, cor->color, cor->scale, NULL, cor->id, cor->visible, cor->shader );
	}
}
コード例 #2
0
ファイル: tr_mesh.c プロジェクト: coltongit/spearmint
/*
=================
R_ComputeFogNum

=================
*/
int R_ComputeFogNum( mdvModel_t *model, trRefEntity_t *ent ) {
	mdvFrame_t		*mdvFrame;
	vec3_t			localOrigin;

	if ( tr.refdef.rdflags & RDF_NOWORLDMODEL ) {
		return 0;
	}

	// FIXME: non-normalized axis issues
	mdvFrame = model->frames + ent->e.frame;
	VectorAdd( ent->e.origin, mdvFrame->localOrigin, localOrigin );

	return R_PointFogNum( &tr.refdef, localOrigin, mdvFrame->radius );
}
コード例 #3
0
/*
==================
RB_AddDlightFlares
==================
*/
void RB_AddDlightFlares( void ) {
	dlight_t		*l;
	int				i;
	int				id = 0;

	if ( r_flares->integer < 2 ) {
		return;
	}

	l = backEnd.refdef.dlights;

	for (i=0 ; i<backEnd.refdef.num_dlights ; i++, l++) {
		RB_AddFlare( (void *)l, R_PointFogNum( &backEnd.refdef, l->origin, 0 ), l->origin, l->color, 1.0f, NULL, id++, qtrue, tr.flareShader );
	}
}
コード例 #4
0
int R_MDRComputeFogNum( mdrHeader_t *header, trRefEntity_t *ent ) {
	mdrFrame_t		*mdrFrame;
	vec3_t			localOrigin;
	int frameSize;

	if ( tr.refdef.rdflags & RDF_NOWORLDMODEL ) {
		return 0;
	}
	
	frameSize = (size_t)( &((mdrFrame_t *)0)->bones[ header->numBones ] );

	// FIXME: non-normalized axis issues
	mdrFrame = ( mdrFrame_t * ) ( ( byte * ) header + header->ofsFrames + frameSize * ent->e.frame);
	VectorAdd( ent->e.origin, mdrFrame->localOrigin, localOrigin );

	return R_PointFogNum( &tr.refdef, localOrigin, mdrFrame->radius );
}
コード例 #5
0
ファイル: tr_model_iqm.c プロジェクト: DaneTheory/spearmint
/*
=================
R_ComputeIQMFogNum

=================
*/
int R_ComputeIQMFogNum( iqmData_t *skeleton, trRefEntity_t *ent ) {
	const vec_t		*bounds;
	const vec_t		defaultBounds[6] = { -8, -8, -8, 8, 8, 8 };
	vec3_t			diag, center;
	vec3_t			localOrigin;
	vec_t			radius;

	if ( tr.refdef.rdflags & RDF_NOWORLDMODEL ) {
		return 0;
	}

	// FIXME: non-normalized axis issues
	if (skeleton->bounds) {
		bounds = skeleton->bounds + 6*ent->e.frame;
	} else {
		bounds = defaultBounds;
	}
	VectorSubtract( bounds+3, bounds, diag );
	VectorMA( bounds, 0.5f, diag, center );
	VectorAdd( ent->e.origin, center, localOrigin );
	radius = 0.5f * VectorLength( diag );

	return R_PointFogNum( &tr.refdef, localOrigin, radius );
}
コード例 #6
0
ファイル: tr_main.c プロジェクト: DaneTheory/spearmint
/*
=================
R_SpriteFogNum

See if a sprite is inside a fog volume
=================
*/
int R_SpriteFogNum( trRefEntity_t *ent ) {
	return R_PointFogNum( &tr.refdef, ent->e.origin, ent->e.radius );
}