Working on math libraries
This commit is contained in:
34
modules/MathF32.core
Normal file
34
modules/MathF32.core
Normal file
@@ -0,0 +1,34 @@
|
||||
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
|
||||
|
||||
Floor :: floorf
|
||||
Round :: roundf
|
||||
Ceil :: ceilf
|
||||
SquareRoot :: sqrtf
|
||||
Cos :: cosf
|
||||
Sin :: sinf
|
||||
|
||||
Clamp :: (min: F32, value: F32, max: F32): F32
|
||||
if value > max;; return max
|
||||
if value < min;; return min
|
||||
return value
|
||||
|
||||
ClampBottom :: (min: F32, value: F32): F32
|
||||
if value < min;; return min
|
||||
return value
|
||||
|
||||
Absolute :: (val: F32): F32
|
||||
if val < 0;; return -val
|
||||
return val
|
||||
|
||||
Min :: (a: F32, b: F32): F32
|
||||
if a > b ;; return b
|
||||
return a
|
||||
|
||||
Max :: (a: F32, b: F32): F32
|
||||
if a > b ;; return a
|
||||
return b
|
||||
@@ -1,10 +1,3 @@
|
||||
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
|
||||
@@ -37,21 +30,3 @@ Vec2 :: struct;; x: F32; y: F32
|
||||
|
||||
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
|
||||
@@ -1,4 +1,4 @@
|
||||
#import "Math.core"
|
||||
#import "MathF32.core"
|
||||
|
||||
Vec3 :: struct ;; x: F32; y: F32; z: F32
|
||||
Length :: (a: Vec3): F32 ;; return sqrtf(a.x*a.x + a.y*a.y + a.z*a.z)
|
||||
@@ -36,9 +36,9 @@ Reflect :: (a: Vec3, normal: Vec3): Vec3
|
||||
return result
|
||||
|
||||
ConvertToARGB :: (a: Vec3): U32
|
||||
a.x = F32_Clamp(0, a.x, 1)
|
||||
a.y = F32_Clamp(0, a.y, 1)
|
||||
a.z = F32_Clamp(0, a.z, 1)
|
||||
a.x = Clamp(0, a.x, 1)
|
||||
a.y = Clamp(0, a.y, 1)
|
||||
a.z = Clamp(0, a.z, 1)
|
||||
r := (a.x * 255)->U32 << 16
|
||||
g := (a.y * 255)->U32 << 8
|
||||
b := (a.z * 255)->U32 << 0
|
||||
|
||||
@@ -58,6 +58,7 @@ Mouse :: struct
|
||||
wheel: S64
|
||||
|
||||
#import "Base.core"
|
||||
#import "Math.core"
|
||||
#import "MathF32.core"
|
||||
#import "MathVec2.core"
|
||||
#import "Arena.core"
|
||||
#load "$os_multimedia.core"
|
||||
|
||||
@@ -163,6 +163,7 @@ UpdateMultimedia :: (): Bool
|
||||
Mu.window.y = size.y
|
||||
Mu.window.sizef.x = Mu.window.x->F32
|
||||
Mu.window.sizef.y = Mu.window.y->F32
|
||||
Mu.window.size = size
|
||||
|
||||
|
||||
Mu.frame_count += 1
|
||||
@@ -186,6 +187,7 @@ UpdateMultimedia :: (): Bool
|
||||
WindowProc :: (hwnd: HWND, msg: UINT, wparam: WPARAM, lparam: LPARAM): LRESULT
|
||||
result: LRESULT
|
||||
if msg == WM_DESTROY
|
||||
// @todo: Add destroy window
|
||||
PostQuitMessage(0)
|
||||
return 0
|
||||
elif msg == WM_KEYDOWN || msg == WM_SYSKEYDOWN
|
||||
|
||||
Reference in New Issue
Block a user