/// <summary>
/// Set the override value as an object.
/// </summary>
/// <param name="overrideValue">The override value.</param>
/// <param name="setVariantTypeToOverride">Should the variant type be set to override?</param>
/// <param name="reevaluate">Should the attribute re-evaluate.</param>
public override void SetOverrideValueAsObject(object overrideValue,
bool setVariantTypeToOverride = true, bool reevaluate = false)
{
if (overrideValue == null) {
SetOverrideValue(default, setVariantTypeToOverride, reevaluate);
return;
}
if (!(overrideValue is T value)) {
//Flag Enum values cannot be converted the same way as the rest.
Type type = typeof(T);
if (type.IsEnum) {
value = (T) Enum.ToObject(type, overrideValue);
} else {
var changeType = Convert.ChangeType(overrideValue, typeof(T));
if (changeType is T convertedValue) {
value = convertedValue;
} else{
Debug.LogWarning($"Cannot convert object '{overrideValue}' to type '{type}'");
return;
}
}
}
SetOverrideValue(value, setVariantTypeToOverride, reevaluate);
}