using System.Text.Json.Nodes;
using static XFEEDToolBox.Plugin.JsonWire;
namespace XFEEDToolBox.Plugin;
internal static unsafe partial class Navigation
{
sealed partial record GalaxyCatalogueProfile
{
internal GalaxyDustInputs? dustInputs {get;init;}
}
static GalaxyDustInputs? CopyGalaxyCatalogueDust(Snapshot frame,GalaxyServices services)
{
var address=frame.referenceWorld&0x007FFFFFFFFFFFFFUL;if(address==0)return null;
// Dust uses only owner/entity/system identity. Do not make the basic
// profile traverse unrelated per-system metadata/fact tables for it.
var context=new GalaxyFilterContext{expectedImage=image,entity=frame.entity,currentSystem=address,
tick=frame.tick,thread=owningThread};
return TryReadGalaxyDustInputs(context,services.registry,out var value)?value:null;
}
static JsonObject? GalaxyCatalogueDustDescription(GalaxyDustInputs? value)
{
if(value is null)return null;
var layers=new JsonArray(value.layerAlphaSize.Select(v=>(JsonNode?)JsonValue.Create(v)).ToArray());
var publications=new JsonArray(value.observedGamePublications.Select(p=>(JsonNode?)Obj(("ordinal",p.ordinal),
("publishedRevision",p.publishedRevision),("requestedRevision",p.requestedRevision),("radius",p.radius),("records",p.records))).ToArray());
return Obj(("scope","observed-game-dust-producer-inputs"),("step",value.step),("height",value.height),
("layerAlphaSize",layers),("alphaMultiplier",value.alphaMultiplier),("sizeMultiplier",value.sizeMultiplier),
("transitionPerStep",value.transitionPerStep),("minimumDistance",value.minimumDistance),
("observedGamePublications",publications),("runtimeTint",null));
}
}
using System.Text.Json.Nodes;
using static XFEEDToolBox.Plugin.JsonWire;
namespace XFEEDToolBox.Plugin;
internal static unsafe partial class Navigation
{
sealed partial record GalaxyCatalogueProfile
{
internal GalaxyDustInputs? dustInputs {get;init;}
}
static GalaxyDustInputs? CopyGalaxyCatalogueDust(Snapshot frame,GalaxyServices services)
{
var address=frame.referenceWorld&0x007FFFFFFFFFFFFFUL;if(address==0)return null;
// Dust uses only owner/entity/system identity. Do not make the basic
// profile traverse unrelated per-system metadata/fact tables for it.
var context=new GalaxyFilterContext{expectedImage=image,entity=frame.entity,currentSystem=address,
tick=frame.tick,thread=owningThread};
return TryReadGalaxyDustInputs(context,services.registry,out var value)?value:null;
}
static JsonObject? GalaxyCatalogueDustDescription(GalaxyDustInputs? value)
{
if(value is null)return null;
var layers=new JsonArray(value.layerAlphaSize.Select(v=>(JsonNode?)JsonValue.Create(v)).ToArray());
var publications=new JsonArray(value.observedGamePublications.Select(p=>(JsonNode?)Obj(("ordinal",p.ordinal),
("publishedRevision",p.publishedRevision),("requestedRevision",p.requestedRevision),("radius",p.radius),("records",p.records))).ToArray());
return Obj(("scope","observed-game-dust-producer-inputs"),("step",value.step),("height",value.height),
("layerAlphaSize",layers),("alphaMultiplier",value.alphaMultiplier),("sizeMultiplier",value.sizeMultiplier),
("transitionPerStep",value.transitionPerStep),("minimumDistance",value.minimumDistance),
("observedGamePublications",publications),("runtimeTint",null));
}
}