void SetTypedValue <T>(StyleValueHandleContext handle, T value) { switch (handle.handle.valueType) { case StyleValueType.Keyword: styleSheet.SetValue(handle.handle, (StyleValueKeyword)(object)value); break; case StyleValueType.Float: styleSheet.SetValue(handle.handle, (float)(object)value); break; case StyleValueType.Dimension: styleSheet.SetValue(handle.handle, (Dimension)(object)value); break; case StyleValueType.Color: styleSheet.SetValue(handle.handle, (Color)(object)value); break; case StyleValueType.ResourcePath: styleSheet.SetValue(handle.handle, (string)(object)value); break; case StyleValueType.AssetReference: styleSheet.SetValue(handle.handle, (UnityEngine.Object)(object) value); break; case StyleValueType.Enum: if (typeof(T).IsEnum || value is Enum) { styleSheet.SetValue(handle.handle, (Enum)(object)value); } else if (typeof(T) == typeof(string) || value is string) { styleSheet.SetValue(handle.handle, (string)(object)value); } break; case StyleValueType.String: styleSheet.SetValue(handle.handle, (string)(object)value); break; case StyleValueType.MissingAssetReference: styleSheet.SetValue(handle.handle, (string)(object)value); break; case StyleValueType.ScalableImage: // Not actually supported // styleSheet.SetValue(handle.handle, handle.AsScalableImage()); // break; // These are not "values". case StyleValueType.Invalid: case StyleValueType.Variable: case StyleValueType.Function: case StyleValueType.CommaSeparator: default: throw new ArgumentOutOfRangeException(); } }
StyleValueHandle TransferTypedValue(StyleValueHandleContext handle) { switch (handle.handle.valueType) { case StyleValueType.Keyword: return(AddTypedValue(handle.AsKeyword(), StyleValueType.Keyword)); case StyleValueType.Float: return(AddTypedValue(handle.AsFloat(), StyleValueType.Float)); case StyleValueType.Dimension: return(AddTypedValue(handle.AsDimension(), StyleValueType.Dimension)); case StyleValueType.Color: return(AddTypedValue(handle.AsColor(), StyleValueType.Color)); case StyleValueType.ResourcePath: return(AddTypedValue(handle.AsResourcePath(), StyleValueType.ResourcePath)); case StyleValueType.AssetReference: return(AddTypedValue(handle.AsAssetReference(), StyleValueType.AssetReference)); case StyleValueType.Enum: return(AddTypedValue(handle.AsEnum(), StyleValueType.Enum)); case StyleValueType.String: return(AddTypedValue(handle.AsString(), StyleValueType.String)); case StyleValueType.ScalableImage: return(AddTypedValue(handle.AsScalableImage(), StyleValueType.ScalableImage)); case StyleValueType.MissingAssetReference: return(AddTypedValue(handle.AsString(), StyleValueType.MissingAssetReference)); case StyleValueType.Invalid: case StyleValueType.Variable: case StyleValueType.Function: case StyleValueType.CommaSeparator: default: throw new ArgumentOutOfRangeException(); } }