Revision Difference
ENTITY:GetRenderMesh#515599
<function name="GetRenderMesh" parent="ENTITY" type="hook">⤶
	<ishook>yes</ishook>⤶
	<description>Specify a mesh that should be rendered instead of this SENT's model.</description>⤶
	<realm>Client</realm>⤶
	<predicted>No</predicted>⤶
	<rets>⤶
		<ret name="" type="table">A table containing the following keys:⤶
* <page>IMesh</page> Mesh - Required⤶
* <page>IMaterial</page> Material - Required⤶
* <page>VMatrix</page> Matrix - Optional</ret>⤶
	</rets>⤶
</function>⤶
⤶
<example>⤶
	<description>A box that renders nicely with ambient lighting, projected textures, and bumpmaps. Performed in the most lines of code possible.</description>⤶
	<code>⤶
AddCSLuaFile()⤶
⤶
DEFINE_BASECLASS( "base_anim" )⤶
⤶
ENT.PrintName = "Other Cube"⤶
ENT.Spawnable = true⤶
⤶
ENT.Mins = Vector( -16, -16, -16 )⤶
ENT.Maxs = Vector(  16,  16,  16 )⤶
⤶
ENT.Material = Material( "hunter/myplastic" )⤶
⤶
function ENT:SpawnFunction( ply, tr, ClassName )⤶
    local ent = ents.Create( ClassName )⤶
    ent:SetPos( tr.HitPos + tr.HitNormal * 32 )⤶
    ent:Spawn()⤶
    return ent⤶
end⤶
⤶
function ENT:Initialize()⤶
    if CLIENT then⤶
        self:CreateMesh()⤶
        self:SetRenderBounds( self.Mins, self.Maxs )⤶
    end⤶
⤶
    self:DrawShadow( false )⤶
end⤶
⤶
function ENT:GetRenderMesh()⤶
    return { Mesh = self.Mesh, Material = self.Material }⤶
end⤶
⤶
function ENT:CreateMesh()⤶
    self.Mesh = Mesh()⤶
⤶
    local positions = {⤶
        Vector( -0.5, -0.5, -0.5 ),⤶
        Vector(  0.5, -0.5, -0.5 ),⤶
        Vector( -0.5,  0.5, -0.5 ),⤶
        Vector(  0.5,  0.5, -0.5 ),⤶
        Vector( -0.5, -0.5,  0.5 ),⤶
        Vector(  0.5, -0.5,  0.5 ),⤶
        Vector( -0.5,  0.5,  0.5 ),⤶
        Vector(  0.5,  0.5,  0.5 ),⤶
    };⤶
⤶
    local indices = {⤶
        1, 7, 5,⤶
        1, 3, 7,⤶
        6, 4, 2,⤶
        6, 8, 4,⤶
        1, 6, 2,⤶
        1, 5, 6,⤶
        3, 8, 7,⤶
        3, 4, 8,⤶
        1, 4, 3,⤶
        1, 2, 4,⤶
        5, 8, 6,⤶
        5, 7, 8,⤶
    }⤶
⤶
    local normals = {⤶
       Vector( -1,  0,  0 ),⤶
       Vector(  1,  0,  0 ),⤶
       Vector(  0, -1,  0 ),⤶
       Vector(  0,  1,  0 ),⤶
       Vector(  0,  0, -1 ),⤶
       Vector(  0,  0,  1 ),⤶
    }⤶
⤶
    local tangents = {⤶
        { 0, 1, 0, -1 },⤶
        { 0, 1, 0, -1 },⤶
        { 0, 0, 1, -1 },⤶
        { 1, 0, 0, -1 },⤶
        { 1, 0, 0, -1 },⤶
        { 0, 1, 0, -1 },⤶
    }⤶
⤶
    local uCoords = {⤶
       0, 1, 0,⤶
       0, 1, 1,⤶
       0, 1, 0,⤶
       0, 1, 1,⤶
       0, 1, 0,⤶
       0, 1, 1,⤶
       0, 1, 0,⤶
       0, 1, 1,⤶
       0, 1, 0,⤶
       0, 1, 1,⤶
       0, 1, 0,⤶
       0, 1, 1,⤶
    }⤶
⤶
    local vCoords = {⤶
       0, 1, 1,⤶
       0, 0, 1,⤶
       0, 1, 1,⤶
       0, 0, 1,⤶
       0, 1, 1,⤶
       0, 0, 1,⤶
       0, 1, 1,⤶
       0, 0, 1,⤶
       0, 1, 1,⤶
       0, 0, 1,⤶
       0, 1, 1,⤶
       0, 0, 1,⤶
    }⤶
⤶
    local verts = {}⤶
    local scale = self.Maxs - self.Mins⤶
⤶
    for vert_i = 1, #indices do⤶
        local face_i = math.ceil( vert_i / 6 )⤶
⤶
        verts[vert_i] = {⤶
            pos = positions[indices[vert_i]] * scale,⤶
            normal = normals[face_i],⤶
            u = uCoords[vert_i],⤶
            v = vCoords[vert_i],⤶
            userdata = tangents[face_i]⤶
        }⤶
    end⤶
    ⤶
    self.Mesh:BuildFromTriangles( verts )⤶
end⤶
	</code>⤶
⤶
</example>
 Garry's Mod
			Garry's Mod 
		 Rust
			Rust 
		 Steamworks
			Steamworks 
		 Wiki Help
			Wiki Help