Code Monkey home page Code Monkey logo

illusion_browserfolders's Introduction

Maker and Studio File Browser Folders for games by Illusion

A BepInEx plugin for Koikatu, Koikatsu Party, EmotionCreators, AI-Shoujo and HoneySelect2 that adds subfolder support to main game and studio. It works with character, outfit(coordinate) and scene file browsers. You can organize your cards and scenes into folders and use this plugin to browse them (features vary between different games). Prevously known as KKSceneBrowserFolders and MakerFolders.

You can support development of my plugins through my Patreon page: https://www.patreon.com/ManlyMarco

How to use

  1. Make sure BepInEx is installed and your game is updated.
  2. Download the latest release from here.
  3. Extract the plugin into your game directory. The dll file(s) should end up inside the folder BepInEx\plugins.
  4. Remove KKSceneBrowserFolders.dll from BepInEx if you have it, it's an old version of this mod. There is a mild incompatibility in KK_ReloadCharaListOnChange v1.2 and older, check for an updated version.
  5. Start Studio and open the scene load window. You should see a new window next to the standard file list. Click on the folder names in the list to open contents of that folder.

Screenshots

folders preview

illusion_browserfolders's People

Contributors

callmesai avatar deathweasel1337 avatar gebo1 avatar hijackhornet avatar jalil49 avatar keelhauled avatar kokaiinum avatar manlymarco avatar mantas-2155x avatar rennerdo30 avatar takahiro0327 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

illusion_browserfolders's Issues

BrowserFolders can hang during shutdown or when leaving maker

Not sure when this started, but it's not just in the latest version.

Steps to recreate in KK main game:

  • Launch main game to main screen
  • Select female maker
  • open card browser
  • select alternate folder
  • load a card
  • click button to exit maker
  • wait forever because nothing will ever happen again

This is caused by FileSystemWatcher, so easy/temporary fix is make InitFileSystemWatcher just return without doing anything, auto-updating will be disabled, but everything else will work fine.

FileSystemWatcher is IDisposable so any classes storing one as a member needs to also be IDisposable and correctly implement the disposal pattern, and so on up the object tree, but FolderTreeView is kept as a static on most classes, which complicates things.

Probably best to disable the auto-refresh until it's worked out.

[HS2] Browse folders in game?

What part of main game does this "Enable character folder browser in main game" setting apply to?

It's enabled in the plugin settings but all i see is cards inside the "UserData\chara\female" folder, but not the folders inside.

folder

If this plugin doesn't apply to the character changer in the screenshot above, could you please add support for it?

Thanks

How to resize the UI

Hello, I would like to make the folder browser UI bigger in Koikatsu, is there a way to make it bigger? I hope you'll tell me.
thank you

Crash HS2 Only with this plugin / memory leak on chara list refresh

It took me quite a long time to find out the cause of the fall. Using the clipping method, I got to this plugin.

if you disable it specifically, the game is no longer crash. I also thought that maybe it was some kind of incompatibility, I was still ready to part with most of the other plugins, but not with this one. And I decided to disable all plugins, leaving only this plugin. the game dropped anyway... So I decided to write here.

How the fall occurs.
it's enough just to leave the game with the character editor in the background for a while and after a couple of minutes the game will crash.
Although sometimes it takes a little longer...

I hope these lines will somehow help shed light on the problem:

========== OUTPUTTING STACK TRACE ==================

