using UnityEngine; public abstract class BallEffectDefinition : ScriptableObject { [SerializeField] private BallEffectType effectType; [SerializeField] private Material overlayMaterial; public BallEffectType EffectType => effectType; public Material OverlayMaterial => overlayMaterial; protected void SetEffectType(BallEffectType type) => effectType = type; protected void SetOverlayMaterial(Material material) => overlayMaterial = material; /// Copy the base fields (EffectType, OverlayMaterial) from another definition. Used by UpgradeManager when creating runtime copies. public void CopyBaseFrom(BallEffectDefinition source) { effectType = source.effectType; overlayMaterial = source.overlayMaterial; } }