Exemplo n.º 1
0
        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);
        }