public override void NeatWindow( ) { GUI.BeginGroup(rect); GUI.color = Color.white; GUI.skin.box.clipping = TextClipping.Overflow; // Resize handle int size = 10; Rect topLeft = LocalRect().GetBorder(RectBorder.TopLeft, size); //Rect lowerRight = LocalRect().GetBorder(RectBorder.BottomRight,size); Rect topRight = LocalRect().GetBorder(RectBorder.TopRight, size); Rect left = LocalRect().GetBorder(RectBorder.Left, size); //Rect lowerRight = LocalRect().GetBorder(RectBorder.Center,size); Rect right = LocalRect().GetBorder(RectBorder.Right, size); Rect lowerLeft = LocalRect().GetBorder(RectBorder.BottomLeft, size); //new Rect(rect.width - size, rect.height-size,size,size); Rect lower = LocalRect().GetBorder(RectBorder.Bottom, size); Rect lowerRight = LocalRect().GetBorder(RectBorder.BottomRight, size); /* * if(!resizing) * SF_GUI.AssignCursor(lowerRight,MouseCursor.ResizeUpLeft); * else * SF_GUI.AssignCursor(new Rect(0,0,Screen.width,Screen.height),MouseCursor.ResizeUpLeft);*/ SF_GUI.DrawTextureTiled(LocalRect().GetBorder(RectBorder.TopLeft, size, showResizeCursor: true), SF_GUI.Handle_drag, local: true); //SF_GUI.DrawTextureTiled(LocalRect().GetBorder(RectBorder.Top ,size, showResizeCursor:true), SF_GUI.Handle_drag, local:true ); SF_GUI.DrawTextureTiled(LocalRect().GetBorder(RectBorder.TopRight, size, showResizeCursor: true), SF_GUI.Handle_drag, local: true); SF_GUI.DrawTextureTiled(LocalRect().GetBorder(RectBorder.Left, size, showResizeCursor: true), SF_GUI.Handle_drag, local: true); SF_GUI.DrawTextureTiled(LocalRect().GetBorder(RectBorder.Right, size, showResizeCursor: true), SF_GUI.Handle_drag, local: true); SF_GUI.DrawTextureTiled(LocalRect().GetBorder(RectBorder.BottomLeft, size, showResizeCursor: true), SF_GUI.Handle_drag, local: true); SF_GUI.DrawTextureTiled(LocalRect().GetBorder(RectBorder.Bottom, size, showResizeCursor: true), SF_GUI.Handle_drag, local: true); SF_GUI.DrawTextureTiled(LocalRect().GetBorder(RectBorder.BottomRight, size, showResizeCursor: true), SF_GUI.Handle_drag, local: true); // -1 = left / top // 0 = static // 1 = right / bottom #if UNITY_2018 bool clicked = Event.current.type == EventType.MouseDown && Event.current.button == 0; #else bool clicked = Event.current.type == EventType.mouseDown && Event.current.button == 0; #endif if (clicked) { xDrag = 0; yDrag = 0; Vector3 mPos = Event.current.mousePosition; /* * bool[,] dragGrid = new bool[3,3]{ * {topLeft.Contains(mPos), false, topRight.Contains(mPos)}, * {left.Contains(mPos), false, right.Contains(mPos)}, * {lowerLeft.Contains(mPos), lower.Contains(mPos), lowerRight.Contains(mPos)} * };*/ bool[,] dragGrid = new bool[3, 3] { { topLeft.Contains(mPos), left.Contains(mPos), lowerLeft.Contains(mPos) }, { false, false, lower.Contains(mPos) }, { topRight.Contains(mPos), right.Contains(mPos), lowerRight.Contains(mPos) } }; bool leftSide = dragGrid[0, 0] || dragGrid[0, 1] || dragGrid[0, 2]; bool rightSide = dragGrid[2, 0] || dragGrid[2, 1] || dragGrid[2, 2]; bool topSide = dragGrid[0, 0] || dragGrid[1, 0] || dragGrid[2, 0]; bool bottomSide = dragGrid[0, 2] || dragGrid[1, 2] || dragGrid[2, 2]; if (leftSide) { xDrag = -1; } else if (rightSide) { xDrag = 1; } if (topSide) { yDrag = -1; } else if (bottomSide) { yDrag = 1; } bool contained = xDrag != 0 || yDrag != 0; if (contained) { resizing = true; Event.current.Use(); } } #if UNITY_2018 if (resizing && Event.current.type == EventType.MouseDrag) { #else if (resizing && Event.current.type == EventType.mouseDrag) { #endif if (Event.current.delta.sqrMagnitude > 0) { UndoRecord("resize node"); } if (xDrag == 1) { rect.width += Event.current.delta.x; } else if (xDrag == -1) { rect.xMin += Event.current.delta.x; } if (yDrag == 1) { rect.height += Event.current.delta.y; } if (yDrag == -1) { rect.yMin += Event.current.delta.y; } //Debug.Log("RESIZING X " + xDrag + " Y " + yDrag); ClampSize(); Event.current.Use(); } if (resizing && SF_GUI.ReleasedRawLMB()) { resizing = false; xDrag = 0; yDrag = 0; if (base.isDragging) { base.OnRelease(); } Event.current.Use(); } Rect insideHandleRect = LocalRect().PadLeft(size).PadRight(size).PadBottom(size).PadTop(Mathf.Max(15, size)); DrawInner(insideHandleRect); /* * if( showColor ) { * * texture.Draw( rectInner ); * * if( SF_Debug.nodes ) { * Rect r = new Rect( 0, 16, 96, 20 ); * GUI.color = Color.white; * GUI.skin.box.normal.textColor = Color.white; * GUI.Box( r, "ID: " + id ); * r.y += r.height; * //GUI.Box( r, "Cmps: " + texture.CompCount ); * //r.y += r.height; * //GUI.Box( r, "Unif: " + texture.dataUniform ); * * } * * * }*/ if (showLowerPropertyBox) { GUI.color = Color.white; DrawLowerPropertyBox(); } //GUI.DragWindow(); GUI.EndGroup( ); //if(rect.center.x) }