===============================
VERSION 9.2 - Intermittent Version to Solve Unix Issue, Includes Pre-V10 Features
===============================
- Added Ambient Occlusion mask pre-calculation for (S) surface effect imports. (Preparation for Ambient Grunge)
    Geo node tree properties must be named '(C) Ambient Occlusion'.
- Created generate_ambient_occlusion_group function to go along with the AO preoperation.
- Created BYGEN_OT_groupmask_ambient_occlusion class to let us call this feature as an independent operation from a panel.
- Added 'Ambient Occlusion' button to the Helper Tools section of the Surface Effects panel so people can generate vertex group masks on command instead of just when applying effects. Labels were also added to separate the different types of helper functions.
- Changed append operation behavior to use / intead of \\ to comply to 3.4 change on Unix systems.
- Adding extra checks for selected objects to prevent operations from trying to happen on nothing.

===============================
VERSION 9.1.1
===============================
- Added a fix for MacOS users regarding content pack imports. There was an issue where the 'Finder' program on Mac would create hidden .DS_Store files, which would confuse the Python os.listdir function. A custom 'alistdir' function was implemented as a replacement to avoid reading files beginning with '.'. This may not be a complete fix as we are not able to comprehensively test Mac behaviour due to a lack of access to Mac machines. Any voluntary help is welcome. Please visit https://curtisholt.online/links to find a link to the Discord server where we can communicate using the 'by-gen' channel.

===============================
VERSION 9.1
===============================
- Added support for (S) simple/single surface effects, which do not need to import collections to function correctly.
- Added support for (S) simple/single volume effects, which do not need to import collections to function correctly.
- Added Face Ripper Parametric Effect
- Added Wire Bundle Structural Effect
- Added Wire Overhang Structural Effect
- Added Wire Volume Volume Effect
- Structural thumbnail panel has been enabled.
- Changed hide object to only hide in viewport and render when importing parametric effect.
- Complex (G) parametric effects have object references assigned in modifier parameters instead of Object Info nodes now.
- Note: General readability improvements made to code and code comments in functions that have been updated.

===============================
VERSION 9
===============================

Features:

[ Asset Pack System ]
BY-GEN is now powered by an asset-pack system where users can add new packs to
the addon by placing them in the content_packs folder in the addon's main directory.
    - Separate asset packs can be selected in different parts of the BY-GEN panel
    interface, allowing users to browse and import content from different packs
    simultaneously.

[ Surface Effects ]
Import surface effects from content packs through an integrated mode browser in
the 3D View panel.
    - Vertex weight painting for effects on import - paint surface effects directly
    onto meshes.

[ Mesh Effects ]
Displacement
    - Import preset mesh displacement effects using an integrated mode browser in the
    3D View panel. Note, this typically requires a high density of geometry.

[ Volume Effects ]
Import mesh volume effects from content packs through an integrated mode browser in the
3D View panel.

[ Other Features ]
- Added an operator to create a single-vertex object at the 3D Cursor's position.
- Added an operator to add a skin and subsurf modifier to an object, intended to be used
    in combination with the single-vertex object operator.
- Included a 'Depth Tool' blend file in the BY-GEN package to help people create their
    own displacement maps.

Changes:
- Included experimental geometry nodes helper module in 'modules' folder.
- Renamed 'BY-TOOLS' panel category to 'BY-GEN'.
- Module registration offloaded to individual files to clean up __init__.py
- Removed BY-GEN Generation panel.
- Added subpanels to assist with categorical navigation in the interface.
- Added icons to each panel and subpanel to aid with visual navigation.

Notes:
- Classes have been made in preparation for mesh parametric and structural effects, but 
these have been deliberately excluded from registeration in version 9 as template content 
has not been prepared in the official content pack at the time of release.

===============================
VERSION 8
===============================

Features:
- Hard Surface Solid Template added to Shift+A menu, for creating solidified hard surfaces.
- Hard Surface Solid modify style added to the BY-GEN Modify panel.
    - Allow Mirror boolean added as a property for the panel.
      Setting this to true will also check to see if a 'World Origin' or 'WorldOrigin'
      object exists, and if it does, then it automateically sets it as the mirror object.
    - Invert solidify operator created and added as a button in the modify panel.
      Intended to be used to reverse the thickness of the solidify modifier for the
      Hard Surface Solid mode when adding it to pre-existing objects.
- New panels created in the scene properties tab for loading template content, intended 
to help users build their own generation tools.
- Demo blend files have been included in the package under the resources folder which will
provide users with a template to build generation tools from, making use of the in-build
structural generation algorithms. Added:
    - demo_space_station (Branched)
    - demo_mech (Layered)
    - demo_weapon (Layered)
    - demo_city_circular (City Scatter)
    - demo_city_rectangular (City Scatter)
- New 'Scattering' panel added to the toolbar for calling the available city scattering methods.

