diff --git a/plugins/eve-plugin-fields/GameCult.Eve.PluginFields.csproj b/plugins/eve-plugin-fields/GameCult.Eve.PluginFields.csproj index bc496e6..74057f1 100644 --- a/plugins/eve-plugin-fields/GameCult.Eve.PluginFields.csproj +++ b/plugins/eve-plugin-fields/GameCult.Eve.PluginFields.csproj @@ -4,7 +4,13 @@ enable latest Runtime-neutral C# contracts for gamecult.fields documents. + $(MSBuildThisFileDirectory)..\..\..\CultLib GameCult.Eve.PluginFields - 0.1.1 + 0.2.0 + + + + + diff --git a/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/Runtime/EveFieldsDocuments.cs b/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/Runtime/EveFieldsDocuments.cs new file mode 100644 index 0000000..b1f6189 --- /dev/null +++ b/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/Runtime/EveFieldsDocuments.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using GameCult.Caching; +using MessagePack; + +namespace GameCult.Eve.PluginFields +{ + [CultDocument("gamecult.fields.splats", EveFieldsSchemas.Splats)] + [MessagePackObject] + public sealed class EveFieldsSplatsDocument : IEveFieldsSplatsDocument + { + [Key(0)] public string Schema { get; set; } = EveFieldsSchemas.Splats; + [Key(1)] public long FrameId { get; set; } + [Key(2)] public string PublishedAtUtc { get; set; } = ""; + [Key(3)] public double SimulationTimeSeconds { get; set; } + [Key(4)] public string RunId { get; set; } = ""; + [Key(5)] public int ZoneIndex { get; set; } + [Key(6)] public string ZoneName { get; set; } = ""; + [Key(7)] public EveFieldsViewport Viewport { get; set; } = new EveFieldsViewport(); + [Key(8)] public IReadOnlyList Layers { get; set; } = Array.Empty(); + [Key(9)] public EveFieldsSplatSoa Splats { get; set; } = new EveFieldsSplatSoa(); + + IEveFieldsViewport IEveFieldsSplatsDocument.Viewport => Viewport; + IReadOnlyList IEveFieldsSplatsDocument.Layers => Layers; + IEveFieldsSplatSoa IEveFieldsSplatsDocument.Splats => Splats; + } + + [MessagePackObject] + public sealed class EveFieldsViewport : IEveFieldsViewport + { + [Key(0)] public double MinX { get; set; } + [Key(1)] public double MinY { get; set; } + [Key(2)] public double MaxX { get; set; } + [Key(3)] public double MaxY { get; set; } + } + + [MessagePackObject] + public sealed class EveFieldsSplatLayer : IEveFieldsSplatLayer + { + [Key(0)] public string LayerKey { get; set; } = ""; + [Key(1)] public string DisplayName { get; set; } = ""; + [Key(2)] public int Channel { get; set; } + [Key(3)] public string BlendMode { get; set; } = EveFieldsSplatBlendModes.Add; + [Key(4)] public string GraphicsFormat { get; set; } = "R16_SFloat"; + [Key(5)] public bool ClearBeforeDraw { get; set; } = true; + [Key(6)] public double ClearR { get; set; } + [Key(7)] public double ClearG { get; set; } + [Key(8)] public double ClearB { get; set; } + [Key(9)] public double ClearA { get; set; } + } + + [MessagePackObject] + public sealed class EveFieldsSplatSoa : IEveFieldsSplatSoa + { + [Key(0)] public int Count { get; set; } + [Key(1)] public IReadOnlyList CenterX { get; set; } = Array.Empty(); + [Key(2)] public IReadOnlyList CenterY { get; set; } = Array.Empty(); + [Key(3)] public IReadOnlyList HalfExtentX { get; set; } = Array.Empty(); + [Key(4)] public IReadOnlyList HalfExtentY { get; set; } = Array.Empty(); + [Key(5)] public IReadOnlyList RotationCos { get; set; } = Array.Empty(); + [Key(6)] public IReadOnlyList RotationSin { get; set; } = Array.Empty(); + [Key(7)] public IReadOnlyList Channel { get; set; } = Array.Empty(); + [Key(8)] public IReadOnlyList Falloff { get; set; } = Array.Empty(); + [Key(9)] public IReadOnlyList ValueR { get; set; } = Array.Empty(); + [Key(10)] public IReadOnlyList ValueG { get; set; } = Array.Empty(); + [Key(11)] public IReadOnlyList ValueB { get; set; } = Array.Empty(); + [Key(12)] public IReadOnlyList ValueA { get; set; } = Array.Empty(); + [Key(13)] public IReadOnlyList SourceKey { get; set; } = Array.Empty(); + [Key(14)] public IReadOnlyList LayerIndex { get; set; } = Array.Empty(); + [Key(15)] public IReadOnlyList SourceKind { get; set; } = Array.Empty(); + [Key(16)] public IReadOnlyList FrequencyX { get; set; } = Array.Empty(); + [Key(17)] public IReadOnlyList FrequencyY { get; set; } = Array.Empty(); + [Key(18)] public IReadOnlyList PhaseX { get; set; } = Array.Empty(); + [Key(19)] public IReadOnlyList PhaseY { get; set; } = Array.Empty(); + [Key(20)] public IReadOnlyList AnimationSpeed { get; set; } = Array.Empty(); + [Key(21)] public IReadOnlyList SourceFlags { get; set; } = Array.Empty(); + } +} diff --git a/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/Runtime/EveFieldsDocuments.cs.meta b/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/Runtime/EveFieldsDocuments.cs.meta new file mode 100644 index 0000000..edc01a3 --- /dev/null +++ b/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/Runtime/EveFieldsDocuments.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7e1b64023d224e8cb0bfaec57adad5c2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/Runtime/GameCult.Eve.PluginFields.asmdef b/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/Runtime/GameCult.Eve.PluginFields.asmdef index b1ae4e7..8afd12c 100644 --- a/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/Runtime/GameCult.Eve.PluginFields.asmdef +++ b/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/Runtime/GameCult.Eve.PluginFields.asmdef @@ -2,6 +2,12 @@ "name": "GameCult.Eve.PluginFields", "rootNamespace": "GameCult.Eve.PluginFields", "references": [], + "overrideReferences": true, + "precompiledReferences": [ + "GameCult.Caching.dll", + "MessagePack.Annotations.dll", + "MessagePack.dll" + ], "autoReferenced": true, "noEngineReferences": true } diff --git a/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/package.json b/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/package.json index 430cafc..4459e23 100644 --- a/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/package.json +++ b/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/package.json @@ -1,8 +1,11 @@ { "name": "org.gamecult.eve.plugin-fields", - "version": "0.1.1", + "version": "0.2.0", "displayName": "Eve Fields Plugin Contracts", "description": "Runtime-neutral C# contracts for gamecult.fields documents.", - "unity": "2022.3", + "unity": "2021.3", + "dependencies": { + "org.gamecult.cultlib": "1.0.13" + }, "license": "MPL-2.0" }