0x00007FFD8233F0FB (mono-2.0-bdwgc) mono_breakpoint_clean_code
0x00007FFD8233E4E2 (mono-2.0-bdwgc) mono_breakpoint_clean_code
0x00007FFD8233EF45 (mono-2.0-bdwgc) mono_breakpoint_clean_code
0x00007FFD8233C76D (mono-2.0-bdwgc) mono_breakpoint_clean_code
0x00007FFD8233C54D (mono-2.0-bdwgc) mono_breakpoint_clean_code
0x00007FFD82341B18 (mono-2.0-bdwgc) mono_breakpoint_clean_code
0x00007FFD82342254 (mono-2.0-bdwgc) mono_breakpoint_clean_code
0x00007FFD82335857 (mono-2.0-bdwgc) mono_breakpoint_clean_code
0x00007FFD823345DB (mono-2.0-bdwgc) mono_breakpoint_clean_code
0x00007FFD82339044 (mono-2.0-bdwgc) mono_breakpoint_clean_code
0x00007FFD82338D1B (mono-2.0-bdwgc) mono_breakpoint_clean_code
0x00007FFD8233BB4C (mono-2.0-bdwgc) mono_breakpoint_clean_code
0x00007FFD821450AD (mono-2.0-bdwgc) mono_object_hash
0x00007FFD820EC151 (mono-2.0-bdwgc) mono_string_new_size
0x00007FFD820EBF54 (mono-2.0-bdwgc) mono_string_new_len
0x00007FFD8308484A (UnityPlayer) UnityMain
0x00007FFD8309EA03 (UnityPlayer) UnityMain
0x00007FFD83106AAD (UnityPlayer) UnityMain
0x0000024908BD499A (Mono JIT Code) (wrapper managed-to-native) UnityEngine.Object:GetName (UnityEngine.Object)
0x0000024908BD490B (Mono JIT Code) UnityEngine.Object:get_name ()
0x000002490F194AAB (Mono JIT Code) MotionIK/<>c__DisplayClass72_1:<LinkIK>b__5 (UnityEngine.Transform)
0x0000024978B860AA (Mono JIT Code) System.Linq.Enumerable:TryGetFirst<TSource_REF> (System.Collections.Generic.IEnumerable`1<TSource_REF>,System.Func`2<TSource_REF, bool>,bool&)
0x0000024978B85F5B (Mono JIT Code) System.Linq.Enumerable:FirstOrDefault<TSource_REF> (System.Collections.Generic.IEnumerable`1<TSource_REF>,System.Func`2<TSource_REF, bool>)
0x000002490F1947B3 (Mono JIT Code) MotionIK:<LinkIK>g__GetTarget|72_2 (int,string,MotionIK/<>c__DisplayClass72_0&)
0x000002490F194293 (Mono JIT Code) MotionIK:<LinkIK>g__SetDataParam2|72_0 (MotionIKData/Param2,Illusion.Component.Correct.BaseData,UnityEngine.Transform&,MotionIK/<>c__DisplayClass72_0&)
0x000002490F193FC3 (Mono JIT Code) MotionIK:LinkIK (int,MotionIKData/State,MotionIK/IKTargetPair)
0x000002490F191CC3 (Mono JIT Code) MotionIK:Calc (int)
0x000002490F1917BB (Mono JIT Code) MotionIK:Calc (string)
0x000002490DE12323 (Mono JIT Code) CharaCustom.CustomBase:UpdateIKCalc ()
0x000002490DE10D4B (Mono JIT Code) CharaCustom.CustomControl:Update ()
0x000002497FC664D0 (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)
0x00007FFD8215B8E0 (mono-2.0-bdwgc) mono_get_runtime_build_info
0x00007FFD820E1892 (mono-2.0-bdwgc) mono_perfcounters_init
0x00007FFD820EA88F (mono-2.0-bdwgc) mono_runtime_invoke
0x00007FFD8309E064 (UnityPlayer) UnityMain
0x00007FFD8309B890 (UnityPlayer) UnityMain
0x00007FFD83087F89 (UnityPlayer) UnityMain
0x00007FFD83088143 (UnityPlayer) UnityMain
0x00007FFD82E773F0 (UnityPlayer) UnityMain
0x00007FFD82FA7397 (UnityPlayer) UnityMain
0x00007FFD82FA7439 (UnityPlayer) UnityMain
0x00007FFD82FA93EF (UnityPlayer) UnityMain
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FFD82D82495)
0x00007FFD82D82495 (UnityPlayer) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FFD82D80DDA)
0x00007FFD82D80DDA (UnityPlayer) (function-name not available)
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FFD82D8592A)
0x00007FFD82D8592A (UnityPlayer) (function-name not available)
0x00007FFD82D89A8B (UnityPlayer) UnityMain
  ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FF6B7B911FA)
0x00007FF6B7B911FA (HoneySelect2) (function-name not available)
0x00007FFDDF297034 (KERNEL32) BaseThreadInitThunk
0x00007FFDE10E2651 (ntdll) RtlUserThreadStart

========== END OF STACKTRACE ===========

any ideas?

FPS drops with lots of folders

I notice frame rate issues when the mod is on-screen while showing a long list of folders. This happens both in the Koikatsu Character maker and studio.

I have a sub-folder where I have organized downloaded character cards based on what anime they are from. Which is currently around 150 folders. When expanding that sub-folder in the UI, the framerate goes from a steady 60 FPS to ~10 FPS. When collapsing it FPS recovers to 60. So it definitely seems like it is related to GUI of this mod.

This mod has been extremely helpful btw. Being able to easily combine similar different cards of the same character has been a game changer.

The window is not auto-hiding

In KKS, the BrowserFolders window is not auto-hiding when opening F1 menu.
It also hang for quite a long time when quitting the maker, going back to the main menu.

UI Scale Problem

Dear ManlyMarco,
About KK_BrowserFolders_v2.1.0.0

  1. I use nvidia DSR 1080P→4K
    As below pic, ui is too small to click. Is it possible to add ui scale selection in F1 settings?

  2. Actually, I have another question...
    Spillerrec mentioned it and it resonated with me.
    I'm the guy who use a lot of folder to sort and respect my favorite authors like the pic below.
    Time goes by, and the increase of folders, my FPS is getting lower and lower.
    Whether it can make the interface smoother, it helps the experience.

Thank you.
Annotation 2020-08-01 213759

HS2: Wrong names are showing in map select.

When I go to "Walk the Hall", all the girls had the same name.
If there's a map with two girls, they also share the same name.

image
image

(If I engeged in a H session, they got their real names back)
Troubleshooting done, and the kulprit is actually the latest version of BrowserFolders plugin...
Downgrading to 3.2.1 fix the issue.

output_log.txt

[suggestion] Add Searching and Auto Jump to Acc Function for KK

Dear ManlyMarco,
About KK_BrowserFolders

  1. Adding search function will greatly improve the experience

Thanks to KK_BrowserFolders_v2.2.0.0. Smooth FPS let me find a new world.
Like the pic below. Currently I need to scroll the mouse wheel dozens of times to find the correct folder. painfully~
Searching → highlight and auto jump to the folder will solve the problem.
20201125141555

  1. Adding double click auto jump to using accessory function will improve efficiency.
    Like the pic below. Because of language problems, accessories are often not found in search results.
    It becomes difficult to locate the acc in use. Mouse wheel dozens of times to find the using acc.

Suggest to add "Double click 1 = auto jump to the acc in use" will improve efficiency.
20201125141831

Thank you.

Feature Request: Movable Windows

#12 mentioned issues with scaling with the UI scaling, and i agree with that, and understand that it may take some work to enable adjusting with that.. i was hoping though in the mean time we could have an option to at least relocate the folder windows, so they're not floating and obstructing other views.

[Request] [AI/HS2] Browser folder for outfits in studio

In maker, this plugin can select characters/outfits per folder basis. Nice, which is very good for people who organize cards/outfits in different directories.

In studio, this plugin allows character selection by folder as well. But not for outfits unfortunately.

Request:

  • same feature for outfit selection in studio.

Class registration Fill function

Version: 1.3

Issue: Currently, if you try to use the Fill function in the class registration menu, it will not use the folders inside of female and will only fill with the girls girls in the root female folder instead.

Images: image

Suggestions:

    • Clicking Fill will open the small black menu which is used for the folder browser, where you can select the folder it should use for filling.
    • Clicking Fill will read a config variable FillRecursive and look for True/False.
      Selecting False would keep the current behavior and only look in female.
      Selecting True would allow the plugin to look into all folders inside of female as well.

[HS2] the first meeting of the character keeps repeating

Now the game will be stuck in the first meeting with the character, and interacting with the character again will keep repeating this scene, and it will not be possible to continue to advance the subsequent plot, how can I solve this problem? Is it related to the mod or something else?

Future feature request

Would it be possible to make an option to exclude certain folders in studio and load only in chara creator? This option (if possible) would be amazing. My folder structure is in a way that I cant really effectively move them in and out of Chara folder each time I go into studio. (ie "Source material title" where I have my creations and then sub folders "source cards" and "old versions")

Remove interface when taking card picture

Right now the folder selection window covers up a big chunk of the preview window when you're taking an image for the card front, and it's difficult to see what the final result will look like. Not a major issue but still an annoyance.
Screenshot

[suggestion] Make coordinate browser in KK studio remember current folder

As title says - in studio card browsers and scene browser remember current folder withitn current session, but coordinate browser does not, resetting to root coordinate folder every time you open it. Makes loading coordinates buried somewhere deep within folder structure pretty annoying...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.