private void SetRotation(MyGridClipboard clipboard, Vector3I rotation) { clipboard.RotateAroundAxis(0, System.Math.Sign(rotation.X), true, System.Math.Abs(rotation.X * MathHelper.PiOver2)); clipboard.RotateAroundAxis(1, System.Math.Sign(rotation.Y), true, System.Math.Abs(rotation.Y * MathHelper.PiOver2)); clipboard.RotateAroundAxis(2, System.Math.Sign(rotation.Z), true, System.Math.Abs(rotation.Z * MathHelper.PiOver2)); }
public override void InitFromDefinition(MySessionComponentDefinition definition) { base.InitFromDefinition(definition); MyClipboardDefinition clipboardDefinition = definition as MyClipboardDefinition; if (clipboardDefinition == null) Debug.Fail("Wrong definition! Please check."); m_definition = clipboardDefinition; m_clipboard = new MyGridClipboard(m_definition.PastingSettings, calculateVelocity: true); }
public MyGuiBlueprintScreen(MyGridClipboard clipboard) : base(new Vector2(MyGuiManager.GetMaxMouseCoord().X - SCREEN_SIZE.X * 0.5f + HIDDEN_PART_RIGHT, 0.5f), SCREEN_SIZE, MyGuiConstants.SCREEN_BACKGROUND_COLOR, false) { if (!Directory.Exists(m_localBlueprintFolder)) { Directory.CreateDirectory(m_localBlueprintFolder); } if (!Directory.Exists(m_workshopBlueprintFolder)) { Directory.CreateDirectory(m_workshopBlueprintFolder); } m_blueprintList.Items.Clear(); GetLocalBlueprintNames(m_downloadFromSteam); if (m_downloadFromSteam) { m_downloadFromSteam = false; } RecreateControls(true); m_blueprintList.ItemsSelected += OnSelectItem; m_blueprintList.ItemDoubleClicked += OnItemDoubleClick; m_blueprintList.ItemMouseOver += OnMouseOverItem; OnEnterCallback += Ok; m_searchBox.TextChanged += OnSearchTextChange; if (clipboard != null) { m_clipboard = clipboard; } else { System.Diagnostics.Debug.Fail("Clipboard shouldn't be null!"); m_clipboard = Sandbox.Game.Entities.MyCubeBuilder.Static.Clipboard; } }
public static bool CopyBlueprintPrefabToClipboard(MyObjectBuilder_Definitions prefab, MyGridClipboard clipboard, bool setOwner = true) { if (prefab.ShipBlueprints == null) return false; var cubeGrids = prefab.ShipBlueprints[0].CubeGrids; if (cubeGrids == null || cubeGrids.Count() == 0) return false; var localBB = MyCubeGridExtensions.CalculateBoundingSphere(cubeGrids[0]); var posAndOrient = cubeGrids[0].PositionAndOrientation.Value; var worldMatrix = MatrixD.CreateWorld(posAndOrient.Position, posAndOrient.Forward, posAndOrient.Up); var invertedNormalizedWorld = Matrix.Normalize(Matrix.Invert(worldMatrix)); var worldBB = localBB.Transform(worldMatrix); var dragVector = Vector3.TransformNormal((Vector3)(Vector3D)posAndOrient.Position - worldBB.Center, invertedNormalizedWorld); var dragDistance = localBB.Radius + 10f; //Reset ownership to local player if (setOwner) { foreach (var gridBuilder in cubeGrids) { foreach (var block in gridBuilder.CubeBlocks) { if (block.Owner != 0) { block.Owner = MySession.LocalPlayerId; } } } } clipboard.SetGridFromBuilders(cubeGrids, dragVector, dragDistance); clipboard.Deactivate(); return true; }
public static bool CopyBlueprintPrefabToClipboard(MyObjectBuilder_Definitions prefab, MyGridClipboard clipboard, bool setOwner = true) { if (prefab.ShipBlueprints == null) return false; var cubeGrids = prefab.ShipBlueprints[0].CubeGrids; if (cubeGrids == null || cubeGrids.Length == 0) return false; var localBB = MyCubeGridExtensions.CalculateBoundingSphere(cubeGrids[0]); var posAndOrient = cubeGrids[0].PositionAndOrientation.Value; var worldMatrix = MatrixD.CreateWorld(posAndOrient.Position, posAndOrient.Forward, posAndOrient.Up); var invertedNormalizedWorld = Matrix.Normalize(Matrix.Invert(worldMatrix)); var worldBB = localBB.Transform(worldMatrix); var dragVector = Vector3.TransformNormal((Vector3)(Vector3D)posAndOrient.Position - worldBB.Center, invertedNormalizedWorld); var dragDistance = localBB.Radius + 10f; //Reset ownership to local player if (setOwner) { foreach (var gridBuilder in cubeGrids) { foreach (var block in gridBuilder.CubeBlocks) { if (block.Owner != 0) { block.Owner = MySession.Static.LocalPlayerId; } } } } // Blueprint can have old (deprecated) fractured blocks, they have to be converted to fracture components. There is no version in blueprints. if (MyFakes.ENABLE_FRACTURE_COMPONENT) { for (int i = 0; i < cubeGrids.Length; ++i) { cubeGrids[i] = MyFracturedBlock.ConvertFracturedBlocksToComponents(cubeGrids[i]); } } clipboard.SetGridFromBuilders(cubeGrids, dragVector, dragDistance); clipboard.Deactivate(); return true; }