diff --git a/Aetheria.State.Unity/Aetheria.State.Unity.csproj b/Aetheria.State.Unity/Aetheria.State.Unity.csproj
index 7c0d12267..d0c760e7b 100644
--- a/Aetheria.State.Unity/Aetheria.State.Unity.csproj
+++ b/Aetheria.State.Unity/Aetheria.State.Unity.csproj
@@ -9,6 +9,5 @@
-
diff --git a/Aetheria.State.Verify/Aetheria.State.Verify.csproj b/Aetheria.State.Verify/Aetheria.State.Verify.csproj
index a9150ffa9..e9e2dc0f7 100644
--- a/Aetheria.State.Verify/Aetheria.State.Verify.csproj
+++ b/Aetheria.State.Verify/Aetheria.State.Verify.csproj
@@ -10,6 +10,5 @@
-
diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs
index 93c2a4164..42eb3ce7e 100644
--- a/Aetheria.State.Verify/Program.cs
+++ b/Aetheria.State.Verify/Program.cs
@@ -3828,7 +3828,9 @@ static void RequireInventoryEquippedItemDetailsUseEveSurface(string root)
string.Join(", ", missingBuilderSymbols));
}
- if (!stateProject.Contains("AetheriaRuntimeEquippedItemDetailsSurfaceBuilder.cs", StringComparison.Ordinal) ||
+ var stateProjectIncludesRuntimePackage = stateProject.Contains(@"Runtime\*.cs", StringComparison.Ordinal);
+ if ((!stateProjectIncludesRuntimePackage &&
+ !stateProject.Contains("AetheriaRuntimeEquippedItemDetailsSurfaceBuilder.cs", StringComparison.Ordinal)) ||
!unityProject.Contains("AetheriaRuntimeEquippedItemDetailsSurfaceBuilder.cs", StringComparison.Ordinal))
{
throw new InvalidOperationException(
@@ -5337,7 +5339,9 @@ static void RequireVerseSettingsShellAndBridge(string root)
string.Join(", ", missingUnityPackageProjectSymbols));
}
- if (!stateProject.Contains("AetheriaRuntimeVerseHostCommands.cs", StringComparison.Ordinal))
+ var stateProjectIncludesRuntimePackage = stateProject.Contains(@"Runtime\*.cs", StringComparison.Ordinal);
+ if (!stateProjectIncludesRuntimePackage &&
+ !stateProject.Contains("AetheriaRuntimeVerseHostCommands.cs", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"Aetheria.State.csproj does not compile the Verse-host Eve command contract.");
@@ -6469,7 +6473,6 @@ static void RequireDaemonVersePublication(string root)
"\"Witnesses\"",
"\"Designer Surfaces\"",
"AetheriaRuntimeSurfaceDocument",
- "AetheriaRuntimeStatRecipeCommands.SurfaceId",
"\"Typed Commands\"",
"AetheriaRuntimeDaemonCommandBoundaryEntry"
};
diff --git a/Aetheria.State/Aetheria.State.csproj b/Aetheria.State/Aetheria.State.csproj
index 00068e1e0..f1bdd4c65 100644
--- a/Aetheria.State/Aetheria.State.csproj
+++ b/Aetheria.State/Aetheria.State.csproj
@@ -8,45 +8,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/Aetheria.sln b/Aetheria.sln
index 1e188399f..cb41bd8e5 100644
--- a/Aetheria.sln
+++ b/Aetheria.sln
@@ -1,83 +1,43 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
+Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2010
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp-firstpass", "Assembly-CSharp-firstpass.csproj", "{7c9c511c-1c6f-9c1f-c455-88359f498803}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameCult.Aetheria.State.Unity", "GameCult.Aetheria.State.Unity.csproj", "{D6094CFD-26D1-83D1-2366-5762CCA2BC33}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{47728ed0-fa53-fa99-9dca-8eb78b1dbfe4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameCult.Aetheria.EveRuntime", "GameCult.Aetheria.EveRuntime.csproj", "{A1A8B65B-CA79-2FA2-3803-5F4833778BDB}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameCult.Aetheria.State.Unity", "GameCult.Aetheria.State.Unity.csproj", "{d6094cfd-26d1-83d1-2366-5762cca2bc33}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameCult.Brokkr.Editor", "GameCult.Brokkr.Editor.csproj", "{F041E9DC-DC28-1D6C-75A3-824162B4A1AE}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniRx", "UniRx.csproj", "{99486114-c78b-e9b0-654f-710398497645}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CultMath", "CultMath.csproj", "{6F7A47C4-21DC-64EF-0969-96B956A000F4}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameCult.Aetheria.EveRuntime", "GameCult.Aetheria.EveRuntime.csproj", "{a1a8b65b-ca79-2fa2-3803-5f4833778bdb}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameCult.Brokkr", "GameCult.Brokkr.csproj", "{FC28BCBE-9EF4-444F-C1C9-DDE8A3A864AD}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aetheria.Shared.Unity", "Aetheria.Shared.Unity.csproj", "{31542707-f1f7-33c1-eef6-37982be14f82}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameCult.Eve.UnityUIToolkit", "GameCult.Eve.UnityUIToolkit.csproj", "{5CDB0413-71D7-C6B3-4AD9-D8E730B55FFB}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp-Editor-firstpass", "Assembly-CSharp-Editor-firstpass.csproj", "{b690125b-09ac-e423-4873-1648ff205166}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameCult.Eve.Surface", "GameCult.Eve.Surface.csproj", "{037DACF0-10F4-20ED-7963-3A1E1AC15B64}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp-Editor", "Assembly-CSharp-Editor.csproj", "{6529161a-3c3e-1394-61a8-ab66047d3732}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ink", "Ink.csproj", "{6bae5155-742f-1170-f8b5-ff696c59aad8}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameCult.Brokkr.Editor", "GameCult.Brokkr.Editor.csproj", "{f041e9dc-dc28-1d6c-75a3-824162b4a1ae}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CultMath", "CultMath.csproj", "{6f7a47c4-21dc-64ef-0969-96b956a000f4}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameCult.Brokkr", "GameCult.Brokkr.csproj", "{fc28bcbe-9ef4-444f-c1c9-dde8a3a864ad}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Substance.Platform", "Substance.Platform.csproj", "{d6a66898-22ba-8995-ccfd-eb708fdff52a}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests.csproj", "{28568750-512b-4d45-69bf-887882a23da7}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameCult.Eve.UnityUIToolkit", "GameCult.Eve.UnityUIToolkit.csproj", "{5cdb0413-71d7-c6b3-4ad9-d8e730b55ffb}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GameCult.Eve.Surface", "GameCult.Eve.Surface.csproj", "{037dacf0-10f4-20ed-7963-3a1e1ac15b64}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Substance.EditorHelper", "Substance.EditorHelper.csproj", "{f12f044e-28bc-36bc-242c-ecd2736d345d}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MessagePack.SourceDisabled", "MessagePack.SourceDisabled.csproj", "{b916e744-81e2-a0ba-3884-e845f1c5ef88}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MessagePack.SourceDisabled", "MessagePack.SourceDisabled.csproj", "{B916E744-81E2-A0BA-3884-E845F1C5EF88}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {7c9c511c-1c6f-9c1f-c455-88359f498803}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7c9c511c-1c6f-9c1f-c455-88359f498803}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {47728ed0-fa53-fa99-9dca-8eb78b1dbfe4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {47728ed0-fa53-fa99-9dca-8eb78b1dbfe4}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {d6094cfd-26d1-83d1-2366-5762cca2bc33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {d6094cfd-26d1-83d1-2366-5762cca2bc33}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {99486114-c78b-e9b0-654f-710398497645}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {99486114-c78b-e9b0-654f-710398497645}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {a1a8b65b-ca79-2fa2-3803-5f4833778bdb}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {a1a8b65b-ca79-2fa2-3803-5f4833778bdb}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {31542707-f1f7-33c1-eef6-37982be14f82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {31542707-f1f7-33c1-eef6-37982be14f82}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {b690125b-09ac-e423-4873-1648ff205166}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {b690125b-09ac-e423-4873-1648ff205166}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6529161a-3c3e-1394-61a8-ab66047d3732}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6529161a-3c3e-1394-61a8-ab66047d3732}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6bae5155-742f-1170-f8b5-ff696c59aad8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6bae5155-742f-1170-f8b5-ff696c59aad8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {f041e9dc-dc28-1d6c-75a3-824162b4a1ae}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {f041e9dc-dc28-1d6c-75a3-824162b4a1ae}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6f7a47c4-21dc-64ef-0969-96b956a000f4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6f7a47c4-21dc-64ef-0969-96b956a000f4}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {fc28bcbe-9ef4-444f-c1c9-dde8a3a864ad}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {fc28bcbe-9ef4-444f-c1c9-dde8a3a864ad}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {d6a66898-22ba-8995-ccfd-eb708fdff52a}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {d6a66898-22ba-8995-ccfd-eb708fdff52a}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {28568750-512b-4d45-69bf-887882a23da7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {28568750-512b-4d45-69bf-887882a23da7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5cdb0413-71d7-c6b3-4ad9-d8e730b55ffb}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5cdb0413-71d7-c6b3-4ad9-d8e730b55ffb}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {037dacf0-10f4-20ed-7963-3a1e1ac15b64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {037dacf0-10f4-20ed-7963-3a1e1ac15b64}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {f12f044e-28bc-36bc-242c-ecd2736d345d}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {f12f044e-28bc-36bc-242c-ecd2736d345d}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {b916e744-81e2-a0ba-3884-e845f1c5ef88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {b916e744-81e2-a0ba-3884-e845f1c5ef88}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D6094CFD-26D1-83D1-2366-5762CCA2BC33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D6094CFD-26D1-83D1-2366-5762CCA2BC33}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A1A8B65B-CA79-2FA2-3803-5F4833778BDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A1A8B65B-CA79-2FA2-3803-5F4833778BDB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F041E9DC-DC28-1D6C-75A3-824162B4A1AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F041E9DC-DC28-1D6C-75A3-824162B4A1AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6F7A47C4-21DC-64EF-0969-96B956A000F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6F7A47C4-21DC-64EF-0969-96B956A000F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FC28BCBE-9EF4-444F-C1C9-DDE8A3A864AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FC28BCBE-9EF4-444F-C1C9-DDE8A3A864AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5CDB0413-71D7-C6B3-4AD9-D8E730B55FFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5CDB0413-71D7-C6B3-4AD9-D8E730B55FFB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {037DACF0-10F4-20ED-7963-3A1E1AC15B64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {037DACF0-10F4-20ED-7963-3A1E1AC15B64}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B916E744-81E2-A0BA-3884-E845F1C5EF88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B916E744-81E2-A0BA-3884-E845F1C5EF88}.Debug|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Assets/Scripts/Gameplay/AetheriaDaemonOperations.cs.meta b/Assets/Scripts/Gameplay/AetheriaDaemonOperations.cs.meta
new file mode 100644
index 000000000..071a3eb97
--- /dev/null
+++ b/Assets/Scripts/Gameplay/AetheriaDaemonOperations.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: c70095f8b49f42446aa3b0b9cb76356f
\ No newline at end of file
diff --git a/GameData/aetheria-world.cc b/GameData/aetheria-world.cc
index 0da38a18a..19f2cff13 100644
Binary files a/GameData/aetheria-world.cc and b/GameData/aetheria-world.cc differ
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeAssemblyInfo.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeAssemblyInfo.cs.meta
new file mode 100644
index 000000000..18dddf2f4
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeAssemblyInfo.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 8397d4d816796f24c9faf1c1c2df522a
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeCargoItemDetailsSurfaceBuilder.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeCargoItemDetailsSurfaceBuilder.cs.meta
new file mode 100644
index 000000000..08747d2b4
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeCargoItemDetailsSurfaceBuilder.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: e9160e97be310004cb18268ccd436a3e
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeCatalogCommands.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeCatalogCommands.cs.meta
new file mode 100644
index 000000000..582410f16
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeCatalogCommands.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: b149e8e695183924fb74e86cdb871be4
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonCommandClient.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonCommandClient.cs.meta
deleted file mode 100644
index 69966e283..000000000
--- a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonCommandClient.cs.meta
+++ /dev/null
@@ -1,2 +0,0 @@
-fileFormatVersion: 2
-guid: 09d3397c0783416489eb3c74c6e958c7
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonCommandLog.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonCommandLog.cs.meta
deleted file mode 100644
index 5f26e9bf7..000000000
--- a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonCommandLog.cs.meta
+++ /dev/null
@@ -1,2 +0,0 @@
-fileFormatVersion: 2
-guid: 09ab260807a4ebb41b0f4e28be870b2d
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonEditorSurfaceBuilder.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonEditorSurfaceBuilder.cs.meta
new file mode 100644
index 000000000..52090810c
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonEditorSurfaceBuilder.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 17918ab9d67f6304c96767532bdf3d11
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonGameSurfaceBuilder.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonGameSurfaceBuilder.cs.meta
new file mode 100644
index 000000000..a2517f9fc
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonGameSurfaceBuilder.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 09207ef539b22e348a582894cc9396ec
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonIntentState.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonIntentState.cs.meta
new file mode 100644
index 000000000..aec8f7361
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonIntentState.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: f16b722f9a3746340af404d50b13cc66
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonOperationClient.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonOperationClient.cs.meta
new file mode 100644
index 000000000..d93fd0f01
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonOperationClient.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: ce9502e0eb3bd5749b54057cb266a717
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonOperations.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonOperations.cs.meta
new file mode 100644
index 000000000..66f5039d0
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonOperations.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: e5491470c689e0b40a098462d4ab1fe5
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonPublicationStore.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonPublicationStore.cs.meta
new file mode 100644
index 000000000..f2e398941
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonPublicationStore.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 893394e396737fe48a79566dbbfd5272
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonSurfaceCommands.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonSurfaceCommands.cs.meta
new file mode 100644
index 000000000..7ac36c3d2
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonSurfaceCommands.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 59fbbd99ba869604b8336ca94af88ef3
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonTickRunner.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonTickRunner.cs.meta
new file mode 100644
index 000000000..19421941f
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonTickRunner.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 9a2b6ef07e1d3f04ca84ff91471f5b56
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeEquippedItemDetailsSurfaceBuilder.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeEquippedItemDetailsSurfaceBuilder.cs.meta
new file mode 100644
index 000000000..6e36b2f97
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeEquippedItemDetailsSurfaceBuilder.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 60ad8d2551ae4064696ee1fc948acd11
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeEveCommandLog.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeEveCommandLog.cs.meta
deleted file mode 100644
index c3b108b40..000000000
--- a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeEveCommandLog.cs.meta
+++ /dev/null
@@ -1,2 +0,0 @@
-fileFormatVersion: 2
-guid: 9e066eaa98317c243847ce778a1a5305
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeEveSurfaceAdapter.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeEveSurfaceAdapter.cs.meta
new file mode 100644
index 000000000..d1c9956ba
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeEveSurfaceAdapter.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 949c806607f976641b113e355f3fbaa0
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeInventoryDropdownSurfaceBuilder.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeInventoryDropdownSurfaceBuilder.cs.meta
new file mode 100644
index 000000000..fb6c9ad6b
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeInventoryDropdownSurfaceBuilder.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: c41b5803370b896479999b6c47f34142
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeLoadoutSnapshotProjector.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeLoadoutSnapshotProjector.cs.meta
new file mode 100644
index 000000000..444a5d642
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeLoadoutSnapshotProjector.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 3eb83163e4f8b4447a733c13bc719416
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeLoadoutTemplateCommands.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeLoadoutTemplateCommands.cs.meta
new file mode 100644
index 000000000..6cb23e0c4
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeLoadoutTemplateCommands.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: d05e8b8b326245643b6993cc313d6a81
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeMainMenuSurfaceBuilder.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeMainMenuSurfaceBuilder.cs.meta
new file mode 100644
index 000000000..3eee68d5b
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeMainMenuSurfaceBuilder.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: a1a00e0df3c13ee48b710d36c4e2bbc0
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeMenuTabsSurfaceBuilder.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeMenuTabsSurfaceBuilder.cs.meta
new file mode 100644
index 000000000..df47f9655
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeMenuTabsSurfaceBuilder.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: df47c7665c31e014ba4522d79e65338f
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeOperationsCommands.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeOperationsCommands.cs.meta
new file mode 100644
index 000000000..24d789080
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeOperationsCommands.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: c3cf037188bfca5438792b1ed74000ed
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeShipSettingsSurfaceBuilder.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeShipSettingsSurfaceBuilder.cs.meta
new file mode 100644
index 000000000..7c0e71c40
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeShipSettingsSurfaceBuilder.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: c4233b3aa0fb35a45add3be516e57752
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeSnapshotDocuments.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeSnapshotDocuments.cs.meta
new file mode 100644
index 000000000..09b4aed51
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeSnapshotDocuments.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 9b9b2b8d73017fb4fa6cfd91cc61ef95
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeStatRecipeCommandApplier.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeStatRecipeCommandApplier.cs.meta
deleted file mode 100644
index 6503393c0..000000000
--- a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeStatRecipeCommandApplier.cs.meta
+++ /dev/null
@@ -1,2 +0,0 @@
-fileFormatVersion: 2
-guid: 4f6e72cdd4fa40c498f05485e125efa2
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeStatRecipes.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeStatRecipes.cs.meta
new file mode 100644
index 000000000..01253f426
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeStatRecipes.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 1d34c763e629d4348888797bc8c6a0d0
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeStateCommitDocument.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeStateCommitDocument.cs.meta
deleted file mode 100644
index 78102b75a..000000000
--- a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeStateCommitDocument.cs.meta
+++ /dev/null
@@ -1,2 +0,0 @@
-fileFormatVersion: 2
-guid: 3a889a3c5631c5f41ad856f8563395f7
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeStateCommitLog.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeStateCommitLog.cs.meta
deleted file mode 100644
index 8aeca1a51..000000000
--- a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeStateCommitLog.cs.meta
+++ /dev/null
@@ -1,2 +0,0 @@
-fileFormatVersion: 2
-guid: f3d6eef59b606fb4abb54b258a977a76
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeTradeCargoSelectorSurfaceBuilder.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeTradeCargoSelectorSurfaceBuilder.cs.meta
new file mode 100644
index 000000000..32fdf0229
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeTradeCargoSelectorSurfaceBuilder.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 4cebd10a6222db34b8342c7eb82af651
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeTradeInteractionSurfaceBuilder.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeTradeInteractionSurfaceBuilder.cs.meta
new file mode 100644
index 000000000..004d4d192
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeTradeInteractionSurfaceBuilder.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 9ee0192f9afcd1e4bb1b4c8f16860299
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeTradeItemDetailsSurfaceBuilder.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeTradeItemDetailsSurfaceBuilder.cs.meta
new file mode 100644
index 000000000..78e620594
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeTradeItemDetailsSurfaceBuilder.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: fe7293e9998fc0f4893f708c023453ee
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeZoneDetailsSurfaceBuilder.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeZoneDetailsSurfaceBuilder.cs.meta
new file mode 100644
index 000000000..dc816e558
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeZoneDetailsSurfaceBuilder.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 9c5201ecbc387ed45ba4fe94cdcc5c1a
\ No newline at end of file
diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaState.cs.meta b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaState.cs.meta
new file mode 100644
index 000000000..188f5458e
--- /dev/null
+++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaState.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 40721f9a1fe6c0448b1b746f489f2615
\ No newline at end of file
diff --git a/tools/clean-ignored-worktree.ps1 b/tools/clean-ignored-worktree.ps1
new file mode 100644
index 000000000..d3e76162c
--- /dev/null
+++ b/tools/clean-ignored-worktree.ps1
@@ -0,0 +1,156 @@
+param(
+ [switch]$CleanBuild,
+ [switch]$CleanDaemonGenerated,
+ [switch]$CleanUnityCache,
+ [switch]$CleanWwiseGenerated,
+ [switch]$IncludeAgentState,
+ [switch]$Apply
+)
+
+$ErrorActionPreference = "Stop"
+
+function Invoke-GitClean {
+ param(
+ [string]$Label,
+ [string[]]$Paths
+ )
+
+ if ($Paths.Count -eq 0) {
+ return
+ }
+
+ Write-Host ""
+ Write-Host "== $Label =="
+
+ $mode = if ($Apply) { "-fdX" } else { "-ndX" }
+ & git clean $mode -- @Paths
+}
+
+function Get-PathSizeMb {
+ param([string]$Path)
+
+ if (-not (Test-Path -LiteralPath $Path)) {
+ return $null
+ }
+
+ $size = (Get-ChildItem -LiteralPath $Path -Recurse -Force -ErrorAction SilentlyContinue |
+ Measure-Object -Property Length -Sum).Sum
+
+ [PSCustomObject]@{
+ Path = $Path
+ MB = [math]::Round(($size / 1MB), 2)
+ }
+}
+
+function Show-Summary {
+ $ignoredCount = (& git ls-files -i -o --exclude-standard | Measure-Object).Count
+ Write-Host "Ignored path count: $ignoredCount"
+
+ $roots = @(
+ "Library",
+ "Temp",
+ "GameData",
+ "Aetheria-Economy_WwiseProject",
+ "Aetheria.State\bin",
+ "Aetheria.State\obj",
+ "Aetheria.State.Verify\bin",
+ "Aetheria.State.Verify\obj",
+ "Aetheria.State.Unity\bin",
+ "Aetheria.State.Unity\obj",
+ "obj",
+ ".brokkr",
+ ".codex",
+ ".idea",
+ "UserSettings"
+ )
+
+ $sizes = foreach ($root in $roots) {
+ Get-PathSizeMb $root
+ }
+
+ $sizes |
+ Where-Object { $null -ne $_ } |
+ Sort-Object MB -Descending |
+ Format-Table -AutoSize
+}
+
+$anyCleanSwitch =
+ $CleanBuild -or
+ $CleanDaemonGenerated -or
+ $CleanUnityCache -or
+ $CleanWwiseGenerated -or
+ $IncludeAgentState
+
+if (-not $anyCleanSwitch) {
+ Show-Summary
+ Write-Host ""
+ Write-Host "Dry-run examples:"
+ Write-Host " tools\clean-ignored-worktree.ps1 -CleanBuild"
+ Write-Host " tools\clean-ignored-worktree.ps1 -CleanDaemonGenerated"
+ Write-Host " tools\clean-ignored-worktree.ps1 -CleanUnityCache"
+ Write-Host ""
+ Write-Host "Add -Apply to actually delete the selected ignored paths."
+ exit 0
+}
+
+if ($CleanBuild) {
+ Invoke-GitClean "Build and generated IDE files" @(
+ "Aetheria.State/bin",
+ "Aetheria.State/obj",
+ "Aetheria.State.Daemon/bin",
+ "Aetheria.State.Daemon/obj",
+ "Aetheria.State.Import/bin",
+ "Aetheria.State.Import/obj",
+ "Aetheria.State.Replica/bin",
+ "Aetheria.State.Replica/obj",
+ "Aetheria.State.Smoke/bin",
+ "Aetheria.State.Smoke/obj",
+ "Aetheria.State.Unity/bin",
+ "Aetheria.State.Unity/obj",
+ "Aetheria.State.Unity.Smoke/bin",
+ "Aetheria.State.Unity.Smoke/obj",
+ "Aetheria.State.Verify/bin",
+ "Aetheria.State.Verify/obj",
+ "Economy.Server/bin",
+ "Economy.Server/obj",
+ "Economy.Shared/bin",
+ "Economy.Shared/obj",
+ "obj"
+ )
+}
+
+if ($CleanDaemonGenerated) {
+ Invoke-GitClean "Daemon generated CultCache and Eve sidecars" @(
+ "GameData/*.cc.daemon.*.cc",
+ "GameData/*.cc.records",
+ "GameData/*.cc.records.*",
+ "GameData/*.cultmesh",
+ "GameData/*.cc.eve.pending",
+ "GameData/*.cc.before-*"
+ )
+}
+
+if ($CleanUnityCache) {
+ Invoke-GitClean "Unity transient cache" @(
+ "Library",
+ "Temp",
+ "UserSettings"
+ )
+}
+
+if ($CleanWwiseGenerated) {
+ Invoke-GitClean "Wwise generated/cache/profiling files" @(
+ "Aetheria-Economy_WwiseProject/.cache",
+ "Aetheria-Economy_WwiseProject/GeneratedSoundBanks",
+ "Aetheria-Economy_WwiseProject/*.prof",
+ "Assets/StreamingAssets/Audio/GeneratedSoundBanks"
+ )
+}
+
+if ($IncludeAgentState) {
+ Invoke-GitClean "Local agent/editor runtime state" @(
+ ".brokkr",
+ ".codex",
+ ".idea"
+ )
+}