Expose Vector* component-wise and scalar min/max to scripting
This commit is contained in:
parent
a0b0b19043
commit
0f5e0d1637
17 changed files with 596 additions and 19 deletions
|
|
@ -69,7 +69,7 @@ namespace Godot
|
|||
public readonly Aabb Abs()
|
||||
{
|
||||
Vector3 end = End;
|
||||
Vector3 topLeft = new Vector3(Mathf.Min(_position.X, end.X), Mathf.Min(_position.Y, end.Y), Mathf.Min(_position.Z, end.Z));
|
||||
Vector3 topLeft = end.Min(_position);
|
||||
return new Aabb(topLeft, _size.Abs());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ namespace Godot
|
|||
public readonly Rect2 Abs()
|
||||
{
|
||||
Vector2 end = End;
|
||||
Vector2 topLeft = new Vector2(Mathf.Min(_position.X, end.X), Mathf.Min(_position.Y, end.Y));
|
||||
Vector2 topLeft = end.Min(_position);
|
||||
return new Rect2(topLeft, _size.Abs());
|
||||
}
|
||||
|
||||
|
|
@ -91,14 +91,12 @@ namespace Godot
|
|||
return new Rect2();
|
||||
}
|
||||
|
||||
newRect._position.X = Mathf.Max(b._position.X, _position.X);
|
||||
newRect._position.Y = Mathf.Max(b._position.Y, _position.Y);
|
||||
newRect._position = b._position.Max(_position);
|
||||
|
||||
Vector2 bEnd = b._position + b._size;
|
||||
Vector2 end = _position + _size;
|
||||
|
||||
newRect._size.X = Mathf.Min(bEnd.X, end.X) - newRect._position.X;
|
||||
newRect._size.Y = Mathf.Min(bEnd.Y, end.Y) - newRect._position.Y;
|
||||
newRect._size = bEnd.Min(end) - newRect._position;
|
||||
|
||||
return newRect;
|
||||
}
|
||||
|
|
@ -338,11 +336,9 @@ namespace Godot
|
|||
{
|
||||
Rect2 newRect;
|
||||
|
||||
newRect._position.X = Mathf.Min(b._position.X, _position.X);
|
||||
newRect._position.Y = Mathf.Min(b._position.Y, _position.Y);
|
||||
newRect._position = b._position.Min(_position);
|
||||
|
||||
newRect._size.X = Mathf.Max(b._position.X + b._size.X, _position.X + _size.X);
|
||||
newRect._size.Y = Mathf.Max(b._position.Y + b._size.Y, _position.Y + _size.Y);
|
||||
newRect._size = (b._position + b._size).Max(_position + _size);
|
||||
|
||||
newRect._size -= newRect._position; // Make relative again
|
||||
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ namespace Godot
|
|||
public readonly Rect2I Abs()
|
||||
{
|
||||
Vector2I end = End;
|
||||
Vector2I topLeft = new Vector2I(Mathf.Min(_position.X, end.X), Mathf.Min(_position.Y, end.Y));
|
||||
Vector2I topLeft = end.Min(_position);
|
||||
return new Rect2I(topLeft, _size.Abs());
|
||||
}
|
||||
|
||||
|
|
@ -91,14 +91,12 @@ namespace Godot
|
|||
return new Rect2I();
|
||||
}
|
||||
|
||||
newRect._position.X = Mathf.Max(b._position.X, _position.X);
|
||||
newRect._position.Y = Mathf.Max(b._position.Y, _position.Y);
|
||||
newRect._position = b._position.Max(_position);
|
||||
|
||||
Vector2I bEnd = b._position + b._size;
|
||||
Vector2I end = _position + _size;
|
||||
|
||||
newRect._size.X = Mathf.Min(bEnd.X, end.X) - newRect._position.X;
|
||||
newRect._size.Y = Mathf.Min(bEnd.Y, end.Y) - newRect._position.Y;
|
||||
newRect._size = bEnd.Min(end) - newRect._position;
|
||||
|
||||
return newRect;
|
||||
}
|
||||
|
|
@ -295,11 +293,9 @@ namespace Godot
|
|||
{
|
||||
Rect2I newRect;
|
||||
|
||||
newRect._position.X = Mathf.Min(b._position.X, _position.X);
|
||||
newRect._position.Y = Mathf.Min(b._position.Y, _position.Y);
|
||||
newRect._position = b._position.Min(_position);
|
||||
|
||||
newRect._size.X = Mathf.Max(b._position.X + b._size.X, _position.X + _size.X);
|
||||
newRect._size.Y = Mathf.Max(b._position.Y + b._size.Y, _position.Y + _size.Y);
|
||||
newRect._size = (b._position + b._size).Max(_position + _size);
|
||||
|
||||
newRect._size -= newRect._position; // Make relative again
|
||||
|
||||
|
|
|
|||
|
|
@ -429,6 +429,70 @@ namespace Godot
|
|||
return v;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise maximum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector2(Mathf.Max(X, with.X), Mathf.Max(Y, with.Y))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other vector to use.</param>
|
||||
/// <returns>The resulting maximum vector.</returns>
|
||||
public readonly Vector2 Max(Vector2 with)
|
||||
{
|
||||
return new Vector2
|
||||
(
|
||||
Mathf.Max(X, with.X),
|
||||
Mathf.Max(Y, with.Y)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise maximum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector2(Mathf.Max(X, with), Mathf.Max(Y, with))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other value to use.</param>
|
||||
/// <returns>The resulting maximum vector.</returns>
|
||||
public readonly Vector2 Max(real_t with)
|
||||
{
|
||||
return new Vector2
|
||||
(
|
||||
Mathf.Max(X, with),
|
||||
Mathf.Max(Y, with)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise minimum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector2(Mathf.Min(X, with.X), Mathf.Min(Y, with.Y))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other vector to use.</param>
|
||||
/// <returns>The resulting minimum vector.</returns>
|
||||
public readonly Vector2 Min(Vector2 with)
|
||||
{
|
||||
return new Vector2
|
||||
(
|
||||
Mathf.Min(X, with.X),
|
||||
Mathf.Min(Y, with.Y)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise minimum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector2(Mathf.Min(X, with), Mathf.Min(Y, with))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other value to use.</param>
|
||||
/// <returns>The resulting minimum vector.</returns>
|
||||
public readonly Vector2 Min(real_t with)
|
||||
{
|
||||
return new Vector2
|
||||
(
|
||||
Mathf.Min(X, with),
|
||||
Mathf.Min(Y, with)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the axis of the vector's highest value. See <see cref="Axis"/>.
|
||||
/// If both components are equal, this method returns <see cref="Axis.X"/>.
|
||||
|
|
|
|||
|
|
@ -191,6 +191,70 @@ namespace Godot
|
|||
return x2 + y2;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise maximum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector2I(Mathf.Max(X, with.X), Mathf.Max(Y, with.Y))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other vector to use.</param>
|
||||
/// <returns>The resulting maximum vector.</returns>
|
||||
public readonly Vector2I Max(Vector2I with)
|
||||
{
|
||||
return new Vector2I
|
||||
(
|
||||
Mathf.Max(X, with.X),
|
||||
Mathf.Max(Y, with.Y)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise maximum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector2I(Mathf.Max(X, with), Mathf.Max(Y, with))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other value to use.</param>
|
||||
/// <returns>The resulting maximum vector.</returns>
|
||||
public readonly Vector2I Max(int with)
|
||||
{
|
||||
return new Vector2I
|
||||
(
|
||||
Mathf.Max(X, with),
|
||||
Mathf.Max(Y, with)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise minimum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector2I(Mathf.Min(X, with.X), Mathf.Min(Y, with.Y))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other vector to use.</param>
|
||||
/// <returns>The resulting minimum vector.</returns>
|
||||
public readonly Vector2I Min(Vector2I with)
|
||||
{
|
||||
return new Vector2I
|
||||
(
|
||||
Mathf.Min(X, with.X),
|
||||
Mathf.Min(Y, with.Y)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise minimum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector2I(Mathf.Min(X, with), Mathf.Min(Y, with))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other value to use.</param>
|
||||
/// <returns>The resulting minimum vector.</returns>
|
||||
public readonly Vector2I Min(int with)
|
||||
{
|
||||
return new Vector2I
|
||||
(
|
||||
Mathf.Min(X, with),
|
||||
Mathf.Min(Y, with)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the axis of the vector's highest value. See <see cref="Axis"/>.
|
||||
/// If both components are equal, this method returns <see cref="Axis.X"/>.
|
||||
|
|
|
|||
|
|
@ -436,6 +436,57 @@ namespace Godot
|
|||
return v;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise maximum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector3(Mathf.Max(X, with.X), Mathf.Max(Y, with.Y), Mathf.Max(Z, with.Z))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other vector to use.</param>
|
||||
/// <returns>The resulting maximum vector.</returns>
|
||||
public readonly Vector3 Max(Vector3 with)
|
||||
{
|
||||
return new Vector3
|
||||
(
|
||||
Mathf.Max(X, with.X),
|
||||
Mathf.Max(Y, with.Y),
|
||||
Mathf.Max(Z, with.Z)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise maximum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector3(Mathf.Max(X, with), Mathf.Max(Y, with), Mathf.Max(Z, with))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other value to use.</param>
|
||||
/// <returns>The resulting maximum vector.</returns>
|
||||
public readonly Vector3 Max(real_t with)
|
||||
{
|
||||
return new Vector3
|
||||
(
|
||||
Mathf.Max(X, with),
|
||||
Mathf.Max(Y, with),
|
||||
Mathf.Max(Z, with)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise minimum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector3(Mathf.Min(X, with.X), Mathf.Min(Y, with.Y), Mathf.Min(Z, with.Z))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other vector to use.</param>
|
||||
/// <returns>The resulting minimum vector.</returns>
|
||||
public readonly Vector3 Min(Vector3 with)
|
||||
{
|
||||
return new Vector3
|
||||
(
|
||||
Mathf.Min(X, with.X),
|
||||
Mathf.Min(Y, with.Y),
|
||||
Mathf.Min(Z, with.Z)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the axis of the vector's highest value. See <see cref="Axis"/>.
|
||||
/// If all components are equal, this method returns <see cref="Axis.X"/>.
|
||||
|
|
|
|||
|
|
@ -202,6 +202,74 @@ namespace Godot
|
|||
return x2 + y2 + z2;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise maximum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector3I(Mathf.Max(X, with.X), Mathf.Max(Y, with.Y), Mathf.Max(Z, with.Z))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other vector to use.</param>
|
||||
/// <returns>The resulting maximum vector.</returns>
|
||||
public readonly Vector3I Max(Vector3I with)
|
||||
{
|
||||
return new Vector3I
|
||||
(
|
||||
Mathf.Max(X, with.X),
|
||||
Mathf.Max(Y, with.Y),
|
||||
Mathf.Max(Z, with.Z)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise maximum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector3I(Mathf.Max(X, with), Mathf.Max(Y, with), Mathf.Max(Z, with))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other value to use.</param>
|
||||
/// <returns>The resulting maximum vector.</returns>
|
||||
public readonly Vector3I Max(int with)
|
||||
{
|
||||
return new Vector3I
|
||||
(
|
||||
Mathf.Max(X, with),
|
||||
Mathf.Max(Y, with),
|
||||
Mathf.Max(Z, with)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise minimum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector3I(Mathf.Min(X, with.X), Mathf.Min(Y, with.Y), Mathf.Min(Z, with.Z))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other vector to use.</param>
|
||||
/// <returns>The resulting minimum vector.</returns>
|
||||
public readonly Vector3I Min(Vector3I with)
|
||||
{
|
||||
return new Vector3I
|
||||
(
|
||||
Mathf.Min(X, with.X),
|
||||
Mathf.Min(Y, with.Y),
|
||||
Mathf.Min(Z, with.Z)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise minimum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector3I(Mathf.Min(X, with), Mathf.Min(Y, with), Mathf.Min(Z, with))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other value to use.</param>
|
||||
/// <returns>The resulting minimum vector.</returns>
|
||||
public readonly Vector3I Min(int with)
|
||||
{
|
||||
return new Vector3I
|
||||
(
|
||||
Mathf.Min(X, with),
|
||||
Mathf.Min(Y, with),
|
||||
Mathf.Min(Z, with)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the axis of the vector's highest value. See <see cref="Axis"/>.
|
||||
/// If all components are equal, this method returns <see cref="Axis.X"/>.
|
||||
|
|
|
|||
|
|
@ -370,6 +370,78 @@ namespace Godot
|
|||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise maximum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector4(Mathf.Max(X, with.X), Mathf.Max(Y, with.Y), Mathf.Max(Z, with.Z), Mathf.Max(W, with.W))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other vector to use.</param>
|
||||
/// <returns>The resulting maximum vector.</returns>
|
||||
public readonly Vector4 Max(Vector4 with)
|
||||
{
|
||||
return new Vector4
|
||||
(
|
||||
Mathf.Max(X, with.X),
|
||||
Mathf.Max(Y, with.Y),
|
||||
Mathf.Max(Z, with.Z),
|
||||
Mathf.Max(W, with.W)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise maximum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector4(Mathf.Max(X, with), Mathf.Max(Y, with), Mathf.Max(Z, with), Mathf.Max(W, with))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other value to use.</param>
|
||||
/// <returns>The resulting maximum vector.</returns>
|
||||
public readonly Vector4 Max(real_t with)
|
||||
{
|
||||
return new Vector4
|
||||
(
|
||||
Mathf.Max(X, with),
|
||||
Mathf.Max(Y, with),
|
||||
Mathf.Max(Z, with),
|
||||
Mathf.Max(W, with)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise minimum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector4(Mathf.Min(X, with.X), Mathf.Min(Y, with.Y), Mathf.Min(Z, with.Z), Mathf.Min(W, with.W))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other vector to use.</param>
|
||||
/// <returns>The resulting minimum vector.</returns>
|
||||
public readonly Vector4 Min(Vector4 with)
|
||||
{
|
||||
return new Vector4
|
||||
(
|
||||
Mathf.Min(X, with.X),
|
||||
Mathf.Min(Y, with.Y),
|
||||
Mathf.Min(Z, with.Z),
|
||||
Mathf.Min(W, with.W)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise minimum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector4(Mathf.Min(X, with), Mathf.Min(Y, with), Mathf.Min(Z, with), Mathf.Min(W, with))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other value to use.</param>
|
||||
/// <returns>The resulting minimum vector.</returns>
|
||||
public readonly Vector4 Min(real_t with)
|
||||
{
|
||||
return new Vector4
|
||||
(
|
||||
Mathf.Min(X, with),
|
||||
Mathf.Min(Y, with),
|
||||
Mathf.Min(Z, with),
|
||||
Mathf.Min(W, with)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the axis of the vector's highest value. See <see cref="Axis"/>.
|
||||
/// If all components are equal, this method returns <see cref="Axis.X"/>.
|
||||
|
|
|
|||
|
|
@ -222,6 +222,78 @@ namespace Godot
|
|||
return x2 + y2 + z2 + w2;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise maximum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector4I(Mathf.Max(X, with.X), Mathf.Max(Y, with.Y), Mathf.Max(Z, with.Z), Mathf.Max(W, with.W))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other vector to use.</param>
|
||||
/// <returns>The resulting maximum vector.</returns>
|
||||
public readonly Vector4I Max(Vector4I with)
|
||||
{
|
||||
return new Vector4I
|
||||
(
|
||||
Mathf.Max(X, with.X),
|
||||
Mathf.Max(Y, with.Y),
|
||||
Mathf.Max(Z, with.Z),
|
||||
Mathf.Max(W, with.W)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise maximum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector4I(Mathf.Max(X, with), Mathf.Max(Y, with), Mathf.Max(Z, with), Mathf.Max(W, with))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other value to use.</param>
|
||||
/// <returns>The resulting maximum vector.</returns>
|
||||
public readonly Vector4I Max(int with)
|
||||
{
|
||||
return new Vector4I
|
||||
(
|
||||
Mathf.Max(X, with),
|
||||
Mathf.Max(Y, with),
|
||||
Mathf.Max(Z, with),
|
||||
Mathf.Max(W, with)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise minimum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector4I(Mathf.Min(X, with.X), Mathf.Min(Y, with.Y), Mathf.Min(Z, with.Z), Mathf.Min(W, with.W))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other vector to use.</param>
|
||||
/// <returns>The resulting minimum vector.</returns>
|
||||
public readonly Vector4I Min(Vector4I with)
|
||||
{
|
||||
return new Vector4I
|
||||
(
|
||||
Mathf.Min(X, with.X),
|
||||
Mathf.Min(Y, with.Y),
|
||||
Mathf.Min(Z, with.Z),
|
||||
Mathf.Min(W, with.W)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the result of the component-wise minimum between
|
||||
/// this vector and <paramref name="with"/>.
|
||||
/// Equivalent to <c>new Vector4I(Mathf.Min(X, with), Mathf.Min(Y, with), Mathf.Min(Z, with), Mathf.Min(W, with))</c>.
|
||||
/// </summary>
|
||||
/// <param name="with">The other value to use.</param>
|
||||
/// <returns>The resulting minimum vector.</returns>
|
||||
public readonly Vector4I Min(int with)
|
||||
{
|
||||
return new Vector4I
|
||||
(
|
||||
Mathf.Min(X, with),
|
||||
Mathf.Min(Y, with),
|
||||
Mathf.Min(Z, with),
|
||||
Mathf.Min(W, with)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the axis of the vector's highest value. See <see cref="Axis"/>.
|
||||
/// If all components are equal, this method returns <see cref="Axis.X"/>.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue