33 lines
844 B
Odin
33 lines
844 B
Odin
package main
|
|
|
|
import "core:math"
|
|
import "core:math/linalg"
|
|
import rl "vendor:raylib"
|
|
|
|
|
|
angle_cycle :: proc(value, min, max: f32) -> f32 {
|
|
delta := (max - min)
|
|
result := linalg.mod(value - min, delta)
|
|
if result < 0 {
|
|
result += delta
|
|
}
|
|
|
|
return min + result
|
|
}
|
|
|
|
angle_rotate :: proc(angle, target, speed: f32) -> f32 {
|
|
diff := angle_cycle(target - angle, -math.PI, math.PI)
|
|
if diff < -speed {return angle - speed}
|
|
if diff > speed {return angle + speed}
|
|
return target
|
|
}
|
|
|
|
get_vec_from_angle :: proc(angle: f32) -> vec3 {
|
|
return rl.Vector3RotateByAxisAngle(vec3right, vec3backward, angle)
|
|
}
|
|
|
|
draw_text_centered :: proc(font: rl.Font, text: cstring, pos: vec2, size: f32) {
|
|
text_size := rl.MeasureTextEx(font, text, size, 1)
|
|
rl.DrawTextPro(font, text, pos, text_size / 2, 0, size, 1, rl.BLACK)
|
|
}
|