render.DrawSprite
render.DrawSprite( Vector position, number width, number height, Color color = Color( 255, 255, 255 ) )
Açıklama
3 boyutlu uzayda bir spiriti çiziyor.
Bu bir gösterimdir function that 3 boyutlu görüntüleme bağlamı gerektirir.
Bu sadece çalışacak anlamına gelir. 3D Rendering Hooks.
Argümanlar
Örnek
Haritanın ortasına bir cüce çiz.
local pos, material = Vector( 0, 0, 0 ), Material( "sprites/splodesprite" ) --Bu tür şeyleri daha verimli kod yapmak için döngülerin dışında tanımlayın.
hook.Add( "HUDPaint", "paintsprites", function()
cam.Start3D() -- Ekrana çizebileceğimiz 3D'yi başlatın.
render.SetMaterial( material ) - Ne istediğimizi söyleyin. Bu durumda gravgun'dan gelen flaş
render.DrawSprite( pos, 16, 16, color_white ) -- Haritanın ortasında, 16x16 boyutunda orijinal renginde tam alfa ile spiriti çizin.
cam.End3D()
end )
Çıkış: Haritada 0,0,0'da turuncu bir yıldız görünür.
Örnek
Belirli bir görüntüleme bağlamına ihtiyaç duymadan verilen konumda sprite gösteren fonksiyon.
draw.VectorSprite( Vektör konumu, numara boyutu, Renk Rengi, Boolean ConstantSize)
local toDraw3d = {}
local sprites3d = 0
local toDraw2d = {}
local sprites2d = 0
local material = Material( "sprites/light_ignorez" )
function draw.VectorSprite( position, size, color, constantSize )
if ( not isvector( position ) ) then
error( "bad argument #1 to draw.DrawVectorSprite (Vector expected, got " .. type( position ) .. ")" )
end
if ( not isnumber( size ) ) then
error( "bad argument #2 to draw.DrawVectorSprite (number expected, got " .. type( size ) .. ")" )
end
if ( not IsColor( color ) ) then
error( "bad argument #3 to draw.DrawVectorSprite (Color expected, got " .. type( color ) .. ")" )
end
local tbl = { position, size, color }
if ( constantSize ) then
sprites2d = sprites2d + 1
toDraw2d[sprites2d] = tbl
else
sprites3d = sprites3d + 1
toDraw3d[sprites3d] = tbl
end
end
local render_SetMaterial = render.SetMaterial
local render_DrawSprite = render.DrawSprite
hook.Add( "PreDrawEffects", "draw.VectorSprite", function()
if ( sprites3d ~= 0 ) then
render_SetMaterial( material )
for i = 1, sprites3d do
local info = toDraw3d[i]
toDraw3d[i] = nil -- Her çerçeveyi boşaltın.
render_DrawSprite(info[1], info[2], info[2], info[3])
end
sprites3d = 0
end
end )
local surface_SetMaterial = surface.SetMaterial
local surface_SetDrawColor = surface.SetDrawColor
local surface_DrawTexturedRect = surface.DrawTexturedRect
hook.Add( "DrawOverlay", "draw.VectorSprite", function()
if ( sprites2d ~= 0 ) then
surface_SetMaterial( material )
for i = 1, sprites2d do
local info = toDraw2d[i]
toDraw2d[i] = nil
local pos2d = info[1]:ToScreen()
if pos2d.visible then
surface_SetDrawColor( info[3] )
surface_DrawTexturedRect( pos2d.x, pos2d.y, info[2], info[2] )
end
end
sprites2d = 0
end
end )
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord