- Email is now only activated if the user specifies
- Implemented "NOT" rule in Logic.py
- Added documentation for Synced Attribute Material values in Material_Generator.py
- 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.
- 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.
__init__.py:
Removed unnecessary variable passes
Removed unnecessary imports
Checks.py:
Added descriptions for all checks in Checks.py
Created raise_Error_ScriptIgnore() check
Created raise_Error_numBatches() check
Created raise_Error_ZeroCombinations() check
Created raise_Error_numBatchesGreaterThan() check
Created raise_Warning_maxNFTs() check
DNA_Generator.py:
Removed and refactored enableGeneration (deprecated material generation) code.
Deprecated try excepts statements and errors for Checks.py
Removed unnecessary variable passes
Refactored # Messages
Added loading animation
Exporter.py:
Removed Material Handling section
Refactored exporter console messages
Added new loading animation for console when exporting images, animations or 3D models
loading_animaiton.py:
Added loading animation file class
Logic.py:
Fixed logic so that all rules are guaranteed to work
Added "Always with" rule
DNA Generation now checks if each DNA is unique after random, Rarity and Logic have generated a singleDNA string. This prevents duplication with all three methods.
Logic now works for both Only with and Never with methods. Variants and Attributes both work.
Rarity sorter was refactored to only return a singleDNA instead of the entire DNAList. Also the DNA creation method in Rarity_Sorter is has been changed.
__init__.py:
- added Custom Field Operators for metadata
- Added Description fields for Cardano, Solana, and ERC721 metadata templates
- Reconfigured variables in Operator function to be in class
- Created passable variables for new metadata fields
- Updated methods
- Added new Cardano metadata description field to panel
- Added new Solana metadata description field to panel
- Added new ERC721 metadata description field to panel
- Removed old Logic Panel
Batch_Refactorer.py:
- Cleaned methods for passing variables with classes
- Refactored functions and methods for calling functions from metaData.py
- Created new class rename_MetaData_Variables for better variable passing
DNA_Generator.py:
- Removed unnecessary spaces
Exporter.py:
- BMNFT_metadata files now include "Empty" if DNA is set to "0" by Logic.py
Logic.py:
- Added Collections method to read dictionaries
- Attributes and variants are now read independently and work properly
- Variant order numbers are now properly selected
metaData.py:
- Removed unnecessary imports
- Refactored function imports with new classes from Batch_Refactorer.py
- Description is now inserted into each template as defined by the user in Refactor panel
- Custom fields are now included in each template
Integrated Logic.py in __init__.py
Integrated Logic.py function in DNA_Generator.py
Modified Exporter.py to accept Empty Variants
Created Logic.py and methods
Removed UIList.py and directory