summaryrefslogtreecommitdiffhomepage
path: root/include/rodeo/math
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2023-06-16 01:15:57 -0400
committerrealtradam <[email protected]>2023-06-16 01:15:57 -0400
commit94625b3133193acd22b68595fe922b7228528b11 (patch)
treef7e358545f5043df20695d0cf51dcf8caa10cb12 /include/rodeo/math
parentacc9db32d765728b63162d6fc74a278d0da10b83 (diff)
downloadRodeoKit-94625b3133193acd22b68595fe922b7228528b11.tar.gz
RodeoKit-94625b3133193acd22b68595fe922b7228528b11.zip
fix matrix wrapper as well as a lot of refactoring cleanupmatrixtemp
Diffstat (limited to 'include/rodeo/math')
-rw-r--r--include/rodeo/math/mat4_t.h1
-rw-r--r--include/rodeo/math/rng.h48
-rw-r--r--include/rodeo/math/rng_t.h16
-rw-r--r--include/rodeo/math/vec2_t.h8
-rw-r--r--include/rodeo/math/vec3_t.h8
5 files changed, 80 insertions, 1 deletions
diff --git a/include/rodeo/math/mat4_t.h b/include/rodeo/math/mat4_t.h
index 2893444..e00656c 100644
--- a/include/rodeo/math/mat4_t.h
+++ b/include/rodeo/math/mat4_t.h
@@ -1,6 +1,5 @@
#pragma once
-
typedef
struct
{
diff --git a/include/rodeo/math/rng.h b/include/rodeo/math/rng.h
new file mode 100644
index 0000000..53f1f76
--- /dev/null
+++ b/include/rodeo/math/rng.h
@@ -0,0 +1,48 @@
+#pragma once
+
+// -- internal --
+#include "rodeo/math/rng_t.h"
+
+// -- system --
+#include <inttypes.h>
+
+void
+rodeo_math_rng_init(void);
+
+void
+rodeo_math_rng_deinit(void);
+
+rodeo_math_rng_generator_t
+rodeo_math_rng_generator_create(uint64_t seed);
+
+void
+rodeo_math_rng_generator_destroy(rodeo_math_rng_generator_t generator);
+
+double
+rodeo_math_rng_double_get(rodeo_math_rng_generator_t generator);
+
+#define irodeo_math_rng_double_get_default() rodeo_math_rng_double_get((rodeo_math_rng_generator_t){0})
+
+float
+rodeo_math_rng_float_get(rodeo_math_rng_generator_t generator);
+
+#define irodeo_math_rng_float_get_default() rodeo_math_rng_float_get((rodeo_math_rng_generator_t){0})
+
+uint64_t
+rodeo_math_rng_uint64_get(rodeo_math_rng_generator_t generator);
+
+#define irodeo_math_rng_uint64_get_default() rodeo_math_rng_uint64_get((rodeo_math_rng_generator_t){0})
+
+uint32_t
+rodeo_math_rng_uint32_get(rodeo_math_rng_generator_t generator);
+
+#define irodeo_math_rng_uint32_get_default() rodeo_math_rng_uint32_get((rodeo_math_rng_generator_t){0})
+
+#define \
+mrodeo_math_rng_do( \
+) \
+ mrodeo_defer_do( \
+ rodeo_math_rng_init(), \
+ rodeo_math_rng_deinit() \
+ )
+
diff --git a/include/rodeo/math/rng_t.h b/include/rodeo/math/rng_t.h
new file mode 100644
index 0000000..8c527ed
--- /dev/null
+++ b/include/rodeo/math/rng_t.h
@@ -0,0 +1,16 @@
+#pragma once
+
+// -- system --
+#include <inttypes.h>
+
+typedef struct irodeo_math_rng_generator irodeo_math_rng_generator_t;
+
+typedef
+struct
+{
+ // note: a seed value of '0' is reserved for when using the
+ // global seed is desired.
+ uint64_t seed;
+ irodeo_math_rng_generator_t *data;
+}
+rodeo_math_rng_generator_t;
diff --git a/include/rodeo/math/vec2_t.h b/include/rodeo/math/vec2_t.h
index 61b941e..22717c6 100644
--- a/include/rodeo/math/vec2_t.h
+++ b/include/rodeo/math/vec2_t.h
@@ -6,4 +6,12 @@ struct
float x;
float y;
}
+rodeo_math_vec2_val_t;
+
+typedef
+union
+{
+ rodeo_math_vec2_val_t val;
+ float raw[2];
+}
rodeo_math_vec2_t;
diff --git a/include/rodeo/math/vec3_t.h b/include/rodeo/math/vec3_t.h
index 711ad98..a3b3a36 100644
--- a/include/rodeo/math/vec3_t.h
+++ b/include/rodeo/math/vec3_t.h
@@ -7,4 +7,12 @@ struct
float y;
float z;
}
+rodeo_math_vec3_val_t;
+
+typedef
+union
+{
+ rodeo_math_vec3_val_t val;
+ float raw[3];
+}
rodeo_math_vec3_t;