private bool PasteGridsInStaticMode(MyInventoryBase buildInventory, bool deactivate) { // Paste generates grid from builder and use matrix from preview List <MyObjectBuilder_CubeGrid> copiedGridsOrig = new List <MyObjectBuilder_CubeGrid>(); List <MatrixD> previewGridsWorldMatrices = new List <MatrixD>(); { // First grid is forced static MyObjectBuilder_CubeGrid originalCopiedGrid = CopiedGrids[0]; BeforeCreateGrid(originalCopiedGrid); copiedGridsOrig.Add(originalCopiedGrid); MatrixD previewGridWorldMatrix = PreviewGrids[0].WorldMatrix; // Convert grid builder to static var gridBuilder = MyCubeBuilder.ConvertGridBuilderToStatic(originalCopiedGrid, previewGridWorldMatrix); // Set it to copied grids CopiedGrids[0] = gridBuilder; previewGridsWorldMatrices.Add(previewGridWorldMatrix); //PreviewGrids[0].WorldMatrix = MatrixD.CreateTranslation(previewGridWorldMatrix.Translation); } for (int i = 1; i < CopiedGrids.Count; ++i) { MyObjectBuilder_CubeGrid originalCopiedGrid = CopiedGrids[i]; BeforeCreateGrid(originalCopiedGrid); copiedGridsOrig.Add(originalCopiedGrid); MatrixD previewGridWorldMatrix = PreviewGrids[i].WorldMatrix; previewGridsWorldMatrices.Add(previewGridWorldMatrix); if (CopiedGrids[i].IsStatic) { // Convert grid builder to static var gridBuilder = MyCubeBuilder.ConvertGridBuilderToStatic(originalCopiedGrid, previewGridWorldMatrix); // Set it to copied grids CopiedGrids[i] = gridBuilder; //PreviewGrids[i].WorldMatrix = MatrixD.CreateTranslation(previewGridWorldMatrix.Translation); } } Debug.Assert(CopiedGrids.Count == copiedGridsOrig.Count); Debug.Assert(CopiedGrids.Count == previewGridsWorldMatrices.Count); bool result = PasteGridInternal(buildInventory: buildInventory, deactivate: deactivate, multiBlock: true, touchingGrids: m_touchingGrids); // Set original grids back CopiedGrids.Clear(); CopiedGrids.AddList(copiedGridsOrig); for (int i = 0; i < PreviewGrids.Count; ++i) { PreviewGrids[i].WorldMatrix = previewGridsWorldMatrices[i]; } return(result); }
public void Clear() { CopiedGrids.Clear(); m_copiedGridOffsets.Clear(); }