void UpdateSegments() { _effective = false; if (_segments == null) _segments = new PolygonColliderService.Segment[4]; var from = transform.TransformPoint(CORNERS[3]); InitBoundary(from); for (var i = 0; i < CORNERS.Length; i++) { var to = transform.TransformPoint (CORNERS[i]); _segments[i] = PolygonColliderService.Segment.Generate (from, to); ExpandBoundary(to); from = to; } _effective = true; }
void UpdateSegment() { _effective = false; if (_spriteRend == null || _spriteRend.sprite == null) return; if (_outlines == null) _outlines = FindOutlines (_spriteRend.sprite.vertices, _spriteRend.sprite.triangles); var len = _outlines.Length; if (len == 0) return; if (_segments == null || _segments.Length != len) _segments = new PolygonColliderService.Segment[len]; var sprite = _spriteRend.sprite; var vertices = sprite.vertices; var t0 = _outlines [0]; var from = transform.TransformPoint(vertices[t0]); InitBoundary (from); for (var i = 0; i < len; i++) { from = transform.TransformPoint(vertices [t0]); var t1 = _outlines[(i+1) % len]; var to = transform.TransformPoint(vertices[t1]); t0 = t1; _segments [i] = PolygonColliderService.Segment.Generate (from, to); ExpandBoundary(from); ExpandBoundary(to); } _effective = true; }