Updated GUI library

This commit is contained in:
2024-09-27 19:46:39 +02:00
parent 95f181be0c
commit 65c4cab8aa
6 changed files with 535 additions and 191 deletions

View File

@@ -414,6 +414,11 @@ inline v3 V3(f32 e[3])
return v3{e[0], e[1], e[2]};
}
inline v3 V3(v4 v)
{
return v3{v.x / v.w, v.y / v.w, v.z / v.w};
}
inline v3s V3S(v2s a, s32 z)
{
return {a.x, a.y, z};
@@ -475,6 +480,11 @@ inline m3 M3(m4 m)
return m3{ m.row[0].xyz, m.row[1].xyz, m.row[2].xyz };
}
inline m4 M4(m3 m)
{
return m4{ V4(m.row[0], 0), V4(m.row[1], 0), V4(m.row[2], 0), v4{0,0,0,1} };
}
// Operators
inline v2 operator+(v2 a)
@@ -1079,38 +1089,6 @@ inline v4 & operator/=(v4 &a, f32 b)
// Vector functions
inline f32 length(v2 a)
{
return sqrt(square(a.x) + square(a.y));
}
inline f32 length(v3 a)
{
return sqrt(square(a.x) + square(a.y) + square(a.z));
}
inline f32 length(v4 a)
{
return sqrt(square(a.x) + square(a.y) + square(a.z) + square(a.w));
}
inline f32 distance(v2 a, v2 b)
{
return length(a - b);
}
inline f32 distance(v3 a, v3 b)
{
return length(a - b);
}
inline f32 distance(v4 a, v4 b)
{
return length(a - b);
}
inline f32 dot(v2 a, v2 b)
{
return a.x*b.x + a.y*b.y;
@@ -1138,6 +1116,69 @@ inline v3 cross(v3 a, v3 b)
}
inline f32 length(v2 a)
{
return sqrt(dot(a,a));
}
inline f32 length(v3 a)
{
return sqrt(dot(a,a));
}
inline f32 length(v4 a)
{
return sqrt(dot(a,a));
}
inline f32 length2(v2 a)
{
return dot(a,a);
}
inline f32 length2(v3 a)
{
return dot(a,a);
}
inline f32 length2(v4 a)
{
return dot(a,a);
}
inline f32 distance(v2 a, v2 b)
{
return length(a - b);
}
inline f32 distance(v3 a, v3 b)
{
return length(a - b);
}
inline f32 distance(v4 a, v4 b)
{
return length(a - b);
}
inline f32 distance2(v2 a, v2 b)
{
return length2(a - b);
}
inline f32 distance2(v3 a, v3 b)
{
return length2(a - b);
}
inline f32 distance2(v4 a, v4 b)
{
return length2(a - b);
}
inline v2 normalize(v2 a)
{
return a / length(a);
@@ -1209,10 +1250,6 @@ inline m3 operator*(m3 a, m3 b)
result.E[2][1] = dot(a.row[2], c1);
result.E[2][2] = dot(a.row[2], c2);
result.E[3][0] = dot(a.row[3], c0);
result.E[3][1] = dot(a.row[3], c1);
result.E[3][2] = dot(a.row[3], c2);
return result;
}