diff options
| author | 0scar <qgt268@alumni.ku.dk> | 2024-02-06 09:48:05 +0000 |
|---|---|---|
| committer | 0scar <qgt268@alumni.ku.dk> | 2024-02-06 09:48:05 +0000 |
| commit | 3705b14a4b2ac0d6baa418f08991424cfad89891 (patch) | |
| tree | e66853908357fb02deee6718a3bc0aedd3736c7a /src/utils/include/engine/utils.h | |
| parent | d52bd1c709456164b167cc7389b641b690c97ee5 (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.h | 36 |
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 |
