Revision Difference
DModelPanel:SetCamPos#517322
<function name="SetCamPos" parent="DModelPanel" type="panelfunc">
<ispanel>yes</ispanel>
<description>Sets the position of the camera.</description>
<realm>Client</realm>
<args>
<arg name="pos" type="Vector">The position to set the camera at.</arg>
</args>
</function>
<example>
<description>Creates a model panel focused on Gman's face while he adjusts his tie.</description>
<code>
BGPanel = vgui.Create("DPanel")
BGPanel:SetPos(20, 20)
BGPanel:SetSize(200, 200)
BGPanel:SetBackgroundColor(Color(0, 0, 0, 255))
local mdl = vgui.Create("DModelPanel", BGPanel)
mdl:SetSize(BGPanel:GetSize())
mdl:SetModel("models/player/gman_high.mdl")
function mdl:LayoutEntity(ent)
ent:SetSequence(ent:LookupSequence("menu_gman"))
mdl:RunAnimation()
return
end
local eyepos = mdl.Entity:GetBonePosition(mdl.Entity:LookupBone("ValveBiped.Bip01_Head1"))
eyepos:Add(Vector(0, 0, 2)) -- Move up slightly
mdl:SetLookAt(eyepos)
mdl:SetCamPos(eyepos-Vector(-12, 0, 0)) -- Move cam in front of eyes
mdl.Entity:SetEyeTarget(eyepos-Vector(-12, 0, 0))
</code>
<output></output>⤶
<output><image src="DModelPanel_SetCamPos_example1.jpg"/></output>⤶
</example>
<example>
<description>Sets a model panel's camera position so the model won't go outside it</description>
<code>
local mdlpnl = vgui.Create( "DModelPanel" )
local mn, mx = mdlpnl.Entity:GetRenderBounds()
local size = 0
size = math.max( size, math.abs(mn.x) + math.abs(mx.x) )
size = math.max( size, math.abs(mn.y) + math.abs(mx.y) )
size = math.max( size, math.abs(mn.z) + math.abs(mx.z) )
mdlpnl:SetFOV( 45 )
mdlpnl:SetCamPos( Vector( size, size, size ) )
mdlpnl:SetLookAt( (mn + mx) * 0.5 )
</code>
</example>