using UnityEngine; namespace SpellBoundAR.CustomTextures.UI { public class TexturePreviewDeleteCascade : MonoBehaviour { [Header("Cache")] private TexturePreview _texturePreview; private ISavedCustomTexture _savedCustomTexture; private void Awake() { _texturePreview = GetComponentInParent(); } private void OnEnable() => StartListeningToEverything(); private void OnDisable() => StopListeningToEverything(); private void OnDestroy() => StopListeningToEverything(); private void StartListeningToEverything() { if (_texturePreview) _texturePreview.OnSavedTextureDataChanged += StartListeningForDelete; StartListeningForDelete(); } private void StopListeningToEverything() { if (_texturePreview) _texturePreview.OnSavedTextureDataChanged -= StartListeningForDelete; StopListeningForDelete(); } private void StartListeningForDelete() { if (_savedCustomTexture != null) _savedCustomTexture.OnDeleted -= OnSavedCustomTextureDeleted; _savedCustomTexture = _texturePreview ? _texturePreview.SavedCustomTexture : null; if (_savedCustomTexture != null) _savedCustomTexture.OnDeleted += OnSavedCustomTextureDeleted; } private void StopListeningForDelete() { if (_savedCustomTexture != null) _savedCustomTexture.OnDeleted -= OnSavedCustomTextureDeleted; _savedCustomTexture = null; } private void OnSavedCustomTextureDeleted() { Destroy(gameObject); } } }