Thing/packages/org.gamecult.eve.surface/Runtime/EveEntitySoaViewDocument.cs
2026-08-17 21:14:55 +02:00

98 lines
4.1 KiB
C#

using System;
using GameCult.Caching;
using MessagePack;
#nullable enable
namespace GameCult.Eve.Surface
{
[CultDocument("gamecult.eve.entity_soa_view", SchemaId)]
[MessagePackObject]
public sealed class EveEntitySoaViewDocument
{
public const string SchemaId = "gamecult.eve.entity_soa_view.v2";
[Key(0)] public string Schema { get; set; } = SchemaId;
[Key(1)] public string ProviderId { get; set; } = "";
[Key(2)] public string ViewId { get; set; } = "";
[Key(3)] public string PublishedAtUtc { get; set; } = "";
[Key(4)] public string BodySchemaId { get; set; } = "";
[Key(5)] public int LayoutVersion { get; set; }
[Key(6)] public long ProducerEpoch { get; set; }
[Key(7)] public long Sequence { get; set; }
[Key(8)] public int Capacity { get; set; }
[Key(9)] public EveEntitySoaBuffer[] Buffers { get; set; } = Array.Empty<EveEntitySoaBuffer>();
[Key(10)] public EveEntitySoaColumn[] Columns { get; set; } = Array.Empty<EveEntitySoaColumn>();
[Key(11)] public EveEntitySoaDirtyRange[] DirtyRanges { get; set; } = Array.Empty<EveEntitySoaDirtyRange>();
[Key(12)] public EveEntityRenderGroup[] RenderGroups { get; set; } = Array.Empty<EveEntityRenderGroup>();
[Key(13)] public EveEntityIdentity[] Identities { get; set; } = Array.Empty<EveEntityIdentity>();
[Key(14)] public long FrameId { get; set; }
}
[MessagePackObject]
public sealed class EveEntitySoaBuffer
{
[Key(0)] public string BufferId { get; set; } = "";
[Key(1)] public long ByteOffset { get; set; }
[Key(2)] public long ByteLength { get; set; }
}
[MessagePackObject]
public sealed class EveEntitySoaColumn
{
[Key(0)] public string ColumnId { get; set; } = "";
[Key(1)] public string Semantic { get; set; } = "";
[Key(2)] public string BufferId { get; set; } = "";
[Key(3)] public string ScalarType { get; set; } = "";
[Key(4)] public long ByteOffset { get; set; }
[Key(5)] public int ElementStride { get; set; }
[Key(6)] public int ElementCount { get; set; }
[Key(7)] public string Unit { get; set; } = "";
[Key(8)] public string CoordinateSpace { get; set; } = "";
}
[MessagePackObject]
public sealed class EveEntitySoaDirtyRange
{
[Key(0)] public string ColumnId { get; set; } = "";
[Key(1)] public int StartIndex { get; set; }
[Key(2)] public int Count { get; set; }
[Key(3)] public long Sequence { get; set; }
}
[MessagePackObject]
public sealed class EveEntityIdentity
{
[Key(0)] public int Index { get; set; }
[Key(1)] public string EntityId { get; set; } = "";
[Key(2)] public string EntityKind { get; set; } = "";
[Key(3)] public string Label { get; set; } = "";
[Key(4)] public string Faction { get; set; } = "";
[Key(5)] public bool Selectable { get; set; }
[Key(6)] public bool Controllable { get; set; }
[Key(7)] public string AssetRef { get; set; } = "";
}
[MessagePackObject]
public sealed class EveEntityRenderGroup
{
[Key(0)] public int GroupId { get; set; }
[Key(1)] public string MeshAssetRef { get; set; } = "";
[Key(2)] public string MaterialAssetRef { get; set; } = "";
[Key(3)] public int SubMeshIndex { get; set; }
[Key(4)] public int Layer { get; set; }
[Key(5)] public int InstanceCount { get; set; }
[Key(6)] public float DefaultScale { get; set; } = 1f;
[Key(7)] public float BoundsCenterX { get; set; }
[Key(8)] public float BoundsCenterY { get; set; }
[Key(9)] public float BoundsCenterZ { get; set; }
[Key(10)] public float BoundsSizeX { get; set; }
[Key(11)] public float BoundsSizeY { get; set; }
[Key(12)] public float BoundsSizeZ { get; set; }
[Key(13)] public string ShadowMode { get; set; } = "on";
[Key(14)] public bool ReceiveShadows { get; set; } = true;
[Key(15)] public int Lod { get; set; } = -1;
}
}