summaryrefslogtreecommitdiff
path: root/src/util/vector.h
diff options
context:
space:
mode:
authoraura <nw@moneybot.cc>2026-08-11 19:10:16 +0200
committeraura <nw@moneybot.cc>2026-08-11 19:10:16 +0200
commit17c07b5f884453130d8be3a6d91d730d80d4f8ae (patch)
tree6ec11e5e5f7f0be9ed899196c2897aa76a907de2 /src/util/vector.h
parent1aa17de9188790f049c0edc4281597cb4e535627 (diff)
parent0a9d7ce6a0764a87766ebb23cc1ece4c26c8c678 (diff)
Merge remote-tracking branch 'origin/day'
Diffstat (limited to 'src/util/vector.h')
-rw-r--r--src/util/vector.h16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/util/vector.h b/src/util/vector.h
index 294b627..c88ccee 100644
--- a/src/util/vector.h
+++ b/src/util/vector.h
@@ -12,8 +12,9 @@ struct VEC2 {
F32 y;
VEC2() { x = y = 0.0f; }
- VEC2( F32 X, F32 Y ) { x = X; y = Y; }
VEC2( const VEC2& v ) = default;
+ template<typename T1, typename T2>
+ VEC2( T1 X, T2 Y ) { x = (F32)X; y = (F32)Y; }
bool operator==( const VEC2& v ) const { return ( x == v.x && y == v.y ); }
F32& operator[]( I32 i ) { return ( (F32*)this )[i]; }
@@ -46,9 +47,9 @@ struct VEC3 {
F32 z;
VEC3() { x = y = z = 0.0f; }
- VEC3( F32 X, F32 Y, F32 Z ) { x = X; y = Y; z = Z; }
VEC3( const VEC3& v ) = default;
-
+ template<typename T1, typename T2, typename T3>
+ VEC3( T1 X, T2 Y, T3 Z ) { x = (F32)X; y = (F32)Y; z = (F32)Z; }
VEC3( const VEC2& v ) { x = v.x; y = v.y; z = 0.f; }
bool operator==( const VEC3& v ) const { return ( x == v.x && y == v.y && z == v.z ); }
@@ -81,8 +82,9 @@ struct VEC4 {
F32 x, y, z, w;
VEC4() { x = y = z = w = 0; }
- VEC4( F32 X, F32 Y, F32 Z, F32 W ) { x = X; y = Y; z = Z; w = W; }
VEC4( const VEC4& v ) = default;
+ template <typename T1, typename T2, typename T3, typename T4>
+ VEC4( T1 X, T2 Y, T3 Z, T4 W ) { x = (F32)X; y = (F32)Y; z = (F32)Z; w = (F32)W; }
VEC4( const VEC3& v ) { x = v.x; y = v.y; z = v.z; w = 1.f; }
VEC4( const VEC2& v ) { x = v.x; y = v.y; z = 0.f; w = 1.f; }
@@ -227,19 +229,19 @@ inline void angle_vectors( const VEC3& angles, VEC3* forward, VEC3* right, VEC3*
sr = sinf( angles.z * PIRAD );
cr = cosf( angles.z * PIRAD );
- if ( forward ) {
+ if( forward ) {
forward->x = cp * cy;
forward->y = cp * sy;
forward->z = -sp;
}
- if ( right ) {
+ if( right ) {
right->x = -1 * sr * sp * cy + -1 * cr * -sy;
right->y = -1 * sr * sp * sy + -1 * cr * cy;
right->z = -1 * sr * cp;
}
- if ( up ) {
+ if( up ) {
up->x = cr * sp * cy + -sr * -sy;
up->y = cr * sp * sy + -sr * cy;
up->z = cr * cp;