Beispiel #1
0
        private void UpdatePoints()
        {
            if (_pointsDirty)
            {
                IsConvex = LocalPoints.IsConvex();
                Indices.Clear();

                if (IsConvex)
                {
                    int numTriangles = LocalPoints.Count - 2;
                    for (int i = numTriangles - 1; i >= 0; i--)
                    {
                        Indices.Add(0);
                        Indices.Add(i + 2);
                        Indices.Add(i + 1);
                    }
                }
                else
                {
                    Triangulator.Process(LocalPoints, Indices);
                }

                _pointsDirty = false;
            }
        }
Beispiel #2
0
        private void UpdatePoints()
        {
            ValidateRawLocalPoints();
            if (Valid)
            {
                ConvertRawLocalPointsToLocalPoints();

                IsConvex = LocalPoints.IsConvex();
                Indices.Clear();

                if (IsConvex)
                {
                    int numTriangles = LocalPoints.Count - 2;
                    for (int i = numTriangles - 1; i >= 0; i--)
                    {
                        Indices.Add(0);
                        Indices.Add(i + 2);
                        Indices.Add(i + 1);
                    }
                }
                else
                {
                    Triangulator.Process(LocalPoints, Indices);
                }

                _worldDirty = true;
            }
            _pointsDirty = false;
        }
Beispiel #3
0
        private Point GetCentroid()
        {
            var count     = LocalPoints.Count - 1;
            var centroidX = LocalPoints.Sum(m => m.X) / count;
            var centroidY = LocalPoints.Sum(m => m.Y) / count;

            return(new Point((int)centroidX, (int)centroidY));
        }
Beispiel #4
0
 // Raw local points are points unmodified by the system. Local points are always in CCW order.
 private void ConvertRawLocalPointsToLocalPoints()
 {
     LocalPoints.Clear();
     LocalPoints.AddRange(_rawLocalPoints);
     if (!LocalPoints.IsCounterClockWise())
     {
         LocalPoints.ReverseWindingOrder();
     }
 }
Beispiel #5
0
 protected override void Dispose(bool disposing)
 {
     if (disposing)
     {
         LocalPoints.Clear();
         Clear();
     }
     base.Dispose(disposing);
 }
Beispiel #6
0
    //
    // Private methods
    //

    private void finalize()
    {
        if (this.pc2d)
        {
            this.pc2d.SetPath(0, LocalPoints.ToArray());
        }
        if (this.ssc)
        {
            this.ssc.spline.setPoints(LocalPoints);
        }
    }
    private void OnEnable()
    {
        _asTarget = target as LocalPoints;

        _reorderableList = new ReorderableList(serializedObject, serializedObject.FindProperty("_paths"), true, true, true, true);
        _reorderableList.drawHeaderCallback    = drawHeader;
        _reorderableList.drawElementCallback   = drawElement;
        _reorderableList.elementHeightCallback = getElementHeight;
        _reorderableList.onAddCallback         = onAdd;
        _reorderableList.onReorderCallback     = onReorder;
    }
Beispiel #8
0
    private static void parseLocalPoints(LocalPoints localPoints, XmlElement parentElement, XmlDocument xml)
    {
        XmlElement localPointsElement = xml.CreateElement("LocalPoints");

        List <Vector2Array> paths = localPoints.paths;

        for (int i = 0; i < paths.Count; i++)
        {
            Vector2Array stroke        = paths[i];
            XmlElement   strokeElement = xml.CreateElement("Stroke");
            for (int j = 0; j < stroke.Count; j++)
            {
                Vector2    v        = stroke[j];
                XmlElement vElement = xml.CreateElement("Vector2");
                vElement.SetAttribute("x", v.x.ToString());
                vElement.SetAttribute("y", v.y.ToString());
                strokeElement.AppendChild(vElement);
            }
            localPointsElement.AppendChild(strokeElement);
        }

        parentElement.AppendChild(localPointsElement);
    }