// Copy collider from sprite if it is drag&dropped to the inspector private void HandleDragAndDrop(Rect targetRect) { if (Event.current.type != EventType.DragPerform && Event.current.type != EventType.DragUpdated) { return; } // Check we're dropping onto the polygon collider editor. if (!targetRect.Contains(Event.current.mousePosition)) { return; } foreach (var obj in DragAndDrop.objectReferences.Where(obj => obj is Sprite || obj is Texture2D)) { DragAndDrop.visualMode = DragAndDropVisualMode.Copy; if (Event.current.type == EventType.DragPerform) { var sprite = obj is Sprite ? obj as Sprite : SpriteUtility.TextureToSprite(obj as Texture2D); // Copy collider to all selected components foreach (var collider in targets.Select(target => target as PolygonCollider2D)) { Vector2[][] paths; UnityEditor.Sprites.SpriteUtility.GenerateOutlineFromSprite(sprite, 0.25f, 200, true, out paths); collider.pathCount = paths.Length; for (int i = 0; i < paths.Length; ++i) { collider.SetPath(i, paths[i]); } DragAndDrop.AcceptDrag(); } if (EditorTools.EditorTools.activeToolType == typeof(PolygonCollider2DTool)) { EditorTools.EditorTools.RestorePreviousPersistentTool(); } } return; } DragAndDrop.visualMode = DragAndDropVisualMode.Rejected; }
private void HandleDragAndDrop(Rect targetRect) { if (Event.current.type != EventType.DragPerform && Event.current.type != EventType.DragUpdated || !targetRect.Contains(Event.current.mousePosition)) { return; } using (IEnumerator <UnityEngine.Object> enumerator1 = ((IEnumerable <UnityEngine.Object>)DragAndDrop.objectReferences).Where <UnityEngine.Object>((Func <UnityEngine.Object, bool>)(obj => { if (!(obj is Sprite)) { return(obj is Texture2D); } return(true); })).GetEnumerator()) { if (enumerator1.MoveNext()) { UnityEngine.Object current1 = enumerator1.Current; DragAndDrop.visualMode = DragAndDropVisualMode.Copy; if (Event.current.type != EventType.DragPerform) { return; } Sprite sprite = !(current1 is Sprite) ? SpriteUtility.TextureToSprite(current1 as Texture2D) : current1 as Sprite; using (IEnumerator <PolygonCollider2D> enumerator2 = ((IEnumerable <UnityEngine.Object>) this.targets).Select <UnityEngine.Object, PolygonCollider2D>((Func <UnityEngine.Object, PolygonCollider2D>)(target => target as PolygonCollider2D)).GetEnumerator()) { while (enumerator2.MoveNext()) { PolygonCollider2D current2 = enumerator2.Current; Vector2[][] paths; UnityEditor.Sprites.SpriteUtility.GenerateOutlineFromSprite(sprite, 0.25f, (byte)200, true, out paths); current2.pathCount = paths.Length; for (int index = 0; index < paths.Length; ++index) { current2.SetPath(index, paths[index]); } this.m_PolyUtility.StopEditing(); DragAndDrop.AcceptDrag(); } return; } } } DragAndDrop.visualMode = DragAndDropVisualMode.Rejected; }
private void HandleDragAndDrop(Rect targetRect) { if (Event.current.type != EventType.DragPerform && Event.current.type != EventType.DragUpdated) { return; } if (!targetRect.Contains(Event.current.mousePosition)) { return; } using (IEnumerator <UnityEngine.Object> enumerator = (from obj in DragAndDrop.objectReferences where obj is Sprite || obj is Texture2D select obj).GetEnumerator()) { if (enumerator.MoveNext()) { UnityEngine.Object current = enumerator.Current; DragAndDrop.visualMode = DragAndDropVisualMode.Copy; if (Event.current.type == EventType.DragPerform) { Sprite sprite = (!(current is Sprite)) ? SpriteUtility.TextureToSprite(current as Texture2D) : (current as Sprite); foreach (PolygonCollider2D current2 in from target in base.targets select target as PolygonCollider2D) { Vector2[][] array; UnityEditor.Sprites.SpriteUtility.GenerateOutlineFromSprite(sprite, 0.25f, 200, true, out array); current2.pathCount = array.Length; for (int i = 0; i < array.Length; i++) { current2.SetPath(i, array[i]); } this.m_PolyUtility.StopEditing(); DragAndDrop.AcceptDrag(); } } return; } } DragAndDrop.visualMode = DragAndDropVisualMode.Rejected; }