// Update the state machine
    public void Update()
    {
        if (wall == null)
        {
            return;
        }

        //Debug.Log(CurrentState);

        switch (CurrentState)
        {
        case ObjectState.Idle:
            break;

        case ObjectState.Moving:
            if (wall.Grid.MoveToCell(RectTransform, destinationPosition))
            {
                CurrentState = ObjectState.Idle;
            }
            break;

        case ObjectState.Pressed:
        case ObjectState.Transformed:
            break;

        case ObjectState.Launched:
        case ObjectState.Released:
            if (Time.time - idleTime > wall.MaxIdleTime)
            {
                CurrentState = ObjectState.Idle;
                SetLayer(1);
                wall.UpdateLayers();
            }
            break;
        }

        ControlPosition();
        ControlRotation();
        ControlScale();
        ControlColor();
    }