/// <summary> /// 删除Acotr /// </summary> /// <param name="current"></param> /// <param name="actorId"></param> public static void Remove(this ActorComponentStorage current, int actorId) { if (Game.Scene.GetComponent(actorId, out BaseActorComponent actor)) { actor.Dispose(); } }
/// <summary> /// 请求一条Actor消息 /// </summary> /// <typeparam name="TActorResponse"></typeparam> /// <param name="actor"></param> /// <param name="message"></param> /// <param name="command"></param> /// <returns></returns> internal static async Task <TActorResponse> CallActor <TActorResponse>(this ActorComponentStorage current, IActorMessage message, MSGCommand command) where TActorResponse : IActorMessage { var actor = current.GetActor(message.ActorId); if (actor != null) { return(default);
/// <summary> /// 添加Actor /// </summary> /// <param name="current"></param> /// <param name="network"></param> /// <param name="actorId"></param> /// <param name="actorType"></param> /// <param name="objectId"></param> /// <returns></returns> public static BaseActorComponent AddActor(this ActorComponentStorage current, Network network, ActorSyncMessage message) { var type = current.GetActorType(message.ActorType); var actor = Game.Scene.AddComponent(type) as BaseActorComponent; actor.SetRemote(network, message.ActorId); return(actor); }
/// <summary> /// 添加Actor /// </summary> /// <typeparam name="TActor"></typeparam> /// <typeparam name="TEntity"></typeparam> /// <param name="current"></param> /// <param name="entity"></param> /// <returns></returns> public static TActor AddActor <TActor, TEntity>(this ActorComponentStorage current, TEntity entity) where TEntity : BaseEntity where TActor : BaseActorComponent <TEntity> { var actor = Game.Scene.AddComponent <TActor>(); actor.SetLocal(entity); return(actor); }
/// <summary> /// 从当前Actor发送消息给另一个Actor /// </summary> /// <typeparam name="TActorMessage"></typeparam> /// <param name="actor"></param> /// <param name="message"></param> /// <param name="command"></param> internal static void SendActor <TActorMessage>(this ActorComponentStorage current, TActorMessage message, MSGCommand command) where TActorMessage : IActorMessage { var actor = current.GetActor(message.ActorId); if (actor != null) { actor.SendActor(message, command); } }
/// <summary> /// 获取Acotr /// </summary> /// <typeparam name="TActor"></typeparam> /// <param name="current"></param> /// <param name="actorId"></param> /// <returns></returns> public static TActor GetActor <TActor>(this ActorComponentStorage current, int actorId) where TActor : BaseActorComponent { return(Game.Scene.GetComponent <TActor>(actorId)); }