Rotate entity around point

I’m probably missing something obvious, but I want to rotate an entity around a point, like a door, rather than around its origin.


local function RotateAroundPoint( ent, p, axis, amt )
	local np, pos, ang, c
	
	c = ent:OBBCenter( )
	
	pos = ent:GetRenderOrigin( )
	np = pos - p
	
	ang = ent:GetAngles( ) * 1
	
	ang:RotateAroundAxis( axis, amt )
	
	ent:SetPos( np )
	ent:SetRenderAngles( ang )
	ent:SetRenderOrigin( np + p )
end

Normally, you would translate to the point you want to rotate around ( -p ), do your rotation, and then translate back ( +p ), but this leads to me just having it rotate around the entity’s origin.