HLCoders wrote:
> After a very quick search in some header files, I think these two 
> functions might interest you.
>
> bool IVRenderView::AreAnyLeavesVisible( int *leafList, int nLeaves );
> int IEngineTrace::GetLeafContainingPoint( const Vector &ptTest ) = 0;
>
> I haven't tested them, but if they work like I think they do, this is 
> how you'd do it. I think this is client-side too.
>
> bool ShouldDraw( const Vector &ptTest )
> {
>     int LeafNum = enginetrace->GetLeafContainingPoint(ptTest);
>     return render.>AreAnyLeavesVisible(&LeafNum,1);
> }
>   
>> Is it possible to check if an object or vector is within a visible 
>> (currently being rendered) visleaf? I need to occlude an entity that 
>> isn't normally occluded, and this is the best way I can think of doing 
>> it. Any help is much appreciated. I can't find any examples of this in 
>> the code.
>>
>> -Kyle '1/4 Life' G.
>>
>> _______________________________________________
>> To unsubscribe, edit your list preferences, or view the list archives, 
>> please visit:
>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>>
>>   
>>     
>
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives, please 
> visit:
> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>
>
>   
It works!

Here, let me give back to the community:
If you want projected textures to occlude properly, head into 
c_env_projectedtexture.cpp and add:

...
public:
    DECLARE_CLIENTCLASS();

    bool    ShouldDraw( const Vector &vecOrigin );
...

...
bool C_EnvProjectedTexture::ShouldDraw( const Vector &vecOrigin )
{
    int LeafNum = enginetrace->GetLeafContainingPoint(vecOrigin);
    return render->AreAnyLeavesVisible(&LeafNum,1);
}
...

Change

    if ( m_bState == false )
    {

To

    if ( m_bState == false || !ShouldDraw( GetAbsOrigin() ) )
    {

in UpdateLight()

And finally:

void C_EnvProjectedTexture::Simulate( void )
{
    //UpdateLight( false );
    UpdateLight( true );

    BaseClass::Simulate();
}

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to