/// <summary> /// 发送当前Actor到指定的Network连接服务。 /// </summary> /// <param name="actor">Actor类</param> /// <param name="network">网络类</param> /// <param name="command">消息指令</param> internal static void SendMySelf(this BaseActorComponent actor, Network network, MSGCommand command) { if (!actor.IsLocalActor) { throw new ComponentException("非LocalActor不能发送ActorMySelf消息。"); } var syncMessage = new ActorSyncMessage { ActorId = actor.Id, ActorType = actor.ActorEntity.ActorType, }; network.Send(syncMessage, (ushort)command); }
private void AddLocal(BaseActorComponent component) { if (this.LocalActors.ContainsKey(component.Id)) { return; } this.LocalActors.AddOrUpdate(component.Id, component, (k, v) => component); this.ActorComponents[component.ActorEntity.Id] = component; var message = new ActorSyncMessage { ActorId = component.Id, ActorType = component.ActorEntity.ActorType, }; this.Distributions.InnerNetworks.Send(message, (ushort)MSGCommand.AddActorCmd); }
/// <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); }