protected BaseModifier(ModifierInfo info, Entity casterEntity, Entity targetEntity,
                               Environment environment, CollectionOfInteractions modifierInteractionCollection)
        {
            NotNullReference nnr = new NotNullReference();

            nnr.Check(info, "modifier info");
            nnr.Check(casterEntity, "caster entity");
            nnr.Check(targetEntity, "target entity");
            this.info         = info;
            this.casterEntity = casterEntity;
            this.targetEntity = targetEntity;
            this.environment  = environment;
            this.modifierInteractionCollection = modifierInteractionCollection;
            this.vfxs = info.ShowVfxConfig();

            pendingVfxs.AddRange(vfxs);
            targetGameObject = targetEntity.GetComponent <EntityGameObjectComponent>().GameObject;
            targetAnimation  = targetEntity.GetComponent <AnimationComponent>().Animation;
            target           = targetEntity.GetComponent <SkillComponent>().Character;
            mainLifetimes    = CreateLifetimes(info);
            for (int kIndex = 0; kIndex < mainLifetimes.Count; kIndex++)
            {
                Lifetime l = mainLifetimes[kIndex];
                if (l.ShowType() == LifetimeType.Duration)
                {
                    ((DurationBasedLifetime)l).SetDelay(info.DelayToApply());
                }
            }
        }