Keep daemon assets CultMesh-native
This commit is contained in:
parent
f3eb81250c
commit
cf6e7ffbc6
5 changed files with 26 additions and 14 deletions
|
|
@ -746,9 +746,6 @@ static string ParseCultMeshAssetPath(string recordKey)
|
|||
if (text.Length == 0)
|
||||
return "";
|
||||
|
||||
if (text.StartsWith("resources://", StringComparison.OrdinalIgnoreCase))
|
||||
return text.Substring("resources://".Length).Trim('/');
|
||||
|
||||
if (!text.StartsWith("cultmesh://", StringComparison.OrdinalIgnoreCase))
|
||||
return text.Trim('/');
|
||||
|
||||
|
|
@ -778,6 +775,7 @@ static string ResolveCultMeshAssetResourcePath(string assetPath)
|
|||
["map/entity/ship"] = "Sprites/Icons/Stroked/Ship",
|
||||
["map/entity/orbital"] = "Sprites/Icons/Stroked/orbital",
|
||||
["map/entity/station"] = "Sprites/Icons/station1",
|
||||
["map/entity/projectile"] = "Sprites/Icons/Lightning Bolt",
|
||||
["map/body/planet"] = "Sprites/Icons/Stroked/Planet",
|
||||
["map/body/sun"] = "Sprites/Icons/Stroked/Sun",
|
||||
["map/body/asteroid"] = "Sprites/Icons/Stroked/Planet",
|
||||
|
|
|
|||
|
|
@ -11279,6 +11279,8 @@ static void RequireDaemonVersePublication(string root)
|
|||
var daemonSoaDocumentsPath = Path.Combine(root, "Packages", "org.gamecult.aetheria.state", "Runtime", "AetheriaRuntimeDaemonSoaDocuments.cs");
|
||||
var daemonSoaFramePublisherPath = Path.Combine(root, "Packages", "org.gamecult.aetheria.state", "Runtime", "AetheriaRuntimeDaemonSoaFramePublisher.cs");
|
||||
var assetDocumentsPath = Path.Combine(root, "Packages", "org.gamecult.aetheria.state", "Runtime", "AetheriaRuntimeAssetDocuments.cs");
|
||||
var runtimeAssetsPath = Path.Combine(root, "Packages", "org.gamecult.aetheria.state", "Runtime", "AetheriaRuntimeAssets.cs");
|
||||
var runtimeGameDocumentsPath = Path.Combine(root, "Packages", "org.gamecult.aetheria.state", "Runtime", "AetheriaRuntimeGameDocuments.cs");
|
||||
var daemonRenderAssetCatalogPath = Path.Combine(root, "Assets", "Scripts", "Gameplay", "AetheriaDaemonRenderAssetCatalog.cs");
|
||||
var daemonIndirectRendererPath = Path.Combine(root, "Assets", "Scripts", "Gameplay", "AetheriaDaemonIndirectRenderer.cs");
|
||||
var daemonStateRefsPath = Path.Combine(root, "Packages", "org.gamecult.aetheria.state", "Runtime", "AetheriaRuntimeDaemonStateRefs.cs");
|
||||
|
|
@ -11309,6 +11311,8 @@ static void RequireDaemonVersePublication(string root)
|
|||
daemonSoaDocumentsPath,
|
||||
daemonSoaFramePublisherPath,
|
||||
assetDocumentsPath,
|
||||
runtimeAssetsPath,
|
||||
runtimeGameDocumentsPath,
|
||||
daemonRenderAssetCatalogPath,
|
||||
daemonIndirectRendererPath,
|
||||
daemonStateRefsPath,
|
||||
|
|
@ -11348,6 +11352,8 @@ static void RequireDaemonVersePublication(string root)
|
|||
var daemonSoaDocuments = File.ReadAllText(daemonSoaDocumentsPath);
|
||||
var daemonSoaFramePublisher = File.ReadAllText(daemonSoaFramePublisherPath);
|
||||
var assetDocuments = File.ReadAllText(assetDocumentsPath);
|
||||
var runtimeAssets = File.ReadAllText(runtimeAssetsPath);
|
||||
var runtimeGameDocuments = File.ReadAllText(runtimeGameDocumentsPath);
|
||||
var daemonRenderAssetCatalog = File.ReadAllText(daemonRenderAssetCatalogPath);
|
||||
var daemonIndirectRenderer = File.ReadAllText(daemonIndirectRendererPath);
|
||||
var daemonStateRefs = File.ReadAllText(daemonStateRefsPath);
|
||||
|
|
@ -11461,6 +11467,8 @@ static void RequireDaemonVersePublication(string root)
|
|||
|
||||
if (assetDocuments.Contains("UnityAddressable", StringComparison.Ordinal) ||
|
||||
assetDocuments.Contains("unity_addressable", StringComparison.Ordinal) ||
|
||||
assetDocuments.Contains("public const string Resources", StringComparison.Ordinal) ||
|
||||
assetDocuments.Contains("\"resources\"", StringComparison.Ordinal) ||
|
||||
daemonSoaFramePublisher.Contains("AetheriaRuntimeAssetTransports.Resources", StringComparison.Ordinal) ||
|
||||
daemonSoaFramePublisher.Contains("resources://Aetheria/Daemon/EntityProxy", StringComparison.Ordinal) ||
|
||||
!daemonSoaFramePublisher.Contains("AetheriaRuntimeAssetTransports.CultMesh", StringComparison.Ordinal) ||
|
||||
|
|
@ -11471,6 +11479,15 @@ static void RequireDaemonVersePublication(string root)
|
|||
"Daemon SoA render groups must publish CultMesh CDN asset refs, not renderer-local Resources or Unity Addressables transport.");
|
||||
}
|
||||
|
||||
if (runtimeAssets.Contains("sourceTransport", StringComparison.Ordinal) ||
|
||||
runtimeAssets.Contains("resources://", StringComparison.Ordinal) ||
|
||||
runtimeGameDocuments.Contains("resources://", StringComparison.Ordinal) ||
|
||||
daemonHostProgram.Contains("text.StartsWith(\"resources://\"", StringComparison.Ordinal))
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"Aetheria asset refs and daemon CDN requests must stay CultMesh-native; Resources paths are source resolution details, not public transport.");
|
||||
}
|
||||
|
||||
if (daemonRenderAssetCatalog.Contains("Resources.Load", StringComparison.Ordinal) ||
|
||||
daemonRenderAssetCatalog.Contains("resources://", StringComparison.Ordinal) ||
|
||||
daemonRenderAssetCatalog.Contains("AetheriaRuntimeAssetTransports.Resources", StringComparison.Ordinal) ||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ namespace GameCult.Aetheria.State.Verse
|
|||
public static class AetheriaRuntimeAssetTransports
|
||||
{
|
||||
public const string CultMesh = "cultmesh";
|
||||
public const string Resources = "resources";
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ namespace GameCult.Aetheria.State.Verse
|
|||
Add(entries, MapIcon("entity.ship", "Ship", "Sprites/Icons/Stroked/Ship"));
|
||||
Add(entries, MapIcon("entity.orbital", "Orbital", "Sprites/Icons/Stroked/orbital"));
|
||||
Add(entries, MapIcon("entity.station", "Station", "Sprites/Icons/station1"));
|
||||
Add(entries, MapIcon("entity.projectile", "Projectile", "Sprites/Icons/Lightning Bolt"));
|
||||
Add(entries, MapIcon("body.planet", "Planet", "Sprites/Icons/Stroked/Planet"));
|
||||
Add(entries, MapIcon("body.sun", "Sun", "Sprites/Icons/Stroked/Sun"));
|
||||
Add(entries, MapIcon("body.asteroid", "Asteroid", "Sprites/Icons/Stroked/Planet"));
|
||||
|
|
@ -63,6 +64,8 @@ namespace GameCult.Aetheria.State.Verse
|
|||
return Sprite("map.entity.station", "Sprites/Icons/station1");
|
||||
if (kind.IndexOf("orbital", StringComparison.Ordinal) >= 0)
|
||||
return Sprite("map.entity.orbital", "Sprites/Icons/Stroked/orbital");
|
||||
if (kind.IndexOf("projectile", StringComparison.Ordinal) >= 0)
|
||||
return Sprite("map.entity.projectile", "Sprites/Icons/Lightning Bolt");
|
||||
|
||||
return Sprite("map.entity.ship", "Sprites/Icons/Stroked/Ship");
|
||||
}
|
||||
|
|
@ -176,20 +179,13 @@ namespace GameCult.Aetheria.State.Verse
|
|||
string resourcePath,
|
||||
string mimeType)
|
||||
{
|
||||
var normalizedResourcePath = NormalizeResourcePath(resourcePath);
|
||||
return new AetheriaRuntimeAssetRef
|
||||
{
|
||||
AssetKey = key ?? "",
|
||||
Kind = kind ?? "",
|
||||
Uri = CultMeshAssetUri(key),
|
||||
Transport = AetheriaRuntimeAssetTransports.CultMesh,
|
||||
MimeType = mimeType ?? "",
|
||||
Metadata = new Dictionary<string, string>(StringComparer.Ordinal)
|
||||
{
|
||||
["resourcePath"] = normalizedResourcePath,
|
||||
["sourceUri"] = $"resources://{normalizedResourcePath}",
|
||||
["sourceTransport"] = AetheriaRuntimeAssetTransports.Resources
|
||||
}
|
||||
MimeType = mimeType ?? ""
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -895,9 +895,11 @@ namespace GameCult.Aetheria.State.Verse
|
|||
},
|
||||
Inventory = Array.Empty<AetheriaRuntimeInventoryItem>(),
|
||||
IconAsset = AetheriaRuntimeAssetRef.FromKey(
|
||||
"aetheria.asset.sprite.game.projectile",
|
||||
"map.entity.projectile",
|
||||
AetheriaRuntimeAssetKinds.Sprite,
|
||||
"resources://Sprites/Icons/Lightning Bolt")
|
||||
"cultmesh://aetheria/assets/map/entity/projectile",
|
||||
AetheriaRuntimeAssetTransports.CultMesh,
|
||||
"image/*")
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue