private void HandleMovingHitEntities()
        {
            Entity[] hitEntities;
            AbilityPerformer.AdditionalHitInfos[] hitEntitiesInfos;
            var everything = AbilityPerformer.ComputeMovingHitboxHitEntities(_castData, transform.position, _currentMoveSpeed);

            hitEntities      = everything.Item1;
            hitEntitiesInfos = everything.Item2;

            if (_hitboxData.SameTargetHitPeriod > 0f)
            {
                for (int i = 0; i < hitEntities.Length; i++)
                {
                    if (_hitEntitiesDic.ContainsKey(hitEntities[i]))
                    {
                        if (Time.time - _hitEntitiesDic[hitEntities[i]] < _hitboxData.SameTargetHitPeriod)
                        {
                            continue;
                        }
                        else
                        {
                            _hitEntitiesDic[hitEntities[i]] = Time.time;
                        }
                    }
                    else
                    {
                        _hitEntitiesDic.Add(hitEntities[i], Time.time);
                    }

                    ApplyHitOnEntity(hitEntities[i], hitEntitiesInfos[i]);
                }
            }
            else
            {
                hitEntities = AbilityPerformer.ComputeStaticHitboxHitEntities(_castData, transform.position, _hitEntitiesDic.Keys);
                for (int i = 0; i < hitEntities.Length; i++)
                {
                    if (_hitEntitiesDic.ContainsKey(hitEntities[i]))
                    {
                        continue;
                    }

                    _hitEntitiesDic.Add(hitEntities[i], Time.time);
                    ApplyHitOnEntity(hitEntities[i], hitEntitiesInfos[i]);
                }
            }
        }
        private void HandleStaticHitEntities()
        {
            Entity[] hitEntities;
            if (_hitboxData.SameTargetHitPeriod > 0f)
            {
                hitEntities = AbilityPerformer.ComputeStaticHitboxHitEntities(_castData, transform.position);
                for (int i = 0; i < hitEntities.Length; i++)
                {
                    if (_hitEntitiesDic.ContainsKey(hitEntities[i]))
                    {
                        if (Time.time - _hitEntitiesDic[hitEntities[i]] < _hitboxData.SameTargetHitPeriod)
                        {
                            continue;
                        }
                        else
                        {
                            _hitEntitiesDic[hitEntities[i]] = Time.time;
                        }
                    }
                    else
                    {
                        _hitEntitiesDic.Add(hitEntities[i], Time.time);
                    }

                    ApplyHitOnEntity(hitEntities[i], null);
                }
            }
            else
            {
                hitEntities = AbilityPerformer.ComputeStaticHitboxHitEntities(_castData, transform.position, _hitEntitiesDic.Keys);
                for (int i = 0; i < hitEntities.Length; i++)
                {
                    if (_hitEntitiesDic.ContainsKey(hitEntities[i]))
                    {
                        continue;
                    }

                    _hitEntitiesDic.Add(hitEntities[i], Time.time);
                    ApplyHitOnEntity(hitEntities[i], null);
                }
            }
        }