Exemplo n.º 1
0
            /// <summary>Draws two float fields.</summary>
            public static float DoTwinFloatFieldGUI(Rect area, GUIContent label, float value, float normalizeMultiplier, bool isNormalized)
            {
                if (_PixelSuffixCache == null)
                {
                    _PixelSuffixCache      = new ConversionCache <float, string>((s) => s + "px");
                    _NormalizedSuffixCache = new ConversionCache <float, string>((x) => x + "x");
                }

                var split          = (area.width - EditorGUIUtility.labelWidth - AnimancerGUI.StandardSpacing) * 0.5f;
                var normalizedArea = AnimancerGUI.StealFromRight(ref area, Mathf.Floor(split), AnimancerGUI.StandardSpacing);

                var pixels     = isNormalized ? value / normalizeMultiplier : value;
                var normalized = isNormalized ? value : value * normalizeMultiplier;

                EditorGUI.BeginChangeCheck();
                pixels = AnimancerGUI.DoSpecialFloatField(area, label, pixels, _PixelSuffixCache);
                if (EditorGUI.EndChangeCheck())
                {
                    value = isNormalized ? pixels * normalizeMultiplier : pixels;
                }

                EditorGUI.BeginChangeCheck();
                normalized = AnimancerGUI.DoSpecialFloatField(normalizedArea, null, normalized, _NormalizedSuffixCache);
                if (EditorGUI.EndChangeCheck())
                {
                    value = isNormalized ? normalized : normalized / normalizeMultiplier;
                }

                return(value);
            }