Changelog
All notable changes to this package will be documented in this file.
[0.10.4-preview] - 2020-01-13
Added
- Added new
FormerlySerializedAs
attribute that can be applied to struct, class, field and property types. - Added new methods
TypeConstruction.[Try]ConstructFromAssemblyQualifiedTypeName
that can construct types from assembly qualified type name. If the assembly qualified type name fails to resolve to a valid type, it will try from types marked withFormerlySerializedAs
that matches.
[0.10.3-preview] - 2019-11-08
Fixed
- AOT Fix: Allows for registering container types with the internal generic virtual calls in Properties
[0.10.2-preview] - 2019-11-07
Changed
- Missing type identifier key meta data in
PropertyContainer.Construct
is no longer considered an error, but is still reported in result logs.
Fixed
- Calling
PropertyContainer.Transfer
when destination container have properties without setters will no longer throws.
[0.10.1-preview] - 2019-10-29
Added
- Added a helper class to drive code generation in order to support AOT platforms.
[0.10.0-preview] - 2019-10-25
Changed
- Breaking change
PropertyContainer.Construct
andPropertyContainer.Transfer
will now return a disposableVisitResult
containing logs, errors and exceptions that occurred during visitation.
[0.9.2-preview] - 2019-10-21
Added
- Added support for renamed fields using
UnityEngine.Serialization.FormerlySerializedAsAttribute
in the transfer visitor.
[0.9.1-preview] - 2019-10-18
Added
- Added
PropertyContainer.Construct
API call. This method can be used to initialize a tree using the default constructor for any uninitialized types. - Added support for instantiating
UnityEngine.ScriptableObject
derived types using theTypeConstruction
utility.
Changed
PropertyContainer.Transfer
will now visit the source instead of the destination when transfering.
[0.9.0-preview] - 2019-10-06
Added
- Added
TypeConstruction.TryConstruct[...]
variants for instantiating types without throwing exceptions. - Support for property drawers.
Fixed
- Attributes on a collection will now be correctly propagated to its elements.
Changed
- Connectors are now registered on the
BaseField<T>
directly instead of the explicit types (i.e.IntegerField
), which will help with user defined types. - Added
PropertyContainer.Visit
overload withref TVisitor
. - Breaking change Changed all
IPropertyBag{T}.Accept
methods to pass theTVisitor
by ref.
[0.8.1-preview] - 2019-09-25
Fixed
- Public fields and properties from base class will now again be reflected correctly.
[0.8.0-preview] - 2019-09-24
Added
- Added a
TypeConstruction
utility to allow the creation of new instances. - Minimal unity version has been updated to 2019.3.
- Added
PropertyElement
to help with generic, property-backed UI inspectors
Fixed
- Fixed all
PropertyContainer.Try[...]
methods to not throw exceptions when visiting nested types. - Fixed property bag reflection duplicates when base class contains an internal field or property.
[0.7.2-preview] - 2019-09-12
Changed
- Exposed a default way to manually visit collection items, through
VisitCollectionElementCallback<TContainer>
Added
- Added
PropertyContainer.TryGetValueAtPath
andPropertyContainer.TrySetValueAtPath
, which will try to set a value for a givenPropertyPath
. - Added
PropertyContainer.TryGetCountAtPath
andPropertyContainer.TrySetCountAtPath
, which will try to set the count of a collection for a givenPropertyPath
. - Added
PropertyContainer.VisitAtPath
andPropertyContainer.TryVisitAtPath
, which will do a partial visitation for a givenPropertyPath
.
[0.7.1-preview] - 2019-08-29
Fixed
- Narrowing conversions between supported enum types will not throw an
InvalidCastException
anymore.
[0.7.0-preview] - 2019-08-23
Fixed
- Conversion to all supported underlying type of enums should now be supported.
- Type conversion should now work on derived types.
Added
- Added
PropertyContainer.GetValueAtPath
andPropertyContainer.SetValueAtPath
, which will set a value for a givenPropertyPath
. - Added construction of a
PropertyPath
from a string (i.e.Path.To.The.List[1].Value
).
Changed
- Breaking change
IPropertyGetter
andICollectionPropertyGetter
are now passed by ref during visitation.
[0.6.4-preview] - 2019-08-15
Fixed
- Fixed property bag reflection for base class with private properties.
- Disabled generation of properties for reflected pointer fields in order to avoid casting errors.
[0.6.3-preview] - 2019-08-06
Fixed
- Fixed
System.Guid
propertiesIsContainer
value to returnfalse
. - Fixed property bag reflection for base class with private fields.
- Fixed property bag reflection for private properties.
[0.6.2-preview] - 2019-07-29
Fixed
- Fixed property bag resolution for boxed and interface types.
[0.6.1-preview] - 2019-07-25
Fixed
- Fixed the reflection property generator to correclty handle
IList<T>
,List<T>
andT[]
collection types. - Fixed
ArgumentNullException
when visiting a null container.
[0.6.0-preview] - 2019-07-19
Added
- Added
[Property]
attribute which can be used on fields or C# properties. The attribute will force the reflection generator to include the member.
Changed
PropertyBagResolver.RegisterProvider
has been removed and replaced with access to a staticReflectedPropertyBagProvider
.Unity.Properties.Reflection
assembly has been removed and merged withUnity.Properties
.
Fixed
TypeConverter
no longer warns if the source and destination types are the same.- TypeConversion of enum types will now convert based on the value and not the index.
- PropertyContainer.Transfer now ensures destination type is a reference type when not passed by ref.
- Fix generated properties for
List<string>
incorrectly treating strings as container types. UnmanagedProperty
can now be generated forchar
types during reflection.
[0.5.0-preview] - 2019-04-29
Changed
- Complete refactor of the Properties package.