internal static void Register(IAutoRegister instance) { foreach (var worker in Instance.workers) { worker.Register(instance); } }
protected override void OnRegister(IAutoRegister instance) { if (!(instance is GadgetTools.IOwner owner)) { return; } for (int i = 0; i < instantiators.Count; i++) { var instantiator = instantiators[i]; var binder = binders[i]; Assert.IsNotNull(binder.ownerValidation, $"Instantiator of type '{instantiator.GetType().Name}' has not Bound its gadget to a owner type. Do so in the 'Declare' method"); if (!binder.ownerValidation(owner)) { continue; } if (owner.GadgetPouch == null) { var pouch = new GadgetPouch(owner); injectedData[0] = pouch; cache.pouchSetters[owner.GetType()].SetMethod.Invoke(owner, injectedData); } gadgetBinder.owner = owner; gadgetBinder.instantiator = binder; gadgetBinder.cache = cache; instantiator.Bind(gadgetBinder); } }
internal void Register(IAutoRegister instance) { if (!Validate(instance)) { return; } OnRegister(instance); }
internal static void Unregister(IAutoRegister instance) { if (Instance == null) { return; } foreach (var worker in Instance.workers) { worker.Unregister(instance); } }
protected override void OnUnregister(IAutoRegister instance) { }
protected override bool Validate(IAutoRegister instance) { return(instance is GadgetTools.IOwner); }
protected abstract void OnUnregister(IAutoRegister instance);
protected abstract bool Validate(IAutoRegister instance);
public static void AutoRegister(this IAutoRegister instance) { AutoRegisterRegistry.Register(instance); }
protected override bool Validate(IAutoRegister instance) { return(instance is ITickable); }
protected override void OnUnregister(IAutoRegister instance) { TickableRegistry.Unregister(instance as ITickable); }