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