Files
Hasebe/Library/PackageCache/com.gustavopsantos.reflex@7857b9937c99/Injectors/GameObjectInjector.cs
T
2026-09-21 12:15:57 +03:00

70 lines
2.3 KiB
C#

using System.Collections.Generic;
using Reflex.Core;
using UnityEngine;
using UnityEngine.Pool;
namespace Reflex.Injectors
{
public static class GameObjectInjector
{
public static void InjectSingle(GameObject gameObject, Container container)
{
if (gameObject.TryGetComponent<MonoBehaviour>(out var monoBehaviour))
{
AttributeInjector.Inject(monoBehaviour, container);
}
}
public static void InjectObject(GameObject gameObject, Container container)
{
using var pooledObject = ListPool<MonoBehaviour>.Get(out var monoBehaviours);
gameObject.GetComponents<MonoBehaviour>(monoBehaviours);
for (var i = 0; i < monoBehaviours.Count; i++)
{
var monoBehaviour = monoBehaviours[i];
if (monoBehaviour != null)
{
AttributeInjector.Inject(monoBehaviour, container);
}
}
}
public static void InjectRecursive(GameObject gameObject, Container container)
{
using var pooledObject = ListPool<MonoBehaviour>.Get(out var monoBehaviours);
gameObject.GetComponentsInChildren<MonoBehaviour>(true, monoBehaviours);
for (var i = 0; i < monoBehaviours.Count; i++)
{
var monoBehaviour = monoBehaviours[i];
if (monoBehaviour != null)
{
AttributeInjector.Inject(monoBehaviour, container);
}
}
}
public static void InjectRecursiveMany(List<GameObject> gameObject, Container container)
{
using var pooledObject = ListPool<MonoBehaviour>.Get(out var monoBehaviours);
for (var i = 0; i < gameObject.Count; i++)
{
gameObject[i].GetComponentsInChildren<MonoBehaviour>(true, monoBehaviours);
for (var j = 0; j < monoBehaviours.Count; j++)
{
var monoBehaviour = monoBehaviours[j];
if (monoBehaviour != null)
{
AttributeInjector.Inject(monoBehaviour, container);
}
}
}
}
}
}