public void GetAreaByHash(int value, out Area area, out Passability passability)
        {
            AreaPassabilityPair val = _hashToArea[value];

            area        = val.area;
            passability = val.passability;
        }
        public void AddAreaHash(Area area)
        {
            if (area == null)
            {
                Debug.LogError("you try to create area hash using null");
            }

            if (_areaPool.Add(area))
            {
                //adding this pairs
                AreaPassabilityPair crouchable = new AreaPassabilityPair(area, Passability.Crouchable);
                AreaPassabilityPair walkable   = new AreaPassabilityPair(area, Passability.Walkable);
                //reson is + 1 cause we can use ID:0 to tell "just do nothing" instead of ID:-1 later on (in layer hashmap for example)
                int crouchableKey = _areaToHash.Count + 1;
                int walkableKey   = _areaToHash.Count + 2;

                _areaToHash.Add(crouchable, crouchableKey);
                _areaToHash.Add(walkable, walkableKey);

                _hashToArea.Add(crouchableKey, crouchable);
                _hashToArea.Add(walkableKey, walkable);
            }
        }