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;
        }
Example #2
0
        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();
            }
        }
Example #3
0
        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();
            }

        }