示例#1
0
        static void resampleJaggedArrayFloat(ref JaggedContainer <float> dat, int origX, int origY, int newX, int newY, float emptyVal)
        {
            float[] oldArry = new float[origX * origY];
            for (int i = 0; i < origX * origY; i++)
            {
                oldArry[i] = dat.GetValue(i);
            }

            float[] imgScaledX = new float[newX * newY];
            ImageManipulation.resizeF32Img(oldArry, imgScaledX, origX, origY, newX, newY, ImageManipulation.eFilterType.cFilter_Nearest);


            dat.Clear();
            dat.SetEmptyValue(emptyVal);
            for (int i = 0; i < newX * newY; i++)
            {
                if (imgScaledX[i] != emptyVal)
                {
                    dat.SetValue(i, imgScaledX[i]);
                }
            }
            imgScaledX = null;
            oldArry    = null;
        }
示例#2
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);
        }
示例#3
0
        public void createJaggedTileTypeFrom(JaggedContainer <int> v)
        {
            destroyTileTypeOverride();
            initTileTypeOverride();

            if (v == null)
            {
                return;
            }

            long id;
            int  maskValue;

            v.ResetIterator();
            while (v.MoveNext(out id, out maskValue))
            {
                if (maskValue == 0)
                {
                    continue;
                }

                mSimTileTypeOverride.SetValue(id, maskValue);
            }
        }
示例#4
0
 public void initHeightOverride()
 {
     mHeightOverride = new JaggedContainer <float>((int)(mWidth * mHeight));
     mHeightOverride.SetEmptyValue(cJaggedEmptyValue);
 }
示例#5
0
 public void initScarabPassableOverride()
 {
     mSimScarabPassableOverride = new JaggedContainer <int>(mNumXTiles * mNumXTiles);
     mSimScarabPassableOverride.SetEmptyValue(0);
 }
示例#6
0
 public void initBuildableOverride()
 {
     mSimBuildableOverride = new JaggedContainer <int>(mNumXTiles * mNumXTiles);
     mSimBuildableOverride.SetEmptyValue(0);
 }