private void WalkEachAroundItem(ref IShipDockEntitas target, BehaviourIDs ids)
        {
            bool  flag;
            int   id, aroundID = ids.gameItemID;
            float distance;
            AroundsCheckedInfo info;
            WorldMovement      itemMovement;
            List <int>         list = BehaviourIDsComp.GetAroundList(ref target);
            int max = (list != default) ? list.Count : 0;

            if (max > 0)
            {
                for (int i = 0; i < max; i++)
                {
                    id           = list[i];
                    itemMovement = GetAroundTargetMovement(id);
                    if (itemMovement != default && !itemMovement.Invalid)
                    {
                        distance = mMovement.DistanceBetween(itemMovement.Position);
                        info     = new AroundsCheckedInfo
                        {
                            ids = ids,
                            checkingAroundID = id,
                            distanceBetween  = distance,
                            distanceCrowding = GetCrowdingDistance(),
                        };
                        flag = CheckingAround(ref target, aroundID, info, ref itemMovement);
                        if (!flag)
                        {
                            break;
                        }
                    }
                }
                BehaviourIDsComp.PhysicsCheckReset(aroundID);
            }
            AroundsChecked(ref target, aroundID);
        }
 protected abstract bool CheckingAround(ref IShipDockEntitas target, int aroundID, AroundsCheckedInfo aroundInfo, ref WorldMovement movement);