UnityEditor.SplitterState.RealToRelativeSizes C# (CSharp) Method

RealToRelativeSizes() public method

public RealToRelativeSizes ( ) : void
return void
        public void RealToRelativeSizes()
        {
            int num3;
            float num = 1f;
            float num2 = 0f;
            for (num3 = 0; num3 < this.realSizes.Length; num3++)
            {
                num2 += this.realSizes[num3];
            }
            for (num3 = 0; num3 < this.realSizes.Length; num3++)
            {
                this.relativeSizes[num3] = ((float) this.realSizes[num3]) / num2;
                num -= this.relativeSizes[num3];
            }
            if (this.relativeSizes.Length > 0)
            {
                this.relativeSizes[this.relativeSizes.Length - 1] += num;
            }
        }

Usage Example

 public static void BeginSplit(SplitterState state, GUIStyle style, bool vertical, params GUILayoutOption[] options)
 {
   SplitterGUILayout.GUISplitterGroup guiSplitterGroup = (SplitterGUILayout.GUISplitterGroup) GUILayoutUtility.BeginLayoutGroup(style, (GUILayoutOption[]) null, typeof (SplitterGUILayout.GUISplitterGroup));
   state.ID = GUIUtility.GetControlID(SplitterGUILayout.splitterHash, FocusType.Native);
   switch (Event.current.GetTypeForControl(state.ID))
   {
     case EventType.MouseDown:
       if (Event.current.button != 0 || Event.current.clickCount != 1)
         break;
       int num1 = !guiSplitterGroup.isVertical ? (int) guiSplitterGroup.rect.x : (int) guiSplitterGroup.rect.y;
       int num2 = !guiSplitterGroup.isVertical ? (int) Event.current.mousePosition.x : (int) Event.current.mousePosition.y;
       for (int index = 0; index < state.relativeSizes.Length - 1; ++index)
       {
         if ((!guiSplitterGroup.isVertical ? new Rect(state.xOffset + (float) num1 + (float) state.realSizes[index] - (float) (state.splitSize / 2), guiSplitterGroup.rect.y, (float) state.splitSize, guiSplitterGroup.rect.height) : new Rect(state.xOffset + guiSplitterGroup.rect.x, (float) (num1 + state.realSizes[index] - state.splitSize / 2), guiSplitterGroup.rect.width, (float) state.splitSize)).Contains(Event.current.mousePosition))
         {
           state.splitterInitialOffset = num2;
           state.currentActiveSplitter = index;
           GUIUtility.hotControl = state.ID;
           Event.current.Use();
           break;
         }
         num1 += state.realSizes[index];
       }
       break;
     case EventType.MouseUp:
       if (GUIUtility.hotControl != state.ID)
         break;
       GUIUtility.hotControl = 0;
       state.currentActiveSplitter = -1;
       state.RealToRelativeSizes();
       Event.current.Use();
       break;
     case EventType.MouseDrag:
       if (GUIUtility.hotControl != state.ID || state.currentActiveSplitter < 0)
         break;
       int num3 = !guiSplitterGroup.isVertical ? (int) Event.current.mousePosition.x : (int) Event.current.mousePosition.y;
       int diff = num3 - state.splitterInitialOffset;
       if (diff != 0)
       {
         state.splitterInitialOffset = num3;
         state.DoSplitter(state.currentActiveSplitter, state.currentActiveSplitter + 1, diff);
       }
       Event.current.Use();
       break;
     case EventType.Repaint:
       int num4 = !guiSplitterGroup.isVertical ? (int) guiSplitterGroup.rect.x : (int) guiSplitterGroup.rect.y;
       for (int index = 0; index < state.relativeSizes.Length - 1; ++index)
       {
         EditorGUIUtility.AddCursorRect(!guiSplitterGroup.isVertical ? new Rect(state.xOffset + (float) num4 + (float) state.realSizes[index] - (float) (state.splitSize / 2), guiSplitterGroup.rect.y, (float) state.splitSize, guiSplitterGroup.rect.height) : new Rect(state.xOffset + guiSplitterGroup.rect.x, (float) (num4 + state.realSizes[index] - state.splitSize / 2), guiSplitterGroup.rect.width, (float) state.splitSize), !guiSplitterGroup.isVertical ? MouseCursor.SplitResizeLeftRight : MouseCursor.ResizeVertical, state.ID);
         num4 += state.realSizes[index];
       }
       break;
     case EventType.Layout:
       guiSplitterGroup.state = state;
       guiSplitterGroup.resetCoords = false;
       guiSplitterGroup.isVertical = vertical;
       guiSplitterGroup.ApplyOptions(options);
       break;
   }
 }
All Usage Examples Of UnityEditor.SplitterState::RealToRelativeSizes