public void HighlightPath(Vector3 block_position)
    {
        if (!_inputFrozen)
        {
            if (_moveController._movementType == MovementType.Grid)
            {
                _path = AStarFunctions.AStar(
                    MapCreate.PositionReference,
                    _controlledCharacter.transform.position,
                    block_position,
                    _controlledCharacter.AffinityColor,
                    _controlledCharacter.MaxSquares - _controlledCharacter.PlayedSquares,
                    _partyController.GetCharactersQueue());
            }
            else if (_moveController._movementType == MovementType.Free)
            {
                _path = new Stack();
                bool occupied = false;
                foreach (CharacterComponent comp in _partyController.GetCharactersQueue())
                {
                    Vector3 vect_comp = comp.transform.position;
                    if (Vector3.Distance(vect_comp, block_position) < 0.1f)
                    {
                        occupied = true;
                        break;
                    }
                }
                if (!occupied)
                {
                    Vector3 vec_block_pos = block_position - MapCreate.PositionReference;
                    _path.Push(new Vector2(-vec_block_pos.z, vec_block_pos.x));
                }
            }

            foreach (Vector2 arrayPos in _path)
            {
                Map.MapGameObjects [(int)arrayPos.x, (int)arrayPos.y].transform.GetChild(0).GetComponent <BlockPropertyChanger> ().HighlightMaterial();
            }
        }
    }