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