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