Changes:
- Cubic and spherical field generate operators have been added to the BY-GEN - Generate panel.
- Interpreter has been removed from the addon as its usefulness is redundant when considering
different ways to serialize content and the future direction of Blender.
- Layered and branched generation operators have been moved to a new 'algorithms' folder.
- Code files have been re-organized with region folding for easier navigation.
- EasyBPY is now packaged with the addon in the modules folder.
- Menu code moved from __init__ to menus.py
- 'Check documentation for instructions' label removed from Structured Generation toolbar panel.
It has been replaced with 'Import template content in scene properties'.
- Scattering options have been removed from the Shift+A menu because they don't make sense there.

Fixes: 
- Partial fix to the branched generation algorithm not making use of the seed property. Now it
does, however it only works some of the time for a reason I haven't figured out yet.

Notes:
- Discovered that position reference objects for the layered generation algorithm needs to be
    set to visible in viewport, otherwise the script will have trouble reading their positon
    for the movement of subsequent layer's objects.

===============================
VERSION 7
===============================

Features:
- Spatial.py now contains a collection of useful functions for building generative operations.
- Randutils.py has been created, containing a collection of useful functions for randomization operations.

Changes:
- Destructor modify style, build modifier, randomize set to true by default.
- WorldOrigin automatically created for Layered Generation if it does not exist.
- Code cleanups of comments and layout for readability.
- Spherical field generator now applies shade smooth automatically.

===============================
VERSION 6
===============================
New Features:
UI:
    - Created 'BY-GEN - Info' Panel for external links.
    - Created 'BY-GEN - Interpreter' Panel and moved interpreter-related functionality here from Tools Panel.
    - Added 'Scatter' menu to Shift+A => BY-GEN
    - Added 'City Scatter - Circular' to the Scatter Shift+A submenu.
    - Added 'City Scatter - Rectangular' to the Scatter Shift+A submenu.
    - Added 'Clear Generation Result' to BY-GEN - Tools Panel in 3D View
    - Added 'Backup Generation Result' to BY-GEN - Tools Panel in 3D View
    - Added a new panel: 'BY-GEN - Structured Generation'
    - Added 'Start Layered Generation' to the Structured Generation panel.
    - Added 'Start Branched Generation' to the Structured Generation panel.

Operators:
    - Layered Generation
        - Added Layered Generation method (from the mech and weapon generator tools).
        This operator is an abstract method that allows for a limitless number of layers.
        Multiple generators can be defined and created inside of a single file.
    - Branched Generation
        - Added Branched Generation method (from the space station generator tool).
    - City Scatter Tool
        - Added City Scatter - Circular from the City Scatter Tool.
        - Added City Scatter - Rectangular from the City Scatter Tool.
- Added 'Clear Generation Result' for purging objects from 'Generation Result' collection.
- Added 'Backup Generation Result' for moving objects in 'Generation Result' collection to new collection.

Changes:
- Cleaning code in all files to increase readability.
- Meta Cloud result is now placed in Generation Result collection.
- Interpreter renamed to 'Text Object Interpreter' in BY-GEN - Tools Panel
- 'Operations' text changed to 'Useful Operations' in the Tools Panel.

Fixes:
- Renamed panels and menus to match 2.8+ Python conventions.

Notes:

===============================
VERSION 5
===============================
New Features:
Operators:
- Added 'Spherical Field' generation - Works like the Cubic Field Generator, but generates a field of spheres instead.
- Added 'Midge Cell' template object to Shift+A menu.

Interpreter:
- Interpreter Input - Read modifier and generated texture from text data and apply it to selected object.
- Interpreter Output - Write modifier and generated texture data to text for easy transfer to other users.
- Included a tick-box to choose whether to remove pre-existing modifiers before inputting from the interpreter.

Modify Styles:
- Added 'Midge Cell' modify style to Modify panel.

Parameters:
- Generate Clay Blob operator now has parameters.
- Meta Cloud generator now has parameters. (frame start, particle size, particle length)

Changes:
- Generation Panel - Drop-down removed, replaced with single buttons for generation modes.
- Cubic Field Generator - Simplified position deviation parameters into one float vector field.

Fixes:
- Meta Cloud Generator has been fixed (frame start value inverted to correspond to build modifier changes).
- Pixelate modification style has been fixed (frame start value inverted to correspond to build modifier changes).
- Pixelate template object has been fixed (frame start value inverted to correspond to build modifier changes).

Notes:
- Hyphen can be removed from add-on name before installation to help with localisation issues.
- The interpreter only serialises regular data types that are not read-only.
===============================
Release notes prior to version 5 have not been recorded, please watch the following videos:
https://www.youtube.com/watch?v=PwfSlPpBfbw
https://www.youtube.com/watch?v=wblyVB1SotQ
https://www.youtube.com/watch?v=2Y8Zl1RWya4
https://www.youtube.com/watch?v=mSA1QLQ8anY
https://www.youtube.com/watch?v=kuskuvKKfcY