/// <summary> /// Ensures that functionality injection has been setup using the active ModuleLoaderCore island. /// </summary> /// <param name="user">User of functionality injection</param> public static void EnsureFunctionalityInjected(this IUsesFunctionalityInjection user) { var module = (ModuleLoaderCore.instance.GetModule <FunctionalityInjectionModule>()); if ((module != null) && (module.activeIsland != null)) { module.activeIsland.InjectFunctionalitySingle(user); } }
public Face(GameObject prefab, Transform parent, IUsesFunctionalityInjection injector) { gameObject = Instantiate(prefab, parent); transform = gameObject.transform; meshFilter = gameObject.GetComponentInChildren <MeshFilter>(true); // k_Subscribers is cleared by GetComponentsInChildren gameObject.GetComponentsInChildren(true, k_Subscribers); foreach (var subscriber in k_Subscribers) { injector.InjectFunctionalitySingle(subscriber); } }
/// <summary> /// Inject functionality into a list of objects /// This method assumes that all necessary providers have been prepared. If no providers /// exist that match subscriber interfaces on the object, no action is taken. /// Useful in cases where functionality is already setup, as it is faster than InjectFunctionality. /// </summary> /// <param name="user">The object using using functionality injection</param> /// <param name="objects">The list of objects into which functionality will be injected</param> public static void InjectPreparedFunctionality(this IUsesFunctionalityInjection user, List <object> objects) { user.provider.InjectPreparedFunctionality(objects); }
/// <summary> /// Inject functionality into a single object /// This method does not check the object's type and assumes that providers have been set up. If no providers /// exist that match subscriber interfaces on the object, no action is taken. /// </summary> /// <param name="user">The object using using functionality injection</param> /// <param name="obj">The object into which functionality will be injected</param> public static void InjectFunctionalitySingle(this IUsesFunctionalityInjection user, object obj) { user.provider.InjectFunctionalitySingle(obj); }