Minor yet significant change that should enforce consistency in the serialization order of attributes. Making this change in line with a fix Roblox is making to their attribute serialization.
Turns out the property setter was failing to cover inheritance, so referent properties were being corrupted in the process. This should now be fixed.
I've also deprecated IsA<T>() in favor of using C#'s own `is` operator and stopped locking the parent of service classes to avoid saving issues.
- Added some more methods to the Instance class to make instance queries
more powerful.
- Fixed a bug where comment nodes were being processed by the
XmlFileReader
- Fixed an issue pertaining to implicit value casting in the property
reflection.
- Removed some unnecessary generated whitespace in the class data.
- Added some missing properties to the generated class data.
- Moved the Quaternion type into the DataTypes namespace.
Instance classes are now strongly typed with real property fields that
are derived from the JSON API Dump! This required a lot of reworking
across the board:
- Classes and Enums are auto-generated in the 'Generated' folder now.
This is done using a custom built-in plugin, which can be found in
the Plugins folder of this project.
- Property objects are now tied to .NET's reflection system. Reading
and writing from them will try to redirect into a field of the
Instance they are bound to.
- Property types that were loosely defined now have proper data types
(such as Color3uint8, Content, ProtectedString, SharedString, etc)
- Fixed an error with the CFrame directional vectors.
- The binary PRNT chunk now writes instances in child->parent order.
- Enums are now generated correctly, with up-to-date values.
- INST chunks are now referred to as 'Classes' instead of 'Types'.
- Unary operator added to Vector2 and Vector3.
- CollectionService tags can now be manipulated per-instance using
the Instance.Tags member.
- The Instance.Archivable property now works correctly.
- XML files now save/load metadata correctly.
- Cleaned up the property tokens directory.
I probably missed a few things, but that's a general overview of
everything that changed.
Holy cow, this took a lot of work. I think I may need to do a few more
things before I consider this a 1.0 release, but I'm glad to have
finally overcome this hurdle!