Revision Difference
Entity:DrawModel#515764
<function name="DrawModel" parent="Entity" type="classfunc">⤶
<description>⤶
Draws the entity or model.⤶
⤶
If called inside <page>ENTITY:Draw</page> or <page>ENTITY:DrawTranslucent</page>, it only draws the entity's model itself.⤶
⤶
⤶
If called outside of those hooks, it will call both of said hooks depending on <page>Entity:GetRenderGroup</page>, drawing the entire entity again.⤶
⤶
<note>When drawing an entity more than once per frame in different positions, you should call <page>Entity:SetupBones</page> before each draw; Otherwise, the entity will retain its first drawn position.</note>⤶
⤶
<rendercontext hook="false" type="3D"/>⤶
⤶
<bug issue="1558">Calling this on entities with [EF_BONEMERGE](/gmod/Enums/EF) and [EF_NODRAW](/gmod/Enums/EF) applied causes a crash.</bug>⤶
⤶
<bug issue="2688">Using this with a map model (<page>game.GetWorld</page>():[GetModel](/gmod/Entity/GetModel)()) crashes the game.</bug>⤶
</description>⤶
<realm>Client</realm>⤶
</function>⤶
⤶
<example>⤶
<description>⤶
Manually draws a single <page>Global.ClientsideModel</page> on the specified bone, on the given offset for every player affected by this hook.⤶
⤶
This is useful in case you want to reuse a single model without having to create one for each player.⤶
</description>⤶
<code>⤶
local modelexample = ClientsideModel( "models/thrusters/jetpack.mdl" )⤶
modelexample:SetNoDraw( true )⤶
⤶
local offsetvec = Vector( 3, -5.6, 0 )⤶
local offsetang = Angle( 180, 90, -90 )⤶
⤶
hook.Add( "PostPlayerDraw" , "manual_model_draw_example" , function( ply )⤶
local boneid = ply:LookupBone( "ValveBiped.Bip01_Spine2" )⤶
⤶
if not boneid then⤶
return⤶
end⤶
⤶
local matrix = ply:GetBoneMatrix( boneid )⤶
⤶
if not matrix then ⤶
return ⤶
end⤶
⤶
local newpos, newang = LocalToWorld( offsetvec, offsetang, matrix:GetTranslation(), matrix:GetAngles() )⤶
⤶
modelexample:SetPos( newpos )⤶
modelexample:SetAngles( newang )⤶
modelexample:SetupBones()⤶
modelexample:DrawModel()⤶
⤶
end)⤶
</code>⤶
<output></output>⤶
⤶
</example>