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