using Core; using Pixelplacement; using UnityEngine; public class SoundGenerator : MonoBehaviour { [SerializeField] private Sprite enterSprite; [SerializeField] private Sprite exitSprite; [SerializeField] private AudioClip enterSound; [SerializeField] private AudioSource audioSource; [SerializeField] private StateMachine soundBirdSMRef; [SerializeField] private soundBird_CanFly soundbirdHearingCheck; private bool playerInside = false; private SpriteRenderer spriteRenderer; void Awake() { spriteRenderer = GetComponent(); if (spriteRenderer != null && exitSprite != null) { spriteRenderer.sprite = exitSprite; // Set to default on start } } private void OnTriggerEnter2D(Collider2D other) { if (!playerInside && other.CompareTag("Player")) { playerInside = true; // Logging.Debug("Player entered SoundGenerator trigger!"); if (spriteRenderer != null && enterSprite != null) { spriteRenderer.sprite = enterSprite; } if (audioSource != null && enterSound != null) { audioSource.PlayOneShot(enterSound); } if (soundBirdSMRef != null && soundBirdSMRef.currentState.name == "SoundBird" && soundbirdHearingCheck.canFly == true) { soundBirdSMRef.ChangeState("SoundBirdTakeoff"); } } } private void OnTriggerExit2D(Collider2D other) { if (playerInside && other.CompareTag("Player")) { playerInside = false; // Logging.Debug("Player exited SoundGenerator trigger!"); if (spriteRenderer != null && exitSprite != null) { spriteRenderer.sprite = exitSprite; } } } }