/// <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); }