BF = BF or {} BF.Vector3 = function(x, y, z) return {x = x, y = y, z = z} end BF.Vector4 = function(x, y, z, w) return {x = x, y = y, z = z, w = w} end BF.Vector2 = function(x, y) return {x = x, y = y} end BF.Vector2Zero = CS.UnityEngine.Vector2(0, 0) BF.Vector3Zero = CS.UnityEngine.Vector3(0, 0, 0) BF.Vector3Right = CS.UnityEngine.Vector3(1, 0, 0) BF.Vector3Up = CS.UnityEngine.Vector3(0, 1, 0) BF.Vector3Forward = CS.UnityEngine.Vector3(0, 0, 1) BF.Color = function(r, g, b, a) return {r = r, g = g, b = b, a = a} end BF.ColorWhite = CS.UnityEngine.Color(1, 1, 1, 1) BF.ColorPurple = CS.UnityEngine.Color(1, 0, 1, 1) BF.ColorWhiteAlpha = CS.UnityEngine.Color(1, 1, 1, 0) BF.ColorBlack = CS.UnityEngine.Color(0, 0, 0, 1) BF.ColorBlackAlpha = CS.UnityEngine.Color(0, 0, 0, 0) BF.Vector2Cross = function (l, r) return l.x * r.y - l.y * r.x end BF.Vector2Dot = function (l, r) return l.x * r.x + l.y * r.y end BF.Vector2Magnitude = function(v) return math.sqrt(v.x * v.x + v.y * v.y) end BF.Vector2Normalize = function (v) local normal = BF.Vector2(0, 0) local m = BF.Vector2Magnitude(v) if m~=0 then normal.x = v.x/m normal.y = v.y/m end return normal end BF.Vector2Distance = function (v1, v2) local deltax = v2.x - v1.x local deltay = v2.y - v1.y return math.sqrt(deltax*deltax + deltay*deltay) end BF.Vector3Magnitude = function(v) return math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z) end