namespace Fusion.Addons.KCC { using System.Collections.Generic; using System.Runtime.CompilerServices; using UnityEngine; public static partial class KCCGameObjectExtensions { // PUBLIC METHODS [MethodImpl(MethodImplOptions.AggressiveInlining)] public static T GetComponentNoAlloc(this GameObject gameObject) where T : class { #if UNITY_EDITOR return GameObjectExtensions.GetComponentNoAlloc(gameObject); #else return gameObject.GetComponent(); #endif } } public static partial class GameObjectExtensions where T : class { // PRIVATE MEMBERS private static List _components = new List(); // PUBLIC METHODS public static T GetComponentNoAlloc(GameObject gameObject) { _components.Clear(); gameObject.GetComponents(_components); if (_components.Count > 0) { T component = _components[0]; _components.Clear(); return component; } return null; } } }