Replaced Box<T> with NativeReference<T>. Same functionality, but maintained by Unity.
Added DebugDisplayName component to Myriad
Showing the display name in the inspector if it exists for an entity
Better handling of world and system disposal (fixed leaks in rail integrator)
Made Myriad.ECS.Entity contains a back reference to the World which contains it. significantly simplifying much of the API!
Added EntityId to Myriad.ECS - does not contain the World backreference. This can be used in Unity Jobs (which can't hold a reference to managed objects).
Fixed up Ephemeris to use EntityId wherever necessary to successfully compile.
Tested using Kahan and Neumaier summation in the integrator. These are both techniques for summing floating point numbers with very different scales which compensate for the lost precision.
Summation is done independently per-axis, so it's just a sum of Span<double>
This does not seem to help much at all. Test bench shows energy in test scene (which should remain constant, in a perfect integrator) oscillates approximately the same amount.
Modified integrator to sum all of the derivatives before adding to the state. This means all of the (relatively small) derivatives are added together before being added to the (relatively huge) state vector, at no extra cost.
Added synchronous integration to rail integrator if the rail is very short. This avoids issues with the sampler trying to sample beyond the end of the rail after invalidation (at the cost of doing some of that integration work on the main thread)
Added an easy way to get a NativeAccelerationQuery
Started building NBodyBurnAspect - an aspect for scheduling engine burns on an nbody
Added GetComponentRefT<T> to Myriad.ECS - returns RefT<T> instead of ref T
Added method to schedule new burns to NBodyBurnAspect
Updated KeyboardBurnControl test script to use NBodyBurnAspect
There's some skipping when creating burns, but it works! Pod and space station move around relative to each other fairly smoothly even when screaming along at 15km/s.
Skipping is probably caused by interpolation in position sampling
Possibly fixable by crossfading the interpolator (usually done during extrapolation fixup)
Added extension methods to setup nbody physics and rail rendering to an entity
Experimenting with activating sampling fixup when the page current being sampled changes, to smooth out sampling jitter
This helps with jerkiness, but ultimately makes overall error worse. The problem is extrapolation is proceeding with old data (i.e. the burn didn't happen) so although there's no skip (because you keep extrapolating and smoothly transition) but there's more error (weird unphysical movements).
Possible idea: when the rail changes out from underneath points note down the sampling error and fix that over a number of frames, possibly with a cap on how much fake velocity it can introduce.
Ripped out lots of the rail reconciliation stuff
It's really for handling when sampling and there's no rail data, this isn't likely to happen any more since synchronous integration was added
I can do better for fixing the actual exact issue (see idea above)
Implemented the error correction thing, measuring the difference between predicted position and actual position and adding on that offset so there's no jerk, then slowly fixing up that error.
Added system to find proximity between entities with HasVisual and ClosestVisualProximity components. Used to calculate error correction velocity (see Friday 11th)