コード例 #1
0
        public void Erase(int stroke, List <int> points)
        {
#if UNITY_ASSERTIONS
            Assert.IsTrue(stroke >= 0 && stroke < strokes.Count);
#endif

            /*// erasing from the ends, just remove points
             * if ((point == 0) || point == strokes[stroke].points.Count-1)
             * {
             *      strokes[stroke].points.RemoveAt (point);
             *      return;
             * }
             *
             * // erasing from the middle, split the stroke
             * GreasePencilStroke newStroke = new GreasePencilStroke ();
             *
             * strokes[stroke].points.RemoveAt (point);
             *
             * for (int i=point; i<strokes[stroke].points.Count; ++i)
             * {
             *      newStroke.Add (strokes[stroke].points[i]);
             * }
             *
             * for (int i=point; i<strokes[stroke].points.Count; ++i)
             * {
             *      strokes[stroke].points.RemoveAt (point);
             * }
             *
             * strokes.Add (newStroke);*/

            GreasePencilStroke        oldStroke  = strokes[stroke];
            GreasePencilStroke        newStroke  = null;
            List <GreasePencilStroke> newStrokes = new List <GreasePencilStroke> ();

            for (int i = 0; i < oldStroke.points.Count; ++i)
            {
                if (!points.Contains(i))
                {
                    if (newStroke == null)
                    {
                        newStroke = new GreasePencilStroke();
                        newStrokes.Add(newStroke);
                    }

                    newStroke.Add(oldStroke.points[i]);
                }
                else if (newStroke != null)
                {
                    newStroke = null;
                }
            }

            if (newStrokes.Count > 0)
            {
                strokes[stroke] = newStrokes[0];

                for (int i = 1; i < newStrokes.Count; ++i)
                {
                    strokes.Add(newStrokes[i]);
                }
            }
            else
            {
                strokes[stroke].Clear();
            }

            newStrokes.RemoveAll(s => s.IsEmpty);
        }
コード例 #2
0
 public void StartStroke(Vector3 position, float worldSize)
 {
     currentStroke = new GreasePencilStroke(position);
     strokes.Add(currentStroke);
     _worldSize = worldSize;
 }