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; }