Crzyrndm

[1.3.0] Filter Extensions 3.0.4 (Jul 11)

Recommended Posts

Several actually.

// remove the part from the stock categories using the stock categorisation method
@PART[*]:HAS[#manufacturer[xyz]]:NEEDS[FilterExtensions] // not entirely sure that's the correct syntax...
{
  @category = none
}
@SUBCATEGORY[xyz] // again, not sure if this is correct...
{
  @FILTER,* 
  {
    CHECK
    {
      type = subcategory
      value = xyz
      invert = true
    }
  }
}
@PART[*]:HAS[#manufacturer[xyz]]
{
  MODULE
  {
    name = PartModuleFilter
    subcategoriesToBlock = xyz
    //subcategoriesToAdd = 
  }
}

 

Share this post


Link to post
Share on other sites

Hey, I notice when I filter on squad parts, not all parts like the wheel are missing. Also several stock subcategories are missing for Squad parts.

Share this post


Link to post
Share on other sites

Oops... (subcats for FbF got updated, but not the other category configs...)

Share this post


Link to post
Share on other sites

Hi there @Crzyrndm ! I was wondering if there's a resource icon pack available somewhere or, alternatively, if it's possible to adapt existing icon packs like the one @Olympic1 did for Alternate Resource Panel. The latter covers many resources but the icon size is 32x16 while I believe the Filter Extensions ones are 32x32.

Share this post


Link to post
Share on other sites

All of the contributed icons for resources are in the download (find them here). I'm not aware of any external public icon packs for FE

Share this post


Link to post
Share on other sites

Filter Extensions v2.8

  • Added "field" check type. Can check the value of any Part Module KSP field (which means anything that can be put in .cfg files...)
CHECK
{
    type = field
    value = <module>,<field>,<value>
}

Example usage

There will be a noticeable impact on the loading time of the editor that can be attributed to the use of this check, but the ability to check for anything you can spec through config files for a Part Module should present enough oppurtunity to balance the scales. As with most sledgehammer like tools, if there's an alternative means of checking for the information you should use it.

Many thanks to @Kerbas_ad_astra for starting the discussion which lead to this, testing it out, and (hopefully) finding all the bugs already

Edited by Crzyrndm

Share this post


Link to post
Share on other sites

@Crzyrndm I'm getting an exception thrown with the new version when clicking on the advanced -> science parts filter (where the new split of direct/relay lies):

Spoiler

(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)

ArgumentNullException: Argument cannot be null.
Parameter name: key
  at System.Collections.Generic.Dictionary`2[System.String,System.Type].get_Item (System.String key) [0x00000] in <filename unknown>:0 
  at FilterExtensions.Utility.PartType.checkModuleNameType (.AvailablePart part, System.String value) [0x00000] in <filename unknown>:0 
  at FilterExtensions.Utility.PartType+<>c__DisplayClass4_0.<checkModuleName>b__0 (System.String s) [0x00000] in <filename unknown>:0 
  at System.Linq.Enumerable.Any[String] (IEnumerable`1 source, System.Func`2 predicate) [0x00000] in <filename unknown>:0 
  at FilterExtensions.Utility.PartType.checkModuleName (.AvailablePart part, System.String[] values, Boolean contains, Boolean exact) [0x00000] in <filename unknown>:0 
  at FilterExtensions.ConfigNodes.Check.checkResult (.AvailablePart part, Int32 depth) [0x00000] in <filename unknown>:0 
  at FilterExtensions.ConfigNodes.Filter.filterResult (.AvailablePart part, Int32 depth) [0x00000] in <filename unknown>:0 
  at FilterExtensions.ConfigNodes.customSubCategory.checkFilters (.AvailablePart ap, Int32 depth) [0x00000] in <filename unknown>:0 
  at FilterExtensions.ConfigNodes.customSubCategory.checkTemplate (.AvailablePart ap, Int32 depth) [0x00000] in <filename unknown>:0 
  at FilterExtensions.ConfigNodes.customSubCategory.checkPartFilters (.AvailablePart part, Int32 depth) [0x00000] in <filename unknown>:0 
  at FilterExtensions.ConfigNodes.customSubCategory.<initialise>b__25_0 (.AvailablePart p) [0x00000] in <filename unknown>:0 
  at EditorPartListFilter`1[AvailablePart].FilterList (System.Collections.Generic.List`1 parts, System.Func`2 filter) [0x00000] in <filename unknown>:0 
  at EditorPartListFilterList`1[AvailablePart].FilterList (System.Collections.Generic.List`1 list) [0x00000] in <filename unknown>:0 
  at KSP.UI.Screens.EditorPartList.RefreshPartList () [0x00000] in <filename unknown>:0 
  at KSP.UI.Screens.EditorPartList.Refresh () [0x00000] in <filename unknown>:0 
  at KSP.UI.Screens.EditorPartList.Refresh (State state) [0x00000] in <filename unknown>:0 
  at KSP.UI.Screens.PartCategorizer+<UpdateDaemon>c__Iterator129.MoveNext () [0x00000] in <filename unknown>:0 
  at UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) [0x00000] in <filename unknown>:0 
 
