Exemplo n.º 1
0
        static MyModelFractures ReadModelFractures(BinaryReader reader)
        {
            MyModelFractures modelFractures = new MyModelFractures();

            modelFractures.Version = reader.ReadInt32();

            var fracturesCount = reader.ReadInt32();

            for (int i = 0; i < fracturesCount; i++)
            {
                string fractureName = reader.ReadString();

                if (fractureName == "RandomSplit")
                {
                    var settings = new RandomSplitFractureSettings();

                    settings.NumObjectsOnLevel1 = reader.ReadInt32();
                    settings.NumObjectsOnLevel2 = reader.ReadInt32();
                    settings.RandomRange        = reader.ReadInt32();
                    settings.RandomSeed1        = reader.ReadInt32();
                    settings.RandomSeed2        = reader.ReadInt32();
                    settings.SplitPlane         = reader.ReadString();

                    modelFractures.Fractures = new MyFractureSettings[] { settings };
                }
                else if (fractureName == "Voronoi")
                {
                    var settings = new VoronoiFractureSettings();
                    settings.Seed = reader.ReadInt32();
                    settings.NumSitesToGenerate = reader.ReadInt32();
                    settings.NumIterations      = reader.ReadInt32();
                    settings.SplitPlane         = reader.ReadString();

                    modelFractures.Fractures = new MyFractureSettings[] { settings };
                }
            }

            return(modelFractures);
        }
Exemplo n.º 2
0
        static MyModelFractures ReadModelFractures(BinaryReader reader)
        {
            MyModelFractures modelFractures = new MyModelFractures();

            modelFractures.Version = reader.ReadInt32();

            var fracturesCount = reader.ReadInt32();

            for (int i = 0; i < fracturesCount; i++)
            {
                string fractureName = reader.ReadString();

                if (fractureName == "RandomSplit")
                {
                    var settings = new RandomSplitFractureSettings();

                    settings.NumObjectsOnLevel1 = reader.ReadInt32();
                    settings.NumObjectsOnLevel2 = reader.ReadInt32();
                    settings.RandomRange        = reader.ReadInt32();
                    settings.RandomSeed1        = reader.ReadInt32();
                    settings.RandomSeed2        = reader.ReadInt32();
                    settings.SplitPlane         = reader.ReadString();

                    modelFractures.Fractures = new MyFractureSettings[] { settings };
                }
                else if (fractureName == "Voronoi")
                {
                    var settings = new VoronoiFractureSettings();
                    settings.Seed = reader.ReadInt32();
                    settings.NumSitesToGenerate = reader.ReadInt32();
                    settings.NumIterations      = reader.ReadInt32();
                    settings.SplitPlane         = reader.ReadString();

                    modelFractures.Fractures = new MyFractureSettings[] { settings };
                }
                else if (fractureName == "WoodFracture")
                {
                    var settings = new WoodFractureSettings();
                    settings.BoardCustomSplittingPlaneAxis    = reader.ReadBoolean();
                    settings.BoardFractureLineShearingRange   = reader.ReadSingle();
                    settings.BoardFractureNormalShearingRange = reader.ReadSingle();
                    settings.BoardNumSubparts                    = reader.ReadInt32();
                    settings.BoardRotateSplitGeom                = (WoodFractureSettings.Rotation)reader.ReadInt32();
                    settings.BoardScale                          = ReadVector3(reader);
                    settings.BoardScaleRange                     = ReadVector3(reader);
                    settings.BoardSplitGeomShiftRangeY           = reader.ReadSingle();
                    settings.BoardSplitGeomShiftRangeZ           = reader.ReadSingle();
                    settings.BoardSplittingAxis                  = ReadVector3(reader);
                    settings.BoardSplittingPlane                 = reader.ReadString();
                    settings.BoardSurfaceNormalShearingRange     = reader.ReadSingle();
                    settings.BoardWidthRange                     = reader.ReadSingle();
                    settings.SplinterCustomSplittingPlaneAxis    = reader.ReadBoolean();
                    settings.SplinterFractureLineShearingRange   = reader.ReadSingle();
                    settings.SplinterFractureNormalShearingRange = reader.ReadSingle();
                    settings.SplinterNumSubparts                 = reader.ReadInt32();
                    settings.SplinterRotateSplitGeom             = (WoodFractureSettings.Rotation)reader.ReadInt32();
                    settings.SplinterScale                       = ReadVector3(reader);
                    settings.SplinterScaleRange                  = ReadVector3(reader);
                    settings.SplinterSplitGeomShiftRangeY        = reader.ReadSingle();
                    settings.SplinterSplitGeomShiftRangeZ        = reader.ReadSingle();
                    settings.SplinterSplittingAxis               = ReadVector3(reader);
                    settings.SplinterSplittingPlane              = reader.ReadString();
                    settings.SplinterSurfaceNormalShearingRange  = reader.ReadSingle();
                    settings.SplinterWidthRange                  = reader.ReadSingle();

                    modelFractures.Fractures = new MyFractureSettings[] { settings };
                }
            }

            return(modelFractures);
        }