void UpdateSegments() { _effective = false; if (vertices == null) { return; } if (_segments == null || _segments.Length != vertices.Length) { _segments = new PolygonColliderService.Segment[vertices.Length]; } if (_segments.Length < 2) { return; } var from = transform.TransformPoint(vertices [vertices.Length - 1]); InitBoundary(from); for (var i = 0; i < vertices.Length; i++) { var to = transform.TransformPoint(vertices [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; }
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; }