F3DDespawn.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using UnityEngine;
  2. using System.Collections;
  3. public class F3DDespawn : MonoBehaviour {
  4. public float DespawnDelay; // Despawn delay in ms
  5. public bool DespawnOnMouseUp; // Despawn on mouse up used for beams demo
  6. AudioSource aSrc; // Cached audio source component
  7. void Awake()
  8. {
  9. // Get audio source component
  10. aSrc = GetComponent<AudioSource>();
  11. }
  12. // OnSpawned called by pool manager
  13. public void OnSpawned()
  14. {
  15. // Invokes despawn using timer delay
  16. if (!DespawnOnMouseUp)
  17. F3DTime.time.AddTimer(DespawnDelay, 1, DespawnOnTimer);
  18. }
  19. // OnDespawned called by pool manager
  20. public void OnDespawned()
  21. { }
  22. // Run required checks for the looping audio source and despawn the game object
  23. public void DespawnOnTimer()
  24. {
  25. if (aSrc != null)
  26. {
  27. if (aSrc.loop)
  28. DespawnOnMouseUp = true;
  29. else
  30. {
  31. DespawnOnMouseUp = false;
  32. Despawn();
  33. }
  34. }
  35. else
  36. {
  37. Despawn();
  38. }
  39. }
  40. // Despawn game object this script attached to
  41. public void Despawn()
  42. {
  43. F3DPool.instance.Despawn(transform);
  44. }
  45. void Update()
  46. {
  47. // Despawn on mouse up
  48. if (Input.GetMouseButtonUp(0))
  49. if(aSrc != null && aSrc.loop || DespawnOnMouseUp)
  50. Despawn();
  51. }
  52. }