Garry's Mod Wiki

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>