public void UpdateLayerMask()
    {
        _walkableTerrainTypesDictionary = new SerializableDictionary <int, int>();
        _networkLayerMask = 0;
        foreach (var terrainType in WalkableTerrainTypes)
        {
            if ((terrainType.TerrainMask == (1 << NodeNetwork.UnwalkableLayer | terrainType.TerrainMask) ||
                 (terrainType.TerrainMask == (1 << NodeNetwork.CustomLayer | terrainType.TerrainMask))) && terrainType.TerrainMask > 0)
            {
                Debug.LogError("Cannot add unwalkable or custom layer to walkable terrain.");
                terrainType.TerrainMask = 0;
            }
            else if (!_walkableTerrainTypesDictionary.Has(terrainType.TerrainMask.value))
            {
                _walkableTerrainTypesDictionary.Add(terrainType.TerrainMask.value, terrainType.TerrainPenalty);
                _networkLayerMask |= (1 << terrainType.TerrainMask);
            }
        }

        _networkLayerMask |= 1 << NodeNetwork.UnwalkableLayer;
    }