From 6f1f30bd53c6b739649077bfef3d47134c502d04 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Thu, 16 Oct 2025 14:38:27 +0300 Subject: [PATCH] feat: intervectoral implicit conversions added --- Engine.Core/Primitives/Vector2D.cs | 1 + Engine.Core/Primitives/Vector2DInt.cs | 1 + Engine.Core/Primitives/Vector3D.cs | 1 + Engine.Core/Primitives/Vector3DInt.cs | 1 + 4 files changed, 4 insertions(+) diff --git a/Engine.Core/Primitives/Vector2D.cs b/Engine.Core/Primitives/Vector2D.cs index 751e1c1..6009875 100644 --- a/Engine.Core/Primitives/Vector2D.cs +++ b/Engine.Core/Primitives/Vector2D.cs @@ -84,6 +84,7 @@ public readonly struct Vector2D(float x, float y) : IEquatable public static implicit operator System.Numerics.Vector2(Vector2D vector) => new(vector.X, vector.Y); public static implicit operator Vector2D(System.Numerics.Vector2 vector) => new(vector.X, vector.Y); + public static implicit operator Vector2D(Vector2DInt vector) => new(vector.X, vector.Y); public static implicit operator Vector2D(Vector3D vector) => new(vector.X, vector.Y); public static implicit operator Vector2D(System.Numerics.Vector3 vector) => new(vector.X, vector.Y); diff --git a/Engine.Core/Primitives/Vector2DInt.cs b/Engine.Core/Primitives/Vector2DInt.cs index b060953..7dd5d4c 100644 --- a/Engine.Core/Primitives/Vector2DInt.cs +++ b/Engine.Core/Primitives/Vector2DInt.cs @@ -77,6 +77,7 @@ public readonly struct Vector2DInt(int x, int y) : IEquatable public static bool operator ==(Vector2DInt left, Vector2DInt right) => left.X == right.X && left.Y == right.Y; public static bool operator !=(Vector2DInt left, Vector2DInt right) => left.X != right.X || left.Y != right.Y; + public static implicit operator Vector2DInt(Vector2D vector) => new((int)vector.X, (int)vector.Y); public static implicit operator Vector2DInt(Vector3DInt vector) => new(vector.X, vector.Y); /// diff --git a/Engine.Core/Primitives/Vector3D.cs b/Engine.Core/Primitives/Vector3D.cs index b7d8c3f..71e6152 100644 --- a/Engine.Core/Primitives/Vector3D.cs +++ b/Engine.Core/Primitives/Vector3D.cs @@ -94,6 +94,7 @@ public readonly struct Vector3D(float x, float y, float z) : IEquatable new(vector.X, vector.Y, vector.Z); public static implicit operator Vector3D(System.Numerics.Vector3 vector) => new(vector.X, vector.Y, vector.Z); + public static implicit operator Vector3D(Vector3DInt vector) => new(vector.X, vector.Y, vector.Z); public static implicit operator Vector3D(Vector2D vector) => new(vector.X, vector.Y, 0f); public static implicit operator Vector3D(System.Numerics.Vector2 vector) => new(vector.X, vector.Y, 0f); diff --git a/Engine.Core/Primitives/Vector3DInt.cs b/Engine.Core/Primitives/Vector3DInt.cs index 1dbe037..319f81a 100644 --- a/Engine.Core/Primitives/Vector3DInt.cs +++ b/Engine.Core/Primitives/Vector3DInt.cs @@ -87,6 +87,7 @@ public readonly struct Vector3DInt(int x, int y, int z) : IEquatable left.X == right.X && left.Y == right.Y && left.Z == right.Z; public static bool operator !=(Vector3DInt left, Vector3DInt right) => left.X != right.X || left.Y != right.Y || left.Z != right.Z; + public static implicit operator Vector3DInt(Vector3D vector) => new((int)vector.X, (int)vector.Y, (int)vector.Z); public static implicit operator Vector3DInt(Vector2DInt vector) => new(vector.X, vector.Y, 0); ///