本文整理汇总了C++中G_SpawnFloat函数的典型用法代码示例。如果您正苦于以下问题:C++ G_SpawnFloat函数的具体用法?C++ G_SpawnFloat怎么用?C++ G_SpawnFloat使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了G_SpawnFloat函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SP_func_timer
void SP_func_timer( gentity_t *self ) {
G_SpawnFloat( "random", "1", &self->random);
G_SpawnFloat( "wait", "1", &self->wait );
self->e_UseFunc = useF_func_timer_use;
self->e_ThinkFunc = thinkF_func_timer_think;
if ( self->random >= self->wait ) {
self->random = self->wait - FRAMETIME;
gi.Printf( "func_timer at %s has random >= wait\n", vtos( self->s.origin ) );
}
if ( self->spawnflags & 1 ) {
self->nextthink = level.time + FRAMETIME;
self->activator = self;
}
self->svFlags = SVF_NOCLIENT;
}
示例2: and
/*QUAKED trigger_multiple (.5 .5 .5) ?
"wait" : Seconds between triggerings, 0.5 default, -1 = one time only.
"random" wait variance, default is 0
Variable sized repeatable trigger. Must be targeted at one or more entities.
so, the basic time between firing is a random time between
(wait - random) and (wait + random)
*/
void SP_trigger_multiple(gentity_t * ent)
{
G_SpawnFloat("wait", "0.5", &ent->wait);
G_SpawnFloat("random", "0", &ent->random);
G_SpawnBoolean("red_only", "0", &ent->red_only);
G_SpawnBoolean("blue_only", "0", &ent->blue_only);
if(ent->random >= ent->wait && ent->wait >= 0)
{
ent->random = ent->wait - FRAMETIME;
G_Printf("trigger_multiple has random >= wait\n");
}
ent->touch = Touch_Multi;
ent->use = Use_Multi;
InitTrigger(ent);
trap_LinkEntity(ent);
}
示例3: SP_func_timer
void SP_func_timer( gentity_t *self ) {
G_SpawnFloat( "random", "0", &self->random);
G_SpawnFloat( "wait", "1", &self->wait );
self->use = func_timer_use;
self->think = func_timer_think;
if ( self->random >= self->wait ) {
self->random = self->wait - ( FRAMETIME / 1000.f ); //Gordon div 1000 for milisecs...*cough*
G_Printf( "func_timer at %s has random >= wait\n", vtos( self->s.origin ) );
}
if ( self->spawnflags & 1 ) {
self->nextthink = level.time + FRAMETIME;
self->activator = self;
}
self->r.svFlags = SVF_NOCLIENT;
}
示例4: SP_fx_cloudlayer
void SP_fx_cloudlayer( gentity_t *ent )
{
// HACK: this effect is never played, rather it just caches the shaders I need cgame side
G_EffectIndex( "world/haze_cache" );
G_SpawnFloat( "radius", "2048", &ent->radius );
G_SpawnFloat( "random", "128", &ent->random );
G_SpawnFloat( "wait", "0", &ent->wait );
ent->s.eType = ET_CLOUD; // dumb
G_SetOrigin( ent, ent->s.origin );
ent->contents = 0;
VectorSet( ent->maxs, 200, 200, 200 );
VectorScale( ent->maxs, -1, ent->mins );
gi.linkentity( ent );
}
示例5: func_plat
/**
QUAKED func_plat (0 .5 .8) ?
Plats are always drawn in the extended position so they will light correctly.
"lip" default 8, protrusion above rest position
"height" total height of movement, defaults to model height
"speed" overrides default 200.
"dmg" overrides default 2
"model2" .md3 model to also draw
"color" constantLight color
"light" constantLight radius
*/
void SP_func_plat(gentity_t *ent)
{
float lip, height;
ent->sound1to2 = ent->sound2to1 = G_SoundIndex("sound/movers/plats/pt1_strt.wav");
ent->soundPos1 = ent->soundPos2 = G_SoundIndex("sound/movers/plats/pt1_end.wav");
VectorClear (ent->s.angles);
G_SpawnFloat("speed", "200", &ent->speed);
G_SpawnInt("dmg", "2", &ent->damage);
G_SpawnFloat("wait", "1", &ent->wait);
G_SpawnFloat("lip", "8", &lip);
ent->wait = 1000;
// create second position
trap_SetBrushModel(ent, ent->model);
if (!G_SpawnFloat("height", "0", &height)) {
height = (ent->r.maxs[2] - ent->r.mins[2]) - lip;
}
// pos1 is the rest (bottom) position, pos2 is the top
VectorCopy(ent->s.origin, ent->pos2);
VectorCopy(ent->pos2, ent->pos1);
ent->pos1[2] -= height;
InitMover(ent);
// touch function keeps the plat from returning while
// a live player is standing on it
ent->touch = Touch_Plat;
ent->blocked = Blocked_Door;
ent->parent = ent; // so it can be treated as a door
// spawn the trigger if one hasn't been custom made
if (!ent->targetname) {
SpawnPlatTrigger(ent);
}
}
示例6: SP_trigger_multiple
void SP_trigger_multiple( gentity_t *ent )
{
char buffer[MAX_QPATH];
char *s;
if ( G_SpawnString( "noise", "*NOSOUND*", &s ) )
{
Q_strncpyz( buffer, s, sizeof(buffer) );
COM_DefaultExtension( buffer, sizeof(buffer), ".wav");
ent->noise_index = G_SoundIndex(buffer);
}
G_SpawnFloat( "wait", "0", &ent->wait );//was 0.5 ... but that means wait can never be zero... we should probably put it back to 0.5, though...
G_SpawnFloat( "random", "0", &ent->random );
if ( (ent->wait > 0) && (ent->random >= ent->wait) ) {
ent->random = ent->wait - FRAMETIME;
gi.Printf(S_COLOR_YELLOW"trigger_multiple has random >= wait\n");
}
ent->delay *= 1000;//1 = 1 msec, 1000 = 1 sec
if ( !ent->speed && ent->target2 && ent->target2[0] )
{
ent->speed = 1000;
}
else
{
ent->speed *= 1000;
}
ent->e_TouchFunc = touchF_Touch_Multi;
ent->e_UseFunc = useF_Use_Multi;
if ( ent->team && ent->team[0] )
{
ent->noDamageTeam = TranslateTeamName( ent->team );
ent->team = NULL;
}
InitTrigger( ent );
gi.linkentity (ent);
}
示例7: and
/*QUAKED func_timer (0.3 0.1 0.6) (-8 -8 -8) (8 8 8) START_ON
This should be renamed trigger_timer...
Repeatedly fires its targets.
Can be turned on or off by using.
"wait" base time between triggering all targets, default is 1
"random" wait variance, default is 0
so, the basic time between firing is a random time between
(wait - random) and (wait + random)
*/
void SP_func_timer(gentity_t *self) {
G_SpawnFloat("random", "1", &self->random);
G_SpawnFloat("wait", "1", &self->wait);
self->use = Use_Func_Timer;
self->think = Func_Timer_Think;
if (self->random >= self->wait) {
self->random = self->wait - FRAMETIME;
G_Printf("func_timer at %s has random >= wait\n", VectorToString(self->s.origin));
}
if (self->spawnflags & 1) {
self->nextthink = level.time + FRAMETIME;
self->activator = self;
}
self->r.svFlags = SVF_NOCLIENT;
}
示例8: SP_misc_portal_camera
/*QUAKED misc_portal_camera (0 0 1) (-8 -8 -8) (8 8 8) slowrotate fastrotate noswing
The target for a misc_portal_director. You can set either angles or target another entity to determine the direction of view.
"roll" an angle modifier to orient the camera around the target vector;
*/
void SP_misc_portal_camera(gentity_t *ent) {
float roll;
VectorClear( ent->r.mins );
VectorClear( ent->r.maxs );
trap_LinkEntity (ent);
G_SpawnFloat( "roll", "0", &roll );
ent->s.clientNum = roll/360.0 * 256;
}
示例9: SP_misc_portal_camera
/*QUAKED misc_portal_camera (0 0 1) (-8 -8 -8) (8 8 8) slowrotate fastrotate noswing
The target for a misc_portal_director. You can set either angles or target another entity to determine the direction of view.
"roll" an angle modifier to orient the camera around the target vector;
*/
void SP_misc_portal_camera(gentity_t *ent) {
float roll;
VectorClear( &ent->r.mins );
VectorClear( &ent->r.maxs );
trap->SV_LinkEntity ((sharedEntity_t *)ent);
G_SpawnFloat( "roll", "0", &roll );
ent->s.clientNum = (int)(roll/360.0f * 256);
}
示例10: SP_fx_explosion_trail
//----------------------------------------------------------
void SP_fx_explosion_trail( gentity_t *ent )
{
// We have to be useable, otherwise we won't spawn in
if ( !ent->targetname )
{
gi.Printf( S_COLOR_RED"ERROR: fx_explosion_trail at %s has no targetname specified\n", vtos( ent->s.origin ));
G_FreeEntity( ent );
return;
}
// Get our defaults
G_SpawnString( "fxFile", "env/exp_trail_comp", &ent->fxFile );
G_SpawnInt( "damage", "128", &ent->damage );
G_SpawnFloat( "radius", "128", &ent->radius );
G_SpawnFloat( "speed", "350", &ent->speed );
// Try and associate an effect file, unfortunately we won't know if this worked or not until the CGAME trys to register it...
ent->fxID = G_EffectIndex( ent->fxFile );
if ( ent->fullName )
{
G_EffectIndex( ent->fullName );
}
if ( ent->model )
{
ent->s.modelindex2 = G_ModelIndex( ent->model );
}
// Give us a bit of time to spawn in the other entities, since we may have to target one of 'em
ent->e_ThinkFunc = thinkF_fx_explosion_trail_link;
ent->nextthink = level.time + 500;
// Save our position and link us up!
G_SetOrigin( ent, ent->s.origin );
VectorSet( ent->maxs, FX_ENT_RADIUS, FX_ENT_RADIUS, FX_ENT_RADIUS );
VectorScale( ent->maxs, -1, ent->mins );
gi.linkentity( ent );
}
示例11: and
/*QUAKED trigger_multiple (.5 .5 .5) ? AXIS_ONLY ALLIED_ONLY NOBOT BOTONLY SOLDIERONLY LTONLY MEDICONLY ENGINEERONLY COVERTOPSONLY
"wait" : Seconds between triggerings, 0.5 default, -1 = one time only.
"random" wait variance, default is 0
Variable sized repeatable trigger. Must be targeted at one or more entities.
so, the basic time between firing is a random time between
(wait - random) and (wait + random)
*/
void SP_trigger_multiple( gentity_t *ent ) {
G_SpawnFloat( "wait", "0.5", &ent->wait );
G_SpawnFloat( "random", "0", &ent->random );
if ( ent->random >= ent->wait && ent->wait >= 0 ) {
ent->random = ent->wait - (FRAMETIME * 0.001f);
G_Printf( "trigger_multiple has random >= wait\n" );
}
ent->touch = Touch_Multi;
ent->use = Use_Multi;
ent->s.eType = ET_TRIGGER_MULTIPLE;
InitTrigger( ent);
#ifdef VISIBLE_TRIGGERS
ent->r.svFlags &= ~SVF_NOCLIENT;
#endif // VISIBLE_TRIGGERS
trap_LinkEntity (ent);
}
示例12: SP_gfx_portal_camera
void SP_gfx_portal_camera( gentity_t *self )
{
float roll;
VectorClear( self->r.mins );
VectorClear( self->r.maxs );
trap_LinkEntity( self );
G_SpawnFloat( "roll", "0", &roll );
self->s.clientNum = roll / 360.0f * 256;
}
示例13: hit
/*QUAKED func_breakable (0 .8 .5) ? INVINCIBLE IMPACT CRUSHER THIN SABERONLY HEAVY_WEAP USE_NOT_BREAK PLAYER_USE NO_EXPLOSION
INVINCIBLE - can only be broken by being used
IMPACT - does damage on impact
CRUSHER - won't reverse movement when hit an obstacle
THIN - can be broken by impact damage, like glass
SABERONLY - only takes damage from sabers
HEAVY_WEAP - only takes damage by a heavy weapon, like an emplaced gun or AT-ST gun.
USE_NOT_BREAK - Using it doesn't make it break, still can be destroyed by damage
PLAYER_USE - Player can use it with the use button
NO_EXPLOSION - Does not play an explosion effect, though will still create chunks if specified
When destroyed, fires it's trigger and chunks and plays sound "noise" or sound for type if no noise specified
"targetname" entities with matching target will fire it
"paintarget" target to fire when hit (but not destroyed)
"wait" how long minimum to wait between firing paintarget each time hit
"delay" When killed or used, how long (in seconds) to wait before blowing up (none by default)
"model2" .md3 model to also draw
"target" all entities with a matching targetname will be used when this is destoryed
"health" default is 10
"radius" Chunk code tries to pick a good volume of chunks, but you can alter this to scale the number of spawned chunks. (default 1) (.5) is half as many chunks, (2) is twice as many chunks
Damage: default is none
"splashDamage" - damage to do
"splashRadius" - radius for above damage
"team" - This cannot take damage from members of this team:
"player"
"neutral"
"enemy"
Don't know if these work:
"color" constantLight color
"light" constantLight radius
"material" - default is "0 - MAT_METAL" - choose from this list:
0 = MAT_METAL (basic blue-grey scorched-DEFAULT)
1 = MAT_GLASS
2 = MAT_ELECTRICAL (sparks only)
3 = MAT_ELEC_METAL (METAL2 chunks and sparks)
4 = MAT_DRK_STONE (brown stone chunks)
5 = MAT_LT_STONE (tan stone chunks)
6 = MAT_GLASS_METAL (glass and METAL2 chunks)
7 = MAT_METAL2 (electronic type of metal)
8 = MAT_NONE (no chunks)
9 = MAT_GREY_STONE (grey colored stone)
10 = MAT_METAL3 (METAL and METAL2 chunk combo)
11 = MAT_CRATE1 (yellow multi-colored crate chunks)
12 = MAT_GRATE1 (grate chunks--looks horrible right now)
13 = MAT_ROPE (for yavin_trial, no chunks, just wispy bits )
14 = MAT_CRATE2 (red multi-colored crate chunks)
15 = MAT_WHITE_METAL (white angular chunks for Stu, NS_hideout )
*/
void SP_func_breakable( gentity_t *self )
{
if(!(self->spawnflags & 1))
{
if(!self->health)
{
self->health = 10;
}
}
if ( self->spawnflags & 16 ) // saber only
{
self->flags |= FL_DMG_BY_SABER_ONLY;
}
else if ( self->spawnflags & 32 ) // heavy weap
{
self->flags |= FL_DMG_BY_HEAVY_WEAP_ONLY;
}
if (self->health)
{
self->takedamage = qtrue;
}
G_SoundIndex("sound/weapons/explosions/cargoexplode.wav");//precaching
G_SpawnFloat( "radius", "1", &self->radius ); // used to scale chunk code if desired by a designer
G_SpawnInt( "material", "0", (int*)&self->material );
CacheChunkEffects( self->material );
self->e_UseFunc = useF_funcBBrushUse;
//if ( self->paintarget )
{
self->e_PainFunc = painF_funcBBrushPain;
}
self->e_TouchFunc = touchF_funcBBrushTouch;
if ( self->team && self->team[0] )
{
self->noDamageTeam = TranslateTeamName( self->team );
if(self->noDamageTeam == TEAM_FREE)
{
G_Error("team name %s not recognized\n", self->team);
}
}
//.........这里部分代码省略.........
示例14: G_SpawnItem
/*
============
G_SpawnItem
Sets the clipping size and plants the object on the floor.
Items can't be immediately dropped to floor, because they might
be on an entity that hasn't spawned yet.
============
*/
void G_SpawnItem (gentity_t *ent, gitem_t *item) {
G_SpawnFloat( "random", "0", &ent->random );
G_SpawnFloat( "wait", "0", &ent->wait );
RegisterItem( item );
if ( G_ItemDisabled(item) )
return;
ent->item = item;
// some movers spawn on the second frame, so delay item
// spawns until the third frame so they can ride trains
ent->nextthink = level.time + FRAMETIME * 2;
ent->think = FinishSpawningItem;
ent->physicsBounce = 0.50; // items are bouncy
if ( item->giType == IT_POWERUP ) {
G_SoundIndex( "sounds/items/powerup_respawn" );
G_SpawnFloat( "noglobalsound", "0", &ent->speed);
}
}
示例15: SP_trigger_equipment
/*
===============
SP_trigger_equipment
===============
*/
void SP_trigger_equipment(gentity_t * self)
{
char *buffer;
G_SpawnFloat("wait", "0.5", &self->wait);
G_SpawnFloat("random", "0", &self->random);
if(self->random >= self->wait && self->wait >= 0)
{
self->random = self->wait - FRAMETIME;
G_Printf(S_COLOR_YELLOW "WARNING: trigger_equipment has random >= wait\n");
}
G_SpawnString("equipment", "", &buffer);
BG_ParseCSVEquipmentList(buffer, self->wTriggers, WP_NUM_WEAPONS, self->uTriggers, UP_NUM_UPGRADES);
self->touch = trigger_equipment_touch;
self->use = trigger_equipment_use;
InitTrigger(self);
trap_LinkEntity(self);
}