Basic universe management, generation and simulation flow
This commit is contained in:
parent
4c078dbede
commit
78fceeb95e
29 changed files with 664 additions and 29 deletions
101
scripts/Vector3Dec.cs
Normal file
101
scripts/Vector3Dec.cs
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
using System;
|
||||
using Godot;
|
||||
|
||||
public class Vector3Dec(decimal x, decimal y, decimal z)
|
||||
{
|
||||
public static Vector3Dec Zero { get; } = new(0, 0, 0);
|
||||
|
||||
public decimal X { get; } = x;
|
||||
public decimal Y { get; } = y;
|
||||
public decimal Z { get; } = z;
|
||||
|
||||
public Vector3 ToVector3()
|
||||
{
|
||||
return new((double)X, (double)Y, (double)Z);
|
||||
}
|
||||
|
||||
public static Vector3Dec operator +(Vector3Dec vec1, Vector3Dec vec2)
|
||||
{
|
||||
return new(vec1.X + vec2.X, vec1.Y + vec2.Y, vec1.Z + vec2.Z);
|
||||
}
|
||||
|
||||
public static Vector3Dec operator -(Vector3Dec vec1, Vector3Dec vec2)
|
||||
{
|
||||
return new(vec1.X - vec2.X, vec1.Y - vec2.Y, vec1.Z - vec2.Z);
|
||||
}
|
||||
|
||||
public static Vector3Dec operator *(Vector3Dec vec1, Vector3Dec vec2)
|
||||
{
|
||||
return new(vec1.X * vec2.X, vec1.Y * vec2.Y, vec1.Z * vec2.Z);
|
||||
}
|
||||
|
||||
public static Vector3Dec operator /(Vector3Dec vec1, Vector3Dec vec2)
|
||||
{
|
||||
return new(vec1.X / vec2.X, vec1.Y / vec2.Y, vec1.Z / vec2.Z);
|
||||
}
|
||||
|
||||
public static Vector3Dec operator +(Vector3Dec vec, decimal value)
|
||||
{
|
||||
return new(vec.X + value, vec.Y + value, vec.Z + value);
|
||||
}
|
||||
|
||||
public static Vector3Dec operator +(decimal value, Vector3Dec vec)
|
||||
{
|
||||
return vec + value;
|
||||
}
|
||||
|
||||
public static Vector3Dec operator -(Vector3Dec vec, decimal value)
|
||||
{
|
||||
return new(vec.X - value, vec.Y - value, vec.Z - value);
|
||||
}
|
||||
|
||||
public static Vector3Dec operator -(decimal value, Vector3Dec vec)
|
||||
{
|
||||
return vec - value;
|
||||
}
|
||||
|
||||
public static Vector3Dec operator *(Vector3Dec vec, decimal value)
|
||||
{
|
||||
return new(vec.X * value, vec.Y * value, vec.Z * value);
|
||||
}
|
||||
|
||||
public static Vector3Dec operator *(decimal value, Vector3Dec vec)
|
||||
{
|
||||
return vec * value;
|
||||
}
|
||||
|
||||
public static Vector3Dec operator /(Vector3Dec vec, decimal value)
|
||||
{
|
||||
return new(vec.X / value, vec.Y / value, vec.Z / value);
|
||||
}
|
||||
|
||||
public static Vector3Dec operator /(decimal value, Vector3Dec vec)
|
||||
{
|
||||
return vec / value;
|
||||
}
|
||||
|
||||
public static Vector3Dec operator -(Vector3Dec vec)
|
||||
{
|
||||
return new(-vec.X, -vec.Y, -vec.Z);
|
||||
}
|
||||
|
||||
public static bool operator ==(Vector3Dec vec1, Vector3Dec vec2)
|
||||
{
|
||||
return vec1.X == vec2.X && vec1.Y == vec2.Y && vec1.Z == vec2.Z;
|
||||
}
|
||||
|
||||
public static bool operator !=(Vector3Dec vec1, Vector3Dec vec2)
|
||||
{
|
||||
return !(vec1 == vec2);
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return obj != null && obj is Vector3Dec vec && this == vec;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(X, Y, Z);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue