您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ trap_S_StartSound函数代码示例

51自学网 2021-06-03 08:58:11
  C++
这篇教程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 = &cent->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 = &cent->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_PMItemBigSound

void 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: GrenadeBeep

qboolean 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 = &cent->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 = &cent->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( &cent->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 = &cent->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_GrenadeExplode

void 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_StartSound

void	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 = &cent->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_EntityEvent

void 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 = &cent->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_EntityEvent

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;	es = &cent->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 = &cent->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函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。