Beispiel #1
0
        public bool Save(Stream s)
        {
            BinaryWriter b = new BinaryWriter(s);

            b.Write(cNewVersionDelimeter);
            b.Write(MaskCheckList.Items.Count);
            b.Write(TerrainGlobals.getTerrain().getNumXVerts());
            foreach (MaskItem item in MaskCheckList.Items)
            {
                b.Write(item.Name);
                b.Write(item.mMask.GetType().ToString());
                if (item.mMask is ArrayBasedMask)
                {
                    JaggedContainer <float> container = item.mMask as JaggedContainer <float>;
                    container.SaveByStripe(b,
                                           (JaggedContainer <float> .SaveStripeDelegate)(delegate(BinaryWriter w, float[] values)
                    {
                        for (int i = 0; i < values.Length; i++)
                        {
                            w.Write(values[i]);
                        }
                    }));
                }
                else if (item.mMask is GraphBasedMask)
                {
                    GraphBasedMask gbm = item.mMask as GraphBasedMask;
                    b.Write(gbm.GraphMemStream.Length);
                    gbm.GraphMemStream.Seek(0, SeekOrigin.Begin);
                    gbm.GraphMemStream.WriteTo(b.BaseStream);
                }
            }



            return(true);
        }