summaryrefslogtreecommitdiff
path: root/src/utils/include/engine/utils.h
diff options
context:
space:
mode:
author0scar <qgt268@alumni.ku.dk>2024-02-06 09:48:05 +0000
committer0scar <qgt268@alumni.ku.dk>2024-02-06 09:48:05 +0000
commit3705b14a4b2ac0d6baa418f08991424cfad89891 (patch)
treee66853908357fb02deee6718a3bc0aedd3736c7a /src/utils/include/engine/utils.h
parentd52bd1c709456164b167cc7389b641b690c97ee5 (diff)
Works on my machine
Albeit when compiled twice :)
Diffstat (limited to 'src/utils/include/engine/utils.h')
-rw-r--r--src/utils/include/engine/utils.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/utils/include/engine/utils.h b/src/utils/include/engine/utils.h
new file mode 100644
index 0000000..d10a03a
--- /dev/null
+++ b/src/utils/include/engine/utils.h
@@ -0,0 +1,36 @@
+#ifndef ENGINE_UTILS_H
+#define ENGINE_UTILS_H
+
+#include <engine/core/types.h>
+#include <engine/utils/vector.h>
+
+#define MIN(a, b) ((a < b) ? (a) : (b))
+#define MAX(a, b) ((a > b) ? (a) : (b))
+
+#define MASK_TL (1 << 0)
+#define MASK_T (1 << 1)
+#define MASK_TR (1 << 2)
+#define MASK_L (1 << 3)
+#define MASK_C (1 << 4)
+#define MASK_R (1 << 5)
+#define MASK_BL (1 << 6)
+#define MASK_B (1 << 7)
+#define MASK_BR (1 << 8)
+
+/* Linear interpolate */
+f32 lerp(f32 dt, f32 a, f32 b);
+i32 int_lerp(f32 dt, i32 a, i32 b);
+
+/* Hashes */
+u32 hash(char* str);
+
+/* Masks surrounding tiles of a kernel size of 3x3 */
+/* In reality we only need 9 bits for this, but I think I had a reason for using
+ * i32 */
+i32* kernmap(const void* map, i32* dstmap, const v2_i32 mapsize,
+ predicate_t* predicate);
+
+/* Returns an index from the given weights. */
+i32 pick_from_sample(const i32* weights, i32 len);
+
+#endif