Aetheria/Assets
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens a454a5a77f Collapse the two implicit shield ellipsoids into ShieldEnvelope (Cut 2)
FieldDriver derived the shield ellipsoid from its own transform.localScale;
ShieldManager derived it independently from the Shield prefab instance's
transform, doing the same normalise-and-project by hand against a different
object. Add ShieldEnvelope as the one reader of a transform's centre, radii,
surface projection, and true outward normal (derived, not authored, per R6 --
no second copy of numbers the physical MeshCollider already owns), and switch
both consumers onto it, deleting their hand-rolled projections.

Radii read the attached collider mesh's own bounds.extents per axis rather
than assuming a flat 0.5 or 1.0: Shield.prefab's Icosphere collider measures
(0.0095106, 0.01, 0.01), not a uniform round number, and the cubesphere's
collider measures exactly (1,1,1) -- confirmed by a throwaway batchmode probe
against the actual mesh assets, not guessed.

SurfaceNormal is not normalize(p): a non-uniform ellipsoid's true normal is
the gradient of the implicit surface, transformed by rotation and the INVERSE
of lossyScale (a normal is a covector). The first implementation used
TransformDirection (rotation and forward scale) and the batchmode probe's
finite-difference gradient check caught it immediately -- exactly the
plausible-looking-wrong-answer failure mode the cut map called out by name.
Both original consumers keep normalize(p)-equivalent behaviour via the new
SurfaceDirection method, since they only ever wanted a direction.

FieldDriver falls back to its pre-cut formulas (logged once) when no
ShieldEnvelope is present, since it has no guaranteed carrier yet.
ShieldManager does not: every object that carries it gets an envelope in this
cut, so a missing one logs an error and degrades to a fixed direction rather
than recomputing a second projection.

No prefab or scene file is touched here (Q5: the operator rigs prefabs and
scenes by hand); ShieldPanelCut2Verify's batchmode probe instead builds
synthetic transforms carrying Longinus's and Djinni's actual override values
plus the real Icosphere mesh, and proves ProjectToSurface lands exactly on the
ellipsoid and SurfaceNormal matches a finite-difference gradient to 1e-3.
mutation_tests_shield_panel_cut2.py mutates SurfaceNormal three ways (back to
normalize(p), back to TransformDirection, and a flattened 0.5 extents factor)
and confirms the probe goes red for each, naming the reason.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 06:33:38 +02:00
..
AddressableAssetsData Add Addressables as a direct dependency and settings, Content group entry 2026-09-18 04:31:28 +02:00
Audio Combat & Visibility & Collisions 2021-02-26 19:01:47 +00:00
Content Switch engine asset references from Resources paths to Addressables GUIDs 2026-09-18 05:04:50 +02:00
Editor Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
Fonts Action Bar (WIP) 2021-04-18 05:13:20 +01:00
Images Upgrade to Unity 6000.3.24f1 2026-09-11 22:04:28 +02:00
Materials Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
Models Shields 2025-01-30 01:58:05 +00:00
Plugins Delete the in-tree cache, JsonKnownTypes and vendored MessagePack 2026-09-14 18:42:09 +02:00
Prefabs Upgrade to Unity 6000.3.24f1 2026-09-11 22:04:28 +02:00
Resources Map the shield panel onto the built-in pipeline and the absorb event 2026-09-18 04:47:36 +02:00
Scenes Drive the field shield test scene by publishing capability events 2026-09-17 14:36:54 +02:00
Scripts Collapse the two implicit shield ellipsoids into ShieldEnvelope (Cut 2) 2026-09-18 06:33:38 +02:00
Shaders Land the six shield-panel sources, ported to built-in and compiling 2026-09-18 06:08:04 +02:00
StreamingAssets Unified Volumetric Flow 2021-06-18 12:32:03 +01:00
TextMesh Pro Bugfixes & Reactive Refactor 2025-07-18 00:21:33 +01:00
Textures Upgrade to Unity 6000.3.24f1 2026-09-11 22:04:28 +02:00
AddressableAssetsData.meta Add Addressables as a direct dependency and settings, Content group entry 2026-09-18 04:31:28 +02:00
Audio.meta Combat & Visibility & Collisions 2021-02-26 19:01:47 +00:00
Content.meta Add Addressables as a direct dependency and settings, Content group entry 2026-09-18 04:31:28 +02:00
Editor.meta Add Epiphany Unity editor bridge 2026-04-30 15:03:15 +01:00
Fonts.meta Menu Prototype 2020-03-23 14:36:59 +00:00
HoverCursorChange.cs Playability 2022-08-08 22:43:55 +01:00
HoverCursorChange.cs.meta Trade Menu Spreadsheet 2021-01-14 03:20:27 +00:00
Images.meta Menu Prototype 2020-03-23 14:36:59 +00:00
MainMenuMusic.cs NEW CLOUDS NEW CLOUDS NEW CLOUDS WHOOO 2022-07-10 02:53:09 +01:00
MainMenuMusic.cs.meta Music & SFX 2021-04-30 11:19:25 +01:00
Materials.meta Old Aetheria Code 2020-03-09 01:28:55 +00:00
Models.meta Initial ARPG Port 2020-11-27 22:47:33 +00:00
MouseRotate.cs Move the remaining Assets scripts off Unity.Mathematics 2026-09-14 18:01:54 +02:00
MouseRotate.cs.meta Playability 2022-08-08 22:43:55 +01:00
Plugins.meta Initial Client/Server Communication 2020-02-26 17:48:40 +00:00
Prefabs.meta Smooth AF Tab Menu 2020-03-24 21:51:38 +00:00
Resources.meta Old Aetheria Code 2020-03-09 01:28:55 +00:00
Scenes.meta Created Unity Project 2020-02-19 15:09:31 +00:00
Scripts.meta Initial Client/Server Communication 2020-02-26 17:48:40 +00:00
Shaders.meta Copy Aetheria Code 2020-02-27 18:51:07 +00:00
Steel.mat Combat & Visibility & Collisions 2021-02-26 19:01:47 +00:00
Steel.mat.meta Combat & Visibility & Collisions 2021-02-26 19:01:47 +00:00
StreamingAssets.meta Initial Wwise Integration 2021-02-27 20:53:36 +00:00
TextMesh Pro.meta Smooth AF Tab Menu 2020-03-24 21:51:38 +00:00
Textures.meta Initial ARPG Port 2020-11-27 22:47:33 +00:00