(Filename:  Line: -1)

 

This is on a heavily modded game with antenna parts mainly coming from CA Probes Plus, Bluedog Design Bureau and SXT. Full output_log here.

Everything else is working fine but as soon as I click that category the whole editor filter bar stops working until I exit and re-enter the VAB.

I'll try to narrow it down a bit more but for now I can just avoid using that category (pity since the split of relay/direct antennae looked really useful with the number of parts I've got in this save).

Share this post


Link to post
Share on other sites

Could you please verify that this fixes the issue

PS
This is actually from another change that has been waiting in the wings that's almost as awesome as the one I did remember.
Previously "moduleName" type checks weren't that great with custom modules created by other plugins. "ModuleEngines" would pickup any custom engine module, but any non-KSP modules could only find exactly that type of module.

value=ModuleEngines => ModuleEngines, ModuleEnginesFx, MyCustomEngine, and MyCustomEngineFx
value=MyCustomEngine => MyCustomEngine

With 2.8+, that restriction is now lifted and FE is now fully aware of the type heirachies (a huge relief for me, because it also means I don't have to write out the boilerplate for each of the KSP modules either...)

value=ModuleEngines => ModuleEngines, ModuleEnginesFx, MyCustomEngine, and MyCustomEngineFx
value=MyCustomEngine => MyCustomEngine, MyCustomEngineFx

Edited by Crzyrndm

Share this post


Link to post
Share on other sites
On 19.12.2016 at 6:02 AM, Crzyrndm said:

Could you please verify that this fixes the issue

Spoiler

[ERR 10:55:08.993] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 10:55:08.996] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 10:55:08.998] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 10:55:09.001] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 10:55:09.003] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 10:55:09.005] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 10:55:09.008] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 10:55:09.010] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 10:55:09.012] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 10:55:09.015] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 10:55:09.017] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 10:55:09.019] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

......

 

[EXC 10:55:16.908] ArgumentNullException: Argument cannot be null.
Parameter name: key
    System.Collections.Generic.Dictionary`2[System.String,System.Type].get_Item (System.String key)
    FilterExtensions.Utility.PartType.checkModuleNameType (.AvailablePart part, System.String value)
    FilterExtensions.Utility.PartType+<>c__DisplayClass4_0.<checkModuleName>b__0 (System.String s)
    System.Linq.Enumerable.Any[String] (IEnumerable`1 source, System.Func`2 predicate)
    FilterExtensions.Utility.PartType.checkModuleName (.AvailablePart part, System.String[] values, Boolean contains, Boolean exact)
    FilterExtensions.ConfigNodes.Check.checkResult (.AvailablePart part, Int32 depth)
    FilterExtensions.ConfigNodes.Filter.filterResult (.AvailablePart part, Int32 depth)
    FilterExtensions.ConfigNodes.customSubCategory.checkFilters (.AvailablePart ap, Int32 depth)
    FilterExtensions.ConfigNodes.customSubCategory.checkTemplate (.AvailablePart ap, Int32 depth)
    FilterExtensions.ConfigNodes.customSubCategory.checkPartFilters (.AvailablePart part, Int32 depth)
    FilterExtensions.ConfigNodes.customSubCategory.<initialise>b__25_0 (.AvailablePart p)
    EditorPartListFilter`1[AvailablePart].FilterList (System.Collections.Generic.List`1 parts, System.Func`2 filter)
    EditorPartListFilterList`1[AvailablePart].FilterList (System.Collections.Generic.List`1 list)
    KSP.UI.Screens.EditorPartList.RefreshPartList ()
    KSP.UI.Screens.EditorPartList.Refresh ()
    KSP.UI.Screens.EditorPartList.Refresh (State state)
    KSP.UI.Screens.PartCategorizer+<UpdateDaemon>c__Iterator129.MoveNext ()
    UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress)

