Throttle lock is a forward floor on the solve; allocation moves after the performance update
The lock stops being an intent rewrite in Ship.Update: ThrustAllocator.Allocate takes forwardFloor, which ignores the stick, asks full forward and holds every column with y > 0 at full (ruling overdrive-forward-floor). Ship allocates in Entity's new UpdateThrottles phase, after every item's UpdatePerformance and before the power bus and Execute, so liveness and thrust are the ones Execute acts on (finding liveness-read-before-performance). Tests follow in the next commits; the test project still compiles, new behaviour is untested here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
caa424f424
commit
534e402fdf
3 changed files with 26 additions and 12 deletions
|
|
@ -1373,6 +1373,10 @@ public abstract class Entity
|
|||
yield return b;
|
||||
}
|
||||
|
||||
// The phase between the items' performance update and the power bus: what an entity commands its items to do this
|
||||
// tick, read from the same liveness and stats Execute then acts on. Ship's allocation lives here.
|
||||
protected virtual void UpdateThrottles() { }
|
||||
|
||||
public virtual void Update(float delta)
|
||||
{
|
||||
TurnRate = 0;
|
||||
|
|
@ -1402,6 +1406,7 @@ public abstract class Entity
|
|||
UpdateTemperature(delta);
|
||||
|
||||
foreach (var item in _orderedEquipment) item.UpdatePerformance();
|
||||
UpdateThrottles();
|
||||
|
||||
if (_active)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue