#pragma once #include // The winning behavior's executor writes this each tick before movement runs. // `active` is false when no behavior set a destination (the ship brakes); the // score-based selection (see architecture.md "Movement Arbitration") decides // which single executor writes here. struct MovementIntentComponent { bool active = false; QVector2D target; // straight-line destination, or orbit center when orbitRadius_tiles > 0 float orbitRadius_tiles = 0.0f; // 0 ⇒ go straight to target; >0 ⇒ orbit target at this radius QVector2D orbitCenterVelocity_tpt; // velocity of the orbit center (0 for a static center); the orbit // sense is resolved relative to this so a moving target's own motion // does not bias it };