public static PetPredictiveMultiAttack Instance(float radius, float angle, int numShot, float predictFactor,
     int projectileIndex = 0)
 {
     var key = new Tuple<float, float, int, float, int>(radius, angle, numShot, predictFactor, projectileIndex);
     PetPredictiveMultiAttack ret;
     if (!instances.TryGetValue(key, out ret))
         ret =
             instances[key] =
                 new PetPredictiveMultiAttack(radius, angle, numShot, predictFactor, projectileIndex);
     return ret;
 }
        public static PetPredictiveMultiAttack Instance(float radius, float angle, int numShot, float predictFactor,
                                                        int projectileIndex = 0)
        {
            var key = new Tuple <float, float, int, float, int>(radius, angle, numShot, predictFactor, projectileIndex);
            PetPredictiveMultiAttack ret;

            if (!instances.TryGetValue(key, out ret))
            {
                ret =
                    instances[key] =
                        new PetPredictiveMultiAttack(radius, angle, numShot, predictFactor, projectileIndex);
            }
            return(ret);
        }