Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 3
0
        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;
        }