ENTITY:GetRenderMesh

  table ENTITY:GetRenderMesh()

Açıklama

Bu SENT'in modeli yerine render edilmesi gereken bir mesh belirtin.

Bu hook içerisinde bir IMesh oluşturmamalı veya değiştirmemelisiniz. Referans

Döndürülenler

1 table
Aşağıdaki anahtarları içeren bir tablo:
  • IMesh Mesh - (Gerekli) Varsayılan model yerine render edilecek mesh
  • IMaterial Material - (Gerekli) Mesh'i render etmek için kullanılacak materyal.
  • VMatrix Matrix - (İsteğe bağlı) - Render matrisini geçersiz kılma (mesh konumu, açıları, vb.)

Ö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