No fix - 2.8.1 from github / the dll you posted - same error

Share this post


Link to post
Share on other sites
13 minutes ago, Crzyrndm said:

:sealed:

v2.8.0.2 will hopefully stamp on the thing...

@Crzyrndm

Categories are there now, I think. Thx for your effort. :) But at least I still get some log errors. (Highy modded install):

Spoiler

[LOG 19:48:46.688] ScaleModList: listSize 574 maxListSize 1536
[LOG 19:48:46.689] [MessageSystem] Reposition 0.02 47598
[ERR 19:48:46.728] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.729] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.731] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.732] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.733] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.735] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.736] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.738] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.739] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.740] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.741] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.743] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.757] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.758] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.760] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.761] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.763] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.764] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.765] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.767] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.768] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.769] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.771] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[ERR 19:48:46.772] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer+Category.DeleteCategory()
   at FilterExtensions.Editor+<editorInit>d__3.MoveNext()
   at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)

[LOG 19:48:46.865] [FSHangarExtender] -- listNodes started
 

 

Share this post


Link to post
Share on other sites

@Crzyrndm

Just a update to my reported errors with 2.8.0.2... they disappear when removing the warpplugin/Interstellar folder. So maybe it's some parts from Interstellar. Maybe it helps reproducing. However, I assume you test with these / some big mods anyway?!

Share this post


Link to post
Share on other sites

Only the ones I regularly use (which doesn'r include KSPI) and only as the final pre-release step. Testing against all of them is nigh on impossible, and it's not obvious which will do something out of the ordinary "this time".

Debugging that error might have to wait a while if it's not critical. Does KSPI add a plugin generated category (one you can't add parts to ussing the UI), or a "user" category (one you can add to)?

Share this post


Link to post
Share on other sites

@Crzyrndm

So, did 3 hours of testing and found out:
-KSP 1.2.2 + KSP-Interstellar Extended 1.11.10 + Filter Extensions 2.8.0.2 and you get the errors that I've posted 1 post above when entering the VAB.
-removing F.E. OR KSP-I and the error is gone
-KSP-I seems to use a user category
-Each time the game is started with both mods, the KSP-I user category is added once more. So 5 starts => 5 times of the KSP-I categories in the editor.
--Same for the SpaceY user category, they get added once per game start, too.

But: Removing F.E. completely and then starting KSP and remove a item from the KSP-I user category by clicking the small X, gives an (similar?) error as well:

Spoiler

[ERR 13:02:36.632] Input is null for field 'categoryName' in config node 'SUBCATEGORY'
   at System.Environment.get_StackTrace()
   at ConfigNode.AddValue(System.String name, System.String value)
   at KSP.UI.Screens.PartCategorizer.SaveCustomPartCategories()
   at KSP.UI.Screens.PartCategorizer.RemovePartFromCategory(.AvailablePart part)
   at KSP.UI.Screens.EditorPartIcon.MouseInput_Delete()
   at UnityEngine.Events.InvokableCall.Invoke(System.Object[] args)
   at UnityEngine.Events.InvokableCallList.Invoke(System.Object[] parameters)
   at UnityEngine.Events.UnityEventBase.Invoke(System.Object[] parameters)
   at UnityEngine.Events.UnityEvent.Invoke()
   at UnityEngine.UI.Button.Press()
   at UnityEngine.UI.Button.OnPointerClick(UnityEngine.EventSystems.PointerEventData eventData)
   at UnityEngine.EventSystems.ExecuteEvents.Execute(IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData)
   at UnityEngine.EventSystems.ExecuteEvents.Execute(UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor)
   at UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress(UnityEngine.EventSystems.MouseButtonEventData data)
   at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent(Int32 id)
   at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent()
   at UnityEngine.EventSystems.StandaloneInputModule.Process()
   at UnityEngine.EventSystems.EventSystem.Update()

