mirror of
https://github.com/godotengine/godot.git
synced 2026-01-06 10:11:57 +03:00
Merge pull request #31228 from aaronfranke/identity-constants
Add Basis constants and format Transform constants
This commit is contained in:
@@ -12,40 +12,6 @@ namespace Godot
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct Basis : IEquatable<Basis>
|
||||
{
|
||||
private static readonly Basis identity = new Basis
|
||||
(
|
||||
1f, 0f, 0f,
|
||||
0f, 1f, 0f,
|
||||
0f, 0f, 1f
|
||||
);
|
||||
|
||||
private static readonly Basis[] orthoBases = {
|
||||
new Basis(1f, 0f, 0f, 0f, 1f, 0f, 0f, 0f, 1f),
|
||||
new Basis(0f, -1f, 0f, 1f, 0f, 0f, 0f, 0f, 1f),
|
||||
new Basis(-1f, 0f, 0f, 0f, -1f, 0f, 0f, 0f, 1f),
|
||||
new Basis(0f, 1f, 0f, -1f, 0f, 0f, 0f, 0f, 1f),
|
||||
new Basis(1f, 0f, 0f, 0f, 0f, -1f, 0f, 1f, 0f),
|
||||
new Basis(0f, 0f, 1f, 1f, 0f, 0f, 0f, 1f, 0f),
|
||||
new Basis(-1f, 0f, 0f, 0f, 0f, 1f, 0f, 1f, 0f),
|
||||
new Basis(0f, 0f, -1f, -1f, 0f, 0f, 0f, 1f, 0f),
|
||||
new Basis(1f, 0f, 0f, 0f, -1f, 0f, 0f, 0f, -1f),
|
||||
new Basis(0f, 1f, 0f, 1f, 0f, 0f, 0f, 0f, -1f),
|
||||
new Basis(-1f, 0f, 0f, 0f, 1f, 0f, 0f, 0f, -1f),
|
||||
new Basis(0f, -1f, 0f, -1f, 0f, 0f, 0f, 0f, -1f),
|
||||
new Basis(1f, 0f, 0f, 0f, 0f, 1f, 0f, -1f, 0f),
|
||||
new Basis(0f, 0f, -1f, 1f, 0f, 0f, 0f, -1f, 0f),
|
||||
new Basis(-1f, 0f, 0f, 0f, 0f, -1f, 0f, -1f, 0f),
|
||||
new Basis(0f, 0f, 1f, -1f, 0f, 0f, 0f, -1f, 0f),
|
||||
new Basis(0f, 0f, 1f, 0f, 1f, 0f, -1f, 0f, 0f),
|
||||
new Basis(0f, -1f, 0f, 0f, 0f, 1f, -1f, 0f, 0f),
|
||||
new Basis(0f, 0f, -1f, 0f, -1f, 0f, -1f, 0f, 0f),
|
||||
new Basis(0f, 1f, 0f, 0f, 0f, -1f, -1f, 0f, 0f),
|
||||
new Basis(0f, 0f, 1f, 0f, -1f, 0f, 1f, 0f, 0f),
|
||||
new Basis(0f, 1f, 0f, 0f, 0f, 1f, 1f, 0f, 0f),
|
||||
new Basis(0f, 0f, -1f, 0f, 1f, 0f, 1f, 0f, 0f),
|
||||
new Basis(0f, -1f, 0f, 0f, 0f, -1f, 1f, 0f, 0f)
|
||||
};
|
||||
|
||||
// NOTE: x, y and z are public-only. Use Column0, Column1 and Column2 internally.
|
||||
|
||||
/// <summary>
|
||||
@@ -64,7 +30,6 @@ namespace Godot
|
||||
/// </summary>
|
||||
public Vector3 y
|
||||
{
|
||||
|
||||
get => Column1;
|
||||
set => Column1 = value;
|
||||
}
|
||||
@@ -75,7 +40,6 @@ namespace Godot
|
||||
/// </summary>
|
||||
public Vector3 z
|
||||
{
|
||||
|
||||
get => Column2;
|
||||
set => Column2 = value;
|
||||
}
|
||||
@@ -115,8 +79,6 @@ namespace Godot
|
||||
}
|
||||
}
|
||||
|
||||
public static Basis Identity => identity;
|
||||
|
||||
public Vector3 Scale
|
||||
{
|
||||
get
|
||||
@@ -361,7 +323,7 @@ namespace Godot
|
||||
|
||||
for (int i = 0; i < 24; i++)
|
||||
{
|
||||
if (orthoBases[i] == orth)
|
||||
if (orth == _orthoBases[i])
|
||||
return i;
|
||||
}
|
||||
|
||||
@@ -531,6 +493,43 @@ namespace Godot
|
||||
}
|
||||
}
|
||||
|
||||
private static readonly Basis[] _orthoBases = {
|
||||
new Basis(1f, 0f, 0f, 0f, 1f, 0f, 0f, 0f, 1f),
|
||||
new Basis(0f, -1f, 0f, 1f, 0f, 0f, 0f, 0f, 1f),
|
||||
new Basis(-1f, 0f, 0f, 0f, -1f, 0f, 0f, 0f, 1f),
|
||||
new Basis(0f, 1f, 0f, -1f, 0f, 0f, 0f, 0f, 1f),
|
||||
new Basis(1f, 0f, 0f, 0f, 0f, -1f, 0f, 1f, 0f),
|
||||
new Basis(0f, 0f, 1f, 1f, 0f, 0f, 0f, 1f, 0f),
|
||||
new Basis(-1f, 0f, 0f, 0f, 0f, 1f, 0f, 1f, 0f),
|
||||
new Basis(0f, 0f, -1f, -1f, 0f, 0f, 0f, 1f, 0f),
|
||||
new Basis(1f, 0f, 0f, 0f, -1f, 0f, 0f, 0f, -1f),
|
||||
new Basis(0f, 1f, 0f, 1f, 0f, 0f, 0f, 0f, -1f),
|
||||
new Basis(-1f, 0f, 0f, 0f, 1f, 0f, 0f, 0f, -1f),
|
||||
new Basis(0f, -1f, 0f, -1f, 0f, 0f, 0f, 0f, -1f),
|
||||
new Basis(1f, 0f, 0f, 0f, 0f, 1f, 0f, -1f, 0f),
|
||||
new Basis(0f, 0f, -1f, 1f, 0f, 0f, 0f, -1f, 0f),
|
||||
new Basis(-1f, 0f, 0f, 0f, 0f, -1f, 0f, -1f, 0f),
|
||||
new Basis(0f, 0f, 1f, -1f, 0f, 0f, 0f, -1f, 0f),
|
||||
new Basis(0f, 0f, 1f, 0f, 1f, 0f, -1f, 0f, 0f),
|
||||
new Basis(0f, -1f, 0f, 0f, 0f, 1f, -1f, 0f, 0f),
|
||||
new Basis(0f, 0f, -1f, 0f, -1f, 0f, -1f, 0f, 0f),
|
||||
new Basis(0f, 1f, 0f, 0f, 0f, -1f, -1f, 0f, 0f),
|
||||
new Basis(0f, 0f, 1f, 0f, -1f, 0f, 1f, 0f, 0f),
|
||||
new Basis(0f, 1f, 0f, 0f, 0f, 1f, 1f, 0f, 0f),
|
||||
new Basis(0f, 0f, -1f, 0f, 1f, 0f, 1f, 0f, 0f),
|
||||
new Basis(0f, -1f, 0f, 0f, 0f, -1f, 1f, 0f, 0f)
|
||||
};
|
||||
|
||||
private static readonly Basis _identity = new Basis(1, 0, 0, 0, 1, 0, 0, 0, 1);
|
||||
private static readonly Basis _flipX = new Basis(-1, 0, 0, 0, 1, 0, 0, 0, 1);
|
||||
private static readonly Basis _flipY = new Basis(1, 0, 0, 0, -1, 0, 0, 0, 1);
|
||||
private static readonly Basis _flipZ = new Basis(1, 0, 0, 0, 1, 0, 0, 0, -1);
|
||||
|
||||
public static Basis Identity { get { return _identity; } }
|
||||
public static Basis FlipX { get { return _flipX; } }
|
||||
public static Basis FlipY { get { return _flipY; } }
|
||||
public static Basis FlipZ { get { return _flipZ; } }
|
||||
|
||||
public Basis(Quat quat)
|
||||
{
|
||||
real_t s = 2.0f / quat.LengthSquared;
|
||||
|
||||
Reference in New Issue
Block a user