Problem with this: the light won't draw if it is out of PVS, even if 
surfaces it shines on are in.

Testing the PVS of the entity and the end of a traceline down AbsAngles 
to a maximum of m_flFarZ /should/ overcome that...most of the time

Kyle Gospodnetich wrote:
> 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
>
>
>   


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

Reply via email to