Compare commits
6 changed files with 2 additions and 40 deletions
|
|
@ -6,7 +6,7 @@
|
|||
<Description>Runtime-neutral C# contracts for gamecult.fields documents.</Description>
|
||||
<CultLibRoot Condition="'$(CultLibRoot)' == ''">$(MSBuildThisFileDirectory)..\..\..\CultLib</CultLibRoot>
|
||||
<PackageId>GameCult.Eve.PluginFields</PackageId>
|
||||
<Version>0.2.3</Version>
|
||||
<Version>0.2.0</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -49,9 +49,6 @@ test("publishes a runtime-neutral Unity contract package", () => {
|
|||
assert.equal(manifest.name, "org.gamecult.eve.plugin-fields");
|
||||
assert.match(contracts, /interface IEveFieldsSplatsDocument/);
|
||||
assert.match(contracts, /gamecult\.fields\.splats\.v1/);
|
||||
assert.match(contracts, /AnimatedCellNoiseB = 3/);
|
||||
assert.match(contracts, /AnimatedRadialCosine = 4/);
|
||||
assert.match(contracts, /AbsoluteValue = 1/);
|
||||
assert.doesNotMatch(contracts, /UnityEngine|Aetheria|MessagePack|GameCult\.Caching/);
|
||||
assert.match(readFileSync(new URL("../GameCult.Eve.PluginFields.csproj", import.meta.url), "utf8"), /netstandard2\.1/);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -3,26 +3,3 @@
|
|||
This package owns the portable C# view of `gamecult.fields.*` documents. It has
|
||||
no Unity rendering, provider state, transport, or command authority. Providers
|
||||
implement these read-only interfaces; Unity runtime adapters consume them.
|
||||
|
||||
`PowerPulse` is the portable compact-support radial falloff
|
||||
`pow(saturate(1 - pow(distance01 * scale, 2)), exponent)`. Producers publish
|
||||
`FalloffScale` and `FalloffExponent` alongside each SoA splat. Missing parameter
|
||||
entries retain the neutral defaults `1` and `1`, so older v1 documents remain
|
||||
readable.
|
||||
|
||||
Procedural sources are evaluated in field-world coordinates, not splat-local
|
||||
UVs. `SimplexNoise` samples signed Ashima 3D simplex at
|
||||
`(worldXY * frequency + phase, 0)`. `AnimatedSimplexNoise` uses
|
||||
`simulationTimeSeconds * animationSpeed` for the third coordinate.
|
||||
`AnimatedCellNoiseB` is the portable moving, wrappable cellular source whose
|
||||
distance metric is `(length(frac(p) - .5) * 1.5 + .25) *
|
||||
max(abs(x) * .866 + y * .5, -y)`. `AbsoluteValue` folds a signed source after
|
||||
sampling. Constant offsets remain ordinary constant splats, so source sampling
|
||||
and additive composition retain separate ownership.
|
||||
|
||||
`AnimatedRadialCosine` is splat-local rather than field-world anchored. It
|
||||
evaluates
|
||||
`cos(pow(distance01, FrequencyY) * FrequencyX + PhaseX + simulationTimeSeconds * AnimationSpeed)`.
|
||||
`FrequencyX` is radial frequency and `FrequencyY` is the positive radial
|
||||
exponent. The ordinary splat falloff owns the envelope, which keeps oscillation
|
||||
and compact support independently composable.
|
||||
|
|
|
|||
|
|
@ -43,13 +43,6 @@ namespace GameCult.Eve.PluginFields
|
|||
public const int Constant = 0;
|
||||
public const int SimplexNoise = 1;
|
||||
public const int AnimatedSimplexNoise = 2;
|
||||
public const int AnimatedCellNoiseB = 3;
|
||||
public const int AnimatedRadialCosine = 4;
|
||||
}
|
||||
|
||||
public static class EveFieldsSplatSourceFlags
|
||||
{
|
||||
public const int AbsoluteValue = 1;
|
||||
}
|
||||
|
||||
public static class EveFieldsSplatFalloffs
|
||||
|
|
@ -58,7 +51,6 @@ namespace GameCult.Eve.PluginFields
|
|||
public const int Linear = 1;
|
||||
public const int Smooth = 2;
|
||||
public const int InverseSmooth = 3;
|
||||
public const int PowerPulse = 4;
|
||||
}
|
||||
|
||||
public interface IEveFieldsViewport
|
||||
|
|
@ -107,8 +99,6 @@ namespace GameCult.Eve.PluginFields
|
|||
IReadOnlyList<double> PhaseY { get; }
|
||||
IReadOnlyList<double> AnimationSpeed { get; }
|
||||
IReadOnlyList<double> SourceFlags { get; }
|
||||
IReadOnlyList<double> FalloffScale { get; }
|
||||
IReadOnlyList<double> FalloffExponent { get; }
|
||||
}
|
||||
|
||||
public interface IEveFieldsSplatsDocument
|
||||
|
|
|
|||
|
|
@ -74,7 +74,5 @@ namespace GameCult.Eve.PluginFields
|
|||
[Key(19)] public IReadOnlyList<double> PhaseY { get; set; } = Array.Empty<double>();
|
||||
[Key(20)] public IReadOnlyList<double> AnimationSpeed { get; set; } = Array.Empty<double>();
|
||||
[Key(21)] public IReadOnlyList<double> SourceFlags { get; set; } = Array.Empty<double>();
|
||||
[Key(22)] public IReadOnlyList<double> FalloffScale { get; set; } = Array.Empty<double>();
|
||||
[Key(23)] public IReadOnlyList<double> FalloffExponent { get; set; } = Array.Empty<double>();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "org.gamecult.eve.plugin-fields",
|
||||
"version": "0.2.3",
|
||||
"version": "0.2.0",
|
||||
"displayName": "Eve Fields Plugin Contracts",
|
||||
"description": "Runtime-neutral C# contracts for gamecult.fields documents.",
|
||||
"unity": "2021.3",
|
||||
|
|
|
|||
Reference in a new issue