32 lines
894 B
C#
32 lines
894 B
C#
|
using System.Runtime.InteropServices;
|
||
|
using LyraApi.Ecs;
|
||
|
|
||
|
namespace LyraApi.Math;
|
||
|
|
||
|
[StructLayout(LayoutKind.Sequential)]
|
||
|
struct Vec3(float x, float y, float z) : IComponent
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// The X component.
|
||
|
/// </summary>
|
||
|
public float X { get; set; } = x;
|
||
|
/// <summary>
|
||
|
/// The Y component
|
||
|
/// </summary>
|
||
|
public float Y { get; set; } = y;
|
||
|
/// <summary>
|
||
|
/// The Z component
|
||
|
/// </summary>
|
||
|
public float Z { get; set; } = z;
|
||
|
|
||
|
public static string HostName => "Vec3";
|
||
|
public static ulong HostSize => (ulong)Marshal.SizeOf<Vec3>();
|
||
|
public static ulong HostAlignment => (ulong)MarshalUtils.AlignmentOf<Vec3>();
|
||
|
public static ulong TypeId => 4124409524;
|
||
|
|
||
|
public static object? TakeFromBytes(byte[] bytes)
|
||
|
{
|
||
|
byte[] taken = bytes.Take((int)HostSize).ToArray();
|
||
|
return MarshalUtils.FromBytes<Vec3>(taken);
|
||
|
}
|
||
|
}
|