diff --git a/packages/mmextensions/mmextensions/ObjectPool/DelayedDisableSelf.cs b/packages/mmextensions/mmextensions/ObjectPool/DelayedDisableSelf.cs new file mode 100644 index 000000000..87d47a56c --- /dev/null +++ b/packages/mmextensions/mmextensions/ObjectPool/DelayedDisableSelf.cs @@ -0,0 +1,21 @@ +using System; +using Cysharp.Threading.Tasks; +using UnityEngine; + +public class DelayedDisableSelf : MonoBehaviour +{ + public int delayMillis; + + // Start is called once before the first execution of Update after the MonoBehaviour is created + void OnEnable() + { + DoAfterSeconds(delayMillis, () => gameObject.SetActive(false)); + } + + private async UniTask DoAfterSeconds(int millisDelay, Action action) + { + await UniTask.Delay(millisDelay); + + action.Invoke(); + } +} diff --git a/packages/mmextensions/mmextensions/ObjectPool/DelayedDisableSelf.cs.meta b/packages/mmextensions/mmextensions/ObjectPool/DelayedDisableSelf.cs.meta new file mode 100644 index 000000000..f3c428b5f --- /dev/null +++ b/packages/mmextensions/mmextensions/ObjectPool/DelayedDisableSelf.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18cacbb82fb74b78a12fff990e607b1c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: \ No newline at end of file diff --git a/packages/mmextensions/mmextensions/ObjectPool/DelayedObjectSpawner.cs b/packages/mmextensions/mmextensions/ObjectPool/DelayedObjectSpawner.cs new file mode 100644 index 000000000..10bea6800 --- /dev/null +++ b/packages/mmextensions/mmextensions/ObjectPool/DelayedObjectSpawner.cs @@ -0,0 +1,33 @@ +using System; +using Cysharp.Threading.Tasks; +using KBVE.MMExtensions.ObjectPool; +using MoreMountains.Tools; +using UnityEngine; + +public class DelayedObjectSpawner : MonoBehaviour +{ + public MMObjectPooler objectPool; + public int millisToWait; + + // Start is called once before the first execution of Update after the MonoBehaviour is created + void OnEnable() + { + DoAfterSeconds(millisToWait, () => SetupPooledObject(objectPool.GetPooledGameObject())); + } + + private async UniTask DoAfterSeconds(int millisDelay, Action action) + { + Debug.Log("a"); + await UniTask.Delay(millisDelay); + Debug.Log("b"); + + action.Invoke(); + } + + private void SetupPooledObject(GameObject pooledGameObject) + { + pooledGameObject.SetActive(true); + pooledGameObject.transform.position = gameObject.transform.position; + pooledGameObject.transform.rotation = Quaternion.identity; + } +} diff --git a/packages/mmextensions/mmextensions/ObjectPool/DelayedObjectSpawner.cs.meta b/packages/mmextensions/mmextensions/ObjectPool/DelayedObjectSpawner.cs.meta new file mode 100644 index 000000000..0d9852dde --- /dev/null +++ b/packages/mmextensions/mmextensions/ObjectPool/DelayedObjectSpawner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 19b1ba89b0374861bf3bff32f8604776 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: \ No newline at end of file