local PANEL = {}

function PANEL:SetModel(strModelName)
	if IsValid(self.Entity) then
		self.Entity:Remove()
		self.Entity = nil		
	end

	if not ClientsideModel then return end
	
	self.Entity = ClientsideModel(strModelName, RENDER_GROUP_OPAQUE_ENTITY)
	if not IsValid(self.Entity) then return end

	self.Entity:SetNoDraw(true)

	local iSeq = self.Entity:LookupSequence("walk")
	if iSeq <= 0 then iSeq = self.Entity:LookupSequence("Run1") end
	if iSeq <= 0 then iSeq = self.Entity:LookupSequence("walk_all") end
	if iSeq <= 0 then iSeq = self.Entity:LookupSequence("WalkUnarmed_all") end
	if iSeq <= 0 then iSeq = self.Entity:LookupSequence("walk_all_moderate") end
	if iSeq > 0 then self.Entity:ResetSequence(iSeq) end
end

function PANEL:AutoCam()
	if IsValid(self.Entity) then
		local mins, maxs = self.Entity:GetRenderBounds()
		self:SetCamPos(mins:Distance(maxs) * Vector(0.75, 0.75, 0.5))
		self:SetLookAt((mins + maxs) / 2)
	end
end

vgui.Register("DModelPanelEx", PANEL, "DModelPanel")