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(); }
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); }
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]; } } }