Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EVAConstruction can alter a part's mass from what it should be when mass modifiers are involved #185

Closed
JonnyOThan opened this issue Jan 26, 2024 · 1 comment
Labels
kspBug Identified KSP issue
Milestone

Comments

@JonnyOThan
Copy link
Contributor

Repro steps:

  1. Create a craft that has an inventory container
  2. Add a part that has variants that modify the mass (e.g. RCS block). Change the variant before you add it so that the mass is different from the prefab.
  3. Launch the craft with an engineer on board
  4. In EVA construction, take the part out of inventory and drop it on the ground
  5. Pick the part back up and put it back into an inventory
  6. Note the mass changed

Before removing:
image

After replacing:
image

@JonnyOThan JonnyOThan added the kspBug Identified KSP issue label Jan 26, 2024
@JonnyOThan
Copy link
Contributor Author

JonnyOThan commented Jan 27, 2024

Separate, but maybe related:

ModuleCargoPart.MakePartSettle changes the mass of the part when it is placed on the ground: changes to 20t on planets with GeeASL < 0.8, and 4t on planets with GeeASL < 1.1. I'm not sure why it does this - it certainly shouldn't affect how fast the part falls. But maybe there were issues with other objects pushing it, or maybe from the effect on the inertia tensor.

In EVAConstructionModeEditor.PickupPart, the stock code sets the selected part's mass to the prefab mass. This effectively undoes the mass increase caused by MakePartSettle, but also has the side effect of getting the mass wrong if there are modules that implement IPartMassModifier (ModulePartVariants, etc). That's the root cause of the above issue.

But, if there are ways to pick up the part or get it into inventory, etc. while it still has the increased mass from MakePartSettle, it could cause a lot of issues. I haven't been able to find one yet, but I have a really strong hunch that #147 might have been caused be that, if not just by #185 directly. Maybe the state machine for surface deployables is different.

@JonnyOThan JonnyOThan added this to the 1.34 milestone Jan 27, 2024
JonnyOThan added a commit that referenced this issue Jan 27, 2024
JonnyOThan added a commit that referenced this issue Jan 30, 2024
* New KSP QoL/performance patch : [**LowerMinPhysicsDTPerFrame**](#175) : Allow a min value of 0.02 instead of 0.03 for the "Max Physics Delta-Time Per Frame" main menu setting. This was already possible by manually editing the `settings.cfg` file, but changes would revert when going into the settings screen.

* Add tooltip describing the "Max Physics Delta-Time Per Frame" main menu setting

* merging master to dev (#181)

* zh-cn localization for ManufacturerFixes.cfg (#178)

* Remove ENABLE_PROFILER define that got added recently

---------

Co-authored-by: zhangyuesai <zhangyuesai@live.com>

* Fix #182: ModulePartInventory now accounts for changes to a part's mass or volume
-for example, changing a part's variant (rcs thruster blocks, structural tube) or its resource level could change its mass, but when you store it in inventory the mass would always use the value from the prefab

* oops, revert a couple changes to the csproj that made it into the last commit by accident

* Fix #185: calculate the correct mass for parts when picking them up off the ground in EVA construction

* Fix #104 : set dead kerbals to missing when loading a game and respawning is enabled

* Standardize spaces for indent in .editorconfig and add it to the SLN
(note personally I'd prefer tabs for indents, but all the existing code in here that didn't come from me uses spaces and consistency is more important)

* Change tabs -> spaces in the few files that used it
Whitespace-only change.
(note most of these were originally authored by me, but the project as a whole uses spaces pretty consistently)

* Fix #180: add ZeroCostTechNode patch

* Better editor undo redo (#176)

* BetterEditorUndoRedo : Exploratory fix for undo/redo state, doesn't work because of VesselCrewManifest side effects
See #172

* BetterEditorUndoRedo : functional, obvious issues fixed, still likely to cause side effects.

* disable BetterEditorUndoRedo by default

---------

Co-authored-by: JonnyOThan <jonnyothan@gmail.com>

* PAWGroupMemory is no longer per-window, but rather per-group (#186)

* Fix #50: PAWGroupMemory is no longer per-PAW, but stores the expansion state for all windows and is not cleared on scene changes
-possible future work: persist the collapse state to disk

* collapse or expand PAW groups when the PAW is shown

* Fix #179: ModulePartVariants now applies node position changes in all scenes

* enable BetterEditorUndoRedo by default

* Merge master -> dev (#187)

* zh-cn localization for ManufacturerFixes.cfg (#178)

* Remove ENABLE_PROFILER define that got added recently

---------

Co-authored-by: zhangyuesai <zhangyuesai@live.com>

* update readme with the new fixes

---------

Co-authored-by: gotmachine <24925209+gotmachine@users.noreply.github.com>
Co-authored-by: zhangyuesai <zhangyuesai@live.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kspBug Identified KSP issue
Development

No branches or pull requests

1 participant