ENTITY/Draw

From Garry's Mod
(Difference between revisions)
Jump to: navigation, search
(Tried to make the function more re-usable (example 1))
Line 15: Line 15:
 
{{Example
 
{{Example
 
|Description=Draws the model and makes a rotating text over the entity
 
|Description=Draws the model and makes a rotating text over the entity
|Code=function ENT:Draw()
+
|Code=-- Draw some 3D text
// Draw the model
+
drawText001 = function(
 +
_pos,
 +
_ang,
 +
_scale,
 +
_text,
 +
_flipView
 +
)
 +
if _flipView then
 +
-- Flip the angle 180 degrees around the UP axis
 +
_ang:RotateAroundAxis( Vector( 0, 0, 1 ), 180 )
 +
end
 +
 
 +
cam.Start3D2D( _pos, _ang, _scale )
 +
-- Actually draw the text. Customize this to your liking.
 +
draw.DrawText(
 +
_text,
 +
"Default",
 +
0,
 +
0,
 +
Color( 0, 255, 0, 255 ),
 +
TEXT_ALIGN_CENTER
 +
)
 +
cam.End3D2D()
 +
end
 +
 
 +
function ENT:Draw()
 +
-- Draw the model
 
self:DrawModel()
 
self:DrawModel()
  
// The text to display
+
    -- SETTINGS --
 +
    -- -
 +
-- The text to display
 
local text = "Example Text"
 
local text = "Example Text"
  
// The position. We use model bounds to make the text appear just above the model. Customize this to your liking.
+
-- The position. We use model bounds to make the text appear just above the model. Customize this to your liking.
 
local mins, maxs = self:GetModelBounds()
 
local mins, maxs = self:GetModelBounds()
 
local pos = self:GetPos() + Vector( 0, 0, maxs.z + 2 )
 
local pos = self:GetPos() + Vector( 0, 0, maxs.z + 2 )
  
// The angle
+
-- The angle
 
local ang = Angle( 0, SysTime() * 100 % 360, 90 )
 
local ang = Angle( 0, SysTime() * 100 % 360, 90 )
  
// Draw front
+
    --- -- -
cam.Start3D2D( pos, ang, 0.2 )
+
-- Draw front
// Actually draw the text. Customize this to your liking.
+
drawText001(pos, ang, 0.2, text, false)
draw.DrawText( text, "Default", 0, 0, Color( 0, 255, 0, 255 ), TEXT_ALIGN_CENTER )
+
-- Draw back
cam.End3D2D()
+
drawText001(pos, ang, 0.2, text, true)
 
+
// Flip the angle 180 degress around the UP axis
+
ang:RotateAroundAxis( Vector( 0, 0, 1 ), 180 )
+
 
+
// Draw back
+
cam.Start3D2D( pos, ang, 0.2 )
+
// Actually draw the text. Customize this to your liking.
+
draw.DrawText( text, "Default", 0, 0, Color( 0, 255, 0, 255 ), TEXT_ALIGN_CENTER )
+
cam.End3D2D()
+
 
end
 
end
 
}}
 
}}

Revision as of 23:30, 11 April 2019

 ENTITY:Draw( )

Contents

Description

Called if and when the entity should be drawn opaquely, based on the Entity:GetRenderGroup of the entity.

See ENT structure and RENDERGROUP_ Enums for more information.

See also ENTITY:DrawTranslucent.

Arguments

number flags

The bit flags from STUDIO_ Enums

Examples

Example

Draws the model and makes a rotating text over the entity

-- Draw some 3D text
drawText001 = function(
	_pos,
	_ang,
	_scale,
	_text,
	_flipView
)
	if _flipView then
		-- Flip the angle 180 degrees around the UP axis
		_ang:RotateAroundAxis( Vector( 0, 0, 1 ), 180 )
	end

	cam.Start3D2D( _pos, _ang, _scale )
		-- Actually draw the text. Customize this to your liking.
		draw.DrawText(
			_text,
			"Default",
			0,
			0,
			Color( 0, 255, 0, 255 ),
			TEXT_ALIGN_CENTER
		)
	cam.End3D2D()
end

function ENT:Draw()
	-- Draw the model
	self:DrawModel()

    -- SETTINGS --
    -- -
	-- The text to display
	local text = "Example Text"

	-- The position. We use model bounds to make the text appear just above the model. Customize this to your liking.
	local mins, maxs = self:GetModelBounds()
	local pos = self:GetPos() + Vector( 0, 0, maxs.z + 2 )

	-- The angle
	local ang = Angle( 0, SysTime() * 100 % 360, 90 )

    --- -- -
	-- Draw front
	drawText001(pos, ang, 0.2, text, false)
	-- Draw back
	drawText001(pos, ang, 0.2, text, true)
end


Personal tools
Navigation