void CNewRecharge::Spawn() { Precache( ); SetMoveType( MOVETYPE_NONE ); SetSolid( SOLID_VPHYSICS ); CreateVPhysics(); SetModel( HEALTH_CHARGER_MODEL_NAME ); AddEffects( EF_NOSHADOW ); ResetSequence( LookupSequence( "idle" ) ); SetInitialCharge(); UpdateJuice( MaxJuice() ); m_nState = 0; m_iCaps = FCAP_CONTINUOUS_USE; CreateVPhysics(); m_flJuice = m_iJuice; m_iReactivate = 0; SetCycle( 1.0f - ( m_flJuice / MaxJuice() ) ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNewWallHealth::Spawn(void) { Precache( ); SetMoveType( MOVETYPE_NONE ); SetSolid( SOLID_VPHYSICS ); CreateVPhysics(); SetModel( HEALTH_CHARGER_MODEL_NAME ); AddEffects( EF_NOSHADOW ); ResetSequence( LookupSequence( "idle" ) ); m_iJuice = sk_healthcharger.GetInt(); m_nState = 0; m_iReactivate = 0; m_iCaps = FCAP_CONTINUOUS_USE; CreateVPhysics(); m_flJuice = m_iJuice; SetCycle( 1.0f - ( m_flJuice / sk_healthcharger.GetFloat() ) ); }
//------------------------------------------------ // Spawn //------------------------------------------------ void CPropCannon::Spawn( void ) { Precache(); SetModel( STRING( GetModelName() ) ); SetCollisionGroup( COLLISION_GROUP_VEHICLE ); BaseClass::Spawn(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_SOLID ); SetMoveType( MOVETYPE_NOCLIP ); m_takedamage = DAMAGE_EVENTS_ONLY; m_takedamage = DAMAGE_EVENTS_ONLY; m_flTurn = 0; m_flExtension = 0; m_flFlyTime = 0.0f; m_flNextAttackTime = gpGlobals->curtime; InitCannonSpeeds(); SetPoseParameter( "armextensionpose", m_flExtension ); CreateVPhysics(); SetNextThink( gpGlobals->curtime ); }
//------------------------------------------------ // Spawn //------------------------------------------------ void CPropCrane::Spawn( void ) { Precache(); SetModel( STRING( GetModelName() ) ); SetCollisionGroup( COLLISION_GROUP_VEHICLE ); BaseClass::Spawn(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_SOLID ); SetMoveType( MOVETYPE_NOCLIP ); m_takedamage = DAMAGE_EVENTS_ONLY; m_flTurn = 0; m_flExtension = 0; m_flNextDangerSoundTime = 0; m_flNextCreakSound = 0; m_flNextDropAllowedTime = 0; m_flSlowRaiseTime = 0; m_bDropping = false; m_bMagnetOn = false; InitCraneSpeeds(); SetPoseParameter( "armextensionpose", m_flExtension ); CreateVPhysics(); SetNextThink( gpGlobals->curtime ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_Furniture::OnRestore( void ) { // Recreate any bone followers we have CreateVPhysics(); BaseClass::OnRestore(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void Dota_Resupply::Spawn( void ) { Precache(); BaseClass::Spawn(); SetModel( STRING( GetModelName() ) ); SetMoveType( MOVETYPE_NONE ); SetSolid( SOLID_VPHYSICS ); CreateVPhysics(); ResetSequence( LookupSequence( "Idle" ) ); SetBodygroup( 1, true ); m_flCloseTime = gpGlobals->curtime; m_flAnimTime = gpGlobals->curtime; m_flPlaybackRate = 0.0; SetCycle( 0 ); m_takedamage = DAMAGE_EVENTS_ONLY; // Issue #28: JMS - 2013-10-12 - ammobox needs to fire a new modevent letting all clients know that one is spawned IGameEvent *pEvent = gameeventmanager->CreateEvent( "ammobox_spawn" ); if ( pEvent ) { pEvent->SetInt( "entindex", entindex() ); gameeventmanager->FireEvent( pEvent ); } }
void CPhysicsCannister::Spawn( void ) { Precache(); SetModel( STRING(GetModelName()) ); SetBloodColor( DONT_BLEED ); AddSolidFlags( FSOLID_CUSTOMRAYTEST ); m_takedamage = DAMAGE_YES; SetNextThink( TICK_NEVER_THINK ); if ( m_iHealth <= 0 ) m_iHealth = 25; m_flAnimTime = gpGlobals->curtime; m_flPlaybackRate = 0.0; SetCycle( 0 ); m_bFired = false; // not thrusting m_active = false; CreateVPhysics(); if ( !VPhysicsGetObject() ) { // must have a physics object or code will crash later UTIL_Remove(this); } }
void CFuncBrush::Spawn( void ) { SetMoveType( MOVETYPE_PUSH ); // so it doesn't get pushed by anything SetSolid( SOLID_VPHYSICS ); AddEFlags( EFL_USE_PARTITION_WHEN_NOT_SOLID ); if ( m_iSolidity == BRUSHSOLID_NEVER ) { AddSolidFlags( FSOLID_NOT_SOLID ); } SetModel( STRING( GetModelName() ) ); if ( m_iDisabled ) TurnOff(); // If it can't move/go away, it's really part of the world if ( !GetEntityName() || !m_iParent ) AddFlag( FL_WORLDBRUSH ); CreateVPhysics(); // Slam the object back to solid - if we really want it to be solid. if ( m_bSolidBsp ) { SetSolid( SOLID_BSP ); } }
void CFunc_LOD::Spawn() { // Bind to our bmodel. SetModel( STRING( GetModelName() ) ); SetSolid( SOLID_BSP ); BaseClass::Spawn(); CreateVPhysics(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CGrenadeHopwire::Spawn( void ) { Precache(); SetModel( GRENADE_MODEL_CLOSED ); SetCollisionGroup( COLLISION_GROUP_PROJECTILE ); CreateVPhysics(); }
//------------------------------------------------------------------------------ // Purpose: //------------------------------------------------------------------------------ void CPlayer_Control::Spawn( void ) { Precache(); SetFriction( 0.55 ); // deading the bounce a bit m_bActive = false; CreateVPhysics(); }
void CArmorPiece::Spawn(void) { BaseClass::Spawn(); Precache(); SetModel(STRING(GetModelName())); CreateVPhysics(); }
void CReplayBall::Spawn( void ) { SetClassname("replay_ball"); Precache(); SetModelName(MAKE_STRING(BALL_MODEL)); CreateVPhysics(); //SetSolid(SOLID_NONE); SetSimulatedEveryTick(true); SetAnimatedEveryTick(true); }
void CNPCWheatleyBoss::Spawn(void) { Precache(); SetModel(BOSS_MODEL); SetSolid(SOLID_VPHYSICS); CreateVPhysics(); BaseClass::Spawn(); }
void CFuncVPhysicsClip::Spawn( void ) { SetMoveType( MOVETYPE_PUSH ); // so it doesn't get pushed by anything SetSolid( SOLID_VPHYSICS ); AddSolidFlags( FSOLID_NOT_SOLID ); SetModel( STRING( GetModelName() ) ); AddEffects( EF_NODRAW ); CreateVPhysics(); VPhysicsGetObject()->EnableCollisions( !m_bDisabled ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBreakable::Spawn( void ) { // Initialize damage modifiers. Must be done before baseclass spawn. m_flDmgModBullet = func_breakdmg_bullet.GetFloat(); m_flDmgModClub = func_breakdmg_club.GetFloat(); m_flDmgModExplosive = func_breakdmg_explosive.GetFloat(); ParsePropData(); Precache( ); if ( !m_iHealth || FBitSet( m_spawnflags, SF_BREAK_TRIGGER_ONLY ) ) { // This allows people to shoot at the glass (since it's penetrable) if ( m_Material == matGlass ) { m_iHealth = 1; } m_takedamage = DAMAGE_NO; } else { m_takedamage = DAMAGE_YES; } m_iMaxHealth = ( m_iHealth > 0 ) ? m_iHealth : 1; SetSolid( SOLID_BSP ); SetMoveType( MOVETYPE_PUSH ); // this is a hack to shoot the gibs in a specific yaw/direction m_angle = GetLocalAngles().y; SetLocalAngles( vec3_angle ); SetModel( STRING( GetModelName() ) );//set size and link into world. SetTouch( &CBreakable::BreakTouch ); if ( FBitSet( m_spawnflags, SF_BREAK_TRIGGER_ONLY ) ) // Only break on trigger { SetTouch( NULL ); } // Flag unbreakable glass as "worldbrush" so it will block ALL tracelines if ( !IsBreakable() && m_nRenderMode != kRenderNormal ) AddFlag( FL_WORLDBRUSH ); if ( m_impactEnergyScale == 0 ) { m_impactEnergyScale = 1.0; } CreateVPhysics(); }
void CFuncWall::Spawn( void ) { SetLocalAngles( vec3_angle ); SetMoveType( MOVETYPE_PUSH ); // so it doesn't get pushed by anything SetModel( STRING( GetModelName() ) ); // If it can't move/go away, it's really part of the world AddFlag( FL_WORLDBRUSH ); // set manual mode CreateVPhysics(); }
//------------------------------------------------------------------------------ // Purpose: Called before spawning, after keyvalues have been parsed. //------------------------------------------------------------------------------ void CFuncMoveLinear::Spawn( void ) { // Convert movedir from angles to a vector QAngle angMoveDir = QAngle( m_vecMoveDir.x, m_vecMoveDir.y, m_vecMoveDir.z ); AngleVectors( angMoveDir, &m_vecMoveDir ); SetMoveType( MOVETYPE_PUSH ); SetModel( STRING( GetModelName() ) ); // Don't allow zero or negative speeds if (m_flSpeed <= 0) { m_flSpeed = 100; } // If move distance is set to zero, use with width of the // brush to determine the size of the move distance if (m_flMoveDistance <= 0) { Vector vecOBB = CollisionProp()->OBBSize(); vecOBB -= Vector( 2, 2, 2 ); m_flMoveDistance = DotProductAbs( m_vecMoveDir, vecOBB ) - m_flLip; } /* BM: Fixing this based on: https://developer.valvesoftware.com/wiki/CFuncMoveLinear_Fix m_vecPosition1 = GetAbsOrigin() - (m_vecMoveDir * m_flMoveDistance * m_flStartPosition); m_vecPosition2 = m_vecPosition1 + (m_vecMoveDir * m_flMoveDistance); m_vecFinalDest = GetAbsOrigin(); //*/ m_vecPosition1 = GetLocalOrigin() - (m_vecMoveDir * m_flMoveDistance * m_flStartPosition); m_vecPosition2 = m_vecPosition1 + (m_vecMoveDir * m_flMoveDistance); m_vecFinalDest = GetLocalOrigin(); //*/ The start & end positions are now calculated in local (parent) space. SetTouch( NULL ); Precache(); // It is solid? SetSolid( SOLID_VPHYSICS ); if ( FClassnameIs( this, "func_water_analog" ) ) { AddSolidFlags( FSOLID_VOLUME_CONTENTS ); } if ( !FClassnameIs( this, "func_water_analog" ) && FBitSet (m_spawnflags, SF_MOVELINEAR_NOTSOLID) ) { AddSolidFlags( FSOLID_NOT_SOLID ); } CreateVPhysics(); }
// // Tentacle Spawn // void CNPC_Tentacle::Spawn( ) { Precache( ); SetSolid( SOLID_BBOX ); //Necessary for TestCollision to be called for hitbox ray hits AddSolidFlags( FSOLID_CUSTOMRAYTEST ); SetMoveType( MOVETYPE_NONE ); ClearEffects(); m_iHealth = 75; SetSequence( 0 ); SetModel( "models/tentacle2.mdl" ); UTIL_SetSize( this, Vector( -32, -32, 0 ), Vector( 32, 32, 64 ) ); // Use our hitboxes to determine our render bounds CollisionProp()->SetSurroundingBoundsType( USE_HITBOXES ); m_takedamage = DAMAGE_AIM; AddFlag( FL_NPC ); m_bloodColor = BLOOD_COLOR_GREEN; ResetSequenceInfo( ); m_iDir = 1; SetThink( &CNPC_Tentacle::Start ); SetNextThink( gpGlobals->curtime + 0.2 ); SetTouch( &CNPC_Tentacle::HitTouch ); m_flInitialYaw = GetAbsAngles().y; GetMotor()->SetIdealYawAndUpdate( m_flInitialYaw ); g_fFlySound = FALSE; g_fSquirmSound = FALSE; m_iHitDmg = 200; if (m_flMaxYaw <= 0) m_flMaxYaw = 65; m_NPCState = NPC_STATE_IDLE; UTIL_SetOrigin( this, GetAbsOrigin() ); CreateVPhysics(); AddEffects( EF_NOSHADOW ); }
void CWeightButton::Spawn() { BaseClass::Spawn(); // Convert movedir from angles to a vector SetMoveType( MOVETYPE_VPHYSICS ); SetSolid( SOLID_VPHYSICS ); SetModel( STRING( GetModelName() ) ); CreateVPhysics(); SetThink( &CWeightButton::TriggerThink ); SetNextThink( gpGlobals->curtime + TICK_INTERVAL ); m_bHasBeenPressed = false; }
//----------------------------------------------------------------------------- // Purpose: Spawn the object //----------------------------------------------------------------------------- void CExtinguisherCharger::Spawn( void ) { Precache(); SetSolid( SOLID_BSP ); SetMoveType( MOVETYPE_PUSH ); SetModel( STRING( GetModelName() ) ); m_bSoundOn = false; CreateVPhysics(); }
void CTripwireHook::Spawn( void ) { Precache( ); SetModel( "models/Weapons/w_grenade.mdl" );//<<CHECK>> UTIL_SetSize(this, Vector( -1, -1, -1), Vector(1,1, 1)); m_takedamage = DAMAGE_NO; m_bAttached = false; CreateVPhysics(); }
//----------------------------------------------------------------------------- // Purpose: the entity //----------------------------------------------------------------------------- void CNPC_RocketTurret::Spawn( void ) { Precache(); BaseClass::Spawn(); SetViewOffset( vec3_origin ); AddEFlags( EFL_NO_DISSOLVE ); SetModel( ROCKET_TURRET_MODEL_NAME ); SetSolid( SOLID_VPHYSICS ); m_iMuzzleAttachment = LookupAttachment ( "barrel" ); m_iLightAttachment = LookupAttachment ( "eye" ); m_iPosePitch = LookupPoseParameter( "aim_pitch" ); m_iPoseYaw = LookupPoseParameter( "aim_yaw" ); m_vecCurrentAngles = m_vecGoalAngles = GetAbsAngles(); CreateVPhysics(); //Set our autostart state m_bEnabled = ( ( m_spawnflags & SF_ROCKET_TURRET_START_INACTIVE ) == false ); // Set Locked sprite if ( m_bEnabled ) { m_iLaserState = 1; SetSequence(LookupSequence("idle")); } else { m_iLaserState = 0; SetSequence(LookupSequence("inactive")); } SetCycle(1.0f); UpdateSkin( ROCKET_SKIN_IDLE ); SetPoseParameter( "aim_pitch", 0 ); SetPoseParameter( "aim_yaw", -180 ); if ( m_bEnabled ) { SetThink( &CNPC_RocketTurret::FollowThink ); } SetNextThink( gpGlobals->curtime + ROCKET_TURRET_THINK_RATE ); }
void CGEPropDynamic::Materialize(void) { //A more lightweight and optional func_rebreakable materalize function CreateVPhysics(); if (m_bRobustSpawn) { // iterate on all entities in the vicinity. CBaseEntity *pEntity; Vector max = CollisionProp()->OBBMaxs(); for (CEntitySphereQuery sphere(GetAbsOrigin(), max.NormalizeInPlace()); (pEntity = sphere.GetCurrentEntity()) != NULL; sphere.NextEntity()) { if (pEntity == this || pEntity->GetSolid() == SOLID_NONE || pEntity->GetSolid() == SOLID_BSP || pEntity->GetSolidFlags() & FSOLID_NOT_SOLID || pEntity->GetMoveType() & MOVETYPE_NONE) continue; // Ignore props that can't move if (pEntity->VPhysicsGetObject() && !pEntity->VPhysicsGetObject()->IsMoveable()) continue; // Prevent respawn if we are blocked by anything and try again in 1 second if (Intersects(pEntity)) { SetSolid(SOLID_NONE); AddSolidFlags(FSOLID_NOT_SOLID); VPhysicsDestroyObject(); SetNextThink(gpGlobals->curtime + 1.0f); return; } } } m_iHealth = m_iHealthOverride; if (m_iHealth > 0) m_takedamage = DAMAGE_YES; RemoveEffects(EF_NODRAW); RemoveSolidFlags(FSOLID_NOT_SOLID); m_bUsingBrokenSkin = false; if (m_bUseRandomSkins) PickNewSkin(); else m_nSkin = m_iStartingSkin; SetRenderColor(m_col32basecolor.r, m_col32basecolor.g, m_col32basecolor.b); m_Respawn.FireOutput(this, this); }
//--------------------------------------------------------- //--------------------------------------------------------- void CBounceBomb::Spawn() { Precache(); Wake( false ); SetModel("models/props_combine/combine_mine01.mdl"); SetSolid( SOLID_VPHYSICS ); m_hSprite.Set( NULL ); m_takedamage = DAMAGE_EVENTS_ONLY; // Find my feet! m_iHookN = LookupPoseParameter( "blendnorth" ); m_iHookE = LookupPoseParameter( "blendeast" ); m_iHookS = LookupPoseParameter( "blendsouth" ); m_iAllHooks = LookupPoseParameter( "blendstates" ); m_flHookPositions = 0; SetHealth( 100 ); m_bBounce = true; SetSequence( SelectWeightedSequence( ACT_IDLE ) ); OpenHooks( true ); m_bHeldByPhysgun = false; m_iFlipAttempts = 0; if( !GetParent() ) { // Create vphysics now if I'm not being carried. CreateVPhysics(); } m_flTimeGrabbed = FLT_MAX; if( m_bDisarmed ) { SetMineState( MINE_STATE_DORMANT ); } else { SetMineState( MINE_STATE_DEPLOY ); } }
//----------------------------------------------------------------------------- // Purpose: Spawn the object //----------------------------------------------------------------------------- void CExtinguisherCharger::Spawn( void ) { Precache(); SetSolid( SOLID_BSP ); SetMoveType( MOVETYPE_PUSH ); UTIL_SetSize( this, EntitySpaceMins(), EntitySpaceMaxs() ); SetModel( STRING( GetModelName() ) ); Relink(); m_bSoundOn = false; CreateVPhysics(); }
void CRecharge::Spawn() { Precache( ); SetSolid( SOLID_BSP ); SetMoveType( MOVETYPE_PUSH ); SetModel( STRING( GetModelName() ) ); m_iJuice = sk_suitcharger.GetFloat(); SetTextureFrameIndex( 0 ); m_iCaps = FCAP_CONTINUOUS_USE; CreateVPhysics(); }
void CRecharge::Spawn() { Precache( ); SetSolid( SOLID_BSP ); SetMoveType( MOVETYPE_PUSH ); Relink(); UTIL_SetSize(this, EntitySpaceMins(), EntitySpaceMaxs()); SetModel( STRING( GetModelName() ) ); m_iJuice = sk_suitcharger.GetFloat(); SetTextureFrameIndex( 0 ); CreateVPhysics(); }
void CRecharge::Spawn() { Precache( ); SetSolid( SOLID_BSP ); SetMoveType( MOVETYPE_PUSH ); SetModel( STRING( GetModelName() ) ); UpdateJuice( MaxJuice() ); m_nState = 0; CreateVPhysics(); }
void CGrenade_Brickbat::Spawn( void ) { SetCollisionGroup( COLLISION_GROUP_PROJECTILE ); SetTouch( BrickbatTouch ); SetThink( BrickbatThink ); SetNextThink( gpGlobals->curtime + 0.1f ); m_takedamage = DAMAGE_YES; m_iHealth = 1; SetGravity( 1.0 ); SetSequence( 1 ); CreateVPhysics(); }