Record released held-input witness
This commit is contained in:
parent
140e1bd963
commit
72c9ed709d
5 changed files with 64 additions and 26 deletions
|
|
@ -192,6 +192,7 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests
|
|||
WitnessReceipt lookReceipt = null;
|
||||
WitnessReceipt focusReceipt = null;
|
||||
WitnessReceipt tractorReceipt = null;
|
||||
WitnessReceipt tractorReleaseReceipt = null;
|
||||
WitnessReceipt actionReceipt = null;
|
||||
EveUnityShotReceipt observedShot = null;
|
||||
EveUnityCombatPresentation observedCombat = null;
|
||||
|
|
@ -202,6 +203,7 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests
|
|||
float aimDotDistance = 0f;
|
||||
int cockpitProgressCount = 0;
|
||||
float tractorBeamPower = 0f;
|
||||
float tractorReleasedPower = 1f;
|
||||
int tractorBeamParticleSystemCount = 0;
|
||||
|
||||
try
|
||||
|
|
@ -385,7 +387,7 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests
|
|||
Assert.That(beamPresentation.ActivationActionId, Is.Not.Empty,
|
||||
"The beam presentation does not name an advertised generic action.");
|
||||
var tractorVersion = runtime.ActiveVersion;
|
||||
var tractor = host.SubmitAdvertisedActionIntent(playerId, beamPresentation.ActivationActionId);
|
||||
var tractor = host.SubmitAdvertisedActionValueIntent(playerId, beamPresentation.ActivationActionId, 1f);
|
||||
var tractorDeadline = Time.realtimeSinceStartup + 12f;
|
||||
while (Time.realtimeSinceStartup < tractorDeadline &&
|
||||
(runtime.LastReceipt == null || runtime.LastReceipt.CommandId != tractor.CommandId ||
|
||||
|
|
@ -600,6 +602,29 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests
|
|||
Directory.CreateDirectory(Path.GetDirectoryName(Path.GetFullPath(mapCapturePath)));
|
||||
File.WriteAllBytes(mapCapturePath, pixels.EncodeToPNG());
|
||||
Assert.That(new FileInfo(mapCapturePath).Length, Is.GreaterThan(1024));
|
||||
var tractorReleaseVersion = runtime.ActiveVersion;
|
||||
var tractorRelease = host.SubmitAdvertisedActionValueIntent(
|
||||
playerId,
|
||||
beamPresentation.ActivationActionId,
|
||||
0f);
|
||||
var tractorReleaseDeadline = Time.realtimeSinceStartup + 12f;
|
||||
while (Time.realtimeSinceStartup < tractorReleaseDeadline &&
|
||||
(runtime.LastReceipt == null || runtime.LastReceipt.CommandId != tractorRelease.CommandId ||
|
||||
!string.Equals(runtime.LastReceipt.State, "reconciled", StringComparison.OrdinalIgnoreCase) ||
|
||||
runtime.ActiveVersion < runtime.LastReceipt.SourceVersion ||
|
||||
EveUnityBeamPresentation.FindAll(runtime.ActiveProjection).Single().Power >
|
||||
beamPresentation.ActivationThreshold))
|
||||
{
|
||||
yield return new WaitForSecondsRealtime(0.1f);
|
||||
runtime.Refresh();
|
||||
}
|
||||
AssertReconciledProviderReceipt(runtime.LastReceipt, tractorRelease.CommandId,
|
||||
provider.Selection.ProviderId, provider.Selection.SurfaceId, tractorReleaseVersion);
|
||||
tractorReleaseReceipt = WitnessReceipt.From("beam-release", runtime.LastReceipt);
|
||||
beamRenderer.RefreshNow();
|
||||
Assert.That(beamRenderer.TryGetPower(beamPresentation.Id, out tractorReleasedPower), Is.True);
|
||||
Assert.That(tractorReleasedPower, Is.Zero,
|
||||
"Released held input did not return the daemon-authored tractor presentation to zero.");
|
||||
WriteWitnessFacts(
|
||||
initialVersion,
|
||||
runtime.ActiveVersion,
|
||||
|
|
@ -615,6 +640,7 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests
|
|||
lookReceipt,
|
||||
focusReceipt,
|
||||
tractorReceipt,
|
||||
tractorReleaseReceipt,
|
||||
actionReceipt,
|
||||
observedShot,
|
||||
shieldRatioBefore,
|
||||
|
|
@ -631,6 +657,7 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests
|
|||
pilotBrightPixelCount,
|
||||
cockpitProgressCount,
|
||||
tractorBeamPower,
|
||||
tractorReleasedPower,
|
||||
tractorBeamParticleSystemCount,
|
||||
playerRendererFacts);
|
||||
}
|
||||
|
|
@ -665,6 +692,7 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests
|
|||
WitnessReceipt look,
|
||||
WitnessReceipt targeting,
|
||||
WitnessReceipt tractor,
|
||||
WitnessReceipt tractorRelease,
|
||||
WitnessReceipt action,
|
||||
EveUnityShotReceipt shot,
|
||||
float shieldRatioBefore,
|
||||
|
|
@ -681,6 +709,7 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests
|
|||
int pilotBrightPixelCount,
|
||||
int cockpitProgressCount,
|
||||
float tractorBeamPower,
|
||||
float tractorReleasedPower,
|
||||
int tractorBeamParticleSystemCount,
|
||||
RendererFact[] playerRendererFacts)
|
||||
{
|
||||
|
|
@ -695,6 +724,7 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests
|
|||
aimPresentation = look != null && aimDotDistance >= 49.9f,
|
||||
targeting = targeting != null,
|
||||
beamPresentation = tractor != null && tractorBeamPower > 0.01f && tractorBeamParticleSystemCount > 0,
|
||||
beamRelease = tractorRelease != null && tractorReleasedPower == 0f,
|
||||
action = action != null,
|
||||
combatPresentation = shot != null,
|
||||
shotId = shot?.ShotId ?? "",
|
||||
|
|
@ -721,13 +751,14 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests
|
|||
pilotBrightPixelCount = pilotBrightPixelCount,
|
||||
cockpitProgressCount = cockpitProgressCount,
|
||||
tractorBeamPower = tractorBeamPower,
|
||||
tractorReleasedPower = tractorReleasedPower,
|
||||
tractorBeamParticleSystemCount = tractorBeamParticleSystemCount,
|
||||
playerRenderers = playerRendererFacts,
|
||||
mapChannelRendererCount = mapChannelRendererCount,
|
||||
mapChangedPixels = mapChangedPixels,
|
||||
pilotCameraExcludesMapChannel = pilotCameraExcludesMapChannel,
|
||||
mapCameraIncludesMapChannel = mapCameraIncludesMapChannel,
|
||||
receipts = new[] { movement, look, targeting, tractor, action }
|
||||
receipts = new[] { movement, look, targeting, tractor, tractorRelease, action }
|
||||
};
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(Path.GetFullPath(path)));
|
||||
File.WriteAllText(path, JsonUtility.ToJson(document, true));
|
||||
|
|
@ -743,6 +774,7 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests
|
|||
public bool aimPresentation;
|
||||
public bool targeting;
|
||||
public bool beamPresentation;
|
||||
public bool beamRelease;
|
||||
public bool action;
|
||||
public bool combatPresentation;
|
||||
public string shotId;
|
||||
|
|
@ -769,6 +801,7 @@ namespace GameCult.EveUnity.GenericClient.PlayModeTests
|
|||
public int pilotBrightPixelCount;
|
||||
public int cockpitProgressCount;
|
||||
public float tractorBeamPower;
|
||||
public float tractorReleasedPower;
|
||||
public int tractorBeamParticleSystemCount;
|
||||
public RendererFact[] playerRenderers;
|
||||
public int mapChannelRendererCount;
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@
|
|||
"com.unity.render-pipelines.universal": "17.4.0",
|
||||
"org.gamecult.cultlib": "https://github.com/GameCult/CultLib.git?path=/unity/org.gamecult.cultlib#cultlib-unity-v1.0.13",
|
||||
"org.gamecult.eve.plugin-fields": "https://github.com/GameCult/EvePlugins.git?path=/plugins/eve-plugin-fields/unity/org.gamecult.eve.plugin-fields#eve-plugin-fields-unity-v0.1.1",
|
||||
"org.gamecult.eve.surface": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.surface#eveunity-surface-v0.2.1",
|
||||
"org.gamecult.eve.unity-scene": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-scene#eveunity-scene-v0.3.30",
|
||||
"org.gamecult.eve.surface": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.surface#eveunity-surface-v0.2.2",
|
||||
"org.gamecult.eve.unity-scene": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-scene#eveunity-scene-v0.3.31",
|
||||
"org.gamecult.eve.unity-uitoolkit": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-uitoolkit#eveunity-uitoolkit-v0.1.1"
|
||||
},
|
||||
"testables": [
|
||||
|
|
|
|||
|
|
@ -133,26 +133,26 @@
|
|||
"hash": "0b099274a4e2b4c301eced4322166837792f585a"
|
||||
},
|
||||
"org.gamecult.eve.surface": {
|
||||
"version": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.surface#eveunity-surface-v0.2.1",
|
||||
"version": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.surface#eveunity-surface-v0.2.2",
|
||||
"depth": 0,
|
||||
"source": "git",
|
||||
"dependencies": {
|
||||
"org.gamecult.cultlib": "1.0.8"
|
||||
},
|
||||
"hash": "d0aa50d31f3b6da96bffc194fdc3aa358f37e332"
|
||||
"hash": "140e1bd963a0033e66777a3b2c5fe6e9c97dfe32"
|
||||
},
|
||||
"org.gamecult.eve.unity-scene": {
|
||||
"version": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-scene#eveunity-scene-v0.3.30",
|
||||
"version": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-scene#eveunity-scene-v0.3.31",
|
||||
"depth": 0,
|
||||
"source": "git",
|
||||
"dependencies": {
|
||||
"org.gamecult.cultlib": "1.0.13",
|
||||
"org.gamecult.eve.plugin-fields": "0.1.1",
|
||||
"org.gamecult.eve.surface": "0.2.1",
|
||||
"org.gamecult.eve.surface": "0.2.2",
|
||||
"com.unity.mathematics": "1.3.2",
|
||||
"com.unity.modules.particlesystem": "1.0.0"
|
||||
},
|
||||
"hash": "f979cd425a9f8f951736c56051e8368b6d6ac2f3"
|
||||
"hash": "140e1bd963a0033e66777a3b2c5fe6e9c97dfe32"
|
||||
},
|
||||
"org.gamecult.eve.unity-uitoolkit": {
|
||||
"version": "https://github.com/GameCult/EveUnity.git?path=/packages/org.gamecult.eve.unity-uitoolkit#eveunity-uitoolkit-v0.1.1",
|
||||
|
|
|
|||
|
|
@ -4,8 +4,9 @@
|
|||
|
||||
The warm-cache released-package witness passes with:
|
||||
|
||||
- `org.gamecult.eve.unity-scene` `0.3.30`, commit
|
||||
`f979cd425a9f8f951736c56051e8368b6d6ac2f3`;
|
||||
- `org.gamecult.eve.unity-scene` `0.3.31`, commit
|
||||
`140e1bd963a0033e66777a3b2c5fe6e9c97dfe32`;
|
||||
- `org.gamecult.eve.surface` `0.2.2`, from the same commit;
|
||||
- `org.gamecult.eve.unity-uitoolkit` `0.1.1`, commit
|
||||
`4d0cbe0185bdc4fc65eb63503a7c5cb578539669`;
|
||||
- `org.gamecult.cultlib` `1.0.13`, commit
|
||||
|
|
@ -15,7 +16,7 @@ The warm-cache released-package witness passes with:
|
|||
|
||||
Evidence is in `artifacts/aetheria-daemon-native-0326-warm`. The PlayMode test
|
||||
passed and recorded provider-owned reconciled movement, look, targeting,
|
||||
tractor, and action receipts. The daemon-owned look direction reached the SoA body rotation,
|
||||
tractor press, tractor release, and action receipts. The daemon-owned look direction reached the SoA body rotation,
|
||||
and the generic aim presentation rendered at the advertised 50-unit minimum
|
||||
convergence distance. The advertised skybox material and reflection cubemap
|
||||
resolved from the provider bundle as their required native types and became the
|
||||
|
|
@ -44,13 +45,14 @@ daemon lock progress `1.0`; Unity does not manufacture or smooth that value.
|
|||
Camera-channel facts:
|
||||
|
||||
- provider-authored player renderers: `14`, including the lowered tractor effect;
|
||||
- pilot changed pixels: `230,255`;
|
||||
- pilot average luminance: `0.004634`;
|
||||
- pilot bright pixels: `1,542`;
|
||||
- map-channel renderers: `11`;
|
||||
- map changed pixels: `8,510`;
|
||||
- pilot changed pixels: `230,173`;
|
||||
- pilot average luminance: `0.002677`;
|
||||
- pilot bright pixels: `1,024`;
|
||||
- map-channel renderers: `10`;
|
||||
- map changed pixels: `4,626`;
|
||||
- native cockpit progress bars: `7`;
|
||||
- daemon tractor power at capture: `0.24`;
|
||||
- daemon tractor power at capture: `0.16`;
|
||||
- daemon tractor power after the advertised release: `0`;
|
||||
- provider tractor particle systems: `1`;
|
||||
- the pilot camera excludes the advertised map layer;
|
||||
- the player prefab's embedded layer-14 map icon contributes exactly `0` pilot
|
||||
|
|
@ -69,15 +71,18 @@ Aetheria currently bundles ambientCG's 1K `Metal012` color, normal, and
|
|||
metalness maps under CC0. The same pre-generated maps now replace dead
|
||||
Substance archive sub-assets on the brushed aluminium, tinted car paint,
|
||||
cockpit, steel, black-metal, and radiator materials. The released witness
|
||||
resolves textured native URP materials in `9` distinct player-material slots,
|
||||
resolves textured native URP materials in `10` distinct player-material slots,
|
||||
up from `3`, without adding another texture payload. This is temporary provider
|
||||
art with recorded provenance, not a replacement texture pipeline.
|
||||
|
||||
The tractor proof is structural, not yet a native-look victory lap. The daemon
|
||||
publishes `beam.presentation`, the generic client routes `pilot.scoop` through
|
||||
the advertised `SetTractorPower` operation and payload, and the provider-owned
|
||||
prefab is attached to the SoA-presented ship with nonzero daemon power. Its
|
||||
particle renderer contributes only one measured pilot pixel in this capture.
|
||||
publishes `beam.presentation` and advertises `pilot.scoop` as a
|
||||
`button-hold.v1` value action. The generic client routes scalar `1` on press and
|
||||
scalar `0` on release through the advertised `SetTractorPower` operation. Both
|
||||
commands receive provider-owned reconciled receipts, and the daemon ramps the
|
||||
published power from `0.16` at capture to exactly `0` after release. The
|
||||
provider-owned prefab is attached to the SoA-presented ship, but its particle
|
||||
renderer contributes zero measured pilot pixels in this capture.
|
||||
Effect tuning remains provider art work; the runtime must not compensate with
|
||||
an Aetheria-specific beam.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
param(
|
||||
[string] $UnityExe = "C:\Program Files\Unity\Hub\Editor\6000.4.2f1\Editor\Unity.exe",
|
||||
[string] $AetheriaRoot = "E:\Projects\Aetheria",
|
||||
[string] $CultLibRoot = "E:\Projects\CultLib",
|
||||
[string] $CultLibRoot = "E:\Projects\CultLib-codex-cultmesh-reliability",
|
||||
[string] $EveUnityRoot = "E:\Projects\EveUnity",
|
||||
[string] $YmirRoot = "E:\Projects\Ymir",
|
||||
[string] $YmirRoot = "E:\Projects\Ymir-aetheria-integration",
|
||||
[string] $ClientProject = "ReleaseConsumerProject",
|
||||
[int] $Port = 3076,
|
||||
[string] $OutputDirectory = "artifacts\aetheria-daemon",
|
||||
|
|
@ -13,7 +13,7 @@ param(
|
|||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$expectedEveUnityCommit = "f979cd425a9f8f951736c56051e8368b6d6ac2f3"
|
||||
$expectedEveUnityCommit = "140e1bd963a0033e66777a3b2c5fe6e9c97dfe32"
|
||||
$expectedEveUnityUiToolkitCommit = "4d0cbe0185bdc4fc65eb63503a7c5cb578539669"
|
||||
$expectedCultLibCommit = "feb5c71513e71d681699f462fe3682b3168c6f73"
|
||||
$repoRoot = Split-Path -Parent $PSScriptRoot
|
||||
|
|
|
|||
Reference in a new issue