/// <summary> /// Prepare brick or all selected bric to be dragged. /// </summary> /// <param name="brick">Brick that is dragged</param> void PrepareBrickToDrag(DragableBrick brick) { if (SelectionManager.instance.SelectedAmount <= 1) { dragableBrick = brick; dragableBrick.SetHighlighted(false); dragableBrick.SetLayer(Preferences.instance.movingLayer); groupBrick = false; //prepare undo nodes historyNodes = HistoryTool.PrepareTransformNodes(brick.gameObject); } else { var selectedBricks = SelectionManager.instance.GetSelected(); dragableBrick = PrepereGroupToDrag(selectedBricks); } dragableBrick.isDragging = true; AddRigidBody(dragableBrick); }
/// <summary> /// End drag operation /// </summary> void EndDragging() { SelectionManager.instance.RestoreSelectionEffect(); OnEndMove?.Invoke(); //remove all rigidbodies and disable reporing var bricks = dragableBrick.GetComponentsInChildren <TransparentBrick>(); foreach (var brick in bricks) { var rigidBody = brick.gameObject.GetComponent <Rigidbody>(); if (rigidBody != null) { UnityEngine.Object.DestroyImmediate(rigidBody); } if (brick is DragableBrick) { (brick as DragableBrick).isDragging = false; } } if (groupBrick) { var childBricks = dragableBrick.GetComponentsInChildren <DragableBrick>(); foreach (var childBrick in childBricks) { childBrick.transform.SetParent(dragableBrick.transform.parent); childBrick.SetLayer(0); //set default layer } UnityEngine.Object.Destroy(dragableBrick.gameObject); } else { dragableBrick.SetLayer(0); //set default layer } isDragging = false; dragableBrick = null; }