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