Banane9 / NeosComponentAttacherRecents

Neos mod that adds a special category of your recently used components to the Component Attacher.
MIT License
5 stars 0 forks source link

Default config doesn't include RecentComponents when reset #2

Closed XDelta closed 1 year ago

XDelta commented 1 year ago

Resetting config to defaults via NeosModSetting doesn't appear to add in the 'RecentComponents' list leading the full config to be {"version":"1.0.0","values":{"RecentCap":32}} Adding new entries having not restarted doesn't appear to then add that field and logs:


System.InvalidOperationException: Failed to compare two elements in the array. ---> System.NullReferenceException: Object reference not set to an instance of an object
  at FrooxEngine.WorkerInitializer+<>c.<Initialize>b__23_2 (System.Type t) [0x00000] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at FrooxEngine.CategoryNode`1[T].<EnsureSorted>b__19_0 (T a, T b) [0x00012] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at System.Collections.Generic.ArraySortHelper`1[T].PickPivotAndPartition (T[] keys, System.Int32 lo, System.Int32 hi, System.Comparison`1[T] comparer) [0x00052] in <9577ac7a62ef43179789031239ba8798>:0 
  at System.Collections.Generic.ArraySortHelper`1[T].IntroSort (T[] keys, System.Int32 lo, System.Int32 hi, System.Int32 depthLimit, System.Comparison`1[T] comparer) [0x00069] in <9577ac7a62ef43179789031239ba8798>:0 
  at System.Collections.Generic.ArraySortHelper`1[T].IntrospectiveSort (T[] keys, System.Int32 left, System.Int32 length, System.Comparison`1[T] comparer) [0x00015] in <9577ac7a62ef43179789031239ba8798>:0 
  at System.Collections.Generic.ArraySortHelper`1[T].Sort (T[] keys, System.Int32 index, System.Int32 length, System.Comparison`1[T] comparer) [0x00000] in <9577ac7a62ef43179789031239ba8798>:0 
   --- End of inner exception stack trace ---
  at System.Collections.Generic.ArraySortHelper`1[T].Sort (T[] keys, System.Int32 index, System.Int32 length, System.Comparison`1[T] comparer) [0x00020] in <9577ac7a62ef43179789031239ba8798>:0 
  at System.Collections.Generic.List`1[T].Sort (System.Comparison`1[T] comparison) [0x00012] in <9577ac7a62ef43179789031239ba8798>:0 
  at FrooxEngine.CategoryNode`1[T].EnsureSorted () [0x0001a] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at FrooxEngine.CategoryNode`1[T].get_Elements () [0x00000] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at (wrapper dynamic-method) FrooxEngine.ComponentAttacher.FrooxEngine.ComponentAttacher.BuildUI_Patch3(FrooxEngine.ComponentAttacher,string,bool)
  at FrooxEngine.ComponentAttacher.OnOpenCategoryPressed (FrooxEngine.IButton button, FrooxEngine.ButtonEventData eventData, System.String path) [0x00000] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at FrooxEngine.UIX.ButtonRelay`1[T].OnPressed (FrooxEngine.IButton button, FrooxEngine.ButtonEventData eventData) [0x0001d] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at FrooxEngine.UIX.ButtonRelayBase.Pressed (FrooxEngine.IButton button, FrooxEngine.ButtonEventData eventData) [0x00062] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at FrooxEngine.UIX.Button+<>c__DisplayClass65_0.<RunPressed>b__0 (FrooxEngine.IButtonPressReceiver r) [0x00000] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at FrooxEngine.ContainerWorker`1[C].ForeachComponent[T] (System.Action`1[T] callback, System.Func`2[T,TResult] callbackStopper, System.Boolean cacheItems, System.Boolean excludeDisabled) [0x00034] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at FrooxEngine.ContainerWorker`1[C].ForeachComponent[T] (System.Action`1[T] callback, System.Boolean cacheItems, System.Boolean exludeDisabled) [0x00000] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at (wrapper dynamic-method) FrooxEngine.UIX.Button.FrooxEngine.UIX.Button.RunPressed_Patch1(FrooxEngine.UIX.Button,FrooxEngine.ButtonEventData)
  at FrooxEngine.UIX.Button.OnPressBegin (FrooxEngine.UIX.Canvas+InteractionData eventData) [0x00035] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at FrooxEngine.UIX.InteractionElement.ProcessEvent (FrooxEngine.UIX.Canvas+InteractionData eventData) [0x00235] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at FrooxEngine.UIX.Canvas.ProcessTouchEvent (FrooxEngine.TouchEventInfo& eventInfo, System.Collections.Generic.List`1[T] filters) [0x00398] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at FrooxEngine.UIX.Canvas.OnTouch (FrooxEngine.TouchEventInfo& eventInfo) [0x00000] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at FrooxEngine.UIX.Canvas.FrooxEngine.ITouchable.OnTouch (FrooxEngine.TouchEventInfo& eventInfo) [0x00000] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 
  at FrooxEngine.TouchSource.SendTouchEvent (FrooxEngine.ITouchable touchable, FrooxEngine.TouchEventInfo& touchInfo) [0x00018] in <a6ff441fca7c4a97bc5b9dca720b524b>:0 

   at void BaseX.UniLog.Error(string message, bool stackTrace)
   at void FrooxEngine.DebugManager.Error(object obj, bool stackTrace)
   at void FrooxEngine.TouchSource.SendTouchEvent(ITouchable touchable, in TouchEventInfo touchInfo)
   at void FrooxEngine.TouchSource.UpdateCurrentTouchable(ITouchable touchable, in float3 point, in float3 direction, in float3 directHitPoint, bool touch)
   at void FrooxEngine.TouchSource.UpdateTouch()
   at void FrooxEngine.InteractionLaser.UpdateLaser(Nullable<float> maintainDistance, Nullable<float> overrideSmoothing, Nullable<InteractionOrigin> overrideOrigin, bool targettingOnly)
   at void FrooxEngine.CommonTool.UpdateInteractionAndLaser(bool targettingOnly)
   at void FrooxEngine.CommonTool.OnInputEvaluate()
   at void FrooxEngine.InputGroup.Update(float deltaTime)
   at void FrooxEngine.InputBindingManager.Update()
   at bool FrooxEngine.World.FrooxEngine.World.RefreshStep_Patch1(World)
   at bool FrooxEngine.World.Refresh()
   at void FrooxEngine.WorldManager.UpdateStep(double maxMilliseconds)
   at bool FrooxEngine.WorldManager.RunUpdateLoop(double maxMilliseconds)
   at void FrooxEngine.Engine.UpdateStep(double maxMilliseconds)
   at void FrooxEngine.Engine.RunUpdateLoop(double maxMilliseconds)
   at void FrooxEngineRunner.Update()```
Banane9 commented 1 year ago

Couldn't reproduce this, NMS doesn't touch internal only settings for me.

I added a bit to the on config change that should prevent any fuckery when unsetting the value though.
I'll post it on your other issue so you can test.