private static string GetUnits(SerializedProperty property, TimeUnitsSelectorAttribute attrib, ITimeUnitsCalculator calculator) { int hash = com.spacepuppyeditor.Internal.PropertyHandlerCache.GetPropertyHash(property); string units; if(!_unitsCache.TryGetValue(hash,out units)) { if (attrib != null) units = attrib.DefaultUnits; } if(!calculator.TimeUnits.Contains(units)) { units = calculator.DefaultUnits; } return units; }
static TimeUnitsSelectorPropertyDrawer() { int order = int.MinValue; System.Type selectedType = null; foreach (var tp in TypeUtil.GetTypesAssignableFrom(typeof(ITimeUnitsCalculator))) { var attrib = tp.GetCustomAttributes(typeof(OverrideDefaultTimeUnitsCalculatorAttribute), false).FirstOrDefault() as OverrideDefaultTimeUnitsCalculatorAttribute; if (attrib != null) { if (attrib.order > order || selectedType == null) { order = attrib.order; selectedType = tp; } } } if (selectedType != null) { try { _defaultCalculator = System.Activator.CreateInstance(selectedType) as ITimeUnitsCalculator; } catch { Debug.LogWarning("Failed to create an override time units calculator of type '" + selectedType.FullName + "'"); } } if (_defaultCalculator == null) { _defaultCalculator = new DefaultTimeUnitsCalculator(); } }
private static string GetUnits(SerializedProperty property, TimeUnitsSelectorAttribute attrib, ITimeUnitsCalculator calculator) { int hash = com.spacepuppyeditor.Internal.PropertyHandlerCache.GetPropertyHash(property); string units; if (!_unitsCache.TryGetValue(hash, out units)) { if (attrib != null) { units = attrib.DefaultUnits; } } if (!calculator.TimeUnits.Contains(units)) { units = calculator.DefaultUnits; } return(units); }
static TimeUnitsSelectorPropertyDrawer() { int order = int.MinValue; System.Type selectedType = null; foreach(var tp in TypeUtil.GetTypesAssignableFrom(typeof(ITimeUnitsCalculator))) { var attrib = tp.GetCustomAttributes(typeof(OverrideDefaultTimeUnitsCalculatorAttribute), false).FirstOrDefault() as OverrideDefaultTimeUnitsCalculatorAttribute; if(attrib != null) { if(attrib.order > order || selectedType == null) { order = attrib.order; selectedType = tp; } } } if (selectedType != null) { try { _defaultCalculator = System.Activator.CreateInstance(selectedType) as ITimeUnitsCalculator; } catch { Debug.LogWarning("Failed to create an override time units calculator of type '" + selectedType.FullName + "'"); } } if(_defaultCalculator == null) { _defaultCalculator = new DefaultTimeUnitsCalculator(); } }