diff --git a/plugins/eve-plugin-fields/GameCult.Eve.PluginFields.csproj b/plugins/eve-plugin-fields/GameCult.Eve.PluginFields.csproj index 9a4fd45..cbfbfb3 100644 --- a/plugins/eve-plugin-fields/GameCult.Eve.PluginFields.csproj +++ b/plugins/eve-plugin-fields/GameCult.Eve.PluginFields.csproj @@ -6,7 +6,7 @@ Runtime-neutral C# contracts for gamecult.fields documents. $(MSBuildThisFileDirectory)..\..\..\CultLib GameCult.Eve.PluginFields - 0.2.2 + 0.2.3 diff --git a/plugins/eve-plugin-fields/test/plugin.test.mjs b/plugins/eve-plugin-fields/test/plugin.test.mjs index eb56dd1..85df1b7 100644 --- a/plugins/eve-plugin-fields/test/plugin.test.mjs +++ b/plugins/eve-plugin-fields/test/plugin.test.mjs @@ -50,6 +50,7 @@ test("publishes a runtime-neutral Unity contract package", () => { 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/); diff --git a/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/README.md b/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/README.md index eee9130..fabc7f1 100644 --- a/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/README.md +++ b/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/README.md @@ -19,3 +19,10 @@ 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. diff --git a/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/Runtime/EveFieldsContracts.cs b/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/Runtime/EveFieldsContracts.cs index 3bf837e..8c712e2 100644 --- a/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/Runtime/EveFieldsContracts.cs +++ b/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields/Runtime/EveFieldsContracts.cs @@ -44,6 +44,7 @@ namespace GameCult.Eve.PluginFields public const int SimplexNoise = 1; public const int AnimatedSimplexNoise = 2; public const int AnimatedCellNoiseB = 3; + public const int AnimatedRadialCosine = 4; } public static class EveFieldsSplatSourceFlags 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 42d2ed2..a985686 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,6 +1,6 @@ { "name": "org.gamecult.eve.plugin-fields", - "version": "0.2.2", + "version": "0.2.3", "displayName": "Eve Fields Plugin Contracts", "description": "Runtime-neutral C# contracts for gamecult.fields documents.", "unity": "2021.3",