diff options
Diffstat (limited to 'src/utils.c')
-rw-r--r-- | src/utils.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/utils.c b/src/utils.c index 635a1f7..e49623c 100644 --- a/src/utils.c +++ b/src/utils.c @@ -1,3 +1,39 @@ #include "utils.h" +#define RANDOM_DIRECTION_UNITS 4096 + +Vector2 randomDirection2(int seed, int* nextSeed) +{ + Vector2 direction; + direction.x = FT_RANDOM16(seed) % RANDOM_DIRECTION_UNITS; + direction.y = FT_RANDOM16(seed) % RANDOM_DIRECTION_UNITS; + direction.x -= RANDOM_DIRECTION_UNITS / 2.0; + direction.y -= RANDOM_DIRECTION_UNITS / 2.0; + + if (nextSeed != NULL) + { + *nextSeed = seed; + } + + return Vector2Normalize(direction); +} + +Vector3 randomDirection3(int seed, int* nextSeed) +{ + Vector3 direction; + direction.x = FT_RANDOM16(seed) % RANDOM_DIRECTION_UNITS; + direction.y = FT_RANDOM16(seed) % RANDOM_DIRECTION_UNITS; + direction.z = FT_RANDOM16(seed) % RANDOM_DIRECTION_UNITS; + direction.x -= RANDOM_DIRECTION_UNITS / 2.0; + direction.y -= RANDOM_DIRECTION_UNITS / 2.0; + direction.z -= RANDOM_DIRECTION_UNITS / 2.0; + + if (nextSeed != NULL) + { + *nextSeed = seed; + } + + return Vector3Normalize(direction); +} + // Why does the universe feel strange to exist in? |