/// <summary> /// Registers a component of type <typeparamref name="T"/> and assigns it to the target <see cref="SharperEntity"/>. /// </summary> /// <param name="component">The instantiated component to register.</param> /// <returns>Returns a <see cref="Task"/> that represents the registration work.</returns> public Task RegisterComponentAsync(T component) { Components.Add(component); ComponentRegistered?.Invoke(this, new SharperComponentEventArgs(component)); return(Task.CompletedTask); }
public Task RegisterComponentsAsync(params BaseSharperComponent[] components) { foreach (var component in components) { Components.Add((T)component); ComponentRegistered?.Invoke(this, new SharperComponentEventArgs(component)); } return(Task.CompletedTask); }
/// <summary> /// Register a component /// </summary> /// <param name="component">Component to be registered.</param> public void RegisterComponent(IComponent component) { lock (ComponentsLock) { if (!ComponentList.Any(x => x.Id == component.Id)) { ComponentList.Add(component); ComponentRegistered?.Invoke(this, component); } } }
public void RegisterComponent(SubscribableBehaviour behaviour) { Debug.Log($"Registering {behaviour} in ComponentContainer {this}."); if (!_objectDictionary.ContainsKey(behaviour.GetType())) { _objectDictionary.Add(behaviour.GetType(), behaviour); behaviour.Destroyed += UnregisterComponent; ComponentRegistered?.Invoke(behaviour); } else { Debug.LogWarning($"Already registered {behaviour} in ComponentContainer {this}."); } }
/// <summary> /// Registers a component of type <typeparamref name="T"/> and assigns it to the target <see cref="SharperEntity"/>. /// </summary> /// <param name="entity">The target entity.</param> /// <param name="args">the values for the new component.</param> /// <returns>Returns a <see cref="Task"/> that represents the registration work.</returns> public Task RegisterComponentAsync(SharperEntity entity, params object[] args) { var inputArr = new object[args.Length + 1]; inputArr[0] = entity; for (int i = 1; i < inputArr.Length; i++) { inputArr[i] = args[i - 1]; } T component = (T)Activator.CreateInstance(typeof(T), inputArr); Components.Add(component); ComponentRegistered?.Invoke(this, new SharperComponentEventArgs(component)); return(Task.CompletedTask); }