function ScreenSpace.ScreenToWorldByWidthDepth(b,Q,O,o)local w=ScreenSpace.AspectRatio()local K=math.tan(math.rad(workspace.CurrentCamera.FieldOfView)/2)local I=w*K local J,a=ScreenSpace.ViewSizeX(),ScreenSpace.ViewSizeY()local f=(((O/J)*2)*-I)*o local r,F=(b/J)*2-1,(Q/a)*2-1 local N=(r*-I)*o local n=(F*K)*o return Vector3.new(N,n,o),f end
-- ScreenSpace -> WorldSpace. Taking a screen width, and a depth to put an object
-- at, and returning a size of how big that object has to be to appear that size
-- at that depth.
function ScreenSpace.ScreenToWorldByWidthDepth(x, y, screenWidth, depth)
	local aspectRatio = ScreenSpace.AspectRatio()
	local hfactor = math.tan(math.rad(workspace.CurrentCamera.FieldOfView) / 2)
	local wfactor = aspectRatio * hfactor
	local sx, sy = ScreenSpace.ViewSizeX(), ScreenSpace.ViewSizeY()
	--
	local worldWidth = (screenWidth / sx) * 2 * -wfactor * depth
	--
	local xf, yf = x / sx * 2 - 1, y / sy * 2 - 1
	local xpos = xf * -wfactor * depth
	local ypos = yf * hfactor * depth
	--
	return Vector3.new(xpos, ypos, depth), worldWidth
end
