void DrawPathes() { foreach (KeyValuePair <CellState, GUIDraggableObject> state in StatesPositions) { Combination[] combinations = state.Key.Combinations; float s = 70; int i = 0; if (combinations == null) { combinations = new Combination[0]; } foreach (Combination c in combinations) { float offset = s * i / (combinations.Count() - 1); if (combinations.Count() == 1) { offset = 48; } Rect start = new Rect(state.Value.Position.x + screenDelta.x - 100f / 2 + 5 + offset, state.Value.Position.y + screenDelta.y + 115 / 2f, 100.0f, 115.0f); try { CellState aim = StatesPositions.First(k => k.Key == c.ResultState).Key; Vector3 aimPosition = StatesPositions.Find(cell => cell.Key == aim).Value.Position + screenDelta; Rect end = new Rect(aimPosition.x, aimPosition.y - 115 / 2f, 100.0f, 115.0f);; Handles.BeginGUI(); Color color = skillsCollors[c.skill]; if (c == selectedPath) { color = color / 2; } DrawNodeCurve(start, end, color, c.skillLevel); Handles.EndGUI(); } catch { } i++; } } }
void DrowChainsWindow() { Rect fieldRect = new Rect(0, 0, position.width, position.height); GUI.DrawTextureWithTexCoords(fieldRect, BackgroundTexture, new Rect(0, 0, fieldRect.width / BackgroundTexture.width, fieldRect.height / BackgroundTexture.height)); DrawPathes(); BeginWindows(); CellState manipulatingState = null; for (int i = 0; i <= StatesPositions.Count - 1; i++) { Rect drawRect = new Rect(StatesPositions[i].Value.Position.x + screenDelta.x, StatesPositions[i].Value.Position.y + screenDelta.y, 140.0f, 155.0f); if (StatesPositions[i].Value.Click(drawRect)) { manipulatingState = StatesPositions [i].Key; Selection.activeObject = StatesPositions[i].Key; } } for (int i = 0; i <= StatesPositions.Count - 1; i++) { DrawStateBox(StatesPositions [i]); } if (manipulatingState != null) { KeyValuePair <CellState, GUIDraggableObject> kvp = StatesPositions.Find(k => k.Key == manipulatingState); StatesPositions.Remove(kvp); StatesPositions.Add(kvp); Repaint(); } EndWindows(); }