Represents the values of an InspectorProperty, and contains utilities for querying the values' type and getting and setting them.
public abstract class PropertyValueEntry : IPropertyValueEntry
|PropertyValueEntry||Create(InspectorProperty, Type, bool)||Creates a value entry for a given property, of a given value type. Note that the created value entry is returned un-updated, and needs to have Update() called on it before it can be used.|
|IPropertyValueEntry||CreateAlias(PropertyValueEntry, Type)||Creates an alias value entry of a given type, for a given value entry. This is used to implement polymorphism in Odin.|
|OnChildValueChanged||An event that is invoked during ApplyChanges(), when any child values have changed.|
|OnValueChanged||An event that is invoked during ApplyChanges(), when any values have changed.|
|Type||BaseValueType||The base type of the value entry. If this is value entry represents a member value, this is the type of the member. If the value entry represents a collection element, this is the element type of the collection.|
|PropertyContextContainer||Context||The context container of this property.|
|bool||DictionaryChangedFromPrefab||Whether this value entry has had its dictionary values changes from its prefab counterpart.|
|bool||IsAlias||Whether this value entry is an alias, or not. Value entry aliases are used to provide strongly typed value entries in the case of polymorphism.|
|bool||IsBoxedValueType||Whether this value entry represents a boxed value type.|
|bool||IsEditable||Whether this value entry is editable or not.|
|bool||IsMarkedAtomic||Whether this type is marked as an atomic type using a IAtomHandler.|
|bool||ListLengthChangedFromPrefab||Whether this value entry has had its list length changed from its prefab counterpart.|
|Type||ParentType||The type from which this value entry comes. If this value entry represents a member value, this is the declaring type of the member. If the value entry represents a collection element, this is the type of the collection.|
The nearest parent property that has a value. That is, the property from which this value entry will fetch its parentvalues from in order to extract its own values.
If ParentValueProperty is null, this is a root property.
|InspectorProperty||Property||The property whose values this value entry represents.|
The actual serialization backend for this value entry, possibly inherited from the serialization backend of the root property this entry is a child of.
Note that this is *not* always equal to SerializationBackend.
|string||TargetReferencePath||If this value entry has the override type Reference, this is the path of the property it references.|
|Type||TypeOfValue||The most precise known contained type of the value entry. If polymorphism is in effect, this will be some type derived from BaseValueType.|
The value category of this value entry.
NOTE: This property is obsolete and should no longer be used.
|bool||ValueChangedFromPrefab||Whether this value entry has been changed from its prefab counterpart.|
|int||ValueCount||The number of parallel values this entry represents. This will always be exactly equal to the count of WeakTargets.|
|bool||ValueIsStrongList||Whether the type of this entry implements IList`1.|
|bool||ValueIsValidDictionary||Whether the type of this entry implements IDictionary`2.|
|bool||ValueIsWeakList||Whether the type of this entry implements IList.|
|PropertyValueState||ValueState||The special state of the value entry.|
A weakly typed smart value that represents the first element of the value entry's value collection, but has "smart logic" for setting the value that detects relevant changes and applies them in parallel.
This lets you often just use the smart value instead of having to deal with the tedium of multiple parallel values.
|IPropertyValueCollection||WeakValues||Provides access to the weakly typed values of this value entry.|
|bool||ApplyChanges()||Applies the changes made to this value entry to the target objects, and registers prefab modifications as necessary.|
|IDictionaryHandler||GetDictionaryHandler()||Gets an IDictionaryHandler for this value entry, used to apply modifications and get contextual data from value entries representing a dictionary.|
|PropertyListValueEntryChanger||GetListValueEntryChanger()||Gets a PropertyListValueEntryChanger for this value entry, used to apply modifications to value entries representing a list.|
|Type||GetMostPreciseContainedType()||Determines what the most precise contained type is on this value entry.|
|PropertyValueState||GetValueState()||Determines the value state of this value entry.|
|void||Initialize()||Initializes this value entry.|
|bool||ListIsReadOnly()||Whether any of the list instances that this value entry represents are read only.|
|void||Update()||Updates the values contained in this value entry to the actual values in the target objects, and updates its state (override, type of value, etc.) accordingly.|
|void||UpdateValues()||Updates all values in this value entry from the target tree values.|
Determines whether the value at the given selection index is different from the given prefab value, as is relevant for prefab modification checks.
If the value is a reference type, null and type difference is checked. If value is a value type, a comparer from GetEqualityComparerDelegate<T>() is used.
This method is best ignored unless you know what you are doing.
Checks whether the values in this value entry are equal to the values in another value entry.
Note, both value entries must have the same value type, and must represent values that are .NET value types.