Revision Difference
render.RenderFlashlights#550624
<function name="RenderFlashlights" parent="render" type="libraryfunc">⤶
<description>Renders additive flashlights on an <page>IMesh</page>, a direct replacement for [render.PushFlashlightMode]().</description>⤶
<realm>Client</realm>⤶
<added>2023.06.21</added>⤶
<args>⤶
<arg name="renderFunc" type="function">The function that renders the <page>IMesh</page>, or a model.</arg>⤶
</args>⤶
</function>⤶
⤶
<example>⤶
<description>Shows an example usage of this function.</description>⤶
<code>⤶
function ENT:CreateMesh()⤶
-- Destroy any previous meshes⤶
if ( self.Mesh ) then self.Mesh:Destroy() end⤶
⤶
-- Get a list of all meshes of a model⤶
local visualMeshes = util.GetModelMeshes( "models/combine_helicopter/helicopter_bomb01.mdl" )⤶
⤶
-- Check if the model even exists⤶
if ( !visualMeshes ) then return end⤶
⤶
-- Select the first mesh⤶
local visualMesh = visualMeshes[ 1 ]⤶
⤶
-- Set the material to draw the mesh with from the model data⤶
self.myMaterial = Material( visualMesh.material )⤶
⤶
-- You can apply any changes to visualMesh.trianges table here, distorting the mesh⤶
-- or any other changes you can come up with⤶
⤶
-- Create and build the mesh⤶
self.Mesh = Mesh( visualMesh.material )⤶
self.Mesh:BuildFromTriangles( visualMesh.triangles )⤶
end⤶
⤶
function ENT:DrawModelOrMesh()⤶
-- Move the mesh to the entity's position for upcoming drawing operation⤶
cam.PushModelMatrix( self:GetWorldTransformMatrix() )⤶
⤶
-- The material to render our mesh with⤶
render.SetMaterial( self.myMaterial )⤶
⤶
-- Draw our mesh⤶
self.Mesh:Draw()⤶
⤶
-- Undo the cam.PushModelMatrix call above⤶
cam.PopModelMatrix()⤶
end⤶
⤶
function ENT:Draw()⤶
⤶
⤶
if ( !self.Mesh ) then return self:CreateMesh() end⤶
⤶
⤶
-- Draw the mesh normally⤶
self:DrawModelOrMesh()⤶
⤶
-- Draw the additive flashlight layers⤶
render.RenderFlashlights( function() self:DrawModelOrMesh() end )⤶
⤶
end⤶
</code>⤶
</example>