private void InitAllCornerInfo() { _topLeftCorner = new CornerInfo(CornerPos.TopLeft, _tempCornerRadius.TopLeft, _tempCircleThickness, this.ActualWidth, this.ActualHeight); _topRightCorner = new CornerInfo(CornerPos.TopRight, _tempCornerRadius.TopRight, _tempCircleThickness, this.ActualWidth, this.ActualHeight); _bottomLeftCorner = new CornerInfo(CornerPos.BottomLeft, _tempCornerRadius.BottomLeft, _tempCircleThickness, this.ActualWidth, this.ActualHeight); _bottomRightCorner = new CornerInfo(CornerPos.BottomRight, _tempCornerRadius.BottomRight, _tempCircleThickness, this.ActualWidth, this.ActualHeight); }
public static Vector3 GetCornersMidpoint(CornerInfo corners) { return(new Vector3( corners.topLeft.x + (Mathf.Abs(corners.bottomRight.x - corners.topLeft.x) / 2.0f), corners.bottomRight.y + (Mathf.Abs(corners.topLeft.y - corners.bottomRight.y) / 2.0f), 0.0f)); }
public static Vector2 GetSizeFromCorners(CornerInfo cornerInfo) { float leftMostX = cornerInfo.topLeft.x; float rightMostX = cornerInfo.bottomRight.x; float topMostY = cornerInfo.topLeft.y; float bottomMostY = cornerInfo.bottomRight.y; return(new Vector2( Mathf.Abs(rightMostX - leftMostX), Mathf.Abs(topMostY - bottomMostY))); }
List <CornerInfo> PrepareCornerInfos(string undoLabel) { List <Transform> objs = selection.GetSelection(); error = ADError.None; // load edge info & store the orginal obj position for undo List <CornerInfo> cornerInfos = new List <CornerInfo>(); foreach (Transform obj in objs) { // make sure the Canvas is setup correctly CanvasRenderer canvasRenderer = obj.GetComponent <CanvasRenderer>(); if (canvasRenderer != null && state.context.type != ContextType.Canvas) { error = ADError.CanvasContext; return(null); } // make sure NGUI is setup correctly R2DC_NGUI.NGUIState nguiState = ngui.ValidateState(obj.gameObject); if (nguiState == R2DC_NGUI.NGUIState.InvalidContext) { error = ADError.NGUIContext; return(null); } else if (nguiState == R2DC_NGUI.NGUIState.ReflectionError) { error = ADError.NGUIReflection; return(null); } CornerInfo cornerInfo = new CornerInfo(); cornerInfo.transform = obj; Vector3[] corners = bounds.GetWorldCorners(obj, state.preferColliders); if (corners == null) { return(null); } cornerInfo.corners = corners; cornerInfos.Add(cornerInfo); Undo.RecordObject(obj.transform, undoLabel); } return(cornerInfos); }
public static CornerInfo GetAnchorsWorldspaceCorners(Vector3[] rectCorners, Vector2 anchorMin, Vector2 anchorMax) { CornerInfo cornerInfo = GetCornerInfo(rectCorners); Vector2 rectSize = GetSizeFromCorners(cornerInfo); var ci = new CornerInfo(); float leftMostX = cornerInfo.bottomLeft.x; float bottomMostY = cornerInfo.bottomLeft.y; ci.topLeft = new Vector2( leftMostX + (anchorMin.x * rectSize.x), bottomMostY + (anchorMax.y * rectSize.y)); ci.bottomLeft = new Vector2( leftMostX + (anchorMin.x * rectSize.x), bottomMostY + (anchorMin.y * rectSize.y)); ci.topRight = new Vector2( leftMostX + (anchorMax.x * rectSize.x), bottomMostY + (anchorMax.y * rectSize.y)); ci.bottomRight = new Vector2( leftMostX + (anchorMax.x * rectSize.x), bottomMostY + (anchorMin.y * rectSize.y)); return(ci); }
public static CornerInfo GetCornerInfo(Vector3[] corners) { var ci = new CornerInfo(); float leftMostX = float.MaxValue; float rightMostX = float.MinValue; float topMostY = float.MinValue; float bottomMostY = float.MaxValue; foreach (Vector3 corner in corners) { if (corner.x < leftMostX) { leftMostX = corner.x; } if (corner.x > rightMostX) { rightMostX = corner.x; } if (corner.y < bottomMostY) { bottomMostY = corner.y; } if (corner.y > topMostY) { topMostY = corner.y; } } ci.topLeft = new Vector2(leftMostX, topMostY); ci.topRight = new Vector2(rightMostX, topMostY); ci.bottomLeft = new Vector2(leftMostX, bottomMostY); ci.bottomRight = new Vector2(rightMostX, bottomMostY); return(ci); }
List<CornerInfo> PrepareCornerInfos( string undoLabel ) { List<Transform> objs = selection.GetSelection(); error = ADError.None; // load edge info & store the orginal obj position for undo List<CornerInfo> cornerInfos = new List<CornerInfo>(); foreach( Transform obj in objs ) { // make sure the Canvas is setup correctly CanvasRenderer canvasRenderer = obj.GetComponent<CanvasRenderer>(); if( canvasRenderer != null && state.context.type != ContextType.Canvas ) { error = ADError.CanvasContext; return null; } // make sure NGUI is setup correctly R2DC_NGUI.NGUIState nguiState = ngui.ValidateState( obj.gameObject ); if( nguiState == R2DC_NGUI.NGUIState.InvalidContext ) { error = ADError.NGUIContext; return null; } else if( nguiState == R2DC_NGUI.NGUIState.ReflectionError ) { error = ADError.NGUIReflection; return null; } CornerInfo cornerInfo = new CornerInfo(); cornerInfo.transform = obj; Vector3[] corners = bounds.GetWorldCorners( obj, state.preferColliders ); if( corners == null ) { return null; } cornerInfo.corners = corners; cornerInfos.Add( cornerInfo ); Undo.RecordObject( obj.transform, undoLabel ); } return cornerInfos; }