public virtual async UniTask <TActor> AddActorAsync(string actorId) { if (ActorExists(actorId)) { Debug.LogWarning($"Actor '{actorId}' was requested to be added, but it already exists."); return(GetActor(actorId)); } if (pendingAddActorTasks.ContainsKey(actorId)) { return(await pendingAddActorTasks[actorId].Task); } pendingAddActorTasks[actorId] = new UniTaskCompletionSource <TActor>(); var constructedActor = await ConstructActorAsync(actorId); ManagedActors.Add(actorId, constructedActor); pendingAddActorTasks[actorId].TrySetResult(constructedActor); pendingAddActorTasks.Remove(actorId); OnActorAdded?.Invoke(actorId); return(constructedActor); }
public override void Add(Actor actor) { base.Add(actor); actor.Game = Game; if (OnActorAdded != null) { OnActorAdded.Invoke(new ActorEventArgs { Actor = actor }); } }
public void Add(ActorBase actor) { if (_actors.ContainsKey(actor.Serial) == true) { throw new UnityException("Already actor " + actor.Serial + " Added!"); } int newSerial = _serialIssuer.Get(); actor.SetSerial(newSerial); _actors.Add(newSerial, actor); if (actor is Character) { LocalCharacter = actor as Character; } OnActorAdded?.Invoke(actor); }
internal void ActorAdded(Actor actor) { OnActorAdded?.Invoke(this, new ActorEventArgs(actor)); }