From 9caf2a8b021993ce9a615ae4a7ae4b1670d59a27 Mon Sep 17 00:00:00 2001 From: h0lybyte <5599058+h0lybyte@users.noreply.github.com> Date: Sat, 4 Jan 2025 20:46:23 -0500 Subject: [PATCH] feat(mmextension): updating the object pools --- .../ObjectPool/DelayedDisableSelf.cs | 21 ++++++++++++ .../ObjectPool/DelayedDisableSelf.cs.meta | 11 +++++++ .../ObjectPool/DelayedObjectSpawner.cs | 33 +++++++++++++++++++ .../ObjectPool/DelayedObjectSpawner.cs.meta | 11 +++++++ 4 files changed, 76 insertions(+) create mode 100644 packages/mmextensions/mmextensions/ObjectPool/DelayedDisableSelf.cs create mode 100644 packages/mmextensions/mmextensions/ObjectPool/DelayedDisableSelf.cs.meta create mode 100644 packages/mmextensions/mmextensions/ObjectPool/DelayedObjectSpawner.cs create mode 100644 packages/mmextensions/mmextensions/ObjectPool/DelayedObjectSpawner.cs.meta 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