1234567891011121314151617181920212223242526272829303132333435 |
- using UnityEngine;
- using System.Collections.Generic;
- namespace UnityEditor.U2D.Animation
- {
- internal class RectBoneSelector : IRectSelector<BoneCache>
- {
- public ISelection<BoneCache> selection { get; set; }
- public BoneCache[] bones { get; set; }
- public Rect rect { get; set; }
- public void Select()
- {
- if (bones == null)
- return;
-
- foreach (var bone in bones)
- {
- if (!bone.isVisible)
- continue;
- Vector2 p1 = bone.position;
- Vector2 p2 = bone.endPosition;
- Vector2 point = Vector2.zero;
- if (rect.Contains(p1, true) || rect.Contains(p2, true) ||
- MathUtility.SegmentIntersection(new Vector2(rect.xMin, rect.yMin), new Vector2(rect.xMax, rect.yMin), p1, p2, ref point) ||
- MathUtility.SegmentIntersection(new Vector2(rect.xMax, rect.yMin), new Vector2(rect.xMax, rect.yMax), p1, p2, ref point) ||
- MathUtility.SegmentIntersection(new Vector2(rect.xMax, rect.yMax), new Vector2(rect.xMin, rect.yMax), p1, p2, ref point) ||
- MathUtility.SegmentIntersection(new Vector2(rect.xMin, rect.yMax), new Vector2(rect.xMin, rect.yMin), p1, p2, ref point)
- )
- selection.Select(bone.ToCharacterIfNeeded(), true);
- }
- }
- }
- }
|