void CWeaponBox::Spawn( void ) { Precache( ); pev->movetype = MOVETYPE_TOSS; pev->solid = SOLID_TRIGGER; UTIL_SetSize( pev, g_vecZero, g_vecZero ); UTIL_SetModel( ENT(pev), "models/items/w_weaponbox.mdl" ); }
void CTriggerCamera :: Spawn (void ) { pev->solid = SOLID_NOT; pev->movetype = MOVETYPE_NOCLIP; m_iState = STATE_OFF; UTIL_SetModel( ENT( pev ), "models/common/null.mdl" ); UTIL_SetSize( pev, g_vecZero, g_vecZero ); SetBits( pFlags, PF_POINTENTITY ); }
void CTriggerHurt :: Spawn( void ) { pev->solid = SOLID_NOT; pev->movetype = MOVETYPE_NONE; UTIL_SetModel(ENT(pev), pev->model); UTIL_SetOrigin( this, pev->origin ); SetBits( pev->effects, EF_NODRAW ); m_iState = STATE_OFF; if (!FBitSet(pev->spawnflags, 2 )) Use( this, this, USE_ON, 0 ); }
void Spawn( void ) { Precache(); pev->movetype = MOVETYPE_PHYSIC; pev->solid = SolidType(); pev->owner = ENT( pev ); // g-cont. i'm forget why needs this stuff :) UTIL_SetOrigin( this, pev->origin ); UTIL_SetModel( ENT( pev ), pev->model, (char *)Model() ); SetObjectClass( ED_RIGIDBODY ); }
//----------------------------------------------------------------------------- // Purpose: // Input : *szModelName - //----------------------------------------------------------------------------- void CBeam::SetModel( const char *szModelName ) { int modelIndex = modelinfo->GetModelIndex( szModelName ); const model_t *model = modelinfo->GetModel( modelIndex ); if ( model && modelinfo->GetModelType( model ) != mod_sprite ) { Msg( "Setting CBeam to non-sprite model %s\n", szModelName ); } #if !defined( CLIENT_DLL ) UTIL_SetModel( this, szModelName ); #else BaseClass::SetModel( szModelName ); #endif }
//----------------------------------------------------------------------------- // Spawn //----------------------------------------------------------------------------- void CEntityDissolve::Spawn() { BaseClass::Spawn(); Precache(); UTIL_SetModel( this, STRING( GetModelName() ) ); if ( (m_nDissolveType == ENTITY_DISSOLVE_ELECTRICAL) || (m_nDissolveType == ENTITY_DISSOLVE_ELECTRICAL_LIGHT) ) { if ( dynamic_cast< CRagdollProp* >( GetMoveParent() ) ) { SetContextThink( &CEntityDissolve::ElectrocuteThink, gpGlobals->curtime + 0.01f, s_pElectroThinkContext ); } } // Setup our times m_flFadeInStart = DISSOLVE_FADE_IN_START_TIME; m_flFadeInLength = DISSOLVE_FADE_IN_END_TIME - DISSOLVE_FADE_IN_START_TIME; m_flFadeOutModelStart = DISSOLVE_FADE_OUT_MODEL_START_TIME; m_flFadeOutModelLength = DISSOLVE_FADE_OUT_MODEL_END_TIME - DISSOLVE_FADE_OUT_MODEL_START_TIME; m_flFadeOutStart = DISSOLVE_FADE_OUT_START_TIME; m_flFadeOutLength = DISSOLVE_FADE_OUT_END_TIME - DISSOLVE_FADE_OUT_START_TIME; if ( m_nDissolveType == ENTITY_DISSOLVE_CORE ) { m_flFadeInStart = 0.0f; m_flFadeOutStart = CORE_DISSOLVE_FADE_START; m_flFadeOutModelStart = CORE_DISSOLVE_MODEL_FADE_START; m_flFadeOutModelLength = CORE_DISSOLVE_MODEL_FADE_LENGTH; m_flFadeInLength = CORE_DISSOLVE_FADEIN_LENGTH; } m_nRenderMode = kRenderTransColor; SetRenderColor( 255, 255, 255, 255 ); m_nRenderFX = kRenderFxNone; SetThink( &CEntityDissolve::DissolveThink ); if ( gpGlobals->curtime > m_flStartTime ) { // Necessary for server-side ragdolls DissolveThink(); } else { SetNextThink( gpGlobals->curtime + 0.01f ); } }
void CChangeLevel :: Spawn( void ) { if( FStringNull( pev->netname )) ALERT( at_error, "a % doesn't have a map\n", STRING( pev->classname )); if( FStringNull( pev->message )) ALERT( at_error, "trigger_changelevel to %s doesn't have a landmark\n", STRING( pev->netname )); // determine work style if( FStringNull( pev->targetname )) SetUse( NULL ); else SetTouch( NULL ); pev->solid = SOLID_TRIGGER; pev->movetype = MOVETYPE_NONE; UTIL_SetModel(ENT(pev), pev->model); SetBits( pev->effects, EF_NODRAW );//make invisible }
void Spawn( void ) { if( pev->angles == g_vecZero ) pev->angles.y = 360; if( pev->speed == 0 ) pev->speed = 100; UTIL_LinearVector( this ); if ( FBitSet( pev->spawnflags, 2 )) pev->solid = SOLID_NOT; else pev->solid = SOLID_TRIGGER; pev->movetype = MOVETYPE_NONE; UTIL_SetModel(ENT(pev), pev->model ); SetBits( pev->effects, EF_NODRAW ); UTIL_SetOrigin( this, pev->origin ); }
void CItem::Spawn( void ) { Precache(); pev->movetype = MOVETYPE_TOSS; pev->solid = SOLID_BBOX; UTIL_SetOrigin( this, pev->origin ); UTIL_SetSize(pev, g_vecZero, g_vecZero ); SetObjectClass( ED_NORMAL ); SetTouch( ItemTouch ); SetThink( ItemFall ); UTIL_SetModel(ENT(pev), pev->model, Model() ); SetNextThink( 0.1 ); }
void CCycler :: GenericCyclerSpawn(char *szModel, Vector vecMin, Vector vecMax) { if (!szModel || !*szModel) { ALERT(at_error, "cycler at %.0f %.0f %0.f missing modelname", pev->origin.x, pev->origin.y, pev->origin.z ); REMOVE_ENTITY(ENT(pev)); return; } pev->classname = MAKE_STRING("cycler"); UTIL_PrecacheModel( szModel ); UTIL_SetModel(ENT(pev), szModel); CCycler::Spawn( ); UTIL_SetSize(pev, vecMin, vecMax); }
void CCyclerSprite::Spawn( void ) { pev->solid = SOLID_SLIDEBOX; pev->movetype = MOVETYPE_NONE; pev->takedamage = DAMAGE_YES; pev->effects = 0; pev->frame = 0; pev->nextthink = gpGlobals->time + 0.1; m_animate = 1; m_lastTime = gpGlobals->time; UTIL_PrecacheModel( (char *)STRING(pev->model) ); UTIL_SetModel( ENT(pev), STRING(pev->model) ); m_maxFrame = (float) MODEL_FRAMES( pev->modelindex ) - 1; }
void CBaseTrigger :: Spawn( void ) { pev->solid = SOLID_TRIGGER; pev->movetype = MOVETYPE_NONE; pev->takedamage = DAMAGE_NO; UTIL_SetModel( ENT( pev ), pev->model ); // set size and link into world SetObjectClass( ED_TRIGGER ); // create a null-terminator for the registry m_pRegister = GetClassPtr(( CInOutRegister *)NULL ); m_pRegister->m_hValue = NULL; m_pRegister->m_pNext = NULL; m_pRegister->m_pField = this; m_pRegister->pev->classname = MAKE_STRING("zoneent"); m_pRegister->SetObjectClass( ED_STATIC ); SetThink( Update ); }
bool CBoneFollower::Init( CBaseEntity *pOwner, const char *pModelName, solid_t &solid, const Vector &position, const QAngle &orientation ) { SetOwnerEntity( pOwner ); UTIL_SetModel( this, pModelName ); AddEffects( EF_NODRAW ); // invisible m_modelIndex = modelinfo->GetModelIndex( pModelName ); m_solidIndex = solid.index; SetAbsOrigin( position ); SetAbsAngles( orientation ); SetMoveType( MOVETYPE_PUSH ); SetSolid( SOLID_VPHYSICS ); SetCollisionGroup( pOwner->GetCollisionGroup() ); AddSolidFlags( FSOLID_CUSTOMRAYTEST | FSOLID_CUSTOMBOXTEST ); solid.params.pGameData = (void *)this; IPhysicsObject *pPhysics = VPhysicsInitShadow( false, false, &solid ); if ( !pPhysics ) return false; // we can't use the default model bounds because each entity is only one bone of the model // so compute the OBB of the physics model and use that. Vector mins, maxs; physcollision->CollideGetAABB( &mins, &maxs, pPhysics->GetCollide(), vec3_origin, vec3_angle ); SetCollisionBounds( mins, maxs ); pPhysics->SetCallbackFlags( pPhysics->GetCallbackFlags() | CALLBACK_GLOBAL_TOUCH ); pPhysics->EnableGravity( false ); // This is not a normal shadow controller that is trying to go to a space occupied by an entity in the game physics // This entity is not running PhysicsPusher(), so Vphysics is supposed to move it // This line of code informs vphysics of that fact if ( pOwner->IsNPC() ) { pPhysics->GetShadowController()->SetPhysicallyControlled( true ); } return true; }
void CNPC_Portal_GroundTurret::Spawn( void ) { Precache(); UTIL_SetModel( this, "models/combine_turrets/ground_turret.mdl" ); SetNavType( NAV_FLY ); SetSolid( SOLID_VPHYSICS ); SetBloodColor( DONT_BLEED ); m_iHealth = 125; m_flFieldOfView = cos( ((m_fViewconeDegrees / 2.0f) * M_PI / 180.0f) ); m_NPCState = NPC_STATE_NONE; m_vecSpread.x = 0.5; m_vecSpread.y = 0.5; m_vecSpread.z = 0.5; CapabilitiesClear(); AddEFlags( EFL_NO_DISSOLVE ); NPCInit(); CapabilitiesAdd( bits_CAP_SIMPLE_RADIUS_DAMAGE ); m_iAmmoType = GetAmmoDef()->Index( "PISTOL" ); m_pSmoke = NULL; m_bHasExploded = false; m_bEnabled = false; if( ai_newgroundturret.GetBool() ) { m_flSensingDist = 384; SetDistLook( m_flSensingDist ); } else { m_flSensingDist = 2048; } if( !GetParent() ) { DevMsg("ERROR! npc_ground_turret with no parent!\n"); UTIL_Remove(this); return; } m_flTimeNextShoot = gpGlobals->curtime; m_flTimeNextPing = gpGlobals->curtime; m_vecClosedPos = GetAbsOrigin(); StudioFrameAdvance(); Vector vecPos; GetAttachment( "eyes", vecPos ); SetViewOffset( vecPos - GetAbsOrigin() ); GetAttachment( "light", vecPos ); m_vecLightOffset = vecPos - GetAbsOrigin(); }
void CApache :: DyingThink( void ) { StudioFrameAdvance( ); SetNextThink( 0.1 ); pev->avelocity = pev->avelocity * 1.02; // still falling? if (m_flNextRocket > gpGlobals->time ) { // random explosions MESSAGE_BEGIN( MSG_PVS, gmsg.TempEntity, pev->origin ); WRITE_BYTE( TE_EXPLOSION); // This just makes a dynamic light now WRITE_COORD( pev->origin.x + RANDOM_FLOAT( -150, 150 )); WRITE_COORD( pev->origin.y + RANDOM_FLOAT( -150, 150 )); WRITE_COORD( pev->origin.z + RANDOM_FLOAT( -150, -50 )); WRITE_SHORT( g_sModelIndexFireball ); WRITE_BYTE( RANDOM_LONG(0,29) + 30 ); // scale * 10 WRITE_BYTE( 12 ); // framerate WRITE_BYTE( TE_EXPLFLAG_NONE ); MESSAGE_END(); // lots of smoke MESSAGE_BEGIN( MSG_PVS, gmsg.TempEntity, pev->origin ); WRITE_BYTE( TE_SMOKE ); WRITE_COORD( pev->origin.x + RANDOM_FLOAT( -150, 150 )); WRITE_COORD( pev->origin.y + RANDOM_FLOAT( -150, 150 )); WRITE_COORD( pev->origin.z + RANDOM_FLOAT( -150, -50 )); WRITE_SHORT( g_sModelIndexSmoke ); WRITE_BYTE( 100 ); // scale * 10 WRITE_BYTE( 10 ); // framerate MESSAGE_END(); Vector vecSpot = pev->origin + (pev->mins + pev->maxs) * 0.5; MESSAGE_BEGIN( MSG_PVS, gmsg.TempEntity, vecSpot ); WRITE_BYTE( TE_BREAKMODEL); // position WRITE_COORD( vecSpot.x ); WRITE_COORD( vecSpot.y ); WRITE_COORD( vecSpot.z ); // size WRITE_COORD( 400 ); WRITE_COORD( 400 ); WRITE_COORD( 132 ); // velocity WRITE_COORD( pev->velocity.x ); WRITE_COORD( pev->velocity.y ); WRITE_COORD( pev->velocity.z ); // randomization WRITE_BYTE( 50 ); // Model WRITE_SHORT( m_iBodyGibs ); //model id# // # of shards WRITE_BYTE( 4 ); // let client decide // duration WRITE_BYTE( 30 );// 3.0 seconds // flags WRITE_BYTE( BREAK_METAL ); MESSAGE_END(); // don't stop it we touch a entity pev->flags &= ~FL_ONGROUND; SetNextThink( 0.2 ); return; } else { Vector vecSpot = pev->origin + (pev->mins + pev->maxs) * 0.5; /* MESSAGE_BEGIN( MSG_BROADCAST, gmsg.TempEntity ); WRITE_BYTE( TE_EXPLOSION); // This just makes a dynamic light now WRITE_COORD( vecSpot.x ); WRITE_COORD( vecSpot.y ); WRITE_COORD( vecSpot.z + 300 ); WRITE_SHORT( g_sModelIndexFireball ); WRITE_BYTE( 250 ); // scale * 10 WRITE_BYTE( 8 ); // framerate MESSAGE_END(); */ // fireball MESSAGE_BEGIN( MSG_PVS, gmsg.TempEntity, vecSpot ); WRITE_BYTE( TE_SPRITE ); WRITE_COORD( vecSpot.x ); WRITE_COORD( vecSpot.y ); WRITE_COORD( vecSpot.z + 256 ); WRITE_SHORT( m_iExplode ); WRITE_BYTE( 120 ); // scale * 10 WRITE_BYTE( 255 ); // brightness MESSAGE_END(); // big smoke MESSAGE_BEGIN( MSG_PVS, gmsg.TempEntity, vecSpot ); WRITE_BYTE( TE_SMOKE ); WRITE_COORD( vecSpot.x ); WRITE_COORD( vecSpot.y ); WRITE_COORD( vecSpot.z + 512 ); WRITE_SHORT( g_sModelIndexSmoke ); WRITE_BYTE( 250 ); // scale * 10 WRITE_BYTE( 5 ); // framerate MESSAGE_END(); // blast circle MESSAGE_BEGIN( MSG_PVS, gmsg.TempEntity, pev->origin ); WRITE_BYTE( TE_BEAMCYLINDER ); WRITE_COORD( pev->origin.x); WRITE_COORD( pev->origin.y); WRITE_COORD( pev->origin.z); WRITE_COORD( pev->origin.x); WRITE_COORD( pev->origin.y); WRITE_COORD( pev->origin.z + 2000 ); // reach damage radius over .2 seconds WRITE_SHORT( m_iSpriteTexture ); WRITE_BYTE( 0 ); // startframe WRITE_BYTE( 0 ); // framerate WRITE_BYTE( 4 ); // life WRITE_BYTE( 32 ); // width WRITE_BYTE( 0 ); // noise WRITE_BYTE( 255 ); // r, g, b WRITE_BYTE( 255 ); // r, g, b WRITE_BYTE( 192 ); // r, g, b WRITE_BYTE( 128 ); // brightness WRITE_BYTE( 0 ); // speed MESSAGE_END(); EMIT_SOUND(ENT(pev), CHAN_STATIC, "weapons/mortarhit.wav", 1.0, 0.3); RadiusDamage( pev->origin, pev, pev, 300, CLASS_NONE, DMG_BLAST ); if (pev->flags & FL_ONGROUND) { CBaseEntity *pWreckage = Create( "smokeent", pev->origin, pev->angles ); UTIL_SetModel( ENT(pWreckage->pev), pev->model ); UTIL_SetSize( pWreckage->pev, Vector( -200, -200, -128 ), Vector( 200, 200, -32 ) ); pWreckage->SetNextThink( 0.1 ); pWreckage->pev->frame = pev->frame; pWreckage->pev->sequence = pev->sequence; pWreckage->pev->framerate = 0; pWreckage->pev->impulse = 50; pWreckage->pev->dmgtime = gpGlobals->time + 5; } // gibs vecSpot = pev->origin + (pev->mins + pev->maxs) * 0.5; MESSAGE_BEGIN( MSG_PVS, gmsg.TempEntity, vecSpot ); WRITE_BYTE( TE_BREAKMODEL); // position WRITE_COORD( vecSpot.x ); WRITE_COORD( vecSpot.y ); WRITE_COORD( vecSpot.z + 64); // size WRITE_COORD( 400 ); WRITE_COORD( 400 ); WRITE_COORD( 128 ); // velocity WRITE_COORD( 0 ); WRITE_COORD( 0 ); WRITE_COORD( 200 ); // randomization WRITE_BYTE( 30 ); // Model WRITE_SHORT( m_iBodyGibs ); //model id# // # of shards WRITE_BYTE( 200 ); // duration WRITE_BYTE( 200 );// 10.0 seconds // flags WRITE_BYTE( BREAK_METAL ); MESSAGE_END(); SetThink( Remove ); SetNextThink( 0.1 ); } }
void Spawn( void ) { pev->solid = SOLID_TRIGGER; pev->movetype = MOVETYPE_NONE; UTIL_SetModel(ENT(pev), pev->model ); }