sqrtf :: #foreign (value: F32): F32 cosf :: #foreign (value: F32): F32 sinf :: #foreign (value: F32): F32 floorf :: #foreign (value: F32): F32 roundf :: #foreign (value: F32): F32 ceilf :: #foreign (value: F32): F32 Vec2I :: struct;; x: S64; y: S64 Vec2 :: struct;; x: F32; y: F32 "*" :: (a: Vec2, b: Vec2): Vec2 ;; return {a.x*b.x, a.y*b.y} "*" :: (a: Vec2, b: F32) : Vec2 ;; return {a.x*b, a.y*b} "*" :: (a: F32, b: Vec2) : Vec2 ;; return {a*b.x, a*b.y} "-" :: (a: Vec2, b: Vec2): Vec2 ;; return {a.x-b.x, a.y-b.y} "-" :: (a: Vec2, b: F32) : Vec2 ;; return {a.x-b, a.y-b} "-" :: (a: F32, b: Vec2) : Vec2 ;; return {a-b.x, a-b.y} "+" :: (a: Vec2, b: Vec2): Vec2 ;; return {a.x+b.x, a.y+b.y} "+" :: (a: Vec2, b: F32) : Vec2 ;; return {a.x+b, a.y+b} "+" :: (a: F32, b: Vec2) : Vec2 ;; return {a+b.x, a+b.y} "/" :: (a: Vec2, b: Vec2): Vec2 ;; return {a.x/b.x, a.y/b.y} "/" :: (a: Vec2, b: F32) : Vec2 ;; return {a.x/b, a.y/b} "/" :: (a: F32, b: Vec2) : Vec2 ;; return {a/b.x, a/b.y} "*" :: (a: Vec2I, b: Vec2I): Vec2I ;; return {a.x*b.x, a.y*b.y} "*" :: (a: Vec2I, b: S64) : Vec2I ;; return {a.x*b, a.y*b} "*" :: (a: S64, b: Vec2I) : Vec2I ;; return {a*b.x, a*b.y} "-" :: (a: Vec2I, b: Vec2I): Vec2I ;; return {a.x-b.x, a.y-b.y} "-" :: (a: Vec2I, b: S64) : Vec2I ;; return {a.x-b, a.y-b} "-" :: (a: S64, b: Vec2I) : Vec2I ;; return {a-b.x, a-b.y} "+" :: (a: Vec2I, b: Vec2I): Vec2I ;; return {a.x+b.x, a.y+b.y} "+" :: (a: Vec2I, b: S64) : Vec2I ;; return {a.x+b, a.y+b} "+" :: (a: S64, b: Vec2I) : Vec2I ;; return {a+b.x, a+b.y} "/" :: (a: Vec2I, b: Vec2I): Vec2I ;; return {a.x/b.x, a.y/b.y} "/" :: (a: Vec2I, b: S64) : Vec2I ;; return {a.x/b, a.y/b} "/" :: (a: S64, b: Vec2I) : Vec2I ;; return {a/b.x, a/b.y} FloorVec2ToVec2I :: (a: Vec2): Vec2I ;; return {floorf(a.x)->S64, floorf(a.y)->S64} CastVec2ToVec2I :: (a: Vec2): Vec2I ;; return {a.x->S64, a.y->S64} F32_Clamp :: (min: F32, value: F32, max: F32): F32 if value > max;; return max if value < min;; return min return value F32_ClampBottom :: (min: F32, value: F32): F32 if value < min;; return min return value F32_Absolute :: (val: F32): F32 if val < 0;; return -val return val F32_Min :: (a: F32, b: F32): F32 if a > b ;; return b ; return a F32_Max :: (a: F32, b: F32): F32 if a > b ;; return a ; return b