这篇教程C++ trap_R_AddRefEntityToScene函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中trap_R_AddRefEntityToScene函数的典型用法代码示例。如果您正苦于以下问题:C++ trap_R_AddRefEntityToScene函数的具体用法?C++ trap_R_AddRefEntityToScene怎么用?C++ trap_R_AddRefEntityToScene使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了trap_R_AddRefEntityToScene函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: CG_AddFireEffect/*================CG_AddFireEffect================*/static void CG_AddFireEffect( localEntity_t *le ) { refEntity_t *re; trace_t trace; re = &le->refEntity; if ( le->pos.trType == TR_STATIONARY ) { if ( le->leFlags & LEF_LESSOVERDRAW ) { // avoid too much overdraw if ( CG_NearbyDrawnLeCount( le, re->origin, le->leType, 52 + !!cg_lowDetailEffects.integer * 24 ) > 0 ) return; } // add to refresh list trap_R_AddRefEntityToScene( re ); return; } // calculate position BG_EvaluateTrajectory( &le->pos, cg.time, re->origin ); // check for water if ( trap_CM_PointContents( re->origin, 0 ) & CONTENTS_WATER ) { // do a trace to get water surface normals CG_Trace( &trace, re->oldorigin, NULL, NULL, re->origin, le->owner, MASK_WATER ); CG_FreeLocalEntity( le ); CG_MakeExplosion( trace.endpos, trace.plane.normal, cgs.media.ringFlashModel, cgs.media.vaporShader, 500, qfalse, qtrue ); return; } // do a trace sometimes if ( le->ti.trailTime++ > 5 ) { le->ti.trailTime = 0; CG_Trace( &trace, re->oldorigin, NULL, NULL, re->origin, le->owner, MASK_SHOT ); VectorCopy( trace.endpos, re->origin ); VectorCopy( trace.endpos, re->oldorigin ); // hit something if ( trace.fraction < 1.0 ) { // free le if another one is nearby, otherwise make it stationary if ( CG_CheckDistance( re->origin, le->leType, TR_STATIONARY, re->customShader, 200, 32 ) ) { CG_FreeLocalEntity( le ); return; } else { le->pos.trType = TR_STATIONARY; } } } if ( le->leFlags & LEF_LESSOVERDRAW ) { // avoid too much overdraw if ( CG_NearbyDrawnLeCount( le, re->origin, le->leType, 52 + !!cg_lowDetailEffects.integer * 24 ) > 0 ) return; } // add to refresh list trap_R_AddRefEntityToScene( re );}
开发者ID:ElderPlayerX,项目名称:Afterwards,代码行数:64,
示例2: CG_AddGorevoid CG_AddGore( localEntity_t *le ) { vec3_t newOrigin; trace_t trace; if ( le->pos.trType == TR_STATIONARY ) { // sink into the ground if near the removal time //int t; //float oldZ; CG_FreeLocalEntity( le ); // kill it return; } // calculate new position BG_EvaluateTrajectory( &le->pos, cg.time, newOrigin ); // trace a line from previous position to new position CG_Trace( &trace, le->refEntity.origin, NULL, NULL, newOrigin, -1, CONTENTS_SOLID ); if ( trace.fraction == 1.0 ) { // still in free fall VectorCopy( newOrigin, le->refEntity.origin ); if ( le->leFlags & LEF_TUMBLE ) { vec3_t angles; BG_EvaluateTrajectory( &le->angles, cg.time, angles ); AnglesToAxis( angles, le->refEntity.axis ); } trap_R_AddRefEntityToScene( &le->refEntity ); CG_SmallBloodTrail( le ); return; } // if it is in a nodrop zone, remove it // this keeps gibs from waiting at the bottom of pits of death // and floating levels if ( trap_CM_PointContents( trace.endpos, 0 ) & CONTENTS_NODROP ) { CG_FreeLocalEntity( le ); return; } // leave a mark CG_GoreMark( le, &trace ); // do a juicy sound CG_SplatSound( le, &trace ); CG_JustSplat( le, &trace ); trap_R_AddRefEntityToScene( &le->refEntity );}
开发者ID:OpenArena,项目名称:legacy,代码行数:55,
示例3: CG_AddExplosion/*================CG_AddExplosion================*/static void CG_AddExplosion( localEntity_t *ex ) { refEntity_t *ent; ent = &ex->refEntity; // add the entity // RF, don't add if shader is invalid if ( ent->customShader >= 0 ) { trap_R_AddRefEntityToScene( ent ); } // add the dlight if ( ex->light ) { float light; light = (float)( cg.time - ex->startTime ) / ( ex->endTime - ex->startTime ); if ( light < 0.5 ) { light = 1.0; } else { light = 1.0 - ( light - 0.5 ) * 2; } light = ex->light * light; trap_R_AddLightToScene( ent->origin, light, ex->lightColor[0], ex->lightColor[1], ex->lightColor[2], 0 ); }}
开发者ID:bibendovsky,项目名称:rtcw,代码行数:30,
示例4: CG_AddExplosion/*=======================================================================================================================================CG_AddExplosion=======================================================================================================================================*/static void CG_AddExplosion(localEntity_t *le) { refEntity_t *ent; ent = &le->refEntity; // add the entity trap_R_AddRefEntityToScene(ent); // add the dlight if (le->light) { float light; float radius; float intensity; light = (float)(cg.time - le->startTime) / (le->endTime - le->startTime); if (light < 0.5) { light = 1.0; } else { light = 1.0 - (light - 0.5) * 2; } if (cg_fadeExplosions.integer) { radius = le->light; intensity = light; } else { radius = le->light * light; intensity = 1; } trap_R_AddLightToScene(le->refEntity.origin, radius, intensity, le->lightColor[0], le->lightColor[1], le->lightColor[2], 0); }}
开发者ID:KuehnhammerTobias,项目名称:ioqw,代码行数:36,
示例5: CG_AddExplosion/*================CG_AddExplosion================*/static void CG_AddExplosion(localEntity_t * ex){ refEntity_t *ent; ent = &ex->refEntity; // add the entity trap_R_AddRefEntityToScene(ent); // add the light if(ex->light) { float light; light = (float)(cg.time - ex->startTime) / (ex->endTime - ex->startTime); if(light < 0.5) { light = 1.0; } else { light = 1.0 - (light - 0.5) * 2; } light = ex->light * light; trap_R_AddLightToScene(ent->origin, light, ex->lightColor[0], ex->lightColor[1], ex->lightColor[2]); }}
开发者ID:SinSiXX,项目名称:Rogue-Reborn,代码行数:32,
示例6: CG_AddExplosion/*================CG_AddExplosion================*/static void CG_AddExplosion( localEntity_t *ex ) { refEntity_t *ent; float life; ent = &ex->refEntity; life = (float)( cg.time - ex->startTime ) / ( ex->endTime - ex->startTime ); // get colors ent->shaderRGBA[0] = 255 * ex->color[0] * ( 1.0 - life ); ent->shaderRGBA[1] = 255 * ex->color[1] * ( 1.0 - life ); ent->shaderRGBA[2] = 255 * ex->color[2] * ( 1.0 - life ); ent->shaderRGBA[3] = 255 * ex->color[3] * ( 1.0 - life ); // add the entity trap_R_AddRefEntityToScene(ent); // add the dlight if ( ex->light ) { float light; light = life; if ( light < 0.5 ) { light = 1.0; } else { light = 1.0 - ( light - 0.5 ) * 2; } light = ex->light * light; trap_R_AddLightToScene(ent->origin, light, ex->lightColor[0], ex->lightColor[1], ex->lightColor[2] ); }}
开发者ID:ElderPlayerX,项目名称:Afterwards,代码行数:36,
示例7: CG_GrappleTrail/*==========================CG_GrappleTrail==========================*/void CG_GrappleTrail( centity_t *ent, const weaponInfo_t *wi ) { vec3_t origin; entityState_t *es; vec3_t forward, up; refEntity_t beam; es = &ent->currentState; BG_EvaluateTrajectory( &es->pos, cg.time, origin ); ent->trailTime = cg.time; memset( &beam, 0, sizeof( beam ) ); //FIXME adjust for muzzle position VectorCopy ( cg_entities[ ent->currentState.otherEntityNum ].lerpOrigin, beam.origin ); beam.origin[2] += 26; AngleVectors( cg_entities[ ent->currentState.otherEntityNum ].lerpAngles, forward, NULL, up ); VectorMA( beam.origin, -6, up, beam.origin ); VectorCopy( origin, beam.oldorigin ); if (Distance( beam.origin, beam.oldorigin ) < 64 ) return; // Don't draw if close beam.reType = RT_LIGHTNING; beam.customShader = cgs.media.lightningShader; AxisClear( beam.axis ); beam.shaderRGBA[0] = 0xff; beam.shaderRGBA[1] = 0xff; beam.shaderRGBA[2] = 0xff; beam.shaderRGBA[3] = 0xff; trap_R_AddRefEntityToScene( &beam );}
开发者ID:entdark,项目名称:q3mme,代码行数:37,
示例8: CG_DrawScreenBlobstatic void CG_DrawScreenBlob(float redalpha, float greenalpha){ refEntity_t ent; float alphascale; float bluealpha = 0; // ragePro systems can't fade blends, so don't obscure the screen if ( cgs.glconfig.hardwareType == GLHW_RAGEPRO ) { return; } memset( &ent, 0, sizeof( ent ) ); ent.reType = RT_SPRITE; ent.renderfx = RF_FIRST_PERSON; // Available input: // cg.damageValue: Range from 0 to 1, indicating the amount of damage. // cg.damageX and cg_damageY: Range from -1 to 1, indicating the location of the damage. VectorMA( cg.refdef.vieworg, 8, cg.refdef.viewaxis[0], ent.origin ); VectorMA( ent.origin, cg.damageX * -8, cg.refdef.viewaxis[1], ent.origin ); VectorMA( ent.origin, cg.damageY * 8, cg.refdef.viewaxis[2], ent.origin ); // Here's the scoop: The closer we are to the center, the more transparent this blob is. alphascale = (2*fabs(cg.damageX)+fabs(cg.damageY))/3.0; redalpha *= alphascale; greenalpha *= alphascale; if (redalpha > greenalpha) { ent.data.sprite.radius = cg.damageValue * 15 * redalpha; } else { ent.data.sprite.radius = cg.damageShieldValue * 15 * greenalpha; }/* if (redalpha < 0.01) { // Just shield damage ent.customShader = cgs.media.shieldBlobShader; // Set all colors to the same as green, since the shader is green redalpha = bluealpha = greenalpha; } else*/ if (greenalpha < 0.01) { // Just pain damage ent.customShader = cgs.media.painBlobShader; // Set all colors to the same as red, since the shader is red greenalpha = bluealpha = redalpha; } else { // Both ent.customShader = cgs.media.painShieldBlobShader; } ent.shaderRGBA[0] = 0xff * redalpha; ent.shaderRGBA[1] = 0xff * greenalpha; ent.shaderRGBA[2] = 0xff * bluealpha; ent.shaderRGBA[3] = 0xff; trap_R_AddRefEntityToScene( &ent );}
开发者ID:UberGames,项目名称:RPG-X2-rpgxEF,代码行数:60,
示例9: CG_AddRefEntity/*===================CG_AddRefEntity===================*/void CG_AddRefEntity( localEntity_t *le ) { if (le->endTime < cg.time) { CG_FreeLocalEntity( le ); return; } trap_R_AddRefEntityToScene( &le->refEntity );}
开发者ID:ET-NiK,项目名称:amxxgroup,代码行数:12,
示例10: CG_AddScaleFade/*===================CG_AddScaleFadeFor rocket smokes that hang in place, fade out, and areremoved if the view passes through them.There are often many of these, so it needs to be simple.===================*/static void CG_AddScaleFade( localEntity_t *le ) { refEntity_t *re; float c; vec3_t delta; float len; re = &le->refEntity; // fade / grow time c = ( le->endTime - cg.time ) * le->lifeRate; re->shaderRGBA[3] = 0xff * c * le->color[3]; if ( !( le->leFlags & LEF_PUFF_DONT_SCALE ) ) { re->radius = le->radius * ( 1.0 - c ) + 8; } // if the view would be "inside" the sprite, kill the sprite // so it doesn't add too much overdraw VectorSubtract( re->origin, cg.refdef.vieworg, delta ); len = VectorLength( delta ); if ( len < le->radius ) { CG_FreeLocalEntity( le ); return; } trap_R_AddRefEntityToScene( re );}
开发者ID:natelo,项目名称:rtcwPub,代码行数:36,
示例11: CG_AddFadeScaleModelstatic void CG_AddFadeScaleModel( localEntity_t *le ){ refEntity_t *ent = &le->refEntity; float frac = ( cg.time - le->startTime )/((float)( le->endTime - le->startTime )); frac *= frac * frac; // yes, this is completely ridiculous...but it causes the shell to grow slowly then "explode" at the end ent->nonNormalizedAxes = qtrue; AxisCopy( axisDefault, ent->axis ); VectorScale( ent->axis[0], le->radius * frac, ent->axis[0] ); VectorScale( ent->axis[1], le->radius * frac, ent->axis[1] ); VectorScale( ent->axis[2], le->radius * 0.5f * frac, ent->axis[2] ); frac = 1.0f - frac; ent->shaderRGBA[0] = le->color[0] * frac; ent->shaderRGBA[1] = le->color[1] * frac; ent->shaderRGBA[2] = le->color[2] * frac; ent->shaderRGBA[3] = le->color[3] * frac; // add the entity trap_R_AddRefEntityToScene( ent );}
开发者ID:aufau,项目名称:jk2sdk-gpl-fork,代码行数:26,
示例12: CG_AddSpriteExplosion/*================CG_AddSpriteExplosion================*/static void CG_AddSpriteExplosion( localEntity_t *le ) { refEntity_t re; float c; re = le->refEntity; c = ( le->endTime - cg.time ) / ( float ) ( le->endTime - le->startTime ); if ( c > 1 ) { c = 1.0; // can happen during connection problems } re.shaderRGBA[0] = 0xff; re.shaderRGBA[1] = 0xff; re.shaderRGBA[2] = 0xff; re.shaderRGBA[3] = 0xff * c * 0.33; re.reType = RT_SPRITE; re.radius = 42 * ( 1.0 - c ) + 30; trap_R_AddRefEntityToScene( &re ); // add the dlight if ( le->light ) { float light; light = (float)( cg.time - le->startTime ) / ( le->endTime - le->startTime ); if ( light < 0.5 ) { light = 1.0; } else { light = 1.0 - ( light - 0.5 ) * 2; } light = le->light * light; trap_R_AddLightToScene(re.origin, light, le->lightColor[0], le->lightColor[1], le->lightColor[2] ); }}
开发者ID:ET-NiK,项目名称:amxxgroup,代码行数:40,
示例13: CG_AddPuff/*==================CG_AddPuff==================*/static void CG_AddPuff( localEntity_t *le ) { refEntity_t *re; float c; vec3_t delta; float len; re = &le->refEntity; // fade / grow time c = ( le->endTime - cg.time ) / (float)( le->endTime - le->startTime ); re->shaderRGBA[0] = le->color[0] * c; re->shaderRGBA[1] = le->color[1] * c; re->shaderRGBA[2] = le->color[2] * c; if ( !( le->leFlags & LEF_PUFF_DONT_SCALE ) ) { re->radius = le->radius * ( 1.0 - c ) + 8; } BG_EvaluateTrajectory( &le->pos, cg.time, re->origin ); // if the view would be "inside" the sprite, kill the sprite // so it doesn't add too much overdraw VectorSubtract( re->origin, cg.refdef.vieworg, delta ); len = VectorLength( delta ); if ( len < le->radius ) { CG_FreeLocalEntity( le ); return; } trap_R_AddRefEntityToScene( re );}
开发者ID:aufau,项目名称:jk2sdk-gpl-fork,代码行数:37,
示例14: CG_AddTestModelstatic void CG_AddTestModel (void) { int i; // re-register the model, because the level may have changed cg.testModelEntity.hModel = trap_R_RegisterModel( cg.testModelName ); if (! cg.testModelEntity.hModel ) { CG_Printf ("Can't register model/n"); return; } // if testing a gun, set the origin reletive to the view origin if ( cg.testGun ) { VectorCopy( cg.refdef.vieworg, cg.testModelEntity.origin ); VectorCopy( cg.refdef.viewaxis[0], cg.testModelEntity.axis[0] ); VectorCopy( cg.refdef.viewaxis[1], cg.testModelEntity.axis[1] ); VectorCopy( cg.refdef.viewaxis[2], cg.testModelEntity.axis[2] ); // allow the position to be adjusted for (i=0 ; i<3 ; i++) { cg.testModelEntity.origin[i] += cg.refdef.viewaxis[0][i] * cg_gun_x.value; cg.testModelEntity.origin[i] += cg.refdef.viewaxis[1][i] * cg_gun_y.value; cg.testModelEntity.origin[i] += cg.refdef.viewaxis[2][i] * cg_gun_z.value; } } trap_R_AddRefEntityToScene( &cg.testModelEntity );}
开发者ID:Cpasjuste,项目名称:quake3_pandora_gles,代码行数:27,
示例15: CG_AddElectricityvoid CG_AddElectricity( localEntity_t *le ) { refEntity_t *re; float frac, alpha; re = &le->refEntity; frac = ( cg.time - le->startTime ) / ( float ) ( le->endTime - le->startTime ); if ( frac > 1 ) frac = 1.0; // can happen during connection problems else if (frac < 0) frac = 0.0; re->data.electricity.width = le->data.electricity.width + (le->data.electricity.dwidth*frac); // Calculate the current alpha. alpha = le->alpha + (le->dalpha * frac); re->shaderRGBA[0] = 0xff * alpha; re->shaderRGBA[1] = 0xff * alpha; re->shaderRGBA[2] = 0xff * alpha; re->shaderRGBA[3] = 0xff; re->reType = RT_ELECTRICITY; trap_R_AddRefEntityToScene( re );}
开发者ID:UberGames,项目名称:RPG-X2-rpgxEF,代码行数:25,
示例16: CG_AddLine2/*===================CG_AddLine2For trek, for beams and the like.===================*/void CG_AddLine2( localEntity_t *le ){ refEntity_t *re; float frac, alpha; vec3_t curRGB; re = &le->refEntity; frac = (cg.time - le->startTime) / ( float ) ( le->endTime - le->startTime ); if ( frac > 1 ) frac = 1.0; // can happen during connection problems else if (frac < 0) frac = 0.0; // Use the liferate to set the scale over time. re->data.line.width = le->data.line2.width + (le->data.line2.dwidth * frac); re->data.line.width2 = le->data.line2.width2 + (le->data.line2.dwidth2 * frac); if (re->data.line.width <= 0) { CG_FreeLocalEntity( le ); return; } // We will assume here that we want additive transparency effects. alpha = le->alpha + (le->dalpha * frac); VectorMA(le->data.line2.startRGB, frac, le->data.line2.dRGB, curRGB); re->shaderRGBA[0] = 0xff * alpha * curRGB[0]; re->shaderRGBA[1] = 0xff * alpha * curRGB[1]; re->shaderRGBA[2] = 0xff * alpha * curRGB[2]; re->shaderRGBA[3] = 0xff * alpha; // Yes, we could apply c to this too, but fading the color is better for lines. re->reType = RT_LINE2; trap_R_AddRefEntityToScene( re );}
开发者ID:UberGames,项目名称:RPG-X2-rpgxEF,代码行数:42,
示例17: CG_DrawSphere/*================CG_DrawSphere================*/void CG_DrawSphere( const vec3_t center, float radius, int customShader, const float *shaderRGBA ){ refEntity_t re; memset( &re, 0, sizeof( re ) ); re.reType = RT_MODEL; re.hModel = cgs.media.sphereModel; re.customShader = customShader; re.renderfx = RF_NOSHADOW; if ( shaderRGBA != NULL ) { int i; for ( i = 0; i < 4; ++i ) { re.shaderRGBA[ i ] = 255 * shaderRGBA[ i ]; } } VectorCopy( center, re.origin ); radius *= 0.01f; VectorSet( re.axis[ 0 ], radius, 0, 0 ); VectorSet( re.axis[ 1 ], 0, radius, 0 ); VectorSet( re.axis[ 2 ], 0, 0, radius ); re.nonNormalizedAxes = qtrue; trap_R_AddRefEntityToScene( &re );}
开发者ID:SHOVELL,项目名称:Unvanquished,代码行数:35,
示例18: CG_DrawSphericalCone/*================CG_DrawSphericalCone================*/void CG_DrawSphericalCone( const vec3_t tip, const vec3_t rotation, float radius, qboolean a240, int customShader, const float *shaderRGBA ){ refEntity_t re; memset( &re, 0, sizeof( re ) ); re.reType = RT_MODEL; re.hModel = a240 ? cgs.media.sphericalCone240Model : cgs.media.sphericalCone64Model; re.customShader = customShader; re.renderfx = RF_NOSHADOW; if ( shaderRGBA != NULL ) { int i; for ( i = 0; i < 4; ++i ) { re.shaderRGBA[ i ] = 255 * shaderRGBA[ i ]; } } VectorCopy( tip, re.origin ); radius *= 0.01f; AnglesToAxis( rotation, re.axis ); VectorScale( re.axis[ 0 ], radius, re.axis[ 0 ] ); VectorScale( re.axis[ 1 ], radius, re.axis[ 1 ] ); VectorScale( re.axis[ 2 ], radius, re.axis[ 2 ] ); re.nonNormalizedAxes = qtrue; trap_R_AddRefEntityToScene( &re );}
开发者ID:SHOVELL,项目名称:Unvanquished,代码行数:37,
示例19: CG_AddFallScaleFade/*=================CG_AddFallScaleFadeThis is just an optimized CG_AddMoveScaleFadeFor blood mists that drift down, fade out, and areremoved if the view passes through them.There are often 100+ of these, so it needs to be simple.=================*/static void CG_AddFallScaleFade( localEntity_t *le ) { refEntity_t *re; float c; vec3_t delta; float len; re = &le->refEntity; // fade time c = ( le->endTime - cg.time ) * le->lifeRate; re->shaderRGBA[3] = 0xff * c * le->color[3]; re->origin[2] = le->pos.trBase[2] - ( 1.0 - c ) * le->pos.trDelta[2]; re->radius = le->radius * ( 1.0 - c ) + 16; // if the view would be "inside" the sprite, kill the sprite // so it doesn't add too much overdraw VectorSubtract( re->origin, cg.refdef.vieworg, delta ); len = VectorLength( delta ); if ( len < le->radius ) { CG_FreeLocalEntity( le ); return; } trap_R_AddRefEntityToScene( re );}
开发者ID:natelo,项目名称:rtcwPub,代码行数:38,
示例20: CG_AddGibvoid CG_AddGib( localEntity_t *le ) { const qhandle_t hShader = cgs.media.freezeShader; if ( le->refEntity.customShader == hShader ) { le->refEntity.customShader = 0; trap_R_AddRefEntityToScene( &le->refEntity ); le->refEntity.customShader = hShader; }}
开发者ID:xzero450,项目名称:revolution,代码行数:9,
示例21: CG_AddWeaponWithPowerups/*========================CG_AddWeaponWithPowerups========================*/static void CG_AddWeaponWithPowerups( refEntity_t *gun, int powerups ) { // add powerup effects if ( powerups & ( 1 << PW_INVIS ) ) { gun->customShader = cgs.media.invisShader; trap_R_AddRefEntityToScene( gun ); } else { trap_R_AddRefEntityToScene( gun ); if ( powerups & ( 1 << PW_BATTLESUIT ) ) { gun->customShader = cgs.media.battleWeaponShader; trap_R_AddRefEntityToScene( gun ); } if ( powerups & ( 1 << PW_QUAD ) ) { gun->customShader = cgs.media.quadWeaponShader; trap_R_AddRefEntityToScene( gun ); } }}
开发者ID:entdark,项目名称:q3mme,代码行数:23,
示例22: CG_AddLine/*===================CG_AddLinefor beams and the like.===================*/void CG_AddLine( localEntity_t *le ){ refEntity_t *re; re = &le->refEntity; re->reType = RT_LINE; trap_R_AddRefEntityToScene( re );}
开发者ID:aufau,项目名称:jk2sdk-gpl-fork,代码行数:17,
示例23: CG_ModelDoor/*===============CG_ModelDoor===============*/void CG_ModelDoor( centity_t *cent ){ static refEntity_t ent; // static for proper alignment in QVMs entityState_t *es; animation_t anim; lerpFrame_t *lf = ¢->lerpFrame; es = ¢->currentState; if ( !es->modelindex ) { return; } //create the render entity memset( &ent, 0, sizeof( ent ) ); VectorCopy( cent->lerpOrigin, ent.origin ); VectorCopy( cent->lerpOrigin, ent.oldorigin ); AnglesToAxis( cent->lerpAngles, ent.axis ); ent.renderfx = RF_NOSHADOW; //add the door model ent.skinNum = 0; ent.hModel = cgs.gameModels[ es->modelindex ]; //scale the door VectorScale( ent.axis[ 0 ], es->origin2[ 0 ], ent.axis[ 0 ] ); VectorScale( ent.axis[ 1 ], es->origin2[ 1 ], ent.axis[ 1 ] ); VectorScale( ent.axis[ 2 ], es->origin2[ 2 ], ent.axis[ 2 ] ); ent.nonNormalizedAxes = true; //setup animation anim.firstFrame = es->misc; anim.numFrames = es->weapon; anim.reversed = !es->legsAnim; anim.flipflop = false; anim.loopFrames = 0; anim.frameLerp = 1000 / es->torsoAnim; anim.initialLerp = 1000 / es->torsoAnim; //door changed state if ( es->legsAnim != cent->doorState ) { lf->animationTime = lf->frameTime + anim.initialLerp; cent->doorState = es->legsAnim; } lf->animation = &anim; //run animation CG_DoorAnimation( cent, &ent.oldframe, &ent.frame, &ent.backlerp ); trap_R_AddRefEntityToScene( &ent );}
开发者ID:ChunHungLiu,项目名称:Unvanquished,代码行数:60,
示例24: sys_addrefentitytoscenestatic JSBool sys_addrefentitytoscene(JSContext *cx, unsigned argc, jsval *vp){ JSObject *obj; refEntity_t refent; memset(&refent, 0, sizeof(refEntity_t)); if (!JS_ConvertArguments(cx, argc, JS_ARGV(cx, vp), "o", &obj)) return JS_FALSE; JS_Object_ParseRefEntity(cx, obj, &refent); trap_R_AddRefEntityToScene(&refent); return JS_TRUE;}
开发者ID:donald-hanson,项目名称:battle-of-the-sexes,代码行数:11,
示例25: CG_AddSpriteExplosion/*================CG_AddSpriteExplosion================*/static void CG_AddSpriteExplosion( localEntity_t *le ) { refEntity_t re; float c; re = le->refEntity; c = ( le->endTime - cg.time ) / ( float ) ( le->endTime - le->startTime ); if ( c > 1 ) { c = 1.0; // can happen during connection problems } re.shaderRGBA[0] = 0xff; re.shaderRGBA[1] = 0xff; re.shaderRGBA[2] = 0xff; re.shaderRGBA[3] = 0xff * c * 0.33; re.reType = RT_SPRITE; re.radius = 42 * ( 1.0 - c ) + 30; // Ridah, move away from surface VectorMA( le->pos.trBase, ( 1.0 - c ), le->pos.trDelta, re.origin ); // done. // RF, don't add if shader is invalid if ( re.customShader >= 0 ) { trap_R_AddRefEntityToScene( &re ); } // add the dlight if ( le->light ) { float light; // Ridah, modified this so the light fades out rather than shrinking /* light = (float)( cg.time - le->startTime ) / ( le->endTime - le->startTime ); if ( light < 0.5 ) { light = 1.0; } else { light = 1.0 - ( light - 0.5 ) * 2; } light = le->light * light; trap_R_AddLightToScene(re.origin, light, le->lightColor[0], le->lightColor[1], le->lightColor[2], 0 ); */ light = (float)( cg.time - le->startTime ) / ( le->endTime - le->startTime ); if ( light < 0.5 ) { light = 1.0; } else { light = 1.0 - ( light - 0.5 ) * 2; } trap_R_AddLightToScene( re.origin, le->light, light * le->lightColor[0], light * le->lightColor[1], light * le->lightColor[2], 0 ); // done. }}
开发者ID:bibendovsky,项目名称:rtcw,代码行数:58,
示例26: UI_PlayerFloatSprite/*===============UI_PlayerFloatSprite===============*/static void UI_PlayerFloatSprite( playerInfo_t *pi, vec3_t origin, qhandle_t shader ) { refEntity_t ent; memset( &ent, 0, sizeof( ent ) ); VectorCopy( origin, ent.origin ); ent.origin[2] += 48; ent.reType = RT_SPRITE; ent.customShader = shader; ent.radius = 10; ent.renderfx = 0; trap_R_AddRefEntityToScene( &ent );}
开发者ID:LuckyBro,项目名称:sgfork,代码行数:17,
示例27: CG_DamageBlendBlob/*===============CG_DamageBlendBlob===============*/static void CG_DamageBlendBlob( void ) { int t; int maxTime; refEntity_t ent; if ( !cg.damageValue ) { return; } maxTime = DAMAGE_TIME; t = cg.time - cg.damageTime; if ( t <= 0 || t >= maxTime ) { return; } memset( &ent, 0, sizeof( ent ) ); ent.reType = RT_SPRITE; ent.renderfx = RF_FIRST_PERSON; VectorMA( cg.refdef.vieworg, 8, cg.refdef.viewaxis[0], ent.origin ); VectorMA( ent.origin, cg.damageX * -8, cg.refdef.viewaxis[1], ent.origin ); VectorMA( ent.origin, cg.damageY * 8, cg.refdef.viewaxis[2], ent.origin ); ent.radius = cg.damageValue * 3 * ( 1.0 - ((float)t / maxTime) ); if (cg.snap->ps.damageType == 0) { //pure health ent.customShader = cgs.media.viewPainShader; ent.shaderRGBA[0] = 180 * ( 1.0 - ((float)t / maxTime) ); ent.shaderRGBA[1] = 50 * ( 1.0 - ((float)t / maxTime) ); ent.shaderRGBA[2] = 50 * ( 1.0 - ((float)t / maxTime) ); ent.shaderRGBA[3] = 255; } else if (cg.snap->ps.damageType == 1) { //pure shields ent.customShader = cgs.media.viewPainShader_Shields; ent.shaderRGBA[0] = 50 * ( 1.0 - ((float)t / maxTime) ); ent.shaderRGBA[1] = 180 * ( 1.0 - ((float)t / maxTime) ); ent.shaderRGBA[2] = 50 * ( 1.0 - ((float)t / maxTime) ); ent.shaderRGBA[3] = 255; } else { //shields and health ent.customShader = cgs.media.viewPainShader_ShieldsAndHealth; ent.shaderRGBA[0] = 180 * ( 1.0 - ((float)t / maxTime) ); ent.shaderRGBA[1] = 180 * ( 1.0 - ((float)t / maxTime) ); ent.shaderRGBA[2] = 50 * ( 1.0 - ((float)t / maxTime) ); ent.shaderRGBA[3] = 255; } trap_R_AddRefEntityToScene( &ent );}
开发者ID:blaenk,项目名称:jedioutcast,代码行数:58,
示例28: CG_AddBezier/*===================CG_AddBezierFor trek, for the imod and the...uh...imod.===================*/void CG_AddBezier( localEntity_t *le ){ refEntity_t *re; float frac, alpha; float t = (cg.time - le->startTime)*0.001; // time elapsed since beginning of effect vec3_t vTempPos; re = &le->refEntity; frac = (cg.time - le->startTime) / ( float ) ( le->endTime - le->startTime ); if ( frac > 1 ) frac = 1.0; // can happen during connection problems else if (frac < 0) frac = 0.0; // Use the liferate to set the scale over time. re->data.bezier.width = le->data.line.width + (le->data.line.dwidth * frac); if (re->data.bezier.width <= 0) { CG_FreeLocalEntity( le ); return; } // We will assume here that we want additive transparency effects. alpha = le->alpha + (le->dalpha * frac); re->shaderRGBA[0] = 0xff * alpha; re->shaderRGBA[1] = 0xff * alpha; re->shaderRGBA[2] = 0xff * alpha; re->shaderRGBA[3] = 0xff; // Yes, we could apply c to this too, but fading the color is better for lines. re->reType = RT_BEZIER; // the refEntity only stores the two control points, so we need to update them here with //the control_velocity and control_acceleration, then store the results in refEntity. //use (cg.time - le->startTime) as a value for elapsed time t, plug it into the position formula: // // x = x0 + (v0 * t) + (0.5 * a * t * t) // //...where x is the position at time t, x0 is initial control point position, v0 is control point velocity, //and a is control point acceleration // // update control point 1 VectorMA(le->data.line.control1, t, le->data.line.control1_velocity, vTempPos); VectorMA(vTempPos, (0.5*t*t), le->data.line.control1_acceleration, re->data.bezier.control1); // update control point 2 VectorMA(le->data.line.control2, t, le->data.line.control2_velocity, vTempPos); VectorMA(vTempPos, (0.5*t*t), le->data.line.control2_acceleration, re->data.bezier.control2); trap_R_AddRefEntityToScene( re );}
开发者ID:UberGames,项目名称:RPG-X2-rpgxEF,代码行数:60,
示例29: FX_ProbeBeam//TiM - Beam FX for the Neutrino Probe weaponvoid FX_ProbeBeam( vec3_t origin, vec3_t dir, int clientNum, qboolean alt_fire ){ trace_t tr; refEntity_t beam; vec3_t end; float scale; memset( &beam, 0, sizeof( beam ) ); if ( alt_fire ) scale = flrandom(7.0f, 12.0f); else scale = Q_fabs( 12.0f * sin( cg.time * 0.1f ) ); VectorMA( origin, PROBE_BEAM_LENGTH, dir, end ); CG_Trace( &tr, origin, NULL, NULL, end, clientNum, CONTENTS_SOLID ); trap_R_AddLightToScene( origin, 20, 114.0f / 255, 164.0f / 255, 1.0f ); VectorCopy( origin, beam.origin); VectorCopy( tr.endpos, beam.oldorigin ); beam.reType = RT_LINE; beam.customShader = cgs.media.probeBeam; beam.shaderRGBA[0] = 0xff; beam.shaderRGBA[1] = 0xff; beam.shaderRGBA[2] = 0xff; beam.shaderRGBA[3] = 0xff; AxisClear( beam.axis ); beam.data.line.width = scale*0.1; beam.data.line.width2 = scale; beam.data.line.stscale = 1.0; trap_R_AddRefEntityToScene( &beam ); if ( tr.fraction != 1.0f ) { float radius; if ( alt_fire ) radius = flrandom(1.5f, 3.0f) * (1.0 - (tr.fraction*0.3)); else radius = flrandom(0.5f, 1.5f) * (1.0 - (tr.fraction*0.3)); if ( !radius ) return; CG_ImpactMark( cgs.media.probeDecal, tr.endpos, tr.plane.normal, 0, 1, 1, 1, 0.2*(1.0-tr.fraction), qfalse, radius, qtrue ); trap_R_AddLightToScene( origin, radius*5, 114.0f / 255, 164.0f / 255, 1.0f ); }}
开发者ID:UberGames,项目名称:RPG-X2-rpgxEF,代码行数:52,
示例30: CG_GhostBuildable/*==================CG_GhostBuildable==================*/void CG_GhostBuildable( buildable_t buildable ){ refEntity_t ent; playerState_t *ps; vec3_t angles, entity_origin; vec3_t mins, maxs; trace_t tr; float scale; ps = &cg.predictedPlayerState; memset( &ent, 0, sizeof( ent ) ); BG_FindBBoxForBuildable( buildable, mins, maxs ); BG_PositionBuildableRelativeToPlayer( ps, mins, maxs, CG_Trace, entity_origin, angles, &tr ); CG_PositionAndOrientateBuildable( ps->viewangles, entity_origin, tr.plane.normal, ps->clientNum, mins, maxs, ent.axis, ent.origin ); //offset on the Z axis if required VectorMA( ent.origin, BG_FindZOffsetForBuildable( buildable ), tr.plane.normal, ent.origin ); VectorCopy( ent.origin, ent.lightingOrigin ); VectorCopy( ent.origin, ent.oldorigin ); // don't positionally lerp at all ent.hModel = cg_buildables[ buildable ].models[ 0 ]; if( ps->stats[ STAT_BUILDABLE ] & SB_VALID_TOGGLEBIT ) ent.customShader = cgs.media.greenBuildShader; else ent.customShader = cgs.media.redBuildShader; //rescale the model scale = BG_FindModelScaleForBuildable( buildable ); if( scale != 1.0f ) { VectorScale( ent.axis[ 0 ], scale, ent.axis[ 0 ] ); VectorScale( ent.axis[ 1 ], scale, ent.axis[ 1 ] ); VectorScale( ent.axis[ 2 ], scale, ent.axis[ 2 ] ); ent.nonNormalizedAxes = qtrue; } else ent.nonNormalizedAxes = qfalse; // add to refresh list trap_R_AddRefEntityToScene( &ent );}
开发者ID:AlienHoboken,项目名称:Tremulous-W-Server,代码行数:55,
注:本文中的trap_R_AddRefEntityToScene函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ trap_R_DrawStretchPic函数代码示例 C++ trap_R_AddPolyToScene函数代码示例 |