Skip to content

Move KSP/Unity handling out of RCSSolver - #2335

Merged
lamont-granquist merged 1 commit into
devfrom
lcg/rcsbalancer
Oct 6, 2026
Merged

lamont-granquist merged 1 commit into
devfrom
lcg/rcsbalancer

Conversation

@lamont-granquist

@lamont-granquist lamont-granquist commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

This is some prep for moving RCSSolver into MechJebLib.

Primarily motivated by making the MechJebModuleRCSBalancer class responsible for managing the ModuleRCS directly and not having the save/restore thrust functionality down in the RCSSolver.

The Thruster class in RCSSolver then loses references to gameObjects which decouples the BLIEC solver problem from KSP/Unity.

The fact that the thread runner around the problem was being called in order to reset the part modules is a violation of separation of concerns. Writing this call is just bad:

solverThread.ResetThrusterForces()

Why is the thing you call to reset the ModuleRCS (executing in your own thread) the same thing you call which babysits the thread for the math problem?

Also hoists CheckVessel() up out of the solverThread.

This maybe pushes too much work back up into the MJModule, but that probably needs to get broken apart there and not just pushed into the math problem and thread wrapper around it to try to hide it.

Plus a bunch of fallout and two bugfixes:

  • Fixes the TODO around using stale state
  • Fixes restoring thruster state in OnModuleDisabled

This is some prep for moving RCSSolver into MechJebLib.

Primarily motivated by making the MechJebModuleRCSBalancer class
responsible for managing the RCSModule directly and not having the
save/restore thrust functionality down in the RCSSolver.

The Thruster class in RCSSolver then loses references to gameObjects
which decouples the BLIEC solver problem from KSP/Unity.

The fact that the thread runner around the problem was being called
in order to reset the part modules is a violation of separation of
concerns.  Writing this call is just bad:

solverThread.ResetThrusterForces()

Why is the thing you call to reset the RCSModules (executing in your own
thread) the same thing you call which babysits the thread for the math
problem?

Also hoists CheckVessel() up out of the solverThread.

This maybe pushes too much work back up into the MJModule, but that
probably needs to get broken apart there and not just pushed into
the math problem and thread wrapper around it to try to hide it.

Plus a bunch of fallout and two bugfixes:

- Fixes the TODO around using stale state
- Fixes restoring thruster state in OnModuleDisabled
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

✅ Build Artifact 🚀

MechJeb2-6172f3d.zip (built from 522d50e)

@lamont-granquist
lamont-granquist merged commit 785f55e into dev Oct 6, 2026
3 checks passed
@lamont-granquist
lamont-granquist deleted the lcg/rcsbalancer branch October 6, 2026 19:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant