On this page
Saturday 1st Expanding "Add Layer" panel Fixing scroll on "Add Layer" panel Adding panel to change layer material Monday 3rd Adding "event data" panel which shows all of the events (penetration/spallation) in an impact Noticed some energy leaksFixing energy model to properly account for all energy:Kinetic energy forward (velocity) Kinetic energy in expansion of shatter clouds (dispersion velocity) Thermal energy in projectile Added "impact" event to act as an energy sink when a projectile hits a layer and is blocked Fuzzing 1,000,000 shots, total energy absorbed is always exactly the same as initial projectile energy! Added an "events" window to IMPACT, showing the path of the projectile through the armour Tuesday 4th Updating buttons on IMPACT menuAdding Thermal Analysis button Fixing button numbering (it was out of order) Creating new orbit line picking UI panelMoving picking code from NBodyOrbitLine Need to handle position offsets (see: NBodyOrbitLineSystem) Picking works! Investigated tighter bounds Debugging event propagationA graphic catches raycasts and consumes the event, there doesn't seem to be a way to not consume the event Custom Graphic might do it? Wednesday 5th Thursday 6th Investigating Cinemachine input - blocking input when over UIEventSystem.current.IsPointerOverGameObject()This gets suggested a lot, but I have in world elements (e.g. planets) that I don't want to block camera input. event.Use() in a UI element does not workCould detect mouse over event and disable the input mapWould need to be a mouse over for the entire canvas Come back to this later When clicking on orbits, lots of potential pick points are generatedIf there's just one, click on it without showing a dropdown If there are multiple show dropdownAlways show the closest point to the ray at the top Sort all others by time Show short ship ID Defined ECS components for different types/parts of a name. e.g. for "USS Enterprise D"Prefix: "USS" Suffix: "D" Code: "NCC-1701-D" Full: "USS Enterprise D" Abbreviated: "ENT" Proper: "Enterprise" Briefly investigated Unity Localization package (https://docs.unity3d.com/Packages/com.unity.localization@1.5/manual/Locale.html )Usage seems very allocation heavy :/ Building proper title with short entity name and time into future Adding number.AsUnitName() extension methods to physical units library Friday 7th Using long instead of string for ID in dropdown, avoiding string allocation when creating dropdown items Adding click handler for pick element and pick list Building prefab for click option Fixed mask on scroll view cutting off some content near the edge Need a system for showing symbols attached to rails at some point in the futureCreated system to sample position for entities at a fixed timestamp Debugging symbol positions being offset from where they should be Sunday 9th Experimenting with wrapping Myriad entity component data in a Unity native array in a way that works with jobs (and maybe Burst compiler) Experimenting with refactoring Myriad.ECS to use EntityId instead of Entity in many places. Better for working with jobs. If I implement some kind of burstable/job extensions to Myriad, I'm going to need codegen in Unity: Monday 10th Modifying event bus to split senders and receivers, no change in functionality but it makes setting up events more readable.Refactoring systems to use these new methods Deleted system created on Friday for displaying at a fixed timestamp, need to handle relative positioning Working out what needs to be made relative to what to render these in the right position on screen Added system to calculate position of planetary surface attached objectsBases, missile launchers, radars, targets etc Refactoring everything to do with planetary rotation rate to use RadianPerSecond unit instead of double Tuesday 11th Considering design for symbolsWhat should be used for pick points?Generic "pick point" marker Even more generic "contextual thing here" marker Specific maker for the entity type (ship/missile etc) Marker alert levels, some kind of overlay to differentiate an urgent marker from a general info marker Adding overlays to orbit pick markers on hover Adding callbacks to dropdown element (shown/hidden) Adding line renderer to canvas using https://github.com/Unity-UI-Extensions/com.unity.uiextensions Connecting line to 3D entity at one end and 2D UI element at the other end Added setup code for attaching names to entities Adjusting blending for instanced symbolsClipping out alpha < 0.5 Multiplying remaining alpha with colour, for a softer edge Extracting icons from team entity to show on UI Wednesday 12th Investigating templated code generation for Unity Designing selection systemOptions:Exactly zero or one item can be selectedSome items can be grouped, in which case the group can be selected Multiple selection:Many items can be selected One is "focused" (last one selected) Selection can be:An nbodyCould also be a sensor track, which is just an approximation of an nbody A point on an nbody orbitCould also be a sensor track, which is just an approximation of an nbody A kepler body Creating basic components and helpers for managing selection entities Investigating potential unit confusion bug in engine burn calculationDefining Newton and related units for units library Defining KilogramPerSecond for units library Using new units in engine burn stuff instead of double Seems to be fine Sending OnSelectOrbitRaycastPoint event when clicking on point Improving inspector for EventBusService with generic drawers Removing pick points which are more than 5x the distance of the closest, that filters out a lot of the noise Thursday 13th Fixing issue in EventBusService inspector sometimes not returning a drawer object Showing extra data like event count on inspectorInvestigating why some events are very noisy (sending every frame?)It's expected for these events Added ability to "mute" event channels, preventing listeners from receiving messages Creating system for receiving selection events and processing themAdded input map for additive selection mode Assigning order to selected items, can be used to e.g. move focus through selection Improved materials for earth (cloud and water details) Experimenting with introducing a "lock manager" into Myriad.ECS which can lock archetypes. Queries will take and release locks as they run. This would allow jobbified queries (where taking the lock just blocks on the job handle). Friday 14th Handling selection of orbit points which are in the past (due to delay between clicking and choosing) Creating a symbol indicating selected rail points Dynamically adding/removing overlay to indicate which symbol is the focused entity Monday 17th Updating t4 template asset in Myriad+Unity integration project (it's been fixed) Fixing an issue in template generator not auto-regenerating Removing pick points from the list which are before the current timeReplacing points before "now" with a point exactly at "now" targeting the same entity Setting up system to render icon for selected NBodyIf an nbody is selected when already selected only move focus Experimenting with job based queries Tuesday 18th Debugging ray picking sometimes being offset from mouse rayInterpolating time in picking to be more accurate Removing pick options that are very close in time to the previous option Doing all picking work even when the mouse isn't clickedShowing potential pick points every frame Improving selection very near the start of the rail (i.e. now) Got basic job queries workingRefactored to allow a "scheduler" passed in as part of the query to schedule jobs.More complex job chains Different jobs for different chunks/archetypes Wednesday 19th Experimenting with a lock/safety system built into Myriad.ECSMyriad can call "Block" when executing a normal query, which will be implemented on the Unity side to wait for jobs Creating a new scene for an orbit/burn gizmo (like the KSP one) Thursday 20th Creating manoeuvre node gizmoInvestigating colours for axes (taking into account colour blindness) Rendering tricks to draw circle and lines as constant size in screen space with faked occlusion Using stencils to block out shapes Friday 21st Tweaking manoeuvre gizmo, adding some elements to give a better sense of perspective Removed constant line length stuff (per line), it looks very weird as perspective shifts.Instead setting length for all three lines together Creating icons for 3 axes Attaching invisible clickable handles Creating an integration with the Unity safety system for the Myriad.ECS safety managerJobs scheduled in the Unity job system which use Myriad data attach a handle to the archetype Queries touching archetypes wait on that handle Monday 24th Improving dashed ring on gizmo Creating helper function for stencil functionality Adding drag handlers on the 3 axis handles Animating handle icons on hover Drawing direction indicator line Offsetting icons as they are dragged Screen space trickery to get dragging rightFind closest point between mouse and ray in screen space Convert back to WS pos to use as drag distance Tuesday 25th Updating T4 codegen package Refactoring dragging to be done entirely in screen space, invariant to scale/distanceDoing this in view space, not screen space, to be resolution invariant Clamping positions to screen, so the max input is when you drag right to the screen edge Endless fiddling with bounds checking Screen space line drawing to fix weirdness with extremely long lines at extreme view angles Find a place to put a cancel buttonMiddle is too crowded Floating off to the side looks weird End of the burn indicator line Wednesday 26th Hooking up cancel buttonMake it clickable Make it actually cancel Experimenting with rings to indicate total delta-vTweaking input to make it relative to input so far. This allows tweaking very precise burns and also huge burnsMight need some tweaks to make it ramp up over time? Thursday 27th Cleanup of gizmo code Beginning to hook up gizmo to burn scheduling systemCurrent system does not have a good definition for mass. Need to know:Current mass (right now) Dry mass (can never go below this) Fuel mass (right now) Components:Dynamics.Mass??? EngineBurnFuelTank Friday 28th Building components for mass:DryMass - not expected to change often, changes should be made by updating the valueWetMass - expected to change, auto updated every frame by a system that sums up massesDynamics.Mass - the actual current mass, auto calculated from dry + wet every frame New system to update fuel tank based on active engine burnsInstead of directly updating mass: update fuel, wet mass calculated from fuel, mass calculated from wet mass Converting fuel tank to store m3, instead of LFixing old docking sim minigame to handle changes in fuel Improving job based queries (disposal safety, to detect misuse)