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"
}