//this originally called a class function of CPixelVisibiltySystem to keep the work clean, but that function needed friend access to CPixelVisibilityQuery //and I didn't want to make the whole class a friend or shift all the functions and class declarations around in this file void PixelVisibility_ShiftVisibilityViews( int iSourceViewID, int iDestViewID ) { unsigned short node = g_PixelVisibilitySystem.m_setList.Head( g_PixelVisibilitySystem.m_activeSetsList ); while ( node != g_PixelVisibilitySystem.m_setList.InvalidIndex() ) { unsigned short next = g_PixelVisibilitySystem.m_setList.Next( node ); CPixelVisSet *pSet = &g_PixelVisibilitySystem.m_setList[node]; unsigned short iSourceQueryNode = g_PixelVisibilitySystem.FindQueryForView( pSet, iSourceViewID ); unsigned short iDestQueryNode = g_PixelVisibilitySystem.FindQueryForView( pSet, iDestViewID ); if( iDestQueryNode != g_PixelVisibilitySystem.m_queryList.InvalidIndex() ) { //delete the destination if found g_PixelVisibilitySystem.m_queryList.Unlink( pSet->queryList, iDestQueryNode ); g_PixelVisibilitySystem.m_queryList.LinkToHead( g_PixelVisibilitySystem.m_freeQueriesList, iDestQueryNode ); if ( g_PixelVisibilitySystem.m_queryList.Head(pSet->queryList) == g_PixelVisibilitySystem.m_queryList.InvalidIndex() ) { g_PixelVisibilitySystem.FreeSet( node ); } } if( iSourceQueryNode != g_PixelVisibilitySystem.m_queryList.InvalidIndex() ) { //make the source believe it's the destination g_PixelVisibilitySystem.m_queryList[iSourceQueryNode].m_viewID = iDestViewID; } node = next; } }
float PixelVisibility_FractionVisible( const pixelvis_queryparams_t ¶ms, pixelvis_handle_t *queryHandle ) { if ( !queryHandle ) { return GlowSightDistance( params.position, true ) > 0.0f ? 1.0f : 0.0f; } else { return g_PixelVisibilitySystem.GetFractionVisible( params, queryHandle ); } }
bool PixelVisibility_IsAvailable() { bool fastqueries = HasFastQueries(); return r_dopixelvisibility.GetBool() && fastqueries && g_PixelVisibilitySystem.SupportsOcclusion(); }
void PixelVisibility_EndScene() { tmZone( TELEMETRY_LEVEL0, TMZF_NONE, "%s", __FUNCTION__ ); g_PixelVisibilitySystem.EndScene(); }
void PixelVisibility_EndCurrentView() { g_PixelVisibilitySystem.EndView(); }
void PixelvisDrawChanged( IConVar *pPixelvisVar, const char *pOld, float flOldValue ) { ConVarRef var( pPixelvisVar ); g_PixelVisibilitySystem.ShowQueries( var.GetBool() ); }
bool PixelVisibility_IsAvailable() { return r_dopixelvisibility.GetBool() && g_PixelVisibilitySystem.SupportsOcclusion(); }
void PixelVisibility_EndScene() { g_PixelVisibilitySystem.EndScene(); }
void PixelvisDrawChanged( ConVar *pPixelvisVar, const char *pOld ) { g_PixelVisibilitySystem.ShowQueries( pPixelvisVar->GetBool() ); }