private bool PasteGridsInStaticMode(bool deactivate) { List <MyObjectBuilder_CubeGrid> itemsToAdd = new List <MyObjectBuilder_CubeGrid>(); List <MatrixD> list2 = new List <MatrixD>(); MyObjectBuilder_CubeGrid grid = base.CopiedGrids[0]; base.BeforeCreateGrid(grid); itemsToAdd.Add(grid); MatrixD worldMatrix = base.PreviewGrids[0].WorldMatrix; MyObjectBuilder_CubeGrid grid2 = MyCubeBuilder.ConvertGridBuilderToStatic(grid, worldMatrix); base.CopiedGrids[0] = grid2; list2.Add(worldMatrix); for (int i = 1; i < base.CopiedGrids.Count; i++) { MyObjectBuilder_CubeGrid grid3 = base.CopiedGrids[i]; base.BeforeCreateGrid(grid3); itemsToAdd.Add(grid3); MatrixD item = base.PreviewGrids[i].WorldMatrix; list2.Add(item); if (base.CopiedGrids[i].IsStatic) { base.CopiedGrids[i] = MyCubeBuilder.ConvertGridBuilderToStatic(grid3, item); } } bool flag = base.PasteGridInternal(deactivate, null, base.m_touchingGrids, null, true, true); base.CopiedGrids.Clear(); base.CopiedGrids.AddList <MyObjectBuilder_CubeGrid>(itemsToAdd); for (int j = 0; j < base.PreviewGrids.Count; j++) { base.PreviewGrids[j].WorldMatrix = list2[j]; } return(flag); }
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); }