I decided to go through each function and UI section one by one, improving and overhauling things. Each function and section is going to be fully tested and not rushed out.
This is the best way to catch things, but also include the code base as much as possible.
- Re-wrote how the plugin registers itself.
- No longer need @register_wrapper classes get auto detected and added.
- The new Auto loader is much better then the old way, no longer need "if "bpy" not in locals():" this was an old way of doing things and wasn't really efficient.
using auto_load.py provides several advantages:
- It automatically discovers and loads all modules in the addon.
- It handles dependencies between classes correctly through topological sorting.
- It manages registration order automatically.
- It properly handles unregistration in the correct order.
This approach is much less error prone and I not had any issues so far. However it still needs testing fully.
I have also start to re-organise files into folders as well, this is going to be needed so we don't have a long list of files as Avatar Toolkit is getting larger then i originally planned.
- Fixed issue where blender would error when exiting due to property being register twice.
- Fixes missing strings.
- Attempt at fixes properties not clearing correctly.
- Updated Japanese json file with all latest strings.
- This is an work in progress, this expands on the system that NyankoNyan and improves that system.
- It remaps the bone hierarchy to match Unity's expectations
- It adds necessary constraints to ensure proper bone movement (For the people who need it, can be removed via remove constraints button).
- It removes redundant bones that could cause issues in Unity.
- It renames bones to match Unity's Humanoid Avatar naming convention.
- It provides an option to merge or remove twist bones, which are not supported by Unity's humanoid system.
- It adjusts bone connections and deformation settings.
I think more needs to be added, but this seems to work for now.
- operator strings are referenced via the class property rather than a hard coded string
- class names have been cleaned to have _OT_ or _PT_ depending on the kind of class it was.
- Class names should mostly be CamelCase now.
- Added Progress system so the user knows something is being done when there use certain functions. Currently only Join Meshes, Viseme creation and combine materials use it.
- Disbabled some translation debguing stuff to remove spam from the console.
- Viesmes will now use selected armature.
- New dropdown menu in the viseme UI so the user can select which mesh to create visemes on.
- New helper function get_armature_meshes
- Added a new check before we create the new visemes to see if any exist, if there do we will remove them and create the new ones.
- fixed several issues and errors.
Due to some werid thing in Blender 4.2+ where we just can't get descriptions to translate, we now tell the user some translations won't apply unto restart.
- Organised some of the code better.
- Fixed sort order loop.
- Added typing in some places there wasn't.
This is a very basic start to Viesme creation, I still need to add translations for some stuff and improve it. This is very much inspired from the Cats Version.
- Added addon_preferences so we can save users preferences into a json file.
- Made translation slightly simpler
This mostly works just have to figure out why we can't update description on reload (There only update on blender restart).
- This is the start of the translations system, does not yet work as I can't seem to get it to swap languages, I too tired today to fix it but it's a start.
- It also adds properties registration as well.