public void OnGUI() { TDE.InitGUIStyle(); if (!CheckIsPlaying()) { return; } if (window == null) { Init(); } List <Ability> abilityList = AbilityDB.GetList(); Undo.RecordObject(this, "window"); Undo.RecordObject(AbilityDB.GetDB(), "abilityDB"); if (GUI.Button(new Rect(Math.Max(260, window.position.width - 120), 5, 100, 25), "Save")) { TDE.SetDirty(); } if (GUI.Button(new Rect(5, 5, 120, 25), "Create New")) { Select(NewItem()); } if (abilityList.Count > 0 && GUI.Button(new Rect(130, 5, 100, 25), "Clone Selected")) { Select(NewItem(selectID)); } float startX = 5; float startY = 55; if (minimiseList) { if (GUI.Button(new Rect(startX, startY - 20, 30, 18), ">>")) { minimiseList = false; } } else { if (GUI.Button(new Rect(startX, startY - 20, 30, 18), "<<")) { minimiseList = true; } } Vector2 v2 = DrawAbilityList(startX, startY, abilityList); startX = v2.x + 25; if (abilityList.Count == 0) { return; } Rect visibleRect = new Rect(startX, startY, window.position.width - startX, window.position.height - startY); Rect contentRect = new Rect(startX, startY, contentWidth, contentHeight); scrollPos = GUI.BeginScrollView(visibleRect, scrollPos, contentRect); v2 = DrawAbilityConfigurator(startX, startY, abilityList[selectID]); contentWidth = v2.x - startX; contentHeight = v2.y - 55; GUI.EndScrollView(); if (GUI.changed) { TDE.SetDirty(); } }