public override MyObjectBuilder_CubeBlock GetObjectBuilderCubeBlock(bool copy = false) { var ob = base.GetObjectBuilderCubeBlock(copy) as MyObjectBuilder_FracturedBlock; if (string.IsNullOrEmpty(Shape.Name) || Shape.IsCompound()) { Shape.GetChildren(m_children); foreach (var child in m_children) { var shape = new MyObjectBuilder_FracturedBlock.ShapeB() { Name = child.ShapeName, Orientation = Quaternion.CreateFromRotationMatrix(child.GetTransform().GetOrientation()), Fixed = MyDestructionHelper.IsFixed(child.Shape) }; ob.Shapes.Add(shape); } m_children.Clear(); } else { ob.Shapes.Add(new MyObjectBuilder_FracturedBlock.ShapeB() { Name = Shape.Name }); } foreach (var def in OriginalBlocks) ob.BlockDefinitions.Add(def); foreach (var or in Orientations) ob.BlockOrientations.Add(or); return ob; }
public override MyObjectBuilder_CubeBlock GetObjectBuilderCubeBlock(bool copy = false) { Debug.Assert(!MyFakes.ENABLE_FRACTURE_COMPONENT, "Fractured block saved with fracture components enabled"); var ob = base.GetObjectBuilderCubeBlock(copy) as MyObjectBuilder_FracturedBlock; if (string.IsNullOrEmpty(Shape.Name) || Shape.IsCompound()) { Shape.GetChildren(m_children); foreach (var child in m_children) { var shape = new MyObjectBuilder_FracturedBlock.ShapeB() { Name = child.ShapeName, Orientation = Quaternion.CreateFromRotationMatrix(child.GetTransform().GetOrientation()), Fixed = MyDestructionHelper.IsFixed(child.Shape) }; ob.Shapes.Add(shape); } m_children.Clear(); } else { ob.Shapes.Add(new MyObjectBuilder_FracturedBlock.ShapeB() { Name = Shape.Name }); } foreach (var def in OriginalBlocks) ob.BlockDefinitions.Add(def); foreach (var or in Orientations) ob.BlockOrientations.Add(or); if (MultiBlocks != null) { foreach (var mbpart in MultiBlocks) { if (mbpart != null) ob.MultiBlocks.Add(new MyObjectBuilder_FracturedBlock.MyMultiBlockPart() { MultiBlockDefinition = mbpart.MultiBlockDefinition, MultiBlockId = mbpart.MultiBlockId }); else ob.MultiBlocks.Add(null); } } return ob; }