using Bon; using System; namespace GlitchyEngine.Math; [BonTarget] [Vector] [ComparableVector] [VectorMath] [SwizzleVector(2, "GlitchyEngine.Math.int")] public struct int2 { public const int2 Zero = .(0, 0); public const int2 UnitX = .(1, 0); public const int2 UnitY = .(0, 1); public const int2 One = .(1, 1); public static implicit operator float2(int2 value) { return float2(value.X, value.Y); } public static explicit operator uint2(int2 value) { return uint2((uint32)value.X, (uint32)value.Y); } } [BonTarget] [Vector] [ComparableVector] [VectorMath] [SwizzleVector(3, "GlitchyEngine.Math.int")] public struct int3 { public const int3 Zero = .(0, 0, 0); public const int3 UnitX = .(1, 0, 0); public const int3 UnitY = .(0, 1, 0); public const int3 UnitZ = .(0, 0, 1); public const int3 One = .(1, 1, 1); public static implicit operator float3(int3 value) { return float3(value.X, value.Y, value.Z); } public static explicit operator uint3(int3 value) { return uint3((uint32)value.X, (uint32)value.Y, (uint32)value.Z); } } [BonTarget] [Vector] [ComparableVector] [VectorMath] [SwizzleVector(4, "GlitchyEngine.Math.int")] public struct int4 { public const int4 Zero = .(0, 0, 0, 0); public const int4 UnitX = .(1, 0, 0, 0); public const int4 UnitY = .(0, 1, 0, 0); public const int4 UnitZ = .(0, 0, 1, 0); public const int4 UnitW = .(0, 0, 0, 1); public const int4 One = .(1, 1, 1, 1); public static implicit operator float4(int4 value) { return float4(value.X, value.Y, value.Z, value.W); } public static explicit operator uint4(int4 value) { return uint4((uint32)value.X, (uint32)value.Y, (uint32)value.Z, (uint32)value.W); } } [BonTarget] [Vector] [ComparableVector] //[VectorMath] [SwizzleVector(2, "GlitchyEngine.Math.uint")] public struct uint2 { public const uint2 Zero = .(0, 0); public const uint2 UnitX = .(1, 0); public const uint2 UnitY = .(0, 1); public const uint2 One = .(1, 1); public static implicit operator float2(uint2 value) { return float2(value.X, value.Y); } public static explicit operator int2(uint2 value) { return int2((int32)value.X, (int32)value.Y); } } [BonTarget] [Vector] [ComparableVector] //[VectorMath] [SwizzleVector(3, "GlitchyEngine.Math.uint")] public struct uint3 { public const uint3 Zero = .(0, 0, 0); public const uint3 UnitX = .(1, 0, 0); public const uint3 UnitY = .(0, 1, 0); public const uint3 UnitZ = .(0, 0, 1); public const uint3 One = .(1, 1, 1); public static implicit operator float3(uint3 value) { return float3(value.X, value.Y, value.Z); } public static explicit operator int3(uint3 value) { return int3((int32)value.X, (int32)value.Y, (int32)value.Z); } } [BonTarget] [Vector] [ComparableVector] //[VectorMath] [SwizzleVector(4, "GlitchyEngine.Math.uint")] public struct uint4 { public const uint4 Zero = .(0, 0, 0, 0); public const uint4 UnitX = .(1, 0, 0, 0); public const uint4 UnitY = .(0, 1, 0, 0); public const uint4 UnitZ = .(0, 0, 1, 0); public const uint4 UnitW = .(0, 0, 0, 1); public const uint4 One = .(1, 1, 1, 1); public static implicit operator float4(uint4 value) { return float4(value.X, value.Y, value.Z, value.W); } public static explicit operator int4(uint4 value) { return int4((int32)value.X, (int32)value.Y, (int32)value.Z, (int32)value.W); } }