ENTITY:GetRenderMesh
Açıklama
Bu SENT'in modeli yerine render edilmesi gereken bir mesh belirtin.
Döndürülenler
Örnek
Ortam aydınlatması, yansıtılan dokular ve kabartma haritaları (bumpmap) ile güzel bir şekilde render edilen bir kutu. Mümkün olan en fazla kod satırıyla gerçekleştirilmiştir.
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
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord