Keeps the dimensions of connected parts in step in the KSP editor. Resize one procedural part and the change travels along the stack; change a wing's tip chord and the next segment outboard takes it as its root chord.
This is the first tagged release. 0.1.0 was handed round on Discord and was never published here.
What it does
Copying a number onto a neighbour is only half of it. A change stops at the first part that was a different size to begin with, so a cone with equal ends passes it along and a cone with a different far end absorbs it — and separate channels keep unrelated quantities apart, so a wing's thickness never lands on its chord.
The other half is the things that cannot be done by copying a number, where keeping parts fitted together means moving a part rather than writing a field:
- Sweep is maintained. A control surface on a wing whose chords differ has to follow a swept edge. Its offset fields hold a sweep rate per metre of span rather than a distance, so the wing's own offset cannot simply be handed across — setting the rate on its own just skews the part. Instead the surface is turned to lie along the edge, moved onto it, and given the edge's slope, which is what shears its ends back to streamwise.
- Wing joints stay closed. Sweeping or lengthening a segment moves the joint the next segment out is standing on. B9's own "inherit base" closes that by shearing the neighbour's root, which changes a planform you chose; this moves the neighbour instead, so it keeps its shape and follows the tip.
- A control surface keeps its place. B9 grows one from its middle, so making an aileron longer would otherwise push the end that was against the fuselage straight through it. It is put back on the stretch of wing it was on.
- Straight edges carry through. A delta built from three tapering segments has no two chords alike, yet its leading edge is one line. Whether an edge runs straight through a joint decides whether a chord change carries on, so narrowing a segment in the middle does not leave a kink. A triangle stays a triangle.
- Partial-span surfaces take the wing's interpolated thickness at their own stations, and a span scaled by how much of the wing they cover.
The first four each have their own switch, in config or on the settings window, so any one of them can be turned off without losing the others.
Hollow parts
A part's bore and its outside diameter can follow one another, under a new hollowCoupling setting with four modes:
| mode | the bore, as the outside moves |
|---|---|
hard |
never moves; a change that will not fit around it stops short (default) |
soft |
gives up exactly the room the outside needs, and no more |
proportional |
stays the same fraction of the outside |
constant |
the wall keeps its thickness |
hard is the default because it is the only one that never changes a number you did not ask about. A change the bore refuses leaves the craft visibly mismatched, which is information: something did not fit, and you can see where.
A stack can now be built to a bore as well as to an outside, so a plug sized to the tank above it follows when that tank's bore moves. And a part slid inside another's bore keeps its clearance when either is resized — reading from either end, under the same four modes. Nesting is recognised from any of the four end-plane pairings being flush, so a part turned end for end about its joint, or slid until its far face lines up with its host's far face, still counts. Nested parts need neither a shared axis nor matching diameters.
The setting is on the in-game settings window as well as in config.
Fixed
- Mirrored control surfaces drifted apart. A mirrored pair ended 0.0625 m apart along otherwise identical wings whenever their parent wing was shortened.
- Debug logging shipped on. The config had
debug = true, so every install wrote several lines per frame of editing intoKSP.log. If you have a copy from Discord, this is worth the upgrade on its own. - Control surfaces are refitted when their wing's thickness changes, kept coplanar through a parent's span change, and stay on the edge they were placed on.
- A part you moved yourself is judged against where it actually is.
Also
Other mods are now asked what they changed, rather than it being inferred from the fields afterwards, which recovers what a field held before somebody else wrote it. One hook on KSP's own BaseField.SetValue covers ProceduralParts, ROLib and stock; B9 Procedural Wings gets a second because it bypasses that seam. This uses Harmony when it is installed and is entirely optional — without it the mod behaves exactly as before.
Installing
Unzip into your KSP folder so that GameData/DimensionSync lands beside your other mods. No hard dependencies. Tested against KSP 1.12.5.
Full detail in CHANGELOG.md.