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; }