private void ForeachAround(EntitiesHashMap.MyData me, ref float3 correction, ref CollisionParameters collision)
        {
            var position = me.position;
            var key      = QuadrantVariables.GetPositionHashMapKey(position);

            Foreach(key, me, ref correction, ref collision);
            key = QuadrantVariables.GetPositionHashMapKey(position, new float3(1, 0, 0));
            Foreach(key, me, ref correction, ref collision);
            key = QuadrantVariables.GetPositionHashMapKey(position, new float3(-1, 0, 0));
            Foreach(key, me, ref correction, ref collision);
            key = QuadrantVariables.GetPositionHashMapKey(position, new float3(0, 0, 1));
            Foreach(key, me, ref correction, ref collision);
            key = QuadrantVariables.GetPositionHashMapKey(position, new float3(0, 0, -1));
            Foreach(key, me, ref correction, ref collision);


            key = QuadrantVariables.GetPositionHashMapKey(position, new float3(1, 0, 1));
            Foreach(key, me, ref correction, ref collision);
            key = QuadrantVariables.GetPositionHashMapKey(position, new float3(-1, 0, 1));
            Foreach(key, me, ref correction, ref collision);
            key = QuadrantVariables.GetPositionHashMapKey(position, new float3(-1, 0, -1));
            Foreach(key, me, ref correction, ref collision);
            key = QuadrantVariables.GetPositionHashMapKey(position, new float3(1, 0, -1));
            Foreach(key, me, ref correction, ref collision);
        }
 private void Foreach(int key, EntitiesHashMap.MyData me, ref float3 avoidanceForce, ref CollisionParameters collision)
 {
     if (targetMap.TryGetFirstValue(key, out EntitiesHashMap.MyData other, out NativeMultiHashMapIterator <int> iterator))
     {
         do
         {
             InForeach(other, me, ref avoidanceForce, ref collision);
         } while (targetMap.TryGetNextValue(out other, ref iterator));
     }
 }
        private void InForeach(EntitiesHashMap.MyData other, EntitiesHashMap.MyData me, ref float3 avoidanceForce, ref CollisionParameters collision)
        {
            var direction = me.position - other.position;
            var length    = math.length(direction);

            if (length > 0.01f)
            {
                var distance      = math.max(0f, me.data.innerRadius + other.data.innerRadius - length);
                var distanceOuter = math.max(0f, me.data.innerRadius + other.data.outerRadius - length);
                if (distance > 0f)
                {
                    avoidanceForce += distance * math.normalizesafe(direction);
                    collision.collided++;
                }
                if (distanceOuter > 0f)
                {
                    collision.near++;
                    if (me.data2.broId != other.data2.broId)
                    {
                        collision.nearOther++;
                    }
                }
            }
        }