- Added AutoSave before generation functionality to Other panel
- Removed strip_empty_exclude function
- Modified Exporter to work with new Material Randomizer layout
- Added Enable Materials option in logicafyDNAsingle function in preparation for Material Randomizer Logic
- Materials are no longer formatted like Variants, the Material List is now a dictionary where the keys are the names of the Materials and the values are the Rarity percentages. Each Variant in the Materials.json file can have a different list with different rarity values that are selected for only that variant.
Material file format:
```
{
"Variant Name": {
"Material List": {
"Material Name 1": 90,
"Material Name 2": 5,
"Material Name 3": 1,
"Material Name 4": 4
},
"Variant Objects": []
}
}
```
Lots more info in the comments of the code.
Documentation still needs to be made, also more testing lol
This is the new format for Logic.json files:
```
{
"Rule-1":{
"IF": [
"Variant collection name"
],
"THEN":[
"Attribute collection name", "Variant collection name"
]
}
}
```
Some basic guidelines, needs to be more thorough and cleaned up for documentation:
Attributes and Variants can be used in the “THEN” list, Variants can only be used in the “IF” list.
If a full attribute is detected in the “THEN” list (either by the attribute collection name or all variant collection names in that attribute) and a variant is not detected in the “IF” list, the attribute detected in the “THEN” list will be set to “EMPTY”.
Variants in the “IF” list may be from the same or separate attributes, however they must never be from the same attribute as variants in the “THEN” list.
I need sleep.
Note to self: The Logic UI List needs to be updated to reflect these changes to Logics core functionality, the current UI List is broken on this branch and wont work.
Also added save_result to Constants.py for basic logging functionality.
- Changed labeling in __init__.py to reflect new workflow
- Updated Checks.py to stop throwing weird error and to now catch Script_Ignore collection error
- Added error message if you change collection name after data is created and you generate your nfts
- Added more info in comments and relocated Change Text Object in Scene
- Metadata no longer contains order number and rarity number
- Deprecated Batch_Sorter.py
- Refactored DNA_Generator.send_To_JSON calls in __init__.py
- Reformatted Checks.py
- All DNA now has an order number and is kept in order throughout the DNA Generation process.
- Added makeBatches() (from Batch_Sorter.py) to DNA_Generator.py. Batch sorting now happens inside DNA_Generator.py.
- Added confirmation box to Create NFT Data operator
- Exporter now keeps track of DNA order_num for each NFT
- Changed animation to work on Windows and Mac
- Reformatted Metadata.py to work with Exporter instead of Refactorer. Metadata is now generated while NFTs media files are rendered/generated.
- Heavily refactored the Refactoerer.py file.
- BMNFTs now stores total time and batch time across batches for better use with clients/contractor work
- Exporter revamp for time tracking
- Refactorer revamp for time tracking
Implemented UIlist method. You are now able to create custom metadata fields all in Blender and each field is dynamically added to the Metadata template that the user selects.
- Updated BMNFTs version number
- Added more visible headers for major sections
- Integrated imports
- Reformatted Update_combinations to Refresh_UI for future use with Cozy API
- Created new section "Helper functions"
- Renamed BMNFTS_PGT_MyProperties to Input_Properties
- Reformatted BMNFTS_PGT_Input_Properties Properties to better reflect Panel and User input organization
- Reformatted "my_tool" to "input_tool"
- Reformatted "mytool" to "input_tool_scene"
- Renamed some labels
- Removed Documentation and ExportSettings Panels and replaced with "Other" Panel
- Added link to BMNFTs YouTube tutorial playlist link
- Added Export Settings check: Operator will now appear only if user sets a Save_Path in the Create NFT Data panel. User is notified with a message if they haven't set a Save_Path
- Integrated draw() into Refresh_UI persistent function
- Reformatted and organized register/unregister Blender classes
- Other general organization and restructuring