private ParticleVfx GetParticleVfx(VfxMap inMap)
        {
            var particle = SystemFacade.Pool.GetConcreteGameView <ParticleVfx>();
            var go       = SystemFacade.Pool.Spawn(inMap.vfxName);

            if (particle == null)
            {
                //- create new particle
                particle = new ParticleVfx(this.application, go);
                SystemFacade.Pool.StoreGameView(particle);
            }
            else
            {
                //- use old one from the pool
                particle.SetGameObject(go);
            }
            return(particle);
        }
        private AnimationVfx GetAnimationVfx(VfxMap inMap)
        {
            var anim = SystemFacade.Pool.GetConcreteGameView <AnimationVfx>();
            var go   = SystemFacade.Pool.Spawn(inMap.vfxName);

            if (anim == null)
            {
                //- create new animation
                anim = new AnimationVfx(this.application, inMap.vfxName, LayerNames.Vfx);
                SystemFacade.Pool.AddItem(anim.gameObject.transform, inMap.vfxName, false, null);
                SystemFacade.Pool.StoreGameView(anim);
            }
            else
            {
                //- use old one from the pool
                anim.SetGameObject(go);
                anim.UpdateSpriteRendererInstance();
            }

            anim.Animator.SetAnimationData(inMap.animationData);
            return(anim);
        }