So I think I am here at the end of what I can do. Don't know if its a F.E. thing or a KSP-I thing or something of both.

 

Edited by Jebs_SY

Share this post


Link to post
Share on other sites

Its a KSP-I 1.11.10 problem it seems - since that bug w 2.8.0/2.8.0.1/2.8.0.2 of Filter Extensions i've been using the old 2.7.4.2 of FE and it happens there as well w the KSP-I user category button spam

Edited by gsc
shats'ngiggles

Share this post


Link to post
Share on other sites

Two things:

First off, the next version of OPT will be changing the bulkheadProfiles values (again...) to "OPT I", "OPT J" and "OPT K" in order to un-break the stock cross-section filters (which currently drop every part with a lower case "i" in the "i" folder, and every part with a lower case "k" in the the "k" folder. This includes all variations of "size?" and "mk?", which is annoying as all get out...)

I've tested the change with FilterExtensions, and it looks like all that's needed is to add these values to the filter lists in SubCategories_Bulkheads.cfg (yes it works even with the spaces, it's like the manufacturer value only can't add your own icon in stock for them for some reason.)

Second, didn't this mod use to support B9? or was it B9 that stopped supporting this mod? Looking at the B9 CFGs it seems like it might be the latter, but ISTR there being icons for some of B9s custom profiles earlier in the thread somewhere.

 

Share this post


Link to post
Share on other sites
On 22/12/2016 at 1:20 AM, gsc said:

since that bug w 2.8.0/2.8.0.1/2.8.0.2 of Filter Extensions

2.8.0.2 should have fixed the major breakage? It's just the incompatibility with either KSPI or user categories that remains?

@Winchester

Thanks for the heads up. I'll add that when I get a chance to look at this KSPI thing unless someone beats me to it (and yes, FE very rarely treats spaces differently so lots of things work with them :cool:). B9 support is mostly just providing a seperate category with the stock subcategories (since they have around the same number of parts). If it's stopped working the folder name has probably changed

@FreeThinker

Short answer, you don't. A workaround would be to delete and recreate it, but I would not recommend that for a distribution

Share this post


Link to post
Share on other sites
2 hours ago, Crzyrndm said:

 

 

@FreeThinker

Short answer, you don't. A workaround would be to delete and recreate it, but I would not recommend that for a distribution

Damn, even if it is my own mod?, I want to make part made introduced in IFS in the KSPI menu. Do you intend to add anything that allows us to do it?

Edited by FreeThinker

Share this post


Link to post
Share on other sites

I was assuming it was for a different mod. I don't see why not if you're maintaining the original as well

Share this post


Link to post
Share on other sites
8 hours ago, Crzyrndm said:

I was assuming it was for a different mod. I don't see why not if you're maintaining the original as well

I would like to modularize KSPI into multiple submodes, but I still want to have all parts  accessible from one menu. Would it be possible?

Share this post


Link to post
Share on other sites

Assuming no other plugin interactions, easiest way is probably to tag every part with something and have that category filter on the tag.

type = tag
value = <KSPI part ID>

 

Share this post


Link to post
Share on other sites

Hello @Crzyrndm, i am releasing my Omicron pre release mod, and i wanna know if you could help me implementing a Omicron part catalog with all my parts, please?

The link to download the mod is on the release page, just click on my signature banner.

Cheers commander!

Share this post


Link to post
Share on other sites

What are you after?

A single tab in Filter by Function

@CATEGORY[Filter?by?Function]
{
  @SUBCATEGORIES
  {
    list = <insert tab name here>
  }
}

SUBCATEGORY
{
  name = <insert tab name here>
  icon = <insert icon name here> // icon must be 32x32
  
  FILTER
  {
  	CHECK
    {
      type = folder
      value = <insert folder name here> // this is the name of the folder that goes into GameData
    }
  }
}

A whole new category

CATEGORY
{
  name = <insert category name here>
  icon = <insert icon name here>
  colour = <insert colour as hex here> // hex format rgb or argb, leading '#' and '0x' are valid
  // all = true // if you want an "all parts in..." to be created
  
  SUBCATEGORIES
  {
    list = ... // list out all the subcategories you want to add
  }
}

SUBCATEGORY
{
// ...

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.