using System; using UnityEngine; namespace RR.Game2D.FX { [Serializable] public sealed class MvpVFXSpawnSettings { [Tooltip("Сколько копий burst-эффекта создать вокруг точки спавна. Используется как простой множитель плотности частиц.")] [Min(1)] public int instanceCount = 1; [Tooltip("Пробовать переопределить Count внутри VFX Graph burst spawn.")] public bool overrideParticleCount; [Min(0f)] public float particleCount = 50f; [Tooltip("Горизонтальный радиус случайного разброса копий эффекта.")] [Min(0f)] public float spreadRadiusX; [Tooltip("Вертикальный радиус случайного разброса копий эффекта.")] [Min(0f)] public float spreadRadiusY; [Tooltip("Масштаб объекта VFX. Для локальных VFX Graph shape-нод также влияет на область распространения частиц.")] [Min(0.01f)] public float scale = 1f; [Tooltip("Использовать трехмерный масштаб вместо равномерного.")] public bool useScale3D; public Vector3 scale3D = Vector3.one; [Tooltip("Поворот объекта VFX. Если не задан, используется Quaternion.identity.")] public Quaternion rotation = Quaternion.identity; [Tooltip("Масштабировать весь spawned VFX по кривой в течение времени жизни эффекта.")] public bool overrideSizeOverLife; public AnimationCurve sizeOverLife = CreateDefaultSizeOverLife(); [Tooltip("Пробовать переопределить цвет эффекта через VFX/renderer параметры.")] public bool overrideColor; [ColorUsage(true, true)] public Color color = Color.white; [Tooltip("Пробовать переопределить градиент блока Multiply Color Over Life.")] public bool overrideColorOverLife; public Gradient colorOverLife = CreateDefaultColorOverLife(); [Tooltip("Пробовать переопределить текстуру частиц через VFX/renderer параметры.")] public bool overrideTexture; public Texture2D texture; private static Gradient CreateDefaultColorOverLife() { Gradient gradient = new Gradient(); gradient.SetKeys( new[] { new GradientColorKey(new Color(1f, 0.85f, 0.35f), 0f), new GradientColorKey(Color.white, 1f) }, new[] { new GradientAlphaKey(1f, 0f), new GradientAlphaKey(1f, 0.8f), new GradientAlphaKey(0f, 1f) }); return gradient; } private static AnimationCurve CreateDefaultSizeOverLife() { return new AnimationCurve( new Keyframe(0f, 0f, 6.6156807f, 6.6156807f), new Keyframe(0.1f, 1.5f, 0.06686528f, 0.06686528f), new Keyframe(1f, 0f, -1.6666667f, -1.6666667f)); } } }