function ScreenSpace.ScreenToWorldByHeightDepth(Z,N,Q,B)local Y=ScreenSpace.AspectRatio()local M=math.tan(math.rad(workspace.CurrentCamera.FieldOfView)/2)local A=Y*M local D,f=ScreenSpace.ViewSizeX(),ScreenSpace.ViewSizeY()local L=((-(Q/f)*2)*M)*B local C,V=(Z/D)*2-1,(N/f)*2-1 local n=(C*-A)*B local O=(V*M)*B return Vector3.new(n,O,B),L end
-- ScreenSpace -> WorldSpace. Taking a screen height, 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.ScreenToWorldByHeightDepth(x, y, screenHeight, 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 worldHeight = -(screenHeight / sy) * 2 * hfactor * 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), worldHeight
end
