int CBeam::DrawModel( int flags, const RenderableInstance_t &instance ) { if ( !m_bReadyToDraw ) return 0; if ( IsMarkedForDeletion() ) return 0; if ( CurrentViewID() == VIEW_SHADOW_DEPTH_TEXTURE ) return 0; #ifdef PORTAL if ( ( !g_pPortalRender->IsRenderingPortal() && !m_bDrawInMainRender ) || ( g_pPortalRender->IsRenderingPortal() && !m_bDrawInPortalRender ) ) { return 0; } #endif //#ifdef PORTAL // Tracker 16432: If rendering a savegame screenshot don't draw beams // who have viewmodels as their attached entity if ( g_bRenderingScreenshot || !r_drawviewmodel.GetBool() ) { // If the beam is attached for (int i=0;i<MAX_BEAM_ENTS;i++) { C_BaseViewModel *vm = ToBaseViewModel(m_hAttachEntity[i].Get()); if ( vm ) { return 0; } } } beams->DrawBeam( this, instance ); return 0; }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CUnitBase::AddToUnitList() { if( IsMarkedForDeletion() ) return; g_Unit_Manager.AddUnit(this); // Add to the unit list UnitListInfo *pUnitList = g_pUnitListHead; while( pUnitList ) { // Found if( pUnitList->m_OwnerNumber == GetOwnerNumber() ) { if( pUnitList->m_pHead ) pUnitList->m_pHead->m_pPrev = this; m_pNext = pUnitList->m_pHead; pUnitList->m_pHead = this; m_pUnitList = pUnitList; return; } pUnitList = pUnitList->m_pNext; } // Not found, create new one pUnitList = new UnitListInfo; if( !pUnitList ) return; pUnitList->m_OwnerNumber = GetOwnerNumber(); pUnitList->m_pHead = this; m_pUnitList = pUnitList; pUnitList->m_pNext = g_pUnitListHead; g_pUnitListHead = pUnitList; }
void C_ASW_PropJeep_Clientside::VPhysicsUpdate( IPhysicsObject *pPhysics ) { if ( IsMarkedForDeletion() ) return; Vector velocity; VPhysicsGetObject()->GetVelocity( &velocity, NULL ); //Update our smoothed velocity m_vecSmoothedVelocity = m_vecSmoothedVelocity * SMOOTHING_FACTOR + velocity * ( 1 - SMOOTHING_FACTOR ); // must be a wheel if (!m_VehiclePhysics.VPhysicsUpdate( pPhysics )) return; BaseClass::VPhysicsUpdate( pPhysics ); if (!m_bInitialisedPhysics) InitPhysics(); //if (!ASWGetDriver()) //SetNextClientThink(gpGlobals->curtime); ThinkTick(); }
void CReplayManager::StopReplay() { if (m_bReplayIsPending) m_bReplayIsPending = false; if (!m_bIsReplaying) return; m_bIsReplaying = false; if (m_pBall) { UTIL_Remove(m_pBall); m_pBall = NULL; } for (int i = 0; i < 2; i++) { for (int j = 0; j < 11; j++) { if (m_pPlayers[i][j]) { UTIL_Remove(m_pPlayers[i][j]); m_pPlayers[i][j] = NULL; } } } if (IsMarkedForDeletion()) return; CBall *pRealBall = GetMatchBall(); if (pRealBall) { //pRealBall->SetRenderMode(kRenderNormal); //pRealBall->SetRenderColorA(255); pRealBall->RemoveEffects(EF_NODRAW); pRealBall->RemoveSolidFlags(FSOLID_NOT_SOLID); } for (int i = 1; i <= gpGlobals->maxClients; i++) { CSDKPlayer *pRealPl = ToSDKPlayer(UTIL_PlayerByIndex(i)); if (!CSDKPlayer::IsOnField(pRealPl)) continue; //pRealPl->SetRenderMode(kRenderNormal); //pRealPl->SetRenderColorA(255); pRealPl->SetLocalOrigin(pRealPl->GetSpawnPos()); QAngle ang; VectorAngles(Vector(0, pRealPl->GetTeam()->m_nForward, 0), ang); pRealPl->SetLocalAngles(ang); pRealPl->SnapEyeAngles(ang); pRealPl->SetLocalVelocity(vec3_origin); pRealPl->RemoveEffects(EF_NODRAW); //pRealPl->RemoveEFlags(EFL_NOCLIP_ACTIVE); pRealPl->SetMoveType(MOVETYPE_WALK); pRealPl->RemoveSolidFlags(FSOLID_NOT_SOLID); if (pRealPl->GetPlayerBall()) { pRealPl->GetPlayerBall()->RemoveEffects(EF_NODRAW); pRealPl->GetPlayerBall()->RemoveSolidFlags(FSOLID_NOT_SOLID); } } if (SDKGameRules()->IsIntermissionState()) { IGameEvent *pEvent = gameeventmanager->CreateEvent("match_period"); if (pEvent) { pEvent->SetInt("period", SDKGameRules()->State_Get()); gameeventmanager->FireEvent(pEvent); } } }
void CDHLProjectile::PhysicsSimulate( void ) { //------------------------------------------------------------------------------- //Our own movement/physics simulation! //------------------------------------------------------------------------------- #ifdef CLIENT_DLL if ( m_bCollided ) return; if ( !m_pShooter && m_hShooter ) m_pShooter = m_hShooter.Get(); #else if ( m_flRemoveAt > 0.0f ) { if ( m_flRemoveAt < gpGlobals->curtime ) { m_flRemoveAt = 0.0f; SUB_Remove(); } return; } if ( IsMarkedForDeletion() ) return; #endif float flFrametime = gpGlobals->frametime; //Scale for slow motion if ( DHLRules() ) { if ( (m_iType == DHL_PROJECTILE_TYPE_BULLET || m_iType == DHL_PROJECTILE_TYPE_PELLET) ) flFrametime *= (dhl_bulletspeed.GetFloat() * DHLRules()->GetTimescale()); else if ( m_iType == DHL_PROJECTILE_TYPE_COMBATKNIFE ) flFrametime *= (dhl_knifespeed.GetFloat() * DHLRules()->GetTimescale()); else flFrametime *= DHLRules()->GetTimescale(); } Vector vecDir = vec3_origin; #ifndef CLIENT_DLL Vector vecStartPos = m_vecCurPosition; //This is where we are Vector vecEndPos = m_vecCurPosition; //This is where we're going Vector vecVelocity = m_vecCurVelocity; //Velocity #else Vector vecStartPos = GetLocalOrigin(); //This is where we are Vector vecEndPos = GetLocalOrigin(); //This is where we're going Vector vecVelocity = GetLocalVelocity(); //Velocity #endif //Find out where we should move to if ( vecVelocity != vec3_origin ) { static ConVarRef gravVar( "sv_gravity" ); //Gravity float newZVelocity = vecVelocity.z - ( flFrametime * gravVar.GetFloat() * GetGravity() ); vecVelocity.z = ( (vecVelocity.z + newZVelocity) / 2 ); vecDir = vecVelocity; VectorNormalize( vecDir ); //Gravity needs to be cumulative #ifndef CLIENT_DLL m_vecCurVelocity = vecVelocity; #else SetLocalVelocity( vecVelocity ); #endif vecVelocity *= flFrametime; vecEndPos = vecStartPos + vecVelocity; if ( vecEndPos.IsValid() ) { CTraceFilterSkipTwoEntities movetrfilter( this, m_pShooter, COLLISION_GROUP_NONE ); trace_t movetr; UTIL_TraceLine( vecStartPos, vecEndPos, MASK_SHOT, &movetrfilter, &movetr ); #ifndef CLIENT_DLL //Trace to triggers so we can hit surf glass and such CTakeDamageInfo triggerInfo( this, GetOwnerEntity(), m_iDamage, DMG_BULLET ); if ( m_iType == DHL_PROJECTILE_TYPE_COMBATKNIFE ) { //CalculateMeleeDamageForce( &triggerInfo, vecDir, movetr.endpos, 0.7f ); Vector vecForce = vecDir; VectorNormalize( vecForce ); //vecForce *= 10.0f; triggerInfo.SetDamageForce( vecForce ); } else CalculateBulletDamageForce( &triggerInfo, m_iAmmoType, vecDir, movetr.endpos, 1.0f ); triggerInfo.SetDamagePosition( movetr.endpos ); TraceAttackToTriggers( triggerInfo, movetr.startpos, movetr.endpos, vecDir ); #else //Hit ragdolls on the client CBaseEntity* pEnt = DHL_FX_AffectRagdolls( movetr.endpos, movetr.startpos, DMG_BULLET, &m_RagdollHitList ); //Keep track of ones we've hit if ( pEnt ) m_RagdollHitList.AddToTail( pEnt ); #endif if ( movetr.DidHit() ) if ( OnTouch( movetr, false, &movetrfilter ) ) return; MoveProjectileToPosition( vecEndPos ); m_flDistanceTravelled += vecEndPos.DistTo( vecStartPos ); #ifndef CLIENT_DLL //On rare occasions the projectile likes to fly right through the world and keep going forever, causing a memory leak if ( m_flDistanceTravelled > MAX_TRACE_LENGTH ) { SUB_Remove(); //SetThink( &CDHLProjectile::SUB_Remove ); //SetNextThink( gpGlobals->curtime + 0.1 ); } #endif } //Simulate Angles //QAngle angles; #ifdef CLIENT_DLL QAngle angles = GetLocalAngles(); //VectorAngles( vecDir, angles ); //angles.z = GetLocalAngles().z; //Vector conversion loses z QAngle angVel = GetLocalAngularVelocity(); angles += angVel * flFrametime; SetLocalAngles( angles ); SetNetworkAngles( angles ); #endif } }