示例#1
0
        public void SaveData(string filename)
        {
            SplineCanvasData scd = new SplineCanvasData();

            List <BulbData> bulbList = new List <BulbData>();

            for (int i = 0; i < bulbs.Count; i++)
            {
                bulbs[i].index = i;
                bulbList.Add(new BulbData(bulbs[i]));
            }

            List <SplineData> splineList = new List <SplineData>();

            foreach (CatmullRomSpline crs in splines)
            {
                splineList.Add(new SplineData(crs));
            }

            scd.bulbs   = bulbList;
            scd.splines = splineList;

            IFormatter formatter = new BinaryFormatter();
            Stream     stream    = new FileStream("savedCanvas/" + filename, FileMode.Create, FileAccess.Write, FileShare.None);

            formatter.Serialize(stream, scd);
            stream.Close();
        }
示例#2
0
        public void ReloadFromFile(string filename)
        {
            IFormatter       formatter = new BinaryFormatter();
            Stream           stream    = new FileStream("savedCanvas/" + filename, FileMode.Open, FileAccess.Read, FileShare.Read);
            SplineCanvasData data      = (SplineCanvasData)formatter.Deserialize(stream);

            stream.Close();

            ReloadFromData(data);
        }
示例#3
0
        public void ReloadFromData(SplineCanvasData data)
        {
            // Clear everything
            Reset();
            bulbs.Clear();

            foreach (BulbData bData in data.bulbs)
            {
                // Make bulbs at all the saved positions with the saved radii
                DraggablePoint pt = AddBulb(bData.position.GetVector());
                pt.SetSize(bData.radius);
                pt.containingCanvas = this;
                if (bData.type == PointType.Spline)
                {
                    pt.SwitchBulbType(PointType.Bulb);
                }
                else
                {
                    pt.SwitchBulbType(bData.type);
                }
            }

            foreach (SplineData sData in data.splines)
            {
                // Convert the serialized vectors to Unity vectors
                List <Vector3> posList = new List <Vector3>();
                foreach (V3Serialize v3s in sData.points)
                {
                    posList.Add(v3s.GetVector());
                }

                // Make a spline with the same control points
                CatmullRomSpline spline = CatmullRomSpline.SplineOfPoints(posList);
                AddExistingSpline(spline);

                // Set the begin/end bulbs
                if (sData.startBulb >= 0)
                {
                    spline.StartBulb = bulbs[sData.startBulb];
                }
                if (sData.endBulb >= 0)
                {
                    spline.EndBulb = bulbs[sData.endBulb];
                }
            }
        }