//----------------------------------------------------------------------------- // Raises the Sentrygun one level //----------------------------------------------------------------------------- void CObjectSentrygun::StartUpgrading( void ) { BaseClass::StartUpgrading( ); switch( m_iUpgradeLevel ) { case 2: SetModel( SENTRY_MODEL_LEVEL_2_UPGRADE ); m_flHeavyBulletResist = SENTRYGUN_MINIGUN_RESIST_LVL_2; SetViewOffset( SENTRYGUN_EYE_OFFSET_LEVEL_2 ); m_iMaxAmmoShells = SENTRYGUN_MAX_SHELLS_2; break; case 3: SetModel( SENTRY_MODEL_LEVEL_3_UPGRADE ); m_iAmmoRockets = SENTRYGUN_MAX_ROCKETS; m_flHeavyBulletResist = SENTRYGUN_MINIGUN_RESIST_LVL_3; SetViewOffset( SENTRYGUN_EYE_OFFSET_LEVEL_3 ); m_iMaxAmmoShells = SENTRYGUN_MAX_SHELLS_3; break; default: Assert(0); break; } // more ammo capability m_iAmmoShells = m_iMaxAmmoShells; m_iState.Set( SENTRY_STATE_UPGRADING ); }
//----------------------------------------------------------------------------- // Purpose: // Input : // Output : //----------------------------------------------------------------------------- void CNPC_Headcrab::Spawn( void ) { Precache(); SetRenderColor( 255, 255, 255, 255 ); SetModel( "models/headcrab.mdl" ); m_iHealth = sk_headcrab_health.GetFloat(); SetHullType(HULL_TINY); SetHullSizeNormal(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); SetViewOffset( Vector(6, 0, 11) ); // Position of the eyes relative to NPC's origin. m_bloodColor = BLOOD_COLOR_GREEN; m_flFieldOfView = 0.5; m_NPCState = NPC_STATE_NONE; m_nGibCount = HEADCRAB_ALL_GIB_COUNT; CapabilitiesClear(); CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_INNATE_RANGE_ATTACK1 ); NPCInit(); }
void CCeilingTurret::Spawn() { Vector up; Precache( ); SetModel( "models/combine_turrets/ceiling_turret.mdl" ); BaseClass::Spawn( ); m_iHealth = sk_turret_health.GetFloat(); m_HackedGunPos = Vector( 0, 0, 12.75 ); AngleVectors( GetAbsAngles(), NULL, NULL, &up ); SetViewOffset( up * Vector( 0, 0, -64 ) ); m_flFieldOfView = VIEW_FIELD_FULL; m_iRetractHeight = 16; m_iDeployHeight = 32; m_iMinPitch = -45; UTIL_SetSize(this, Vector(-32, -32, -m_iRetractHeight), Vector(32, 32, m_iRetractHeight)); SetThink(&CBaseTurret::Initialize); m_pEyeGlow = CSprite::SpriteCreate( TURRET_GLOW_SPRITE, GetAbsOrigin(), FALSE ); m_pEyeGlow->SetTransparency( kRenderGlow, 255, 0, 0, 0, kRenderFxNoDissipation ); m_pEyeGlow->SetAttachment( this, 2 ); m_eyeBrightness = 0; SetNextThink( gpGlobals->curtime + 0.3 ); }
CVertMeshViewer::CVertMeshViewer(UVertMesh* Mesh, CApplication* Window) : CMeshViewer(Mesh, Window) , AnimIndex(-1) { CVertMeshInstance *VertInst = new CVertMeshInstance(); VertInst->SetMesh(Mesh); Inst = VertInst; CVertMeshInstance *MeshInst = static_cast<CVertMeshInstance*>(Inst); // compute model center by Z-axis (vertical) CVec3 offset; const FBox &B = Mesh->BoundingBox; #if 1 VectorAdd(CVT(B.Min), CVT(B.Max), offset); offset.Scale(0.5f); MeshInst->BaseTransformScaled.TransformPointSlow(offset, offset); #else // scale/translate origin float z = (B.Max.Z + B.Min.Z) / 2; z = (z - Mesh->MeshOrigin.Z) * Mesh->MeshScale.Z; //!! bad formula offset.Set(0, 0, z); #endif offset[2] += Mesh->BoundingSphere.R / 20; // offset a bit up // offset view SetViewOffset(offset); // automatically scale view distance depending on model size float Radius = Mesh->BoundingSphere.R; if (Radius < 10) Radius = 10; SetDistScale(Mesh->MeshScale.X * Radius / 150); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBaseHL1CombatWeapon::FallInit( void ) { SetModel( GetWorldModel() ); SetMoveType( MOVETYPE_FLYGRAVITY, MOVECOLLIDE_FLY_BOUNCE ); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_TRIGGER ); AddSolidFlags( FSOLID_NOT_SOLID ); SetPickupTouch(); SetThink( &CBaseHL1CombatWeapon::FallThink ); SetNextThink( gpGlobals->curtime + 0.1f ); // HACKHACK - On ground isn't always set, so look for ground underneath trace_t tr; UTIL_TraceLine( GetAbsOrigin(), GetAbsOrigin() - Vector(0,0,2), MASK_SOLID_BRUSHONLY, this, COLLISION_GROUP_NONE, &tr ); if ( tr.fraction < 1.0 ) { SetGroundEntity( tr.m_pEnt ); } SetViewOffset( Vector(0,0,8) ); }
void CNPC_Turret::Spawn() { Precache( ); SetModel( "models/turret.mdl" ); m_iHealth = sk_turret_health.GetFloat(); m_HackedGunPos = Vector( 0, 0, 12.75 ); m_flMaxSpin = TURRET_MAXSPIN; Vector view_ofs( 0, 0, 12.75 ); SetViewOffset( view_ofs ); CNPC_BaseTurret::Spawn( ); m_iRetractHeight = 16; m_iDeployHeight = 32; m_iMinPitch = -90; UTIL_SetSize(this, Vector(-32, -32, -m_iRetractHeight), Vector(32, 32, m_iRetractHeight)); SetThink(&CNPC_BaseTurret::Initialize); m_pEyeGlow = CSprite::SpriteCreate( TURRET_GLOW_SPRITE, GetAbsOrigin(), FALSE ); m_pEyeGlow->SetTransparency( kRenderGlow, 255, 0, 0, 0, kRenderFxNoDissipation ); m_pEyeGlow->SetAttachment( this, 2 ); m_eyeBrightness = 0; SetNextThink( gpGlobals->curtime + 0.3 ); }
//========================================================= // Spawn //========================================================= void CNPC_HL1Barney::Spawn() { Precache( ); SetModel( "models/hl1bar.mdl"); SetRenderColor( 255, 255, 255, 255 ); SetHullType(HULL_HUMAN); SetHullSizeNormal(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); m_bloodColor = BLOOD_COLOR_RED; m_iHealth = sk_barneyhl1_health.GetFloat(); SetViewOffset( Vector ( 0, 0, 100 ) );// position of the eyes relative to monster's origin. m_flFieldOfView = VIEW_FIELD_WIDE; // NOTE: we need a wide field of view so npc will notice player and say hello m_NPCState = NPC_STATE_NONE; SetBodygroup( 1, 0 ); m_fGunDrawn = false; CapabilitiesClear(); CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_OPEN_DOORS | bits_CAP_AUTO_DOORS | bits_CAP_USE | bits_CAP_DOORS_GROUP); CapabilitiesAdd( bits_CAP_INNATE_RANGE_ATTACK1 | bits_CAP_TURN_HEAD | bits_CAP_ANIMATEDFACE ); NPCInit(); SetUse( &CNPC_HL1Barney::FollowerUse ); }
void CNPC_MiniTurret::Spawn() { Precache( ); SetModel( "models/miniturret.mdl" ); m_iHealth = sk_miniturret_health.GetFloat(); m_HackedGunPos = Vector( 0, 0, 12.75 ); m_flMaxSpin = 0; Vector view_ofs( 0, 0, 12.75 ); SetViewOffset( view_ofs ); CNPC_BaseTurret::Spawn( ); m_iRetractHeight = 16; m_iDeployHeight = 32; m_iMinPitch = -90; UTIL_SetSize(this, Vector(-16, -16, -m_iRetractHeight), Vector(16, 16, m_iRetractHeight)); SetThink(&CNPC_MiniTurret::Initialize); SetNextThink(gpGlobals->curtime + 0.3); if (( m_spawnflags & SF_MONSTER_TURRET_AUTOACTIVATE ) && !( m_spawnflags & SF_MONSTER_TURRET_STARTINACTIVE )) { m_iAutoStart = true; } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_Bug_Warrior::Spawn( void ) { Precache(); SetModel( BUG_WARRIOR_MODEL ); SetHullType(HULL_WIDE_HUMAN);//HULL_WIDE_SHORT; SetHullSizeNormal(); SetDefaultEyeOffset(); SetViewOffset( (WorldAlignMins() + WorldAlignMaxs()) * 0.5 ); // See from my center SetDistLook( 1024.0 ); SetNavType(NAV_GROUND); m_NPCState = NPC_STATE_NONE; SetBloodColor( BLOOD_COLOR_YELLOW ); m_iHealth = npc_bug_warrior_health.GetFloat(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); m_iszPatrolPathName = NULL_STRING; // Only do this if a squadname appears in the entity if ( m_SquadName != NULL_STRING ) { CapabilitiesAdd( bits_CAP_SQUAD ); } CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_INNATE_MELEE_ATTACK1 ); NPCInit(); BaseClass::Spawn(); }
//========================================================= // SetEyePosition // // queries the units's model for $eyeposition and copies // that vector to the npc's m_vDefaultEyeOffset and m_vecViewOffset // //========================================================= void CUnitBase::SetDefaultEyeOffset( Vector *pCustomOfset ) { if( pCustomOfset ) { m_vDefaultEyeOffset = *pCustomOfset; } else if ( GetModelPtr() ) { GetEyePosition( GetModelPtr(), m_vDefaultEyeOffset ); if ( m_vDefaultEyeOffset == vec3_origin ) { //if ( Classify() != CLASS_NONE ) { DevMsg( "WARNING: %s(%s) has no eye offset in .qc!\n", GetClassname(), STRING(GetModelName()) ); } VectorAdd( WorldAlignMins(), WorldAlignMaxs(), m_vDefaultEyeOffset ); m_vDefaultEyeOffset *= 0.75; } } else m_vDefaultEyeOffset = vec3_origin; // Clamp to values in dt m_vDefaultEyeOffset.x = Max<float>( Min<float>( m_vDefaultEyeOffset.x, 256.0f ), -256.0 ); m_vDefaultEyeOffset.y = Max<float>( Min<float>( m_vDefaultEyeOffset.y, 256.0f ), -256.0 ); m_vDefaultEyeOffset.z = Max<float>( Min<float>( m_vDefaultEyeOffset.z, 1024.0f ), -1.0f ); #ifndef CLIENT_DLL SetViewOffset( m_vDefaultEyeOffset ); #endif // CLIENT_DLL }
void CNPC_Sentry::Spawn() { Precache( ); SetModel( "models/sentry.mdl" ); m_iHealth = sk_sentry_health.GetFloat(); m_HackedGunPos = Vector( 0, 0, 48 ); SetViewOffset( Vector(0,0,48) ); m_flMaxWait = 1E6; m_flMaxSpin = 1E6; BaseClass::Spawn(); SetSequence( TURRET_ANIM_RETIRE ); SetCycle( 0.0 ); m_flPlaybackRate = 0.0; m_iRetractHeight = 64; m_iDeployHeight = 64; m_iMinPitch = -60; UTIL_SetSize(this, Vector(-16, -16, -m_iRetractHeight), Vector(16, 16, m_iRetractHeight)); SetTouch(&CNPC_Sentry::SentryTouch); SetThink(&CNPC_Sentry::Initialize); SetNextThink(gpGlobals->curtime + 0.3); m_bStartedDeploy = false; }
void CASW_Parasite::Spawn( void ) { SetHullType(HULL_TINY); BaseClass::Spawn(); SetModel( SWARM_PARASITE_MODEL); if (FClassnameIs(this, "asw_parasite_defanged")) { m_bDefanged = true; m_iHealth = ASWGameRules()->ModifyAlienHealthBySkillLevel(10); SetBodygroup( 0, 1 ); m_fSuicideTime = gpGlobals->curtime + 60; } else { m_bDefanged = false; m_iHealth = ASWGameRules()->ModifyAlienHealthBySkillLevel(25); SetBodygroup( 0, 0 ); m_fSuicideTime = 0; } SetMoveType( MOVETYPE_STEP ); SetHullType(HULL_TINY); SetCollisionGroup( ASW_COLLISION_GROUP_PARASITE ); SetViewOffset( Vector(6, 0, 11) ) ; // Position of the eyes relative to NPC's origin. m_NPCState = NPC_STATE_NONE; CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_INNATE_RANGE_ATTACK1 ); m_bInfesting = false; }
/* ======================== idMenuWidget_DevList::NavigateBack ======================== */ void idMenuWidget_DevList::NavigateBack() { assert( devMapListInfos.Num() != 0 ); if ( devMapListInfos.Num() == 1 ) { // Important that this goes through as a DIRECT event, since more than likely the list // widget will have the parent's focus, so a standard ReceiveEvent() here would turn // into an infinite recursion. idWidgetEvent event( WIDGET_EVENT_BACK, 0, NULL, idSWFParmList() ); idWidgetAction action; action.Set( WIDGET_ACTION_GO_BACK, MENU_ROOT ); HandleAction( action, event ); return; } // NOTE: we need a copy here, since it's about to be removed from the list const indexInfo_t indexes = devMapListInfos[ devMapListInfos.Num() - 1 ]; assert( indexes.focusIndex < GetChildren().Num() ); assert( ( indexes.viewIndex - indexes.viewOffset ) < GetNumVisibleOptions() ); devMapListInfos.RemoveIndex( devMapListInfos.Num() - 1 ); RecalculateDevMenu(); SetViewIndex( indexes.viewIndex ); SetViewOffset( indexes.viewOffset ); Update(); // NOTE: This must be done AFTER Update() because so that it is sure to refer to the proper sprite GetChildByIndex( indexes.focusIndex ).SetState( WIDGET_STATE_SELECTED ); ForceFocusIndex( indexes.focusIndex ); SetFocusIndex( indexes.focusIndex ); gameLocal->GetMainMenu()->ClearWidgetActionRepeater(); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CNPC_Bug_Builder::Spawn( void ) { Precache(); SetModel( BUG_BUILDER_MODEL ); SetHullType(HULL_TINY); SetHullSizeNormal(); SetDefaultEyeOffset(); SetViewOffset( (WorldAlignMins() + WorldAlignMaxs()) * 0.5 ); // See from my center SetDistLook( 1024.0 ); m_flNextDawdle = 0; SetNavType(NAV_GROUND); m_NPCState = NPC_STATE_NONE; SetBloodColor( BLOOD_COLOR_YELLOW ); m_iHealth = npc_bug_builder_health.GetFloat(); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); CapabilitiesAdd( bits_CAP_MOVE_GROUND ); NPCInit(); BaseClass::Spawn(); }
//----------------------------------------------------------------------------- // Raises the Sentrygun one level //----------------------------------------------------------------------------- void CObjectSentrygun::StartUpgrading( void ) { // Increase level m_iUpgradeLevel++; // more health int iMaxHealth = GetMaxHealth(); SetMaxHealth( iMaxHealth * 1.2 ); SetHealth( iMaxHealth * 1.2 ); EmitSound( "Building_Sentrygun.Built" ); switch( m_iUpgradeLevel ) { case 2: SetModel( SENTRY_MODEL_LEVEL_2_UPGRADE ); m_flHeavyBulletResist = SENTRYGUN_MINIGUN_RESIST_LVL_2; SetViewOffset( SENTRYGUN_EYE_OFFSET_LEVEL_2 ); m_iMaxAmmoShells = SENTRYGUN_MAX_SHELLS_2; break; case 3: SetModel( SENTRY_MODEL_LEVEL_3_UPGRADE ); m_iAmmoRockets = SENTRYGUN_MAX_ROCKETS; m_flHeavyBulletResist = SENTRYGUN_MINIGUN_RESIST_LVL_3; SetViewOffset( SENTRYGUN_EYE_OFFSET_LEVEL_3 ); m_iMaxAmmoShells = SENTRYGUN_MAX_SHELLS_3; break; default: Assert(0); break; } // more ammo capability m_iAmmoShells = m_iMaxAmmoShells; m_iState.Set( SENTRY_STATE_UPGRADING ); SetActivity( ACT_OBJ_UPGRADING ); m_flUpgradeCompleteTime = gpGlobals->curtime + SENTRY_UPGRADE_DURATION; RemoveAllGestures(); }
CSDKPlayer::CSDKPlayer() { m_PlayerAnimState = CreatePlayerAnimState( this, this, LEGANIM_9WAY, true ); UseClientSideAnimation(); m_angEyeAngles.Init(); SetViewOffset( SDK_PLAYER_VIEW_OFFSET ); m_iThrowGrenadeCounter = 0; }
//----------------------------------------------------------------------------- // Purpose: Spawn the entity //----------------------------------------------------------------------------- void CNPC_CeilingTurret::Spawn( void ) { Precache(); SetModel( CEILING_TURRET_MODEL ); BaseClass::Spawn(); m_HackedGunPos = Vector( 0, 0, 12.75 ); SetViewOffset( EyeOffset( ACT_IDLE ) ); m_flFieldOfView = 0.0f; m_takedamage = DAMAGE_YES; m_iHealth = 1000; m_bloodColor = BLOOD_COLOR_MECH; SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetHeight( CEILING_TURRET_RETRACT_HEIGHT ); AddFlag( FL_AIMTARGET ); AddEFlags( EFL_NO_DISSOLVE ); SetPoseParameter( m_poseAim_Yaw, 0 ); SetPoseParameter( m_poseAim_Pitch, 0 ); m_iAmmoType = GetAmmoDef()->Index( "AR2" ); //Create our eye sprite m_pEyeGlow = CSprite::SpriteCreate( CEILING_TURRET_GLOW_SPRITE, GetLocalOrigin(), false ); m_pEyeGlow->SetTransparency( kRenderTransAdd, 255, 0, 0, 128, kRenderFxNoDissipation ); m_pEyeGlow->SetAttachment( this, 2 ); //Set our autostart state m_bAutoStart = !!( m_spawnflags & SF_CEILING_TURRET_AUTOACTIVATE ); m_bEnabled = ( ( m_spawnflags & SF_CEILING_TURRET_STARTINACTIVE ) == false ); //Do we start active? if ( m_bAutoStart && m_bEnabled ) { SetThink( &CNPC_CeilingTurret::AutoSearchThink ); SetEyeState( TURRET_EYE_DORMANT ); } else { SetEyeState( TURRET_EYE_DISABLED ); } //Stagger our starting times SetNextThink( gpGlobals->curtime + random->RandomFloat( 0.1f, 0.3f ) ); // Don't allow us to skip animation setup because our attachments are critical to us! SetBoneCacheFlags( BCF_NO_ANIMATION_SKIP ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- C_ObjectSentrygun::C_ObjectSentrygun() { m_fBoneXRotator = 0; m_fBoneYRotator = 0; m_iAmmo = 0; m_bTurtled = false; m_flStartedTurtlingAt = 0; m_flStartedUnTurtlingAt = 0; SetViewOffset( Vector(0,0,22) ); }
void CMeshViewer::InitViewerPosition(const CVec3 &Mins, const CVec3 &Maxs) { CVec3 tmp, Center; VectorAdd(Maxs, Mins, tmp); VectorScale(tmp, 0.5f, Center); VectorSubtract(Maxs, Center, tmp); float radius = tmp.GetLength(); SetViewOffset(Center); SetDistScale((radius + 10) / 230); MoveCamera(20, 20); }
//----------------------------------------------------------------------------- // Purpose: // // //----------------------------------------------------------------------------- void CNPC_EnemyFinder::Spawn( void ) { Precache(); SetModel( "models/roller.mdl" ); // This is a dummy model that is never used! UTIL_SetSize(this, vec3_origin, vec3_origin); SetMoveType( MOVETYPE_NONE ); SetBloodColor( DONT_BLEED ); SetGravity( 0.0 ); m_iHealth = 1; AddFlag( FL_NPC ); SetSolid( SOLID_NONE ); m_bEnemyStatus = false; if (m_flFieldOfView < -1.0) { DevMsg("ERROR: EnemyFinder field of view must be between -1.0 and 1.0\n"); m_flFieldOfView = 0.5; } else if (m_flFieldOfView > 1.0) { DevMsg("ERROR: EnemyFinder field of view must be between -1.0 and 1.0\n"); m_flFieldOfView = 1.0; } CapabilitiesAdd ( bits_CAP_SQUAD ); NPCInit(); // Set this after NPCInit() m_takedamage = DAMAGE_NO; AddEffects( EF_NODRAW ); m_NPCState = NPC_STATE_ALERT; // always alert SetViewOffset( vec3_origin ); if ( m_flMaxSearchDist ) { SetDistLook( m_flMaxSearchDist ); } if ( HasSpawnFlags( SF_ENEMY_FINDER_SHORT_MEMORY ) ) { GetEnemies()->SetEnemyDiscardTime( 0.2 ); } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CObjectSentrygun::Spawn() { m_iPitchPoseParameter = -1; m_iYawPoseParameter = -1; SetModel( SENTRY_MODEL_PLACEMENT ); m_takedamage = DAMAGE_YES; m_iUpgradeLevel = 1; m_iUpgradeMetal = 0; m_iUpgradeMetalRequired = SENTRYGUN_UPGRADE_METAL; SetMaxHealth( SENTRYGUN_MAX_HEALTH ); SetHealth( SENTRYGUN_MAX_HEALTH ); // Rotate Details m_iRightBound = 45; m_iLeftBound = 315; m_iBaseTurnRate = 6; m_flFieldOfView = VIEW_FIELD_NARROW; // Give the Gun some ammo m_iAmmoShells = 0; m_iAmmoRockets = 0; m_iMaxAmmoShells = SENTRYGUN_MAX_SHELLS_1; m_iMaxAmmoRockets = SENTRYGUN_MAX_ROCKETS; m_iAmmoType = GetAmmoDef()->Index( "TF_AMMO_PRIMARY" ); // Start searching for enemies m_hEnemy = NULL; // Pipes explode when they hit this m_takedamage = DAMAGE_AIM; m_flLastAttackedTime = 0; m_flHeavyBulletResist = SENTRYGUN_MINIGUN_RESIST_LVL_1; BaseClass::Spawn(); SetViewOffset( SENTRYGUN_EYE_OFFSET_LEVEL_1 ); UTIL_SetSize( this, SENTRYGUN_MINS, SENTRYGUN_MAXS ); m_iState.Set( SENTRY_STATE_INACTIVE ); SetContextThink( &CObjectSentrygun::SentryThink, gpGlobals->curtime + SENTRY_THINK_DELAY, SENTRYGUN_CONTEXT ); }
//----------------------------------------------------------------------------- // 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 CSDKPlayer::MoveToNextIntroCamera() { m_pIntroCamera = gEntList.FindEntityByClassname( m_pIntroCamera, "point_viewcontrol" ); // if m_pIntroCamera is NULL we just were at end of list, start searching from start again if(!m_pIntroCamera) m_pIntroCamera = gEntList.FindEntityByClassname(m_pIntroCamera, "point_viewcontrol"); // find the target CBaseEntity *Target = NULL; if( m_pIntroCamera ) { Target = gEntList.FindEntityByName( NULL, STRING(m_pIntroCamera->m_target) ); } // if we still couldn't find a camera, goto T spawn if(!m_pIntroCamera) m_pIntroCamera = gEntList.FindEntityByClassname(m_pIntroCamera, "info_player_terrorist"); SetViewOffset( vec3_origin ); // no view offset UTIL_SetSize( this, vec3_origin, vec3_origin ); // no bbox if( !Target ) //if there are no cameras(or the camera has no target, find a spawn point and black out the screen { if ( m_pIntroCamera.IsValid() ) SetAbsOrigin( m_pIntroCamera->GetAbsOrigin() + VEC_VIEW ); SetAbsAngles( QAngle( 0, 0, 0 ) ); m_pIntroCamera = NULL; // never update again return; } Vector vCamera = Target->GetAbsOrigin() - m_pIntroCamera->GetAbsOrigin(); Vector vIntroCamera = m_pIntroCamera->GetAbsOrigin(); VectorNormalize( vCamera ); QAngle CamAngles; VectorAngles( vCamera, CamAngles ); SetAbsOrigin( vIntroCamera ); SetAbsAngles( CamAngles ); SnapEyeAngles( CamAngles ); m_fIntroCamTime = gpGlobals->curtime + 6; }
void CRat :: Spawn() { Precache( ); SetModel( "models/bigrat.mdl"); SetSize( Vector( 0, 0, 0 ), Vector( 0, 0, 0 ) ); SetSolidType( SOLID_SLIDEBOX ); SetMoveType( MOVETYPE_STEP ); m_bloodColor = BLOOD_COLOR_RED; SetHealth( 8 ); SetViewOffset( Vector ( 0, 0, 6 ) );// position of the eyes relative to monster's origin. m_flFieldOfView = 0.5;// indicates the width of this monster's forward view cone ( as a dotproduct result ) m_MonsterState = MONSTERSTATE_NONE; MonsterInit(); }
//========================================================= // Initialize - set up the turret, initial think //========================================================= void CNPC_BaseTurret::Initialize(void) { m_iOn = 0; m_fBeserk = 0; m_iSpin = 0; SetBoneController( 0, 0 ); SetBoneController( 1, 0 ); if (m_iBaseTurnRate == 0) m_iBaseTurnRate = TURRET_TURNRATE; if (m_flMaxWait == 0) m_flMaxWait = TURRET_MAXWAIT; QAngle angles = GetAbsAngles(); m_flStartYaw = angles.y; if (m_iOrientation == TURRET_ORIENTATION_CEILING) { angles.x = 180; angles.y += 180; if( angles.y > 360 ) angles.y -= 360; SetAbsAngles( angles ); // pev->idealpitch = 180; //not used? Vector view_ofs = GetViewOffset(); view_ofs.z = -view_ofs.z; SetViewOffset( view_ofs ); // pev->effects |= EF_INVLIGHT; //no need } m_vecGoalAngles.x = 0; if (m_iAutoStart) { m_flLastSight = gpGlobals->curtime + m_flMaxWait; SetThink(&CNPC_BaseTurret::AutoSearchThink); SetNextThink( gpGlobals->curtime + 0.1 ); } else { SetThink( &CBaseEntity::SUB_DoNothing ); } }
void CController :: Spawn() { Precache( ); SetModel( "models/controller.mdl"); SetSize( Vector( -32, -32, 0 ), Vector( 32, 32, 64 )); SetSolidType( SOLID_SLIDEBOX ); SetMoveType( MOVETYPE_FLY ); GetFlags() |= FL_FLY; m_bloodColor = BLOOD_COLOR_GREEN; SetHealth( gSkillData.GetControllerHealth() ); SetViewOffset( Vector( 0, 0, -2 ) );// position of the eyes relative to monster's origin. m_flFieldOfView = VIEW_FIELD_FULL;// indicates the width of this monster's forward view cone ( as a dotproduct result ) m_MonsterState = MONSTERSTATE_NONE; MonsterInit(); }
//========================================================= // Spawn //========================================================= void CNPC_Gargantua::Spawn() { Precache( ); SetModel( "models/garg.mdl" ); SetNavType(NAV_GROUND); SetSolid( SOLID_BBOX ); AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); Vector vecSurroundingMins( -80, -80, 0 ); Vector vecSurroundingMaxs( 80, 80, 214 ); CollisionProp()->SetSurroundingBoundsType( USE_SPECIFIED_BOUNDS, &vecSurroundingMins, &vecSurroundingMaxs ); m_bloodColor = BLOOD_COLOR_GREEN; m_iHealth = sk_gargantua_health.GetFloat(); SetViewOffset( Vector ( 0, 0, 96 ) );// taken from mdl file m_flFieldOfView = -0.2;// width of forward view cone ( as a dotproduct result ) m_NPCState = NPC_STATE_NONE; CapabilitiesAdd( bits_CAP_MOVE_GROUND ); CapabilitiesAdd( bits_CAP_INNATE_RANGE_ATTACK1 | bits_CAP_INNATE_MELEE_ATTACK1 | bits_CAP_INNATE_MELEE_ATTACK2 ); SetHullType( HULL_LARGE ); SetHullSizeNormal(); m_pEyeGlow = CSprite::SpriteCreate( GARG_EYE_SPRITE_NAME, GetAbsOrigin(), FALSE ); m_pEyeGlow->SetTransparency( kRenderGlow, 255, 255, 255, 0, kRenderFxNoDissipation ); m_pEyeGlow->SetAttachment( this, 1 ); EyeOff(); m_seeTime = gpGlobals->curtime + 5; m_flameTime = gpGlobals->curtime + 2; NPCInit(); BaseClass::Spawn(); // Give garg a healthy free knowledge. GetEnemies()->SetFreeKnowledgeDuration( 59.0f ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void C_PropVehicleDriveable::OnDataChanged( DataUpdateType_t updateType ) { BaseClass::OnDataChanged( updateType ); ConVar* thirdpers_cvar = cvar->FindVar("cl_thirdperson"); ConVar* cam_dist = cvar->FindVar("cam_idealdist"); ConVar* cam_pos = cvar->FindVar("cam_idealdistright"); if (m_hPlayer && !m_hPrevPlayer) { OnEnteredVehicle(m_hPlayer); SetNextClientThink(CLIENT_THINK_ALWAYS); g_ClientVirtualReality.AlignTorsoAndViewToWeapon(); if (!DidEnter) { DidEnter = true; cam_dist->SetValue(155); cam_pos->SetValue(0); thirdpers_cvar->SetValue(1); } } else if ( !m_hPlayer && m_hPrevPlayer ) { // NVNT notify haptics system of navigation exit OnExitedVehicle( m_hPrevPlayer ); // They have just exited the vehicle. // Sometimes we never reach the end of our exit anim, such as if the // animation doesn't have fadeout 0 specified in the QC, so we fail to // catch it in VehicleViewSmoothing. Catch it here instead. m_ViewSmoothingData.bWasRunningAnim = false; SetNextClientThink(CLIENT_THINK_NEVER); if (DidEnter) { DidEnter = false; thirdpers_cvar->SetValue(0); SetViewOffset(VEC_VIEW_SCALED(this)); } } }
//----------------------------------------------------------------------------- // Purpose: Sets up the entity's initial state //----------------------------------------------------------------------------- void CTDPHeadcrab::Spawn( void ) { Precache(); // precache resources SetModel( ENTITY_MODEL ); // set the display model BaseClass::Spawn(); // init CAI_BaseNPC's member vars m_iHealth = 100.0; // set health of your crab; you'll want to make this a convar SetHullType(HULL_TINY); SetHullSizeNormal(); SetSolid( SOLID_BBOX ); // we don't want to allow others to stand on this critter AddSolidFlags( FSOLID_NOT_STANDABLE ); SetMoveType( MOVETYPE_STEP ); // have to look into this, the original crab has it's own collision SetCollisionGroup( COLLISION_GROUP_NPC ); // model defined in hl2 specific code SetViewOffset( Vector(6, 0, 11) ) ; // Position of the eyes relative to NPC's origin. SetBloodColor( BLOOD_COLOR_GREEN ); // guess ;-) m_flFieldOfView = 0.5; m_NPCState = NPC_STATE_NONE; CapabilitiesClear(); // crab can move around and start melee attack CapabilitiesAdd( bits_CAP_MOVE_GROUND | bits_CAP_INNATE_MELEE_ATTACK1 ); NPCInit(); // initialize our NPC // Crab hates player, set to D_FR to see it run away from player AddClassRelationship( CLASS_PLAYER, D_HT, 0 ); AddClassRelationship( CLASS_COMBINE, D_HT, 0 ); }
/* ======================== idMenuWidget_DevList::NavigateForward ======================== */ void idMenuWidget_DevList::NavigateForward( const int optionIndex ) { if ( devMenuList == NULL ) { return; } const int focusedIndex = GetViewOffset() + optionIndex; const idDeclDevMenuList::idDevMenuOption & devOption = devMenuList->devMenuList[ focusedIndex ]; if ( ( devOption.devMenuDisplayName.Length() == 0 ) || ( devOption.devMenuDisplayName.Cmp( "..." ) == 0 ) ) { return; } if ( devOption.devMenuSubList != NULL ) { indexInfo_t & indexes = devMapListInfos.Alloc(); indexes.name = devOption.devMenuSubList->GetName(); indexes.focusIndex = GetFocusIndex(); indexes.viewIndex = GetViewIndex(); indexes.viewOffset = GetViewOffset(); RecalculateDevMenu(); SetViewIndex( 0 ); SetViewOffset( 0 ); Update(); // NOTE: This must be done after the Update() because it MAY change the sprites that // children refer to GetChildByIndex( 0 ).SetState( WIDGET_STATE_SELECTED ); ForceFocusIndex( 0 ); SetFocusIndex( 0 ); gameLocal->GetMainMenu()->ClearWidgetActionRepeater(); } else { cmdSystem->AppendCommandText( va( "loadDevMenuOption %s %d\n", devMapListInfos[ devMapListInfos.Num() - 1 ].name, focusedIndex ) ); } }