这篇教程C++ trap_S_StartSound函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中trap_S_StartSound函数的典型用法代码示例。如果您正苦于以下问题:C++ trap_S_StartSound函数的具体用法?C++ trap_S_StartSound怎么用?C++ trap_S_StartSound使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了trap_S_StartSound函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: CG_FragmentBounceSound/*================CG_FragmentBounceSound================*/void CG_FragmentBounceSound( localEntity_t *le, trace_t *trace ) { if ( le->leBounceSoundType == LEBS_BLOOD ) { // half the gibs will make splat sounds if ( rand() & 1 ) { int r = rand()&3; sfxHandle_t s; if ( r == 0 ) { s = cgs.media.gibBounce1Sound; } else if ( r == 1 ) { s = cgs.media.gibBounce2Sound; } else { s = cgs.media.gibBounce3Sound; } trap_S_StartSound( trace->endpos, ENTITYNUM_WORLD, CHAN_AUTO, s ); } } else if ( le->leBounceSoundType == LEBS_BRASS ) { if ( cg_leiBrassNoise.integer ) { // half the casings will make casing sounds if ( rand() & 1 ) { int r = rand()&3; sfxHandle_t s; if ( r == 0 ) { s = cgs.media.lbul1Sound; } else if ( r == 1 ) { s = cgs.media.lbul2Sound; } else { s = cgs.media.lbul3Sound; } trap_S_StartSound( trace->endpos, ENTITYNUM_WORLD, CHAN_AUTO, s ); } } } else if ( le->leBounceSoundType == LEBS_SHELL ) { if ( cg_leiBrassNoise.integer ) { // half the casings will make casing sounds if ( rand() & 1 ) { int r = rand()&3; sfxHandle_t s; if ( r == 0 ) { s = cgs.media.lshl1Sound; } else if ( r == 1 ) { s = cgs.media.lshl2Sound; } else { s = cgs.media.lshl3Sound; } trap_S_StartSound( trace->endpos, ENTITYNUM_WORLD, CHAN_AUTO, s ); } } } // don't allow a fragment to make multiple bounce sounds, // or it gets too noisy as they settle le->leBounceSoundType = LEBS_NONE;}
开发者ID:OpenArena,项目名称:legacy,代码行数:65,
示例2: CG_PainEvent/*================CG_PainEventAlso called by playerstate transition================*/void CG_PainEvent( centity_t *cent, int health ) { char *snd; // don't do more than two pain sounds a second if ( cg.time - cent->pe.painTime < 500 ) { return; } if ( health < 25 ) { snd = "*pain25_1.wav"; } else if ( health < 50 ) { snd = "*pain50_1.wav"; } else if ( health < 75 ) { snd = "*pain75_1.wav"; } else { snd = "*pain100_1.wav"; } // play a gurp sound instead of a normal pain sound if (CG_WaterLevel(cent) >= 1) { if (rand()&1) { trap_S_StartSound(NULL, cent->currentState.number, CHAN_VOICE, CG_CustomSound(cent->currentState.number, "sound/player/gurp1.wav")); } else { trap_S_StartSound(NULL, cent->currentState.number, CHAN_VOICE, CG_CustomSound(cent->currentState.number, "sound/player/gurp2.wav")); } } else { trap_S_StartSound(NULL, cent->currentState.number, CHAN_VOICE, CG_CustomSound(cent->currentState.number, snd)); } // save pain time for programitic twitch animation cent->pe.painTime = cg.time; cent->pe.painDirection ^= 1;}
开发者ID:mecwerks,项目名称:revamp,代码行数:38,
示例3: CG_FragmentBounceSound/*================CG_FragmentBounceSound================*/void CG_FragmentBounceSound(localEntity_t * le, trace_t * trace){ if (le->leBounceSoundType == LEBS_BLOOD) { // half the gibs will make splat sounds if (rand() & 1) { int r = rand() & 3; sfxHandle_t s; if (r == 0) { s = cgs.media.gibBounce1Sound; } else if (r == 1) { s = cgs.media.gibBounce2Sound; } else { s = cgs.media.gibBounce3Sound; } trap_S_StartSound(trace->endpos, ENTITYNUM_WORLD, CHAN_AUTO, s); } } else if (le->leBounceSoundType == LEBS_BRASS) { // Elder: play bounce sound trap_S_StartSound(trace->endpos, ENTITYNUM_WORLD, CHAN_AUTO, cgs.media.sfx_shelltumble); } // don't allow a fragment to make multiple bounce sounds, // or it gets too noisy as they settle le->leBounceSoundType = LEBS_NONE;}
开发者ID:Zekom,项目名称:reaction,代码行数:30,
示例4: CG_UseItem/*===============CG_UseItem===============*/static void CG_UseItem( centity_t *cent ) { playerInfo_t *pi; int itemNum, playerNum; gitem_t *item; entityState_t *es; int i; es = ¢->currentState; itemNum = (es->event & ~EV_EVENT_BITS) - EV_USE_ITEM0; if ( itemNum < 0 || itemNum > HI_NUM_HOLDABLE ) { itemNum = 0; } // print a message if the local player for (i = 0; i < CG_MaxSplitView(); i++) { if ( es->number != cg.snap->pss[i].playerNum ) { continue; } if ( !itemNum ) { CG_CenterPrint( i, "No item to use", SCREEN_HEIGHT * 0.30, 0.5 ); } else { item = BG_FindItemForHoldable( itemNum ); CG_CenterPrint( i, va("Use %s", item->pickup_name), SCREEN_HEIGHT * 0.30, 0.5 ); } } switch ( itemNum ) { default: case HI_NONE: trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.useNothingSound ); break; case HI_TELEPORTER: break; case HI_MEDKIT: playerNum = cent->currentState.playerNum; if ( playerNum >= 0 && playerNum < MAX_CLIENTS ) { pi = &cgs.playerinfo[ playerNum ]; pi->medkitUsageTime = cg.time; } trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.medkitSound ); break;#ifdef MISSIONPACK case HI_KAMIKAZE: break; case HI_PORTAL: break; case HI_INVULNERABILITY: trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.useInvulnerabilitySound ); break;#endif }}
开发者ID:mecwerks,项目名称:revamp,代码行数:64,
示例5: CG_UseItem/*===============CG_UseItem===============*/static void CG_UseItem( centity_t *cent ) { clientInfo_t *ci; int itemNum, clientNum; gitem_t *item; entityState_t *es; es = ¢->currentState; itemNum = (es->event & ~EV_EVENT_BITS) - EV_USE_ITEM0; if ( itemNum < 0 || itemNum > HI_NUM_HOLDABLE ) { itemNum = 0; } // print a message if the local player if ( es->number == cg.snap->ps.clientNum ) { if ( !itemNum ) { CG_CenterPrint( "No item to use", SCREEN_HEIGHT * 0.30, BIGCHAR_WIDTH ); } else { item = BG_FindItemForHoldable( itemNum ); CG_CenterPrint( va("Use %s", item->pickup_name), SCREEN_HEIGHT * 0.30, BIGCHAR_WIDTH ); } } switch ( itemNum ) { default: case HI_NONE: trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.useNothingSound ); break; case HI_TELEPORTER: break; case HI_MEDKIT: clientNum = cent->currentState.clientNum; if ( clientNum >= 0 && clientNum < MAX_CLIENTS ) { ci = &cgs.clientinfo[ clientNum ]; ci->medkitUsageTime = cg.time; } trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.medkitSound ); break;#ifdef MISSIONPACK case HI_KAMIKAZE: break; case HI_PORTAL: break; case HI_INVULNERABILITY: trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.useInvulnerabilitySound ); break;#endif }}
开发者ID:Hasimir,项目名称:ioq3,代码行数:59,
示例6: CG_PainEvent/*================CG_PainEventAlso called by playerstate transition================*/void CG_PainEvent( centity_t *cent, int health ){ char *snd; // don't do more than two pain sounds a second if ( cg.time - cent->pe.painTime < 500 ) { return; } if ( health < 25 ) { snd = "*pain25_1.wav"; } else if ( health < 50 ) { snd = "*pain50_1.wav"; } else if ( health < 75 ) { snd = "*pain75_1.wav"; } else { snd = "*pain100_1.wav"; } trap_S_StartSound( NULL, cent->currentState.number, CHAN_VOICE, CG_CustomSound( cent->currentState.number, snd ) ); // save pain time for programitic twitch animation cent->pe.painTime = cg.time; cent->pe.painDirection ^= 1;}
开发者ID:Gireen,项目名称:Unvanquished,代码行数:41,
示例7: CG_SoundPickOldestRandomSound/*==============CG_SoundPickOldestRandomSound==============*/void CG_SoundPickOldestRandomSound( soundScript_t *sound, vec3_t org, int entnum ) { int oldestTime = 0; // TTimo: init soundScriptSound_t *oldestSound; soundScriptSound_t *scriptSound; oldestSound = NULL; scriptSound = sound->soundList; while ( scriptSound ) { if ( !oldestSound || ( scriptSound->lastPlayed < oldestTime ) ) { oldestTime = scriptSound->lastPlayed; oldestSound = scriptSound; } scriptSound = scriptSound->next; } if ( oldestSound ) { // play this sound if ( !sound->streaming ) { if ( !oldestSound->sfxHandle ) { oldestSound->sfxHandle = trap_S_RegisterSound( oldestSound->filename ); } trap_S_StartSound( org, entnum, sound->channel, oldestSound->sfxHandle ); } else { trap_S_StartStreamingSound( oldestSound->filename, sound->looping ? oldestSound->filename : NULL, entnum, sound->channel, sound->attenuation ); } oldestSound->lastPlayed = cg.time; } else { CG_Error( "Unable to locate a valid sound for soundScript: %s/n", sound->name ); }}
开发者ID:Justasic,项目名称:RTCW-MP,代码行数:35,
示例8: CG_SplatSound/*================CG_SplatSound LEILEI================*/void CG_SplatSound( localEntity_t *le, trace_t *trace ) { if ( le->leBounceSoundType == LEBS_BLOOD ) { // half the splats will make splat sounds if ( cg_leiGoreNoise.integer ) { if ( rand() & 1 ) { int r = rand()&3; sfxHandle_t s; if ( r == 0 ) { s = cgs.media.lspl1Sound; } else if ( r == 1 ) { s = cgs.media.lspl2Sound; } else { s = cgs.media.lspl3Sound; } trap_S_StartSound( trace->endpos, ENTITYNUM_WORLD, CHAN_AUTO, s ); } } } else if ( le->leBounceSoundType == LEBS_BRASS ) { // no GERMAN EURO CENSOR ROBOTS mode yet. } // don't allow a fragment to make multiple bounce sounds, // or it gets too noisy as they settle le->leBounceSoundType = LEBS_NONE;}
开发者ID:OpenArena,项目名称:legacy,代码行数:31,
示例9: CG_PMItemBigSoundvoid CG_PMItemBigSound( pmListItemBig_t* item ) { if ( !cg.snap ) { return; } switch ( item->type ) { case PM_RANK: trap_S_StartSound( NULL, cg.snap->ps.clientNum, CHAN_AUTO, cgs.media.sndRankUp ); break; case PM_SKILL: trap_S_StartSound( NULL, cg.snap->ps.clientNum, CHAN_AUTO, cgs.media.sndSkillUp ); break; default: break; }}
开发者ID:TheDushan,项目名称:OpenWolf,代码行数:16,
示例10: GrenadeBeepqboolean GrenadeBeep(localEntity_t *le){ weaponInfo_t *weaponInfo = &cg_weapons[WP_8]; trap_S_StartSound(le->refEntity.origin, ENTITYNUM_WORLD, CHAN_AUTO, weaponInfo->altHitSound); return qtrue;}
开发者ID:UberGames,项目名称:RPG-X2-rpgxEF,代码行数:7,
示例11: CG_InvulnerabilityJuiced/*==================CG_InvulnerabilityJuiced==================*/void CG_InvulnerabilityJuiced( vec3_t org ) { localEntity_t *le; refEntity_t *re; vec3_t angles; le = CG_AllocLocalEntity(); le->leFlags = 0; le->leType = LE_INVULJUICED; le->startTime = cg.time; le->endTime = cg.time + 10000; le->lifeRate = 1.0 / ( le->endTime - le->startTime ); le->color[0] = le->color[1] = le->color[2] = le->color[3] = 1.0; re = &le->refEntity; re->reType = RT_MODEL; re->shaderTime = cg.time / 1000.0f; re->hModel = cgs.media.invulnerabilityJuicedModel; VectorCopy( org, re->origin ); VectorClear(angles); AnglesToAxis( angles, re->axis ); trap_S_StartSound (org, ENTITYNUM_NONE, CHAN_BODY, cgs.media.invulnerabilityJuicedSound );}
开发者ID:OpenArena,项目名称:leixperimental,代码行数:32,
示例12: CG_InvulnerabilityImpact/*==================CG_InvulnerabilityImpact==================*/void CG_InvulnerabilityImpact( vec3_t org, vec3_t angles ) { localEntity_t *le; refEntity_t *re; int r; sfxHandle_t sfx; le = CG_AllocLocalEntity(); le->leFlags = 0; le->leType = LE_INVULIMPACT; le->startTime = cg.time; le->endTime = cg.time + 1000; le->lifeRate = 1.0 / ( le->endTime - le->startTime ); le->color[0] = le->color[1] = le->color[2] = le->color[3] = 1.0; re = &le->refEntity; re->reType = RT_MODEL; re->shaderTime = cg.time / 1000.0f; re->hModel = cgs.media.invulnerabilityImpactModel; VectorCopy( org, re->origin ); AnglesToAxis( angles, re->axis ); r = rand() & 3; if ( r < 2 ) { sfx = cgs.media.invulnerabilityImpactSound1; } else if ( r == 2 ) { sfx = cgs.media.invulnerabilityImpactSound2; } else { sfx = cgs.media.invulnerabilityImpactSound3; } trap_S_StartSound (org, ENTITYNUM_NONE, CHAN_BODY, sfx );}
开发者ID:OpenArena,项目名称:leixperimental,代码行数:40,
示例13: CG_FragmentBounceSound/*================CG_FragmentBounceSound================*/void CG_FragmentBounceSound( localEntity_t *le, trace_t *trace ) { if ( le->leBounceSoundType == LEBS_BLOOD ) { // half the gibs will make splat sounds if ( rand() & 1 ) { int r = rand()&3; sfxHandle_t s; if ( r < 2 ) { s = cgs.media.gibBounce1Sound; } else if ( r == 2 ) { s = cgs.media.gibBounce2Sound; } else { s = cgs.media.gibBounce3Sound; } trap_S_StartSound( trace->endpos, ENTITYNUM_WORLD, CHAN_AUTO, s ); } } else if ( le->leBounceSoundType == LEBS_BRASS ) {//----(SA) added } else if ( le->leBounceSoundType == LEBS_ROCK ) { // half the hits will make thunk sounds (this is just to start since we don't even have the sound yet... (SA)) if ( rand() & 1 ) { int r = rand()&3; sfxHandle_t s; if ( r < 2 ) { s = cgs.media.debBounce1Sound; } else if ( r == 2 ) { s = cgs.media.debBounce2Sound; } else { s = cgs.media.debBounce3Sound; } trap_S_StartSound( trace->endpos, ENTITYNUM_WORLD, CHAN_AUTO, s ); }//----(SA) end } else if ( le->leBounceSoundType == LEBS_BONE ) { trap_S_StartSound( trace->endpos, ENTITYNUM_WORLD, CHAN_AUTO, cgs.media.boneBounceSound ); } // don't allow a fragment to make multiple bounce sounds, // or it gets too noisy as they settle le->leBounceSoundType = LEBS_NONE;}
开发者ID:natelo,项目名称:rtcwPub,代码行数:51,
示例14: CG_TransitionPlayerState/*===============CG_TransitionPlayerState===============*/void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops ){ // check for changing follow mode if( ps->clientNum != ops->clientNum ) { cg.thisFrameTeleport = qtrue; // make sure we don't get any unwanted transition effects *ops = *ps; CG_ResetPainBlend( ); } // damage events (player is getting wounded) if( ps->damageEvent != ops->damageEvent && ps->damageCount ) CG_DamageFeedback( ps->damageYaw, ps->damagePitch, ps->damageCount ); // respawning if( ps->persistant[ PERS_SPAWN_COUNT ] != ops->persistant[ PERS_SPAWN_COUNT ] ) CG_Respawn( ); if( cg.mapRestart ) { CG_Respawn( ); cg.mapRestart = qfalse; } if( cg.snap->ps.pm_type != PM_INTERMISSION && ps->persistant[ PERS_SPECSTATE ] == SPECTATOR_NOT ) CG_CheckLocalSounds( ps, ops ); // run events CG_CheckPlayerstateEvents( ps, ops ); // smooth the ducking viewheight change if( ps->viewheight != ops->viewheight ) { cg.duckChange = ps->viewheight - ops->viewheight; cg.duckTime = cg.time; } // changed team if( ps->stats[ STAT_TEAM ] != ops->stats[ STAT_TEAM ] ) { cg.lastHealthCross = 0; cg.chargeMeterAlpha = 0.0f; } if( ps->stats[ STAT_FUEL ] < JETPACK_FUEL_JUMP && ops->stats[ STAT_FUEL ] >= JETPACK_FUEL_JUMP && cg.predictedPlayerEntity.jetPackJumpTime + 1000 > cg.time ) { trap_S_StartSound( NULL, cg.predictedPlayerState.clientNum, CHAN_AUTO, cgs.media.jetpackNoJumpFuelSound ); }}
开发者ID:ZdrytchX,项目名称:cuboid,代码行数:60,
示例15: CG_UseItem/*===============CG_UseItem===============*/static void CG_UseItem( centity_t *cent ) { clientInfo_t *ci = 0; int itemNum; gitem_t *item; entityState_t *es; es = ¢->currentState; itemNum = (es->event & ~EV_EVENT_BITS) - EV_USE_ITEM0; if ( itemNum < 0 || itemNum > HI_NUM_HOLDABLE ) { itemNum = 0; } // print a message if the local player if ( es->number == cg.snap->ps.clientNum ) { if ( !itemNum ) { CG_CenterPrint( "No item to use" ); } else { item = BG_FindItemForHoldable( itemNum ); CG_CenterPrint( va("Use %s", item->pickup_name) ); } } switch ( itemNum ) { default: case HI_NONE: trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.useNothingSound ); break; case HI_TELEPORTER: break; case HI_MEDKIT: trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.medkitSound ); break; }}
开发者ID:entdark,项目名称:q3mme,代码行数:44,
示例16: CG_GlassShatter_Old/*==================CG_GlassShatter_OldThrows glass shards from within a given bounding box in the world==================*/void CG_GlassShatter_Old(int entnum, vector3 *org, vector3 *mins, vector3 *maxs){ vector3 velocity, a, shardorg, dif, difx; float windowmass; float shardsthrow = 0; char chunkname[256]; trap_S_StartSound(org, entnum, CHAN_BODY, trap_S_RegisterSound("sound/effects/glassbreak1.wav")); VectorSubtract(maxs, mins, &a); windowmass = VectorLength(&a); //should give us some idea of how big the chunk of glass is while (shardsthrow < windowmass) { velocity.x = crandom()*150; velocity.y = crandom()*150; velocity.z = 150 + crandom()*75; Com_sprintf(chunkname, sizeof(chunkname), "models/chunks/glass/glchunks_%i.md3", Q_irand(1, 6)); VectorCopy(org, &shardorg); dif.x = (maxs->x-mins->x)/2; dif.y = (maxs->y-mins->y)/2; dif.z = (maxs->z-mins->z)/2; if (dif.x < 2) dif.x = 2; if (dif.y < 2) dif.y = 2; if (dif.z < 2) dif.z = 2; difx.x = Q_irand(1, (dif.x*0.9)*2); difx.y = Q_irand(1, (dif.y*0.9)*2); difx.z = Q_irand(1, (dif.z*0.9)*2); if (difx.x > dif.x) shardorg.x += difx.x-(dif.x); else shardorg.x -= difx.x; if (difx.y > dif.y) shardorg.y += difx.y-(dif.y); else shardorg.y -= difx.y; if (difx.z > dif.z) shardorg.z += difx.z-(dif.z); else shardorg.z -= difx.z; //CG_TestLine(org, shardorg, 5000, 0x0000ff, 3); CG_ThrowChunk( &shardorg, &velocity, trap_R_RegisterModel( chunkname ), 0, 254 ); shardsthrow += 10; }}
开发者ID:Delfin1,项目名称:japp,代码行数:57,
示例17: CG_FireWeapon/*================CG_FireWeaponCaused by an EV_FIRE_WEAPON event================*/void CG_FireWeapon( centity_t *cent, weaponMode_t weaponMode ){ entityState_t *es; int c; weaponInfo_t *wi; weapon_t weaponNum; es = ¢->currentState; weaponNum = es->weapon; if( weaponNum == WP_NONE ) return; if( weaponMode <= WPM_NONE || weaponMode >= WPM_NUM_WEAPONMODES ) weaponMode = WPM_PRIMARY; if( weaponNum >= WP_NUM_WEAPONS ) { CG_Error( "CG_FireWeapon: ent->weapon >= WP_NUM_WEAPONS" ); return; } wi = &cg_weapons[ weaponNum ]; // mark the entity as muzzle flashing, so when it is added it will // append the flash to the weapon model cent->muzzleFlashTime = cg.time; if( wi->wim[ weaponMode ].muzzleParticleSystem ) { if( !CG_IsParticleSystemValid( ¢->muzzlePS ) || !CG_IsParticleSystemInfinite( cent->muzzlePS ) ) cent->muzzlePsTrigger = qtrue; } // play a sound for( c = 0; c < 4; c++ ) { if( !wi->wim[ weaponMode ].flashSound[ c ] ) break; } if( c > 0 ) { c = rand( ) % c; if( wi->wim[ weaponMode ].flashSound[ c ] ) trap_S_StartSound( NULL, es->number, CHAN_WEAPON, wi->wim[ weaponMode ].flashSound[ c ] ); }}
开发者ID:ztdretcher,项目名称:zt-tremulous,代码行数:57,
示例18: CG_ObeliskPain/*==================CG_ObeliskPain==================*/void CG_ObeliskPain( vec3_t org ) { float r; sfxHandle_t sfx; // hit sound r = rand() & 3; if ( r < 2 ) { sfx = cgs.media.obeliskHitSound1; } else if ( r == 2 ) { sfx = cgs.media.obeliskHitSound2; } else { sfx = cgs.media.obeliskHitSound3; } trap_S_StartSound ( org, ENTITYNUM_NONE, CHAN_BODY, sfx );}
开发者ID:OpenArena,项目名称:leixperimental,代码行数:20,
示例19: CG_SoundPickOldestRandomSound/*==============CG_SoundPickOldestRandomSound==============*/void CG_SoundPickOldestRandomSound( soundScript_t *sound, vec3_t org, int entnum ) { int oldestTime = 0; // TTimo: init soundScriptSound_t *oldestSound; soundScriptSound_t *scriptSound; vec3_t eOrg; oldestSound = NULL; scriptSound = sound->soundList; while ( scriptSound ) { if ( !oldestSound || ( scriptSound->lastPlayed < oldestTime ) ) { oldestTime = scriptSound->lastPlayed; oldestSound = scriptSound; } scriptSound = scriptSound->next; } if ( oldestSound ) { // play this sound if ( !sound->streaming ) { if ( !oldestSound->sfxHandle ) { oldestSound->sfxHandle = trap_S_RegisterSound( oldestSound->filename ); } if ( sound->attenuation ) { trap_S_StartSound( org, entnum, sound->channel, oldestSound->sfxHandle ); } else { trap_S_StartLocalSound( oldestSound->sfxHandle, sound->channel ); } } else { trap_S_StartStreamingSound( oldestSound->filename, sound->looping ? oldestSound->filename : NULL, entnum, sound->channel, sound->attenuation ); } oldestSound->lastPlayed = cg.time; // // shake the view? if ( sound->shakeScale ) { // get the origin if ( org ) { VectorCopy( org, eOrg ); } else { VectorCopy( cg_entities[entnum].lerpOrigin, eOrg ); } // // start the shaker CG_StartShakeCamera( sound->shakeScale, sound->shakeDuration, eOrg, sound->shakeRadius ); } } else { CG_Error( "Unable to locate a valid sound for soundScript: %s/n", sound->name ); }}
开发者ID:LBoksha,项目名称:RTCW-SP-linux,代码行数:53,
示例20: CG_HumanBuildableExplosion/*=================CG_HumanBuildableExplosionCalled for human buildables as they are destroyed=================*/void CG_HumanBuildableExplosion( vec3_t origin, vec3_t dir ){ particleSystem_t *ps; trap_S_StartSound( origin, ENTITYNUM_WORLD, CHAN_AUTO, cgs.media.humanBuildableExplosion ); //particle system ps = CG_SpawnNewParticleSystem( cgs.media.humanBuildableDestroyedPS ); if( CG_IsParticleSystemValid( &ps ) ) { CG_SetAttachmentPoint( &ps->attachment, origin ); CG_SetParticleSystemNormal( ps, dir ); CG_AttachToPoint( &ps->attachment ); }}
开发者ID:AlienHoboken,项目名称:Tremulous-W-Server,代码行数:23,
示例21: CG_PowerupTimerSounds/*=====================CG_PowerupTimerSounds=====================*/static void CG_PowerupTimerSounds( void ) { int i; int t; // powerup timers going away for ( i = 0 ; i < MAX_POWERUPS ; i++ ) { t = cg.snap->ps.powerups[i]; if ( t <= cg.time ) { continue; } if ( t - cg.time >= POWERUP_BLINKS * POWERUP_BLINK_TIME ) { continue; } if ( ( t - cg.time ) / POWERUP_BLINK_TIME != ( t - cg.oldTime ) / POWERUP_BLINK_TIME ) { trap_S_StartSound( NULL, cg.snap->ps.clientNum, CHAN_ITEM, cgs.media.wearOffSound ); } }}
开发者ID:Cpasjuste,项目名称:quake3_pandora_gles,代码行数:23,
示例22: CG_RunBuildableLerpFrame/*===============CG_RunBuildableLerpFrameSets cg.snap, cg.oldFrame, and cg.backlerpcg.time should be between oldFrameTime and frameTime after exit===============*/static void CG_RunBuildableLerpFrame( centity_t *cent ){ buildable_t buildable = cent->currentState.modelindex; lerpFrame_t *lf = ¢->lerpFrame; buildableAnimNumber_t newAnimation = cent->buildableAnim & ~( ANIM_TOGGLEBIT|ANIM_FORCEBIT ); // see if the animation sequence is switching if( newAnimation != lf->animationNumber || !lf->animation ) { if( cg_debugRandom.integer ) CG_Printf( "newAnimation: %d lf->animationNumber: %d lf->animation: %d/n", newAnimation, lf->animationNumber, lf->animation ); CG_SetBuildableLerpFrameAnimation( buildable, lf, newAnimation ); if( !cg_buildables[ buildable ].sounds[ newAnimation ].looped && cg_buildables[ buildable ].sounds[ newAnimation ].enabled ) { if( cg_debugRandom.integer ) CG_Printf( "Sound for animation %d for a %s/n", newAnimation, BG_Buildable( buildable )->humanName ); trap_S_StartSound( cent->lerpOrigin, cent->currentState.number, CHAN_AUTO, cg_buildables[ buildable ].sounds[ newAnimation ].sound ); } } if( cg_buildables[ buildable ].sounds[ lf->animationNumber ].looped && cg_buildables[ buildable ].sounds[ lf->animationNumber ].enabled ) trap_S_AddLoopingSound( cent->currentState.number, cent->lerpOrigin, vec3_origin, cg_buildables[ buildable ].sounds[ lf->animationNumber ].sound ); CG_RunLerpFrame( lf, 1.0f ); // animation ended if( lf->frameTime == cg.time ) { cent->buildableAnim = cent->currentState.torsoAnim; cent->buildableIdleAnim = qtrue; }}
开发者ID:ppetr,项目名称:new-edge,代码行数:49,
示例23: FX_GrenadeExplodevoid FX_GrenadeExplode( vec3_t origin, vec3_t normal ){ localEntity_t *le; qhandle_t null = 0; vec3_t direction, org, vel; int i; VectorSet( direction, 0,0,1 ); // Add an explosion and tag a light to it le = CG_MakeExplosion2( origin, direction, cgs.media.nukeModel, 5, null, 250, qfalse, 25.0f, LEF_FADE_RGB); le->light = 150; le->refEntity.renderfx |= RF_NOSHADOW; VectorSet( le->lightColor, 1.0f, 0.6f, 0.2f ); // Ground ring FX_AddQuad( origin, normal, 5, 100, 1.0, 0.0, random() * 360, 300, cgs.media.bigShockShader ); // Flare VectorMA( origin, 12, direction, org ); FX_AddSprite( org, NULL, qfalse, 160.0, -160.0, 1.0, 0.0, 0.0, 0.0, 200, cgs.media.sunnyFlareShader );//, FXF_NON_LINEAR_FADE ); for (i = 0; i < 12; i++) { float width, length; FXE_Spray( normal, 470, 325, 0.5f, vel); length = 24.0 + random() * 12; width = 0.5 + random() * 2; FX_AddTrail( origin, vel, qtrue, length, -length, width, -width, 1.0f, 1.0f, 0.5f, 1000.0f, cgs.media.orangeTrailShader); } trap_S_StartSound( origin, ENTITYNUM_WORLD, CHAN_AUTO, cgs.media.grenadeExplodeSound ); // Smoke and impact// FX_AddSpawner( origin, normal, NULL, NULL, 100, 25.0f, 2000.0f, (void *) CG_SmokeSpawn, NULL, 1024 ); CG_ImpactMark( cgs.media.compressionMarkShader, origin, normal, random()*360, 1,1,1,1.0, qfalse, random() * 16 + 48, qfalse );}
开发者ID:UberGames,项目名称:RPG-X2-rpgxEF,代码行数:39,
示例24: nox_trap_S_StartSoundvoid nox_trap_S_StartSound( vec3_t origin, int entityNum, int entchannel, sfxHandle_t sfx ) { int doit = 1; //consider NonX (lmo) if ( cg.snap->ps.duelInProgress ) { // this client is dueling if ( entityNum >= 0 && entityNum < MAX_CLIENTS && entityNum != cg.snap->ps.clientNum && entityNum != cg.snap->ps.duelIndex ) { // sound originated from a client, but not one of the duelers doit = 0; } else if ( entityNum >= MAX_CLIENTS && cg_entities[entityNum].currentState.otherEntityNum != ENTITYNUM_NONE && cg_entities[entityNum].currentState.otherEntityNum != cg.snap->ps.clientNum && cg_entities[entityNum].currentState.otherEntityNum != cg.snap->ps.duelIndex ) { // sound generated by non-client (e.g. temp) entity in a snap, the otherEntityNum should be the orinating // client number (by hack!). If otherEntityNum is ENTITYNUM_NONE, then it is one of the many sounds // I don't bother filtering, so play it. Otherwise, if not from the duelers, supress it doit = 0; } } if ( doit ) { trap_S_StartSound( origin, entityNum, entchannel, sfx ); }}
开发者ID:erfg12,项目名称:clanmod-jka,代码行数:24,
示例25: CG_EntityEvent/*==============CG_EntityEventAn entity has an event valuealso called by CG_CheckPlayerstateEvents==============*/void CG_EntityEvent( centity_t *cent, vec3_t position ){ entityState_t *es; int event; vec3_t dir; const char *s; int clientNum; clientInfo_t *ci; int steptime; if ( cg.snap->ps.persistant[ PERS_SPECSTATE ] != SPECTATOR_NOT ) { steptime = 200; } else { steptime = BG_Class( cg.snap->ps.stats[ STAT_CLASS ] )->steptime; } es = ¢->currentState; event = es->event & ~EV_EVENT_BITS; if ( cg_debugEvents.integer ) { CG_Printf( "ent:%3i event:%3i %s/n", es->number, event, BG_EventName( event ) ); } if ( !event ) { return; } clientNum = es->clientNum; if ( clientNum < 0 || clientNum >= MAX_CLIENTS ) { clientNum = 0; } ci = &cgs.clientinfo[ clientNum ]; switch ( event ) { case EV_FOOTSTEP: if ( cg_footsteps.integer && ci->footsteps != FOOTSTEP_NONE ) { if ( ci->footsteps == FOOTSTEP_CUSTOM ) { trap_S_StartSound( NULL, es->number, CHAN_BODY, ci->customFootsteps[ rand() & 3 ] ); } else { trap_S_StartSound( NULL, es->number, CHAN_BODY, cgs.media.footsteps[ ci->footsteps ][ rand() & 3 ] ); } } break; case EV_FOOTSTEP_METAL: if ( cg_footsteps.integer && ci->footsteps != FOOTSTEP_NONE ) { if ( ci->footsteps == FOOTSTEP_CUSTOM ) { trap_S_StartSound( NULL, es->number, CHAN_BODY, ci->customMetalFootsteps[ rand() & 3 ] ); } else { trap_S_StartSound( NULL, es->number, CHAN_BODY, cgs.media.footsteps[ FOOTSTEP_METAL ][ rand() & 3 ] ); } } break; case EV_FOOTSTEP_SQUELCH: if ( cg_footsteps.integer && ci->footsteps != FOOTSTEP_NONE ) { trap_S_StartSound( NULL, es->number, CHAN_BODY, cgs.media.footsteps[ FOOTSTEP_FLESH ][ rand() & 3 ] ); } break; case EV_FOOTSPLASH: if ( cg_footsteps.integer && ci->footsteps != FOOTSTEP_NONE ) { trap_S_StartSound( NULL, es->number, CHAN_BODY, cgs.media.footsteps[ FOOTSTEP_SPLASH ][ rand() & 3 ] );//.........这里部分代码省略.........
开发者ID:Gireen,项目名称:Unvanquished,代码行数:101,
示例26: CG_EntityEventvoid CG_EntityEvent( centity_t *cent, vec3_t position ) { entityState_t *es; int event; vec3_t dir; const char *s; int playerNum; playerInfo_t *pi; int i; es = ¢->currentState; event = es->event & ~EV_EVENT_BITS; if ( cg_debugEvents.integer ) { CG_Printf( "ent:%3i event:%3i ", es->number, event ); } if ( !event ) { DEBUGNAME("ZEROEVENT"); return; } playerNum = es->playerNum; if ( playerNum < 0 || playerNum >= MAX_CLIENTS ) { playerNum = 0; } pi = &cgs.playerinfo[ playerNum ]; switch ( event ) { // // movement generated events // case EV_FOOTSTEP: DEBUGNAME("EV_FOOTSTEP"); if (cg_footsteps.integer) { trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.footsteps[ pi->footsteps ][rand()&3] ); } break; case EV_FOOTSTEP_METAL: DEBUGNAME("EV_FOOTSTEP_METAL"); if (cg_footsteps.integer) { trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.footsteps[ FOOTSTEP_METAL ][rand()&3] ); } break; case EV_FOOTSPLASH: DEBUGNAME("EV_FOOTSPLASH"); if (cg_footsteps.integer) { trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.footsteps[ FOOTSTEP_SPLASH ][rand()&3] ); } break; case EV_FOOTWADE: DEBUGNAME("EV_FOOTWADE"); if (cg_footsteps.integer) { trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.footsteps[ FOOTSTEP_SPLASH ][rand()&3] ); } break; case EV_SWIM: DEBUGNAME("EV_SWIM"); if (cg_footsteps.integer) { trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.footsteps[ FOOTSTEP_SPLASH ][rand()&3] ); } break; case EV_FALL_SHORT: DEBUGNAME("EV_FALL_SHORT"); trap_S_StartSound (NULL, es->number, CHAN_AUTO, cgs.media.landSound ); for (i = 0; i < CG_MaxSplitView(); i++) { if ( playerNum == cg.snap->pss[i].playerNum ) { // smooth landing z changes cg.localPlayers[i].landChange = -8; cg.localPlayers[i].landTime = cg.time; } } break; case EV_FALL_MEDIUM: DEBUGNAME("EV_FALL_MEDIUM"); // use normal pain sound if (cgs.fallDamage) { trap_S_StartSound( NULL, es->number, CHAN_VOICE, CG_CustomSound( es->number, "*pain100_1.wav" ) ); } else { trap_S_StartSound (NULL, es->number, CHAN_AUTO, cgs.media.landSound ); } for (i = 0; i < CG_MaxSplitView(); i++) { if ( playerNum == cg.snap->pss[i].playerNum ) { // smooth landing z changes cg.localPlayers[i].landChange = -16; cg.localPlayers[i].landTime = cg.time; } } break; case EV_FALL_FAR: DEBUGNAME("EV_FALL_FAR"); if (cgs.fallDamage) { trap_S_StartSound (NULL, es->number, CHAN_AUTO, CG_CustomSound( es->number, "*fall1.wav" ) ); } else {//.........这里部分代码省略.........
开发者ID:mecwerks,项目名称:revamp,代码行数:101,
示例27: CG_CheckLocalSounds/*==================CG_CheckLocalSounds==================*/void CG_CheckLocalSounds( playerState_t *ps, playerState_t *ops ){ int reward, delta; // don't play the sounds if the player just spawned if( ps->persistant[ PERS_SPECSTATE ] != ops->persistant[ PERS_SPECSTATE ] ) return; //hitsound delta = ps->persistant[PERS_HITS] - ops->persistant[PERS_HITS]; if (cg_hitsound.integer == 3) { if (delta > 165) //125 trap_S_StartLocalSound( cgs.media.hitSound[8], CHAN_LOCAL_SOUND ); else if (delta > 120) //100 trap_S_StartLocalSound( cgs.media.hitSound[7], CHAN_LOCAL_SOUND ); else if (delta > 85) //75 trap_S_StartLocalSound( cgs.media.hitSound[6], CHAN_LOCAL_SOUND ); else if (delta > 50) trap_S_StartLocalSound( cgs.media.hitSound[5], CHAN_LOCAL_SOUND ); else if (delta > 25) trap_S_StartLocalSound( cgs.media.hitSound[4], CHAN_LOCAL_SOUND ); else if (delta > 12) trap_S_StartLocalSound( cgs.media.hitSound[3], CHAN_LOCAL_SOUND ); else if (delta > 8) trap_S_StartLocalSound( cgs.media.hitSound[2], CHAN_LOCAL_SOUND ); else if (delta > 4) trap_S_StartLocalSound( cgs.media.hitSound[1], CHAN_LOCAL_SOUND ); else if (delta > 0) //0 = no events trap_S_StartLocalSound( cgs.media.hitSound[0], CHAN_LOCAL_SOUND ); } else if (cg_hitsound.integer == 2) { if (delta > 8) trap_S_StartLocalSound( cgs.media.hitSound[8], CHAN_LOCAL_SOUND ); else if (delta > 7) trap_S_StartLocalSound( cgs.media.hitSound[7], CHAN_LOCAL_SOUND ); else if (delta > 6) trap_S_StartLocalSound( cgs.media.hitSound[6], CHAN_LOCAL_SOUND ); else if (delta > 5) trap_S_StartLocalSound( cgs.media.hitSound[5], CHAN_LOCAL_SOUND ); else if (delta > 4) trap_S_StartLocalSound( cgs.media.hitSound[4], CHAN_LOCAL_SOUND ); else if (delta > 3) trap_S_StartLocalSound( cgs.media.hitSound[3], CHAN_LOCAL_SOUND ); else if (delta > 2) trap_S_StartLocalSound( cgs.media.hitSound[2], CHAN_LOCAL_SOUND ); else if (delta > 1) trap_S_StartLocalSound( cgs.media.hitSound[1], CHAN_LOCAL_SOUND ); else if (delta > 0) //0 = no events trap_S_StartLocalSound( cgs.media.hitSound[0], CHAN_LOCAL_SOUND ); } else if (cg_hitsound.integer && (delta > 0)) //no tonal change trap_S_StartLocalSound( cgs.media.hitSound[4], CHAN_LOCAL_SOUND ); //health changes of more than -1 should make pain sounds //and don't play hurt sound if evolving if( ps->stats[ STAT_HEALTH ] < ops->stats[ STAT_HEALTH ] - 1 && ps->stats[ STAT_CLASS ] == ops->stats[ STAT_CLASS ] ) { float healthlost = ((ops->stats[ STAT_HEALTH ] - ps->stats[ STAT_HEALTH ])/ps->stats[ STAT_MAX_HEALTH ]); if( ps->stats[ STAT_HEALTH ] > 0 ) { CG_PainEvent( &cg.predictedPlayerEntity, ps->stats[ STAT_HEALTH ] ); //play critical hit! sound if lost > 30% hp if (healthlost > 0.3) trap_S_StartLocalSound( cgs.media.hitSound[9], CHAN_LOCAL_SOUND ); } } //Don't spam it if the user is spamming spacebar up a stair (Urasai! Annoying!) if(cg_doublejumpsound.integer && ps->persistant[PERS_DOUBLEJUMPED] > ops->persistant[PERS_DOUBLEJUMPED]) { trap_S_StartLocalSound( cgs.media.doublejumpsound, CHAN_LOCAL_SOUND ); } // health changes of more than -1 should make pain sounds if( ps->stats[ STAT_HEALTH ] < ops->stats[ STAT_HEALTH ] - 1 ) { if( ps->stats[ STAT_HEALTH ] > 0 ) CG_PainEvent( &cg.predictedPlayerEntity, ps->stats[ STAT_HEALTH ] ); } if( ( BG_UpgradeIsActive( UP_JETPACK, ps->stats ) || ( cg.predictedPlayerEntity.jetPackJumpTime + 1000 > cg.time && cg.predictedPlayerEntity.jetPackJumpTime + 250 < cg.time ) ) && ps->stats[ STAT_FUEL ] <= JETPACK_FUEL_LOW ) { static int last = 0; if( last + 740 < cg.time ) { trap_S_StartSound( NULL, cg.predictedPlayerState.clientNum, CHAN_AUTO, cgs.media.jetpackLowFuelSound ); last = cg.time; } }//.........这里部分代码省略.........
开发者ID:ZdrytchX,项目名称:cuboid,代码行数:101,
示例28: CG_EntityEventvoid CG_EntityEvent( centity_t *cent, vec3_t position ) { entityState_t *es; int event; vec3_t dir; const char *s; int clientNum; clientInfo_t *ci; es = ¢->currentState; event = es->event & ~EV_EVENT_BITS; if ( cg_debugEvents.integer ) { CG_Printf( "ent:%3i event:%3i ", es->number, event ); } if ( !event ) { DEBUGNAME("ZEROEVENT"); return; } clientNum = es->clientNum; if ( clientNum < 0 || clientNum >= MAX_CLIENTS ) { clientNum = 0; } ci = &cgs.clientinfo[ clientNum ]; switch ( event ) { // // movement generated events // case EV_FOOTSTEP: DEBUGNAME("EV_FOOTSTEP"); if (cg_footsteps.integer) { trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.footsteps[ ci->footsteps ][rand()&3] ); } break; case EV_FOOTSTEP_METAL: DEBUGNAME("EV_FOOTSTEP_METAL"); if (cg_footsteps.integer) { trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.footsteps[ FOOTSTEP_METAL ][rand()&3] ); } break; case EV_FOOTSPLASH: DEBUGNAME("EV_FOOTSPLASH"); if (cg_footsteps.integer) { trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.footsteps[ FOOTSTEP_SPLASH ][rand()&3] ); } break; case EV_FOOTWADE: DEBUGNAME("EV_FOOTWADE"); if (cg_footsteps.integer) { trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.footsteps[ FOOTSTEP_SPLASH ][rand()&3] ); } break; case EV_SWIM: DEBUGNAME("EV_SWIM"); if (cg_footsteps.integer) { trap_S_StartSound (NULL, es->number, CHAN_BODY, cgs.media.footsteps[ FOOTSTEP_SPLASH ][rand()&3] ); } break; case EV_FALL_SHORT: DEBUGNAME("EV_FALL_SHORT"); trap_S_StartSound (NULL, es->number, CHAN_AUTO, cgs.media.landSound ); if ( clientNum == cg.predictedPlayerState.clientNum ) { // smooth landing z changes cg.landChange = -8; cg.landTime = cg.time; } break; case EV_FALL_MEDIUM: DEBUGNAME("EV_FALL_MEDIUM"); // use normal pain sound trap_S_StartSound( NULL, es->number, CHAN_VOICE, CG_CustomSound( es->number, "*pain100_1.wav" ) ); if ( clientNum == cg.predictedPlayerState.clientNum ) { // smooth landing z changes cg.landChange = -16; cg.landTime = cg.time; } break; case EV_FALL_FAR: DEBUGNAME("EV_FALL_FAR"); trap_S_StartSound (NULL, es->number, CHAN_AUTO, CG_CustomSound( es->number, "*fall1.wav" ) ); cent->pe.painTime = cg.time; // don't play a pain sound right after this if ( clientNum == cg.predictedPlayerState.clientNum ) { // smooth landing z changes cg.landChange = -24; cg.landTime = cg.time; } break; case EV_STEP_4: case EV_STEP_8: case EV_STEP_12://.........这里部分代码省略.........
开发者ID:OpenArena,项目名称:legacy,代码行数:101,
示例29: CG_RunBuildableLerpFrame/*===============CG_RunBuildableLerpFrameSets cg.snap, cg.oldFrame, and cg.backlerpcg.time should be between oldFrameTime and frameTime after exit===============*/static void CG_RunBuildableLerpFrame( centity_t *cent ){ int f, numFrames; buildable_t buildable = cent->currentState.modelindex; lerpFrame_t *lf = ¢->lerpFrame; animation_t *anim; buildableAnimNumber_t newAnimation = cent->buildableAnim & ~( ANIM_TOGGLEBIT|ANIM_FORCEBIT ); // debugging tool to get no animations if( cg_animSpeed.integer == 0 ) { lf->oldFrame = lf->frame = lf->backlerp = 0; return; } // see if the animation sequence is switching if( newAnimation != lf->animationNumber || !lf->animation ) { if( cg_debugRandom.integer ) CG_Printf( "newAnimation: %d lf->animationNumber: %d lf->animation: %d/n", newAnimation, lf->animationNumber, lf->animation ); CG_SetBuildableLerpFrameAnimation( buildable, lf, newAnimation ); if( !cg_buildables[ buildable ].sounds[ newAnimation ].looped && cg_buildables[ buildable ].sounds[ newAnimation ].enabled ) { if( cg_debugRandom.integer ) CG_Printf( "Sound for animation %d for a %s/n", newAnimation, BG_FindHumanNameForBuildable( buildable ) ); trap_S_StartSound( cent->lerpOrigin, cent->currentState.number, CHAN_AUTO, cg_buildables[ buildable ].sounds[ newAnimation ].sound ); } } if( cg_buildables[ buildable ].sounds[ lf->animationNumber ].looped && cg_buildables[ buildable ].sounds[ lf->animationNumber ].enabled ) trap_S_AddLoopingSound( cent->currentState.number, cent->lerpOrigin, vec3_origin, cg_buildables[ buildable ].sounds[ lf->animationNumber ].sound ); // if we have passed the current frame, move it to // oldFrame and calculate a new frame if( cg.time >= lf->frameTime ) { lf->oldFrame = lf->frame; lf->oldFrameTime = lf->frameTime; // get the next frame based on the animation anim = lf->animation; if( !anim->frameLerp ) return; // shouldn't happen if ( cg.time < lf->animationTime ) lf->frameTime = lf->animationTime; // initial lerp else lf->frameTime = lf->oldFrameTime + anim->frameLerp; f = ( lf->frameTime - lf->animationTime ) / anim->frameLerp; numFrames = anim->numFrames; if(anim->flipflop) numFrames *= 2; if( f >= numFrames ) { f -= numFrames; if( anim->loopFrames ) { f %= anim->loopFrames; f += anim->numFrames - anim->loopFrames; } else { f = numFrames - 1; // the animation is stuck at the end, so it // can immediately transition to another sequence lf->frameTime = cg.time; cent->buildableAnim = cent->currentState.torsoAnim; } } if( anim->reversed ) lf->frame = anim->firstFrame + anim->numFrames - 1 - f; else if( anim->flipflop && f >= anim->numFrames ) lf->frame = anim->firstFrame + anim->numFrames - 1 - ( f % anim->numFrames ); else lf->frame = anim->firstFrame + f; if( cg.time > lf->frameTime ) { lf->frameTime = cg.time; if( cg_debugAnim.integer )//.........这里部分代码省略.........
开发者ID:AlienHoboken,项目名称:Tremulous-W-Server,代码行数:101,
示例30: CG_Buildable//.........这里部分代码省略......... else turretBarrel.nonNormalizedAxes = qfalse; trap_R_AddRefEntityToScene( &turretBarrel ); } //turret barrel bit if( cg_buildables[ es->modelindex ].models[ 2 ] ) { refEntity_t turretTop; vec3_t flatAxis[ 3 ]; vec3_t swivelAngles; memset( &turretTop, 0, sizeof( turretTop ) ); VectorCopy( es->angles2, swivelAngles ); swivelAngles[ PITCH ] = 0.0f; turretTop.hModel = cg_buildables[ es->modelindex ].models[ 2 ]; CG_PositionRotatedEntityOnTag( &turretTop, &ent, ent.hModel, "tag_turret" ); VectorCopy( cent->lerpOrigin, turretTop.lightingOrigin ); AnglesToAxis( swivelAngles, flatAxis ); RotatePointAroundVector( turretTop.axis[ 0 ], xNormal, flatAxis[ 0 ], -rotAngle ); RotatePointAroundVector( turretTop.axis[ 1 ], xNormal, flatAxis[ 1 ], -rotAngle ); RotatePointAroundVector( turretTop.axis[ 2 ], xNormal, flatAxis[ 2 ], -rotAngle ); turretTop.oldframe = ent.oldframe; turretTop.frame = ent.frame; turretTop.backlerp = ent.backlerp; turretTop.customShader = ent.customShader; if( scale != 1.0f ) { VectorScale( turretTop.axis[ 0 ], scale, turretTop.axis[ 0 ] ); VectorScale( turretTop.axis[ 1 ], scale, turretTop.axis[ 1 ] ); VectorScale( turretTop.axis[ 2 ], scale, turretTop.axis[ 2 ] ); turretTop.nonNormalizedAxes = qtrue; } else turretTop.nonNormalizedAxes = qfalse; trap_R_AddRefEntityToScene( &turretTop ); } //weapon effects for turrets if( es->eFlags & EF_FIRING ) { weaponInfo_t *weapon = &cg_weapons[ es->weapon ]; if( cg.time - cent->muzzleFlashTime > MUZZLE_FLASH_TIME || BG_FindProjTypeForBuildable( es->modelindex ) == WP_TESLAGEN ) { if( weapon->wim[ WPM_PRIMARY ].flashDlightColor[ 0 ] || weapon->wim[ WPM_PRIMARY ].flashDlightColor[ 1 ] || weapon->wim[ WPM_PRIMARY ].flashDlightColor[ 2 ] ) { trap_R_AddLightToScene( cent->lerpOrigin, 300 + ( rand( ) & 31 ), weapon->wim[ WPM_PRIMARY ].flashDlightColor[ 0 ], weapon->wim[ WPM_PRIMARY ].flashDlightColor[ 1 ], weapon->wim[ WPM_PRIMARY ].flashDlightColor[ 2 ] ); } } if( weapon->wim[ WPM_PRIMARY ].firingSound ) { trap_S_AddLoopingSound( es->number, cent->lerpOrigin, vec3_origin, weapon->wim[ WPM_PRIMARY ].firingSound ); } else if( weapon->readySound ) trap_S_AddLoopingSound( es->number, cent->lerpOrigin, vec3_origin, weapon->readySound ); } health = es->generic1 & B_HEALTH_MASK; healthScale = (float)health / B_HEALTH_MASK; if( healthScale < cent->lastBuildableHealthScale && ( es->generic1 & B_SPAWNED_TOGGLEBIT ) ) { if( cent->lastBuildableDamageSoundTime + BUILDABLE_SOUND_PERIOD < cg.time ) { if( team == BIT_HUMANS ) { int i = rand( ) % 4; trap_S_StartSound( NULL, es->number, CHAN_BODY, cgs.media.humanBuildableDamage[ i ] ); } else if( team == BIT_ALIENS ) trap_S_StartSound( NULL, es->number, CHAN_BODY, cgs.media.alienBuildableDamage ); cent->lastBuildableDamageSoundTime = cg.time; } } cent->lastBuildableHealthScale = healthScale; //smoke etc for damaged buildables CG_BuildableParticleEffects( cent );}
开发者ID:AlienHoboken,项目名称:Tremulous-W-Server,代码行数:101,
注:本文中的trap_S_StartSound函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ trap_SendServerCommand函数代码示例 C++ trap_S_StartLocalSound函数代码示例 |