48 lines
994 B
C
48 lines
994 B
C
/**
|
|
* Copyright (c) 2025 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#include "direction.h"
|
|
#include "assert/assert.h"
|
|
|
|
float_t directionToAngle(const direction_t dir) {
|
|
switch(dir) {
|
|
case DIRECTION_NORTH: return (M_PI_2);
|
|
case DIRECTION_SOUTH: return -(M_PI_2);
|
|
case DIRECTION_EAST: return 0;
|
|
case DIRECTION_WEST: return (M_PI);
|
|
default: return 0; // Should never happen
|
|
}
|
|
}
|
|
|
|
void directionGetVec2(const direction_t dir, vec2 out) {
|
|
assertNotNull(out, "Output vector cannot be NULL");
|
|
|
|
switch(dir) {
|
|
case DIRECTION_NORTH:
|
|
out[0] = 0.0f;
|
|
out[1] = 1.0f;
|
|
break;
|
|
|
|
case DIRECTION_SOUTH:
|
|
out[0] = 0.0f;
|
|
out[1] = -1.0f;
|
|
break;
|
|
|
|
case DIRECTION_EAST:
|
|
out[0] = 1.0f;
|
|
out[1] = 0.0f;
|
|
break;
|
|
|
|
case DIRECTION_WEST:
|
|
out[0] = -1.0f;
|
|
out[1] = 0.0f;
|
|
break;
|
|
|
|
default:
|
|
assertUnreachable("Invalid direction");
|
|
}
|
|
} |