Bug Fixes
- PQSOnlyStartOnce : This patch is now disabled by default as it appears to cause issues with PQS terrain generation under certain conditions.
New/Improved patches
- New KSP bugfix : WheelIntertiaLimit Reduces the lower inertia limit for wheels from 0.01 to 0.00001. Thanks to @MajorNr01 for contributing it.
- New performance patch : ExpansionBundlePreload Starts loading expansion bundles in the background while part compilation is happening. This should have a significant reduction in load times if you have the expansions installed.
- New performance patch : PQSOnlyStartOnce Avoid a second unnecessary restart of all PQS spheres in game when launching from the VAB or SPH. This should be a small improvement to scene switch times, possibly larger if you have parallax continued installed.
- Improved the FastLoader patch to load early asset bundles in the background. Should result in a small improvement to load times.
- Improved the MinorPerfTweaks patch to optimize away a
FindObjectOfTypecall. Should result in a small improvement to scene switch times. - Improved the MinorPerfTweaks patch to optimize
MonoUtilities.RefreshContextWindows()andMonoUtilities.RefreshPartContextWindow(). Should be a minor improvement to scene switch times under some conditions.
Other changes
- Added descriptions and mentalities for: Clamp-O-Tron, FreeFall Parachutes, LightYear Tire Company, Stratus Corporation. Thanks to @munktron239 for contributing it.
Bug fixes
- FastAndFixedEnumExtensions : fixed the caching mechanism erroring out on enums containing multiple members using the same underlying value. Was causing various issues in RO/RP1 due to such an enum being defind here.
New/improved patches
- New performance patch : FasterEditorPartList Improve the responsiveness of the part list when switching between categories, sorting and searching by tag. Adress issue #242 reported by @Rodg88.
- New KSP bugfix : DebugConsoleDontStealInput, fix the Alt+F12 console input field stealing input when a console entry is added. Thanks to @Clayell for reminding me of that especially annoying issue.
- New KSP bugfix & performance patch : FastAndFixedEnumExtensions, fix exceptions when calling the
EnumExtensions.*Description()methods with a non-defined enum value, and implement a cache for faster and less allocating execution of those methods. Adress issue #321, thanks to @k1suuu for reporting it.
Other changes
- Fixed
Overridepatches not properly handlingswitchstatement. - Changed the logging level from
ErrortoWarningwhen KSPCF detects a duplicate value in configs used to load a[Persistent]field.
Bug fixes
- ModuleColorChangerOptimization : Fixed externally controlled ModuleColorChanger modules state being wrongly reset on startup, notably causing the stock heat shield to start in the charred / black state in the editor.
New/improved patches
- New performance patch : ModuleColorChangerOptimization : Mostly eliminate the constant overhead from
ModuleColorChanger.Update()by avoiding re-setting the shader property when the state hasn't changed. - Improved OptimizedModuleRaycasts patch by removing useless constant overhead from the
ModuleSurfaceFX.Update()method, see PR #303.
Bug fixes
- OptimisedVectorLines : Fixed issue #306, fuel overlay not showing in the editor due to incorrect camera matrix math used in the optimization. Thanks to @Halbann for taking care of that one.
Bug fixes
- ModuleIndexingMismatch : Fixed issue #307 that would functionally disable this patch when multiple mods contain PartModules with the same name.
Bug fixes
- PersistentIConfigNode : Reverted the
DataTypeandFieldDatatypes to being public instead of internal as those are part of the public API for this patch, and in active use by ROLib and SEP.
Bug fixes
- PartParsingPerf : Fixed issue #305, incorrect parsing of
dragModelTypepart config values resulting in various parts such as wings to generate additional drag.
New / improved patches
- New performance patch : CraftBrowserOptimisations, significantly reduces the time it takes to open the craft browser and to search by name. Most noticeable with lots of craft. Thanks to @Halbann for this contribution.
- New performance patch : OptimisedVectorLines, improve performance in the Map View and tracking station when a large number of vessels and bodies are visible via faster drawing of orbit lines and CommNet lines. Thanks to @Halbann and @CharleRoger for this contribution.
- New QoL patch : TargetParentBody, allow targeting the parent body of the current craft, or any body in the parent hierarchy. Thanks to @jamespglaze for this contribution.
- Improved PartSystemsFastUpdate performance patch with a complete reimplementation of
TemperatureGaugeSystem, also see issue #194. Mostly eliminate the background processing of (hidden and visible) temperature gauges, and massively reduce the overhead of instantiating them, reducing scene load time and stutter on part count change events such as decoupling, docking, undocking, crashes, etc. - Various initial loading performance optimizations, see PR #269:
- Added performance metrics logging upon reaching the main menu
- Added (almost) entirely custom MU model parser, roughly 3 times the throughput of the stock parser (~300 MB/s on my machine). Will only really benefit to people having fast NVME drives with good random read performance.
- New patch, GameDatabasePerf : KSPCF now maintains dictionaries of loaded models and texture assets by their url/name, and patch the stock
GameDatabase.GetModel*/GameDatabase.GetTexture*method to use them instead of doing a linear search. This was especially bad with models, as the method would compare the requested string to theGameObject.nameproperty for every model in the database. - As a part of the MinorPerfTweaks patch, patched the
FlightGlobals.fetchproperty to not fallback to aFindObjectOfType()call when theFlightGlobals._fetchfield is null, which is always the case during loading. In a stock + BDB test case, this alone was about 10% of the total loading time, 7+ seconds. - New patch, PartParsingPerf, featuring slightly faster part icon generation and faster
Partfields parsing by creating a dictionary of IL-emitted parser delegates.
- Improved CommNetThrottling performance patch. The patch now implement a custom rate limiting logic for CommNet updates, with a more balanced take between performance improvements and simulation precision. As a result, the patch is now enabled by default. Thanks to @JonnyOThan for insisting on that one.
- Improved ModuleIndexingMismatch patch. Will now restore persisted data following a config change (mod updated/added/removed) when the module now present on a part is a base or derived module. Notably allow action group customizations to be kept when sharing craft files between Waterfall / non-Waterfall installs. Thanks to @BrettRyland for detailed reporting.
- New modding API patch : BaseFieldListUseFieldHost. Allow
BaseFieldand associated features (PAW controls, persistence, etc) to work when a customBaseFieldis added to aBaseFieldList(ie, aPartorPartModule) with ahostinstance other than theBaseFieldListowner. Potential use cases for this are having a part or module-level PAW item associated to and sharing the state of a common field, for example a field in aKSPAddon, or extending external (typically stock) modules with additional PAW UI controls and/or persisted fields.
Bug fixes
- CollisionEnhancerFastUpdate : Fixed issue #282, fixed exception spam when launching fireworks and possibly in other situations with non-part physical objects such as fairing / shroud debris. Thanks to @JonnyOThan for reporting.
- PersistentIConfigNode : Fixed issue #297, incorrect return value from the
LoadObjectFromConfig()KSP API method, notably resulting in the PAPI Lights mod failing to load. Thanks to @svm420 for reporting.
Internal changes
- Added a
[ManualPatch]attribute. When applied to a class derived fromBasePatch, the patch won't be automatically applied by the default patching infrastructure. To apply the patch, callBasePatch.Patch()manually.
Hotfix release for issue #273 : ForceSyncSceneSwitch patch incompatibility with Universal Storage 2. The patch will now be disabled when US2 is installed.
Note that this patch might be causing other issues, but so far we haven't been able to confirm them.
User facing changes
- New KSP performance patch : FasterPartFindTransform [KSP 1.12.3 - 1.12.5] : Faster, and minimal GC alloc relacements for the Part FindModelTransform* and FindHeirarchyTransform* methods.
- New KSP performance patch : ForceSyncSceneSwitch [KSP 1.12.0 - 1.12.5] : Forces all scene transitions to happen synchronously. Benefits scene transition time by reducing asset cleanup run count from 3 to 1 (contributed by @siimav).
- New KSP performance patches : this update introduce a collection of patches intended to fix various performance bottlenecks mainly relevant in high part count situations. See PR #257 and PR #256 :
- ModuleDockingNodeFindOtherNodesFaster : Faster lookup of other docking nodes.
- CollisionEnhancerFastUpdate : Optimization of the
CollisionEnhancercomponent (responsible for part to terrain collision detection). - PartSystemsFastUpdate : Optimization of various flight scene auxiliary subsystems : temperature gauges, highlighter, strut position tracking...
- MinorPerfTweaks : Various small performance patches (volume normalizer, eva module checks)
- FloatingOriginPerf : General micro-optimization of floating origin shifts. Main benefit is in large particle count situations (ie, launches with many engines) but this helps a bit in other cases as well.
- New KSP bufix : DragCubeLoadException [KSP 1.8.0 - 1.12.5] : Fix loading of drag cubes without a name failing with an IndexOutOfRangeException (contributed by @Nazfib).
- New KSP bufix : TimeWarpBodyCollision [KSP 1.12.0 - 1.12.5] : Fix timewarp rate not always being limited on SOI transistions, sometimes resulting in failure to detect an encounter/collision with the body in the next SOI (contributed by @JonnyOThan).
- New modding API improvement : KSPFieldEnumDesc [KSP 1.12.2 - 1.12.5] : Disabled by default, you can enable it with a MM patch. Adds display name and localization support for enum KSPFields. To use add
Descriptionattribute to the field (contributed by @siimav). - New KSP bugfix : ModuleActiveRadiatorNoParentException [KSP 1.12.3 - 1.12.5] : Fix exception spam when a radiator set to
parentCoolingOnlyis detached from the vessel (reported by @BrettRyland). - PAWStockGroups : Added PAW groups for generators, making the UI less confusing when multiple generators are present (contributed by @yalov).
- ModuleIndexingMismatch : Improved patch, now will still load a module data when the mismatched module is of a known base or derived type. Notably prevent engine state such as action groups configuration from being lost when installing/uninstalling Waterfall, or when exchanging craft files between stock and Waterfall installs.
Internal changes
- Patching now always run as the first ModuleManagerPostLoad callback, ensuring other callbacks can benefit from the patches (contributed by @al2me6).
- Small internal refactor of the patching infrastructure for less verbose patch declaration.
- Introduced a new "override" patch type, basically an automatic transpiler allowing to replace a method body with another. This has a little less overhead than a prefix doing the same thing, and allow for other patches (including non-KSPCF ones) to prefix the patched method as usual.
- FastLoader : Fixed a regression introduced in 1.35.1, causing PNG normal maps to be generated with empty mipmaps.
- FastLoader : fixed the PNG loader behavior not being similiar as in stock. It was wrongly generating mipmaps, notably resulting in NPOT textures not showing when texture quality wasn't set to full resolution (see issue #224).
- FastLoader : fixed cached PNG textures loading not using the data loaded by the threaded reader, but instead reading the file again synchronously (!). Unsurprisingly, fixing that is massively improving texture loading time.
- New KSP performance patch : OptimizedModuleRaycasts [KSP 1.12.3 - 1.12.5] : Improve engine exhaust damage and solar panel line of sight raycasts performance by avoiding extra physics state synchronization and caching solar panels scaled space raycasts results.
- New KSP QoL/performance patch : OptionalMakingHistoryDLCFeatures [KSP 1.12.3 - 1.12.5] : Allow to disable the Making History DLC mission editor and additional launch sites features to decrease memory usage and increase loading speed. The Making History parts will still be available. Can be toggled from the KSPCF in-game settings (requires a restart), or from a MM patch (see
Settings.cfg) - New KSP bugfix : PartBoundsIgnoreDisabledTransforms [KSP 1.12.3 - 1.12.5] : Fix disabled renderers by mesh switchers (B9PartSwitch...) still being considered for part bounds evaluation, resulting in various issues like parts not being occluded from drag in cargo bays, wrong vessel size being reported, etc...
- BetterUndoRedo : Fixed "too much undoing" when undoing offset/rotate editor actions, and other incoherent behavior (see related issue)
- FastLoader : Improved DDS loading performance by avoiding an extra copy of the DDS data
- MemoryLeaks : More stock memory leaks fixed, and additional reporting of leaked handlers
- Disable BetterEditorUndoRedo when TweakScale/L is installed due to introducing a bug with part attachments in the editor.
- New KSP QoL/performance patch : LowerMinPhysicsDTPerFrame : Allow a min value of 0.02 instead of 0.03 for the "Max Physics Delta-Time Per Frame" main menu setting. This allows for higher and smoother framerate at the expense of the game lagging behind real time. This was already possible by manually editing the
settings.cfgfile, but changes would revert when going into the settings screen. - New KSP QoL patch : BetterEditorUndoRedo : Invert the editor undo state capturing logic so part tweaks aren't lost when undoing.
- New KSP bugfix: InventoryPartMass : Fixes bugs where parts stored in inventories would not have the correct mass or volume when their resource levels were modified or variants changed.
- New KSP bugfix: EVAConstructionMass : Fixes a bug where picking up a part in EVA construction would set its mass to the wrong value when mass modifiers are involved (e.g. part variants).
- New KSP bugfix: RespawnDeadKerbals : When respawning is enabled, starts the respawn timer for any dead kerbals (changing their state to "missing") when loading a save. This addresses stock bugs where kerbals could be set to dead even when respawning is enabled.
- New KSP bugfix: ZeroCostTechNode : Fixes a bug where parts in tech nodes that have 0 science cost would become unusable.
- New KSP bugfix: ModulePartVariantsNodePersistence : Fixes an issue with ModulePartVariants where attachnodes would use their default state when resuming flight on a vessel from a saved game. This would lead to different behavior in part joints and flexibility between initial launch and loading a save.
- Changed patch behavior: PAWGroupMemory now tracks group state globally instead of per-window.
- Added zh-cn localization for ManufacturerFixes.cfg (thanks @zhangyuesai)
- New KSP performance patch : CollisionManagerFastUpdate : 3-4 times faster update of parts inter-collision state, significantly reduce stutter on docking, undocking, decoupling and joint failure events.
- IMGUIOptimization : fixed issue where the patch was breaking some mods UIs due to not resetting some internal state correctly.
- New KSP bugfix : TimeWarpOrbitShift [KSP 1.8.0 - 1.12.5], fix active vessel orbit moving randomly when engaging timewarp while under heavy CPU load.
- New KSP bugfix : ModuleAnimateGenericCrewModSpawnIVA [KSP 1.8.0 - 1.12.5], fix IVA & crew portrait not spawning/despawning when ModuleAnimateGeneric is used to change the part crew capacity. Notably affect the stock inflatable airlock.
- New KSP bugfix : PropellantFlowDescription [KSP 1.8.0 - KSP 1.12.5], fix printing the resource's base flow mode instead of the (potentially overridden) propellant's flow mode when printing propellants in an engine's info panel in the Part Tooltip.
- Fix KSP issue #153, prevent flight related events to be registered from ModuleScienceExperiment on the prefabs and in other scenes. This was added to the MemoryLeaks patch, since that patch already handle a bunch of GameEvents related issues/leaks.
- New KSP performance patch : IMGUIOptimization [KSP 1.8.0 - 1.12.5], eliminate structural GC allocations and reduce performance overhead of OnGUI() methods. Can provide significant performance gains when having many mods using IMGUI heavily.
- ConfigNodePerf : fixed issue #167, incorrect parsing of config files using
cronly (old Mac style) line endings.
- DragCubeGeneration : Actually enable patch by default, I somehow failed to push that change in the last release (Thanks @dok_377 for reporting)
- ReflectionTypeLoadExceptionHandler : Fixed the exception handler itself throwing an exception in a corner case situation where a dynamic assembly is loaded, causing a call to
Assembly.Locationto throw (Thanks @Lisias for reporting).
- New KSP bugfix : DockingPortConserveMomentum [KSP 1.12.3 - 1.12.5], make docking ports conserve momentum by averaging the acquire forces between the two ports.
- DragCubeGeneration : fixed issue #154, fix broken map view (and various other issues) when a drag cube is generated on a root part having multiple drag cubes.
- DragCubeGeneration : fixed issue #162, fix incorrect drag cubes generated for stock procedural fairings (and potentially mods doing procedural mesh generation).
- DragCubeGeneration : patch enabled by default, hopefully all bugs fixed :)
- PersistentIConfigNode : adress issue #159, add some logging when an enum parsing error happens instead of swallowing it silently.
- DragCubeGeneration : disabled by default since it continues to cause issues with fairings and some other parts. Will be reenabled by default when issues are fixed.
- New KSP bugfix : FixGetUnivseralTime [KSP 1.8.0 - 1.12.5], fix Planetarium.GetUniversalTime returning bad values in the editor.
- ModUpgradePipeline : fixed issue #156, fix to correctly load mod versions on reading sfs/craft file and to correctly sanity-check UpgradeScripts vs current mod version not loaded version.
- ConfigNodePerf : fixed issue #152, fix CopyTo in overwrite mode not allowing subnodes with duplicate values.
- DragCubeGeneration : fixed issue #150, fix for in-editor detached parts can cause incorrect drag cubes with modded shaders, notably fix incorrect drag for parachutes and solar panels when the Shaddy + TU mods are installed.
- New KSP bugfix : ThumbnailSpotlight [KSP 1.12.0 - 1.12.5], fix rogue spotlight staying in the scene when a part thumbnail fails to be generated. Contributed by @JonnyOThan.
- DragCubeGeneration : fixed issue #146, cache concurrency issues causing
InvalidOperationexceptions and more generally incorrect drag cubes on dynamic editor/flight drag cube generation.
- New KSP bugfix : ReRootPreserveSurfaceAttach [KSP 1.8.0 - 1.12.5], disable the stock behavior of altering surface attachment nodes on re-rooting, a questionable QoL feature that doesn't work correctly, leading to permanently borked attachement nodes.
- New API/modding patch : BetterDDSSupport [KSP 1.12.3 - 1.12.5] (actually part of the FastLoader patch), implement support of loading additional DDS formats.
- New performance patch : DisableHiddenPortraits [KSP 1.8.0 - 1.12.5], prevent non-visible crew portraits from being rendered after a switch back from the map view (and other cases), causing a significant perf hit when there are many kerbals in the vessel.
- New performance/bugfix patch : DragCubeGeneration [KSP 1.12.0 - 1.12.5], faster and more reliable implementation of drag cube generation. Improves overall loading times (both game load and scene/vessel/ship load times), prevent occasional lag spikes (in the editor mostly) and fix some issues causing incorrect drag cubes to be generated (notable examples are the stock inflatable heat shield, the 1.25m and 2.5m nose cones and the Mainsail shroud). Note that by design, this patch results in a small deviation from the stock behavior for buyoancy, aerodynamics and thermodynamics, as the generated drag cubes will be slightly different.
- DisableManeuverTool : added MM-patcheable flags to set the default enabled state of the maneuver tool or to forcefully disable it, see
Settings.cfg.
- New performance patch : LocalizerPerf [KSP 1.8.0 - 1.12.5] Faster and minimal-allocation replacements for the Localizer.Format() methods, can provide significant speedup for GUI-heavy mods using localized strings.
- FastLoader : Faster implementation of the stock
translateLoadedNodesmethod, can reduce loading time by up to 30 seconds in a heavily modded install (thanks to @siimav for spotting this). - LandingGearLights : fixed the patch not applying to the smaller LY-10 landing gear (Thanks to @JonnyOThan).
- Fixed issue #98 : ConfigNodePerf patch ignoring the last key/value pair when parsing a node-less, values only input. Notably fix a compatibility issue with the SimpleConstruction mod causing missing vessel construction costs.
- New stock configs fix, LandingGearLights : fix the lights on the "LY-10" and "LY-35" landing gears not automatically turning on/off when extending/retracting the landing gear (Thanks to @JonnyOThan for reporting)
- New KSP bugfix/QoL patch, LadderToggleableLight : fix for the stock "Kelus-LV Bay Mobility Enhancer" light being always active even when the ladder is retracted, and implements manual control of the light.
- Fixed issue #134 : fix for issue #133 was overly conservative, causing loading to stop on exceptions that don't cause a fatal error in stock.
- Fixed issue #133 : FastLoader allow the game to launch even when unrecoverable errors happen during loading.
- Fixed issue #128 : Fairing Expansion disable not retained after revert to hangar from launch
- Fixed issue #125 : Altimeter position was accounting for the AppLauncher width when using the settings slider, but didn't anymore after a scene reload, resulting in a slightly offset position.
- Fixed issue #96 : the AutoStrutDrift patch now correctly ignore autostruts originating from a servo part.
- CorrectDragForFlags : fixed flags in landscape mode using the same drag cube as for portrait mode.
- New KSP bugfix patch : CorrectDragForFlags, fix the "panel" variants of the flag parts using a single drag cube, causing excessive drag for the smaller options.
- Fixed issue #124 : avoid disabling the KSP-Recall "refunding" hack when the user has disabled the KSPCF "RefundingOnRecovery" patch, thus making our friend Lisias happy again.
- Fixed issue #121 : MapSOCorrectWrapping patch cause the Mohole to disappear
- Fixed issue #113 : FastLoader patch now requires KSP version >= 1.12.3 due to PartLoader implementation differences in previous 1.12 patch versions
- Fixed issue #117 : FastLoader getting stuck on duplicated audio asset
- Fixed issue #115 : PNG texture cache isn't always invalidated when a PNG texture is modified
- Updated Krafs.Publicizer dependency to v2.2.0
- Fixed issue #114 : Drag cubes are incorrectly calculated on modules using
IMultipleDragCube.AssumeDragCubePosition()due to FastLoader patch not skipping a frame to let the part animation(s) play
- Fixed issue #112 : Cannot dismiss or disable FastLoader opt-in popup on KSP < 1.12.0
- Updated for KSP 1.12.5
- New KSP bugfix patch : ChutePhantomSymmetry, fix parachutes in symmetry keeping their spread angle after decoupling.
- New performance patch : ContractProgressEnumCache (thanks to @abrenneke)
- New performance patch : FastLoader,Complete rewrite of the KSP asset/part loader : prevent GPU framerate limits from affecting loading speed, implement multithreaded asset loading (20% to 40% speedup depending on CPU & storage specs), provides an opt-in mechanism for caching PNG textures in the DXT5 format.
- The FastLoader patch also include a fix for issue #69, KSP bug causing loading hangs when an invalid
*.pngfile is being loaded. - TextureLoaderOptimizations : the patch has been depreciated, equivalent functionality has been integrated in the more general FastLoader patch.
- ConfigNodePerf : Fixed the
Game.Updated()patch not being applied due to an AmbiguousMatchException when finding the target method. - StockAlarmCustomFormatterDate : issue was fixed in stock so the patch doesn't apply to KSP 1.12.4+
- RoboticsDrift : the patch now only apply to KSP 1.12+, as prior KSP versions have minor differences in the robotics code ultimately causing various bugs when the patch is applied, see issue #72.
- New performance / KSP bugfix patch : RestoreMaxPhysicsDT (contributed by @JonnyOThan).
- Fix typo in Strategy's SendStateMessage where bold was not disabled after title (as part of StrategyDuration fix, since that is the only place it would be used in stock KSP).
- Fix bug in ConfigNodePerf where it did not properly early-out of parsing if the cfg file had an extraneous } (stock parser aborts in that case).
- Added Chinese localization (contributed by @tinygrox).
- Fix stock bug in SaveUpgradePipeline exposed by ModUpgradePipeline: the stock SaveUpgradePipeline blows up if an UpgradeScript does not apply to both sfs and craft contexts.
- Add KSPAssembly attribute to MultipleModulePartAPI as well, and add the KSPAssemblyDependency to KSPCommunityFixes just in case.
- Set AssemblyVersion to 1.0 and only increment AssemblyFileVersion and KSPAssembly
- Refactor FieldData.WriteValue for ease in use by other mods.
- New modding patch : ModUpgradePipeline (@NathanKell)
- Further improve ConfigNode performance. The tunable settings blocks have been removed since base performance is high enough now. They've been replaced by a single setting that enables not indenting save games and craft files on save, which offers a slight performance boost reading and writing and a fair amount of savings on disk. See #90 for full details. Note that some of this rewrite is done via PersistentIConfigNode. (@NathanKell)
- Add a KSPAssembly attribute to the dll.
- New performance / KSP bugfix patch : PQSCoroutineLeak (issue discovered by @Gameslinx)
- Fixed the ToolbarShowHide patch partially failing due to an ambigious match exception when searching the no args
ApplicationLauncher.ShouldItHide()method overload. - PersistentIConfigNode patch : added support for nested Persistent IConfigNode, see associated PR (@NathanKell).
- New performance patch : ConfigNodePerf (@NathanKell)
- Restrict UpgradeBugs to KSP 1.12+ since it is compiled against the new combined editor class.
- New KSP bufix : MapSOCorrectWrapping (contributed by @RCrockford)
- New performance patch : FewerSaves (contributed by @siimav)
- StrategyDuration had an incorrect transpiler linkage.
- Fix an issue with the DoubleCurve transpiler (contributed by @NathanKell, bug also contributed by @NathanKell)
- Fix an issue with the DoubleCurve patch : fix to DoubleCurvePreserveTangents (contributed by @NathanKell)
- Fix a stock issue where PartModules added via code would have a null upgrades List : extension to UpgradeBugs (contributed by @NathanKell)
- New KSP bugfix : UpgradeBugs (contributed by @NathanKell)
- New KSP bugfix : DoubleCurvePreserveTangents (contributed by @NathanKell)
- New KSP bugfix : StrategyDuration (contributed by @NathanKell)
- PersistentIConfigNode patch : fixed incorrect serialization in some corner cases(contributed by @NathanKell)
- New KSP bugfix : CometMiningNotRemovingMass
- New performance patch : AsteroidAndCometDrillCache (contributed by @JonnyOThan)
- OnSymmetryFieldChanged : fixed mistakenly inverted "changed" condition resulting in the patch not actually preventing symmetry events to be fired when the value hasn't changed.
- Added russian localization (contributed by @sunnypunny)
- New stock configs tweak : ManufacturerFixes (contributed by @sunnypunny)
- DisableMapUpdateInFlight : fixed phantom map markers on flight scene load
- New performance patch : CommNetThrottling (contributed by @JonnyOThan)
- New performance patch : DisableMapOrbitsInFlight (contributed by @JonnyOThan)
- New performance patch : ProgressTrackingSpeedBoost (contributed by @JonnyOThan)
- New QoL patch : ToolbarShowHide (contributed by @NathanKell)
- New QoL patch : ResourceLockActions
- New KSP bugfix : EnginePlateAirstreamShieldedTopPart (Thanks to @yalov (flart) for reporting and to @Aelfhe1m for coming up with a clever solution).
- New KSP bugfix : AsteroidInfiniteMining (Thanks to @Rodg88 for reporting).
- MemoryLeaks : Only remove GameEvent delegates owned by destroyed UnityEngine.Object instances if they are declared by the stock assembly, or a PartModule, or a VesselModule. Some mods are relying on a singleton pattern by instantiating a KSPAddon once, registering GameEvents there and relying on those being called on the dead instance to manipulate static data (sigh...). Those cases will still be logged when the LogDestroyedUnityObjectGameEventsLeaks flag is set in settings.
- Fixed MemoryLeaks patch causing KSC facilities upgrades being reverted after a scene change.
- Fixed AutostrutActions patch causing nullrefs on part duplication and generally not working as intended.
- New performance patch : MemoryLeaks
- New KSP bugfix : RescaledRoboticParts (thanks to @pap1723)
- New QoL patch : AutostrutActions (suggested by forum user @RealKerbal3x)
- New KSP bugfix : StickySplashedFixer (thanks to @NathanKell)
- New modding bugfix : DepartmentHeadImage (thanks to @NathanKell)
- PersistentIConfigNode patch : added
Guidserialization support toCreateObjectFromConfig(),LoadObjectFromConfig()andCreateConfigFromObject()methods (thanks to @NathanKell).
- RoboticsDrift : fix "Servo info not found" log spam originating from servo parts for which the drift correction isn't enabled.
- New KSP bugfix : EVAKerbalRecovery (thanks to @JonnyOThan for bug-reporting)
- FairingMouseOverPersistence : patch now only applies to KSP 1.10.0 and latter, as the field it relies on doesn't exists in prior versions, causing exceptions in OnLoad()/OnSave().
- Codebase cleaning pass, analyzers are now happy (or silenced).
- New KSP bugfix : ScatterDistribution (thanks to @R-T-B)
- New KSP bugfix : LostSoundAfterSceneSwitch (thanks to @ensou04)
- Fixed KerbalInventoryPersistence patch not being applied on KSP 1.12.3
- Fix KSPCF issue #39 : AltimeterHorizontalPosition patch causes state inconsistencies with vessel filters.
- Fix KSPCF issue #40 : UIFloatEditNumericInput patch breaking IR custom FloatEdit control. Don't alter the control prefab list, instead return our custom prefab on the fly in the KSP methods searching the prefab list.
- New KSP bugfix : PartListTooltipIconSpin (investigation efforts by @StoneBlue).
- New KSP bugfix : AsteroidSpawnerUniqueFlightId
- New QoL patch : DisableNewGameIntro
- New performance patch : PQSUpdateNoMemoryAlloc (investigation and fix by @Linx).
- Updated Harmony to v2.2.1
- Fixed multiple RoboticsDrift patch issues:
- Improved general numerical stability by normalizing input/output Quaternions.
- Fixed potential NRE spam happening after in-flight vessel hierarchy changes (ie, docking/undocking/decoupling...)
- Fixed random child-parts-of-robotic-part displacement after timewarping/reloading (bug introduced with the changes made in 1.12.2)
- Modded robotic parts whose
servoTransformhas a position offset relative to the part origin (either due to non-zero local position in the model hierarchy or a position offset in the part configMODEL{}node) are now unsupported. This mean drift correction won't be applied for them, and the stock behavior will apply. KSPCF will issue a log warning when unsupported parts are loaded in flight. Note that such a configuration isn't fully supported by stock either, and such parts will also have issues when manipulating their angle in the editor. And while I might find a way to fix this issue in the future, I strongly recommend mod authors to check/alter their models to ensure theservoTransformhas a zero relative position/rotation from the model root. As of writing, this issue notably affect the BDB Skylab truss, the "More Servos" mod by @Angel-125 and possibly others.
- RoboticsDrift : fixed a rotation offset being wrongly applied to child parts of translation servos following the fix for issue #35 released in KSPCF 1.12.2 (see report 1, report 2)
- Fixed NoIVA patch causing missing part textures when the part reuse/share IVA textures (ex : SXT). Note that this change negate the loading time gains of the original patch, and might even cause a small increase (a few seconds) if KSP isn't running from a SSD.
- New modding patch : ReflectionTypeLoadExceptionHandler
- New QoL patch : ShowContractFinishDates, contributed by @NathanKell
- New QoL patch : NoIVA
- Added localization support
- Added tooltips to in-game settings
- RoboticsDrift : fixed issue #35, incorrect handling of non-stock servo parts having
MODEL{}rotation/position offsets and/or a model hierarchy where the rotation transform has a position/rotation offset relative to the model root. Notably fixes incorrect behavior with the BDB Hokulani OCO-RT90 Truss Structure.
- HidePartUpgradeExtendedInfo : fixed wouldn't show extended info sometimes for regular parts.
- New QoL patch : AutoSavedCraftNameAtLaunch
- New KSP bugfix : StockAlarmDescPreserveLineBreak
- New KSP bugfix : DeltaVHideWhenDisabled
- TextureLoaderOptimizations : restored compatibility with KSP 1.10 and 1.11
- DockingPortRotationDriftAndFixes : fixed autostruts crossing docking ports not being disabled if only one of the port pair is rotation-unlocked.
- TextureLoaderOptimizations hotfix : was causing loading to hang on KSP 1.10 and 1.11 due to using an Unity method only available since KSP 1.12. Will restore compatbility latter, for now the patch is disabled for all versions below 1.12.
- AutoStrutDrift bugfix : fixed potential ArgumentOutOfRangeException.
- New bugfix : ExtendedDeployableParts
- New performance tweak : TextureLoaderOptimizations
- new Qol tweak : HidePartUpgradeExtendedInfo, courtesy of @NathanKell (see PR#29)
DockingPortRotationDriftAndFixes refinements :
- Fixed the stock implementation being unable to handle a rotating docking ports when it is the root part (was throwing exceptions and generally wasn't working correctly)
- Fixed another stock bug : having a
rotationAxisother than "Y" result in the docking port still rotating around the Y axis. This bug affect the 2 "inline" stock docking port parts. - Fixed KSPCF bug : parent port not being able to rotate after re-docking
- Fixed KSPCF bug : things were not working as expected when using a rotating + non-rotating docking port pair
- Fixed KSPCF bug : prevent rotation being available when about to dock or after undocking when the other docking port is "acquired" but not docked.
- Various performance optimizations
- New bugfix : DockingPortRotationDriftAndFixes. This patch contain several docking port fixes, and supersede the DockingPortLocking and DockingPortDrift patches, those patches have been removed.
- New bugfix : PackedPartsRotation. This patch is a generalization of a fix previously implemented in RoboticsDrift, and now cover all occurrences of that issue.
- New QoL patch : FairingMouseOverPersistence (suggested by forum user @dok_377)
- New mod API optional patch : OnSymmetryFieldChanged (thanks to @DRVeyl)
- New mod API optional patch : PersistentIConfigNode (thanks to @NathanKell)
- PartStartStability : fixed the patch causing an
ArgumentOutOfRangeExceptionon scene/vessel load inFlightIntegrator.Update(). As a side effect, this patch now make the FI first "valid" execution deterministic (will always be on the fourthFixedUpdate()cycle). - RoboticsDrift : fixed incorrect handling when a robotic part is the vessel root part
- Prevent some patches failing with a
ReflectionTypeLoadExceptionwhen another plugin assembly fail to load (ex : the Sandcastle/EL integration assembly)
- RoboticsDrift : fixed (harmless)
[RoboticsDrift] Servo info not found...log spam when toggling the locked state of a robotic part in the editor
- New bugfix : RoboticsDrift, see issue #13.
- New mod API patch : DockingPortLockedEvents (added for KJR, see related issue)
- New bugfix : DockingPortLocking
- PAWCollapsedInventories : Fixed mass/volume info not updating correctly in the group title.
- Now using Krafs.Publicizer for cleaner/faster access to KSP internals.
- New bugfix : AutoStrutDrift, see issue #21. Thanks to @Lisias for investigation efforts.
- New bugfix : PartStartStability, see issue #9.
- The FlightSceneLoadKraken patch is superseded by the PartStartStability patch, which is now disabled by default
- Fixed a silly mistake with the OnDemandPartBuoyancy patch where it would prevent part buoyancy from running if the vessel is already below water at scene load. Thanks to @DRVeyl for catching that.
- New performance patch : OnDemandPartBuoyancy (thanks to @siimav)
- New bugfix : ROCValidationOOR (thanks to @R-T-B)
- Fixed version file for 1.12.3
- Updated for KSP 1.12.3
- DockingPortDrift bugfix doesn't apply in 1.12.3 (identical fix was ported to stock)
- Moved KSPCommunityFixes in-game settings to a dedicated category in the KSP settings menu
- New performance patch : SceneLoadSpeedBoost
- New QoL patch : DisableManeuverTool
- New bugfix : KerbalTooltipMaxSustainedG
- Fixed (again...) some patches not being applied
- Fixed ModuleIndexingMismatch patch causing issues with modules dynamically adding/removing resources. Specifically, the patch was causing part resources to be loaded before (instead of after in stock) the
PartModule.OnLoad()call when loading aShipConstruct. This notably fixes RealFuel resources being lost when reloading/launching a craft file, but that mistake likely had consequences for other fuel/resource switchers mods (B9PS, Firespitter...)
- Fixed UIFloatEditNumericInput patch causing various errors and generally not working as intended.
- New QoL patch : UIFloatEditNumericInput
- Fixed some patches not being applied in KSP versions below 1.12 : PAWItemsOrder, TweakableWheelsAutostrut, ModuleIndexingMismatch, FlightSceneLoadKraken.
- PAWStockGroups patch now applicable to KSP 1.10.1 (min version was 1.11.1 before)
- New bugfix : PAWItemsOrder
- New QoL patch : TweakableWheelsAutostrut, see issue #16
- Fix PluginData folder being created in the Plugins folder
- New bugfix : ModuleIndexingMismatch, see issue #14
- New bugfix : FlightSceneLoadKraken, see issue #9
- New bugfix : StockAlarmCustomFormatterDate (thanks to @LGG)
- New bugfix : PAWGroupMemory
- New bugfix : KerbalInventoryPersistence, see Squad bugtracker
- New QoL patch : PAWStockGroups, see issue #1
- New API : MultipleModuleInPartAPI
- Small tweaks to the patching engine
- new bugfix : DockingPortDrift
- Fix persisted altimeter position not being correctly reloaded
- Fix map filters transition coroutine errors by disabling the nested gameobject instead of the top one
- New QoL patch : AltimeterHorizontalPosition
- New QoL patch : PAWCollapsedInventories
- Base infrastructure for patch managment and conditional activation based on the KSP version
- Patches can be enabled/disabled in configs
- Support for KSP-Recall / Tweakscale
- Initial release : RefundingOnRecovery bugfix