Sfoglia il codice sorgente

客户端网络层单独使用一个纤程,利用多核

tanghai 2 anni fa
parent
commit
2465ae183d
100 ha cambiato i file con 401 aggiunte e 226 eliminazioni
  1. 21 0
      Unity/Assets/Config/Proto/ClientMessage_C_1000.proto
  2. 7 0
      Unity/Assets/Config/Proto/ClientMessage_C_1000.proto.meta
  3. 1 0
      Unity/Assets/Scripts/Core/Entity/SceneType.cs
  4. 2 2
      Unity/Assets/Scripts/Core/Network/IActorMessage.cs
  5. 1 1
      Unity/Assets/Scripts/Core/Network/MessageAttribute.cs
  6. 2 10
      Unity/Assets/Scripts/Core/Network/OpcodeType.cs
  7. 4 0
      Unity/Assets/Scripts/Core/World/ActorId.cs
  8. 1 1
      Unity/Assets/Scripts/Hotfix/Client/Demo/AI/AI_Attack.cs
  9. 0 51
      Unity/Assets/Scripts/Hotfix/Client/Demo/Login/LoginHelper.cs
  10. 3 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main.meta
  11. 45 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/ClientSenderCompnentSystem.cs
  12. 1 1
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/ClientSenderCompnentSystem.cs.meta
  13. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Login.meta
  14. 2 2
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Login/EnterMapHelper.cs
  15. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Login/EnterMapHelper.cs.meta
  16. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Move.meta
  17. 15 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Move/M2C_PathfindingResultHandler.cs
  18. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Move/M2C_PathfindingResultHandler.cs.meta
  19. 4 4
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Move/M2C_StopHandler.cs
  20. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Move/M2C_StopHandler.cs.meta
  21. 1 1
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Move/MoveHelper.cs
  22. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Move/MoveHelper.cs.meta
  23. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Scene.meta
  24. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Scene/CurrentSceneFactory.cs
  25. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Scene/CurrentSceneFactory.cs.meta
  26. 11 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Scene/M2C_StartSceneChangeHandler.cs
  27. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Scene/M2C_StartSceneChangeHandler.cs.meta
  28. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Scene/SceneChangeHelper.cs
  29. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Scene/SceneChangeHelper.cs.meta
  30. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit.meta
  31. 13 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/M2C_CreateMyUnitHandler.cs
  32. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/M2C_CreateMyUnitHandler.cs.meta
  33. 4 4
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/M2C_CreateUnitsHandler.cs
  34. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/M2C_CreateUnitsHandler.cs.meta
  35. 21 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/M2C_RemoveUnitsHandler.cs
  36. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/M2C_RemoveUnitsHandler.cs.meta
  37. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/UnitFactory.cs
  38. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/UnitFactory.cs.meta
  39. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/UnitHelper.cs
  40. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/UnitHelper.cs.meta
  41. 0 15
      Unity/Assets/Scripts/Hotfix/Client/Demo/Move/M2C_PathfindingResultHandler.cs
  42. 1 1
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient.meta
  43. 12 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/A2NetClient_MessageHandler.cs
  44. 3 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/A2NetClient_MessageHandler.cs.meta
  45. 13 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/A2NetClient_RequestHandler.cs
  46. 3 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/A2NetClient_RequestHandler.cs.meta
  47. 15 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/FiberInit_NetClient.cs
  48. 11 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/FiberInit_NetClient.cs.meta
  49. 17 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/LoginHelper.cs
  50. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/LoginHelper.cs.meta
  51. 42 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Main2NetClient_LoginHandler.cs
  52. 3 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Main2NetClient_LoginHandler.cs.meta
  53. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Ping.meta
  54. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Ping/PingComponentSystem.cs
  55. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Ping/PingComponentSystem.cs.meta
  56. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router.meta
  57. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/HttpClientHelper.cs
  58. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/HttpClientHelper.cs.meta
  59. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/RouterAddressComponentSystem.cs
  60. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/RouterAddressComponentSystem.cs.meta
  61. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/RouterCheckComponentSystem.cs
  62. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/RouterCheckComponentSystem.cs.meta
  63. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/RouterHelper.cs
  64. 0 0
      Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/RouterHelper.cs.meta
  65. 0 11
      Unity/Assets/Scripts/Hotfix/Client/Demo/Scene/M2C_StartSceneChangeHandler.cs
  66. 0 21
      Unity/Assets/Scripts/Hotfix/Client/Demo/Session/NetClientComponentOnReadEvent.cs
  67. 0 13
      Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/M2C_CreateMyUnitHandler.cs
  68. 0 21
      Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/M2C_RemoveUnitsHandler.cs
  69. 2 3
      Unity/Assets/Scripts/Hotfix/Client/LockStep/LSClientHelper.cs
  70. 1 1
      Unity/Assets/Scripts/Hotfix/Client/LockStep/LSClientUpdaterSystem.cs
  71. 1 1
      Unity/Assets/Scripts/Hotfix/Client/LockStep/LSSceneChangeHelper.cs
  72. 4 4
      Unity/Assets/Scripts/Hotfix/Client/LockStep/Room2C_AdjustUpdateTimeHandler.cs
  73. 3 4
      Unity/Assets/Scripts/Hotfix/Client/LockStep/Room2C_CheckHashFailHandler.cs
  74. 4 4
      Unity/Assets/Scripts/Hotfix/Client/LockStep/Room2C_EnterMapHandler.cs
  75. 20 1
      Unity/Assets/Scripts/Hotfix/Client/Module/Message/NetClientComponentSystem.cs
  76. 1 1
      Unity/Assets/Scripts/Hotfix/Server/Demo/Gate/FiberInit_Gate.cs
  77. 1 1
      Unity/Assets/Scripts/Hotfix/Server/Demo/Realm/FiberInit_Realm.cs
  78. 1 1
      Unity/Assets/Scripts/Hotfix/Server/LockStep/Map/FiberInit_Map.cs
  79. 1 1
      Unity/Assets/Scripts/Hotfix/Server/LockStep/Match/FiberInit_Match.cs
  80. 1 1
      Unity/Assets/Scripts/Hotfix/Server/LockStep/Room/FiberInit_RoomRoot.cs
  81. 1 1
      Unity/Assets/Scripts/Hotfix/Server/Module/ActorLocation/FiberInit_Location.cs
  82. 1 1
      Unity/Assets/Scripts/Hotfix/Server/Module/Message/A2NetInner_MessageHandler.cs
  83. 0 0
      Unity/Assets/Scripts/Hotfix/Server/Module/Message/A2NetInner_MessageHandler.cs.meta
  84. 0 21
      Unity/Assets/Scripts/Hotfix/Server/Module/Message/NetInnerComponentSystem.cs
  85. 17 0
      Unity/Assets/Scripts/Hotfix/Server/Module/NetInner/ActorSenderInvoker_SendToNetInner.cs
  86. 11 0
      Unity/Assets/Scripts/Hotfix/Server/Module/NetInner/ActorSenderInvoker_SendToNetInner.cs.meta
  87. 1 1
      Unity/Assets/Scripts/Hotfix/Server/Module/NetInner/FiberInit_Net.cs
  88. 1 1
      Unity/Assets/Scripts/Hotfix/Server/Module/Router/FiberInit_Router.cs
  89. 1 1
      Unity/Assets/Scripts/Hotfix/Server/Module/Router/FiberInit_RouterManager.cs
  90. 0 3
      Unity/Assets/Scripts/Hotfix/Share/FiberInit_Main.cs
  91. 4 12
      Unity/Assets/Scripts/Hotfix/Share/Module/Actor/ActorSenderComponentSystem.cs
  92. 4 0
      Unity/Assets/Scripts/HotfixView/Client/Demo/EntryEvent3_InitClient.cs
  93. 3 3
      Unity/Assets/Scripts/HotfixView/Client/Demo/Opera/OperaComponentSystem.cs
  94. 3 0
      Unity/Assets/Scripts/Model/Client/Demo/Main.meta
  95. 24 0
      Unity/Assets/Scripts/Model/Client/Demo/Main/ClientSenderCompnent.cs
  96. 11 0
      Unity/Assets/Scripts/Model/Client/Demo/Main/ClientSenderCompnent.cs.meta
  97. 0 0
      Unity/Assets/Scripts/Model/Client/Demo/Main/Move.meta
  98. 0 0
      Unity/Assets/Scripts/Model/Client/Demo/Main/Move/Wait_UnitStop.cs
  99. 0 0
      Unity/Assets/Scripts/Model/Client/Demo/Main/Move/Wait_UnitStop.cs.meta
  100. 0 0
      Unity/Assets/Scripts/Model/Client/Demo/Main/Scene.meta

+ 21 - 0
Unity/Assets/Config/Proto/ClientMessage_C_1000.proto

@@ -0,0 +1,21 @@
+syntax = "proto3";
+// using 
+
+package ET;
+
+//ResponseType NetClient2Main_Login
+message Main2NetClient_Login // IActorRequest
+{
+	int32 RpcId = 1;
+	string Account = 2;
+	string Password = 3;
+}
+
+message NetClient2Main_Login // IActorResponse
+{
+	int32 RpcId = 1;
+	int32 Error = 2;
+	string Message = 3;
+	
+	int64 PlayerId = 4;
+}

+ 7 - 0
Unity/Assets/Config/Proto/ClientMessage_C_1000.proto.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 63a9a6fd819d4e14d8bee7a2e6e2fd20
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1 - 0
Unity/Assets/Scripts/Core/Entity/SceneType.cs

@@ -31,6 +31,7 @@ namespace ET
 		LockStep = 1L << 32,
 		LockStepView = 1L << 33,
 		DemoView = 1L << 34,
+		NetClient = 1L << 35,
 
 		All = long.MaxValue,
 	}

+ 2 - 2
Unity/Assets/Scripts/Core/Network/IActorMessage.cs

@@ -5,11 +5,11 @@
     {
     }
 
-    public interface IActorRequest: IRequest
+    public interface IActorRequest: IRequest, IActorMessage
     {
     }
 
-    public interface IActorResponse: IResponse
+    public interface IActorResponse: IResponse, IActorMessage
     {
     }
 }

+ 1 - 1
Unity/Assets/Scripts/Core/Network/MessageAttribute.cs

@@ -7,7 +7,7 @@
             get;
         }
 
-        public MessageAttribute(ushort opcode)
+        public MessageAttribute(ushort opcode = 0)
         {
             this.Opcode = opcode;
         }

+ 2 - 10
Unity/Assets/Scripts/Core/Network/OpcodeType.cs

@@ -30,12 +30,9 @@ namespace ET
                 }
 
                 ushort opcode = messageAttribute.Opcode;
-                
-                this.typeOpcode.Add(type, opcode);
-
-                if (OpcodeHelper.IsOuterMessage(opcode) && typeof (IActorMessage).IsAssignableFrom(type))
+                if (opcode != 0)
                 {
-                    this.outrActorMessage.Add(opcode);
+                    this.typeOpcode.Add(type, opcode);
                 }
 
                 // 检查request response
@@ -70,11 +67,6 @@ namespace ET
             return this.typeOpcode.GetKeyByValue(opcode);
         }
 
-        public bool IsOutrActorMessage(ushort opcode)
-        {
-            return this.outrActorMessage.Contains(opcode);
-        }
-
         public Type GetResponseType(Type request)
         {
             if (!this.requestResponse.TryGetValue(request, out Type response))

+ 4 - 0
Unity/Assets/Scripts/Core/World/ActorId.cs

@@ -113,6 +113,10 @@ namespace ET
             this.InstanceId = instanceId;
         }
         
+        public ActorId(Address address): this(address, 1)
+        {
+        }
+        
         public ActorId(Address address, long instanceId)
         {
             this.Address = address;

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/Demo/AI/AI_Attack.cs

@@ -23,7 +23,7 @@ namespace ET.Client
             }
 
             // 停在当前位置
-            fiber.Root.GetComponent<SessionComponent>().Session.Send(new C2M_Stop());
+            fiber.Root.GetComponent<ClientSenderCompnent>().Send(new C2M_Stop());
             
             Log.Debug("开始攻击");
 

+ 0 - 51
Unity/Assets/Scripts/Hotfix/Client/Demo/Login/LoginHelper.cs

@@ -1,51 +0,0 @@
-using System;
-using System.Net;
-using System.Net.Sockets;
-using System.Threading;
-
-namespace ET.Client
-{
-    public static partial class LoginHelper
-    {
-        public static async ETTask Login(Scene scene, string account, string password)
-        {
-            try
-            {
-                // 创建一个ETModel层的Session
-                scene.RemoveComponent<RouterAddressComponent>();
-                // 获取路由跟realmDispatcher地址
-                RouterAddressComponent routerAddressComponent = scene.GetComponent<RouterAddressComponent>();
-                if (routerAddressComponent == null)
-                {
-                    routerAddressComponent = scene.AddComponent<RouterAddressComponent, string, int>(ConstValue.RouterHttpHost, ConstValue.RouterHttpPort);
-                    await routerAddressComponent.Init();
-                    scene.AddComponent<NetClientComponent, AddressFamily>(routerAddressComponent.RouterManagerIPAddress.AddressFamily);
-                }
-                IPEndPoint realmAddress = routerAddressComponent.GetRealmAddress(account);
-                
-                R2C_Login r2CLogin;
-                using (Session session = await RouterHelper.CreateRouterSession(scene, realmAddress))
-                {
-                    r2CLogin = (R2C_Login) await session.Call(new C2R_Login() { Account = account, Password = password });
-                }
-
-                // 创建一个gate Session,并且保存到SessionComponent中
-                Session gateSession = await RouterHelper.CreateRouterSession(scene, NetworkHelper.ToIPEndPoint(r2CLogin.Address));
-                scene.AddComponent<SessionComponent>().Session = gateSession;
-				
-                G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await gateSession.Call(
-                    new C2G_LoginGate() { Key = r2CLogin.Key, GateId = r2CLogin.GateId});
-                
-                scene.GetComponent<PlayerComponent>().MyId = g2CLoginGate.PlayerId;
-
-                Log.Debug("登陆gate成功!");
-
-                await EventSystem.Instance.PublishAsync(scene, new EventType.LoginFinish());
-            }
-            catch (Exception e)
-            {
-                Log.Error(e);
-            }
-        } 
-    }
-}

+ 3 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Main.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 2e5141370ec84e1282c5d0a38f2ef25b
+timeCreated: 1688537612

+ 45 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Main/ClientSenderCompnentSystem.cs

@@ -0,0 +1,45 @@
+namespace ET.Client
+{
+    [FriendOf(typeof(ClientSenderCompnent))]
+    public static partial class NetClientProxyCompnentSystem
+    {
+        [EntitySystem]
+        private static void Awake(this ClientSenderCompnent self)
+        {
+            self.ActorSender = self.Root().GetComponent<ActorSenderComponent>();
+        }
+        
+        [EntitySystem]
+        private static void Destroy(this ClientSenderCompnent self)
+        {
+            if (self.fiberId != 0)
+            {
+                FiberManager.Instance.Remove(self.fiberId);
+            }
+        }
+        
+        public static async ETTask<long> LoginAsync(this ClientSenderCompnent self, string account, string password)
+        {
+            self.fiberId = await FiberManager.Instance.Create(SchedulerType.ThreadPool, 0, SceneType.NetClient, "");
+            self.netClientActorId = new ActorId(self.Fiber().Process, self.fiberId);
+            
+            NetClient2Main_Login response =await self.ActorSender.Call(self.netClientActorId, new Main2NetClient_Login() {Account = account, Password = password}) as NetClient2Main_Login;
+            return response.PlayerId;
+        }
+        
+        public static void Send(this ClientSenderCompnent self, IMessage message)
+        {
+            A2NetClient_Message a2NetClientMessage = A2NetClient_Message.Create();
+            a2NetClientMessage.MessageObject = message;
+            self.ActorSender.Send(self.netClientActorId, a2NetClientMessage);
+        }
+        
+        public static async ETTask<IResponse> Call(this ClientSenderCompnent self, IRequest request, bool needException = true)
+        {
+            A2NetClient_Request a2NetClientRequest = A2NetClient_Request.Create();
+            a2NetClientRequest.MessageObject = request;
+            A2NetClient_Response response = await self.ActorSender.Call(self.netClientActorId, a2NetClientRequest, needException) as A2NetClient_Response;
+            return response.MessageObject;
+        }
+    }
+}

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/Demo/Session/NetClientComponentOnReadEvent.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/ClientSenderCompnentSystem.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 6b4dd37b5016f8a4aae643980803e761
+guid: a11bff036359a2143aca1de23150ce40
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Login.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Login.meta


+ 2 - 2
Unity/Assets/Scripts/Hotfix/Client/Demo/Login/EnterMapHelper.cs → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Login/EnterMapHelper.cs

@@ -9,7 +9,7 @@ namespace ET.Client
         {
             try
             {
-                G2C_EnterMap g2CEnterMap = await root.GetComponent<SessionComponent>().Session.Call(new C2G_EnterMap()) as G2C_EnterMap;
+                G2C_EnterMap g2CEnterMap = await root.GetComponent<ClientSenderCompnent>().Call(new C2G_EnterMap()) as G2C_EnterMap;
                 
                 // 等待场景切换完成
                 await root.GetComponent<ObjectWait>().Wait<Wait_SceneChangeFinish>();
@@ -26,7 +26,7 @@ namespace ET.Client
         {
             try
             {
-                G2C_Match g2CEnterMap = await fiber.Root.GetComponent<SessionComponent>().Session.Call(new C2G_Match()) as G2C_Match;
+                G2C_Match g2CEnterMap = await fiber.Root.GetComponent<ClientSenderCompnent>().Call(new C2G_Match()) as G2C_Match;
             }
             catch (Exception e)
             {

+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Login/EnterMapHelper.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Login/EnterMapHelper.cs.meta


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Move.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Move.meta


+ 15 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Move/M2C_PathfindingResultHandler.cs

@@ -0,0 +1,15 @@
+namespace ET.Client
+{
+	[ActorMessageHandler(SceneType.Demo)]
+	public class M2C_PathfindingResultHandler : ActorMessageHandler<Scene, M2C_PathfindingResult>
+	{
+		protected override async ETTask Run(Scene root, M2C_PathfindingResult message)
+		{
+			Unit unit = root.CurrentScene().GetComponent<UnitComponent>().Get(message.Id);
+
+			float speed = unit.GetComponent<NumericComponent>().GetAsFloat(NumericType.Speed);
+
+			await unit.GetComponent<MoveComponent>().MoveToAsync(message.Points, speed);
+		}
+	}
+}

+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Move/M2C_PathfindingResultHandler.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Move/M2C_PathfindingResultHandler.cs.meta


+ 4 - 4
Unity/Assets/Scripts/Hotfix/Client/Demo/Move/M2C_StopHandler.cs → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Move/M2C_StopHandler.cs

@@ -2,12 +2,12 @@
 
 namespace ET.Client
 {
-	[MessageHandler(SceneType.Demo)]
-	public class M2C_StopHandler : MessageHandler<M2C_Stop>
+	[ActorMessageHandler(SceneType.Demo)]
+	public class M2C_StopHandler : ActorMessageHandler<Scene, M2C_Stop>
 	{
-		protected override async ETTask Run(Session session, M2C_Stop message)
+		protected override async ETTask Run(Scene root, M2C_Stop message)
 		{
-			Unit unit = session.Root().CurrentScene().GetComponent<UnitComponent>().Get(message.Id);
+			Unit unit = root.CurrentScene().GetComponent<UnitComponent>().Get(message.Id);
 			if (unit == null)
 			{
 				return;

+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Move/M2C_StopHandler.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Move/M2C_StopHandler.cs.meta


+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/Demo/Move/MoveHelper.cs → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Move/MoveHelper.cs

@@ -10,7 +10,7 @@ namespace ET.Client
         public static async ETTask<int> MoveToAsync(this Unit unit, float3 targetPos, ETCancellationToken cancellationToken = null)
         {
             C2M_PathfindingResult msg = new C2M_PathfindingResult() { Position = targetPos };
-            unit.Root().GetComponent<SessionComponent>().Session.Send(msg);
+            unit.Root().GetComponent<ClientSenderCompnent>().Send(msg);
 
             ObjectWait objectWait = unit.GetComponent<ObjectWait>();
             

+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Move/MoveHelper.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Move/MoveHelper.cs.meta


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Scene.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Scene.meta


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Scene/CurrentSceneFactory.cs → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Scene/CurrentSceneFactory.cs


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Scene/CurrentSceneFactory.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Scene/CurrentSceneFactory.cs.meta


+ 11 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Scene/M2C_StartSceneChangeHandler.cs

@@ -0,0 +1,11 @@
+namespace ET.Client
+{
+	[ActorMessageHandler(SceneType.Demo)]
+	public class M2C_StartSceneChangeHandler : ActorMessageHandler<Scene, M2C_StartSceneChange>
+	{
+		protected override async ETTask Run(Scene root, M2C_StartSceneChange message)
+		{
+			await SceneChangeHelper.SceneChangeTo(root, message.SceneName, message.SceneInstanceId);
+		}
+	}
+}

+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Scene/M2C_StartSceneChangeHandler.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Scene/M2C_StartSceneChangeHandler.cs.meta


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Scene/SceneChangeHelper.cs → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Scene/SceneChangeHelper.cs


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Scene/SceneChangeHelper.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Scene/SceneChangeHelper.cs.meta


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Unit.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit.meta


+ 13 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/M2C_CreateMyUnitHandler.cs

@@ -0,0 +1,13 @@
+namespace ET.Client
+{
+	[ActorMessageHandler(SceneType.Demo)]
+	public class M2C_CreateMyUnitHandler: ActorMessageHandler<Scene, M2C_CreateMyUnit>
+	{
+		protected override async ETTask Run(Scene root, M2C_CreateMyUnit message)
+		{
+			// 通知场景切换协程继续往下走
+			root.GetComponent<ObjectWait>().Notify(new Wait_CreateMyUnit() {Message = message});
+			await ETTask.CompletedTask;
+		}
+	}
+}

+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/M2C_CreateMyUnitHandler.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/M2C_CreateMyUnitHandler.cs.meta


+ 4 - 4
Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/M2C_CreateUnitsHandler.cs → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/M2C_CreateUnitsHandler.cs

@@ -1,11 +1,11 @@
 namespace ET.Client
 {
-	[MessageHandler(SceneType.Demo)]
-	public class M2C_CreateUnitsHandler : MessageHandler<M2C_CreateUnits>
+	[ActorMessageHandler(SceneType.Demo)]
+	public class M2C_CreateUnitsHandler: ActorMessageHandler<Scene, M2C_CreateUnits>
 	{
-		protected override async ETTask Run(Session session, M2C_CreateUnits message)
+		protected override async ETTask Run(Scene root, M2C_CreateUnits message)
 		{
-			Scene currentScene = session.Root().CurrentScene();
+			Scene currentScene = root.CurrentScene();
 			UnitComponent unitComponent = currentScene.GetComponent<UnitComponent>();
 			
 			foreach (UnitInfo unitInfo in message.Units)

+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/M2C_CreateUnitsHandler.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/M2C_CreateUnitsHandler.cs.meta


+ 21 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/M2C_RemoveUnitsHandler.cs

@@ -0,0 +1,21 @@
+namespace ET.Client
+{
+	[ActorMessageHandler(SceneType.Demo)]
+	public class M2C_RemoveUnitsHandler: ActorMessageHandler<Scene, M2C_RemoveUnits>
+	{
+		protected override async ETTask Run(Scene root, M2C_RemoveUnits message)
+		{	
+			UnitComponent unitComponent = root.CurrentScene()?.GetComponent<UnitComponent>();
+			if (unitComponent == null)
+			{
+				return;
+			}
+			foreach (long unitId in message.Units)
+			{
+				unitComponent.Remove(unitId);
+			}
+
+			await ETTask.CompletedTask;
+		}
+	}
+}

+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/M2C_RemoveUnitsHandler.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/M2C_RemoveUnitsHandler.cs.meta


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/UnitFactory.cs → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/UnitFactory.cs


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/UnitFactory.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/UnitFactory.cs.meta


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/UnitHelper.cs → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/UnitHelper.cs


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/UnitHelper.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/Main/Unit/UnitHelper.cs.meta


+ 0 - 15
Unity/Assets/Scripts/Hotfix/Client/Demo/Move/M2C_PathfindingResultHandler.cs

@@ -1,15 +0,0 @@
-namespace ET.Client
-{
-	[MessageHandler(SceneType.Demo)]
-	public class M2C_PathfindingResultHandler : MessageHandler<M2C_PathfindingResult>
-	{
-		protected override async ETTask Run(Session session, M2C_PathfindingResult message)
-		{
-			Unit unit = session.Root().CurrentScene().GetComponent<UnitComponent>().Get(message.Id);
-
-			float speed = unit.GetComponent<NumericComponent>().GetAsFloat(NumericType.Speed);
-
-			await unit.GetComponent<MoveComponent>().MoveToAsync(message.Points, speed);
-		}
-	}
-}

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/Demo/Session.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 45404b4d9e37d864381c24dabf2a90d1
+guid: b9016545e3eb60946afce20928d2d34b
 folderAsset: yes
 DefaultImporter:
   externalObjects: {}

+ 12 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/A2NetClient_MessageHandler.cs

@@ -0,0 +1,12 @@
+namespace ET.Client
+{
+    [ActorMessageHandler(SceneType.NetClient)]
+    public class A2NetClient_MessageHandler: ActorMessageHandler<Scene, A2NetClient_Message>
+    {
+        protected override async ETTask Run(Scene root, A2NetClient_Message message)
+        {
+            root.GetComponent<SessionComponent>().Session.Send(message.MessageObject);
+            await ETTask.CompletedTask;
+        }
+    }
+}

+ 3 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/A2NetClient_MessageHandler.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 0f70391ff9eb499db68bae992a9c85b6
+timeCreated: 1688540041

+ 13 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/A2NetClient_RequestHandler.cs

@@ -0,0 +1,13 @@
+namespace ET.Client
+{
+    [ActorMessageHandler(SceneType.NetClient)]
+    public class A2NetClient_RequestHandler: ActorMessageHandler<Scene, A2NetClient_Request, A2NetClient_Response>
+    {
+        protected override async ETTask Run(Scene root, A2NetClient_Request request, A2NetClient_Response response)
+        {
+            response.MessageObject = await root.GetComponent<SessionComponent>().Session.Call(request.MessageObject);
+            
+            await ETTask.CompletedTask;
+        }
+    }
+}

+ 3 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/A2NetClient_RequestHandler.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: f3ac2d21dada4f2b8b51b26e0efe891e
+timeCreated: 1688540239

+ 15 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/FiberInit_NetClient.cs

@@ -0,0 +1,15 @@
+namespace ET.Client
+{
+    [Invoke((long)SceneType.NetClient)]
+    public class FiberInit_NetClient: AInvokeHandler<FiberInit, ETTask>
+    {
+        public override async ETTask Handle(FiberInit fiberInit)
+        {
+            Scene root = fiberInit.Fiber.Root;
+            root.AddComponent<MailBoxComponent, MailBoxType>(MailBoxType.UnOrderedMessage);
+            root.AddComponent<ActorSenderComponent, SceneType>(SceneType.NetClient);
+            root.AddComponent<ActorRecverComponent>();
+            await ETTask.CompletedTask;
+        }
+    }
+}

+ 11 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/FiberInit_NetClient.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: dee733932d1381941bc0496fc337341a
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 17 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/LoginHelper.cs

@@ -0,0 +1,17 @@
+namespace ET.Client
+{
+    public static class LoginHelper
+    {
+        public static async ETTask Login(Scene root, string account, string password)
+        {
+            root.RemoveComponent<ClientSenderCompnent>();
+            ClientSenderCompnent clientSenderCompnent = root.AddComponent<ClientSenderCompnent>();
+
+            long playerId = await clientSenderCompnent.LoginAsync(account, password);
+
+            root.GetComponent<PlayerComponent>().MyId = playerId;
+            
+            await EventSystem.Instance.PublishAsync(root, new EventType.LoginFinish());
+        }
+    }
+}

+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Login/LoginHelper.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/LoginHelper.cs.meta


+ 42 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Main2NetClient_LoginHandler.cs

@@ -0,0 +1,42 @@
+using System.Net;
+using System.Net.Sockets;
+
+namespace ET.Client
+{
+    [ActorMessageHandler(SceneType.NetClient)]
+    public class Main2NetClient_LoginHandler: ActorMessageHandler<Scene, Main2NetClient_Login, NetClient2Main_Login>
+    {
+        protected override async ETTask Run(Scene root, Main2NetClient_Login request, NetClient2Main_Login response)
+        {
+            string account = request.Account;
+            string password = request.Password;
+            // 创建一个ETModel层的Session
+            root.RemoveComponent<RouterAddressComponent>();
+            // 获取路由跟realmDispatcher地址
+            RouterAddressComponent routerAddressComponent = root.GetComponent<RouterAddressComponent>();
+            if (routerAddressComponent == null)
+            {
+                routerAddressComponent =
+                        root.AddComponent<RouterAddressComponent, string, int>(ConstValue.RouterHttpHost, ConstValue.RouterHttpPort);
+                await routerAddressComponent.Init();
+                root.AddComponent<NetClientComponent, AddressFamily>(routerAddressComponent.RouterManagerIPAddress.AddressFamily);
+            }
+            IPEndPoint realmAddress = routerAddressComponent.GetRealmAddress(account);
+
+            R2C_Login r2CLogin;
+            using (Session session = await RouterHelper.CreateRouterSession(root, realmAddress))
+            {
+                r2CLogin = (R2C_Login)await session.Call(new C2R_Login() { Account = account, Password = password });
+            }
+
+            // 创建一个gate Session,并且保存到SessionComponent中
+            Session gateSession = await RouterHelper.CreateRouterSession(root, NetworkHelper.ToIPEndPoint(r2CLogin.Address));
+            root.AddComponent<SessionComponent>().Session = gateSession;
+            G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await gateSession.Call(new C2G_LoginGate() { Key = r2CLogin.Key, GateId = r2CLogin.GateId });
+
+            Log.Debug("登陆gate成功!");
+
+            response.PlayerId = g2CLoginGate.PlayerId;
+        }
+    }
+}

+ 3 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Main2NetClient_LoginHandler.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 02d16f101211408496a7e86b273ed882
+timeCreated: 1688536630

+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Ping.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Ping.meta


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Ping/PingComponentSystem.cs → Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Ping/PingComponentSystem.cs


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Ping/PingComponentSystem.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Ping/PingComponentSystem.cs.meta


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Router.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router.meta


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Router/HttpClientHelper.cs → Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/HttpClientHelper.cs


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Router/HttpClientHelper.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/HttpClientHelper.cs.meta


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Router/RouterAddressComponentSystem.cs → Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/RouterAddressComponentSystem.cs


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Router/RouterAddressComponentSystem.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/RouterAddressComponentSystem.cs.meta


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Router/RouterCheckComponentSystem.cs → Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/RouterCheckComponentSystem.cs


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Router/RouterCheckComponentSystem.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/RouterCheckComponentSystem.cs.meta


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Router/RouterHelper.cs → Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/RouterHelper.cs


+ 0 - 0
Unity/Assets/Scripts/Hotfix/Client/Demo/Router/RouterHelper.cs.meta → Unity/Assets/Scripts/Hotfix/Client/Demo/NetClient/Router/RouterHelper.cs.meta


+ 0 - 11
Unity/Assets/Scripts/Hotfix/Client/Demo/Scene/M2C_StartSceneChangeHandler.cs

@@ -1,11 +0,0 @@
-namespace ET.Client
-{
-	[MessageHandler(SceneType.Demo)]
-	public class M2C_StartSceneChangeHandler : MessageHandler<M2C_StartSceneChange>
-	{
-		protected override async ETTask Run(Session session, M2C_StartSceneChange message)
-		{
-			await SceneChangeHelper.SceneChangeTo(session.Root(), message.SceneName, message.SceneInstanceId);
-		}
-	}
-}

+ 0 - 21
Unity/Assets/Scripts/Hotfix/Client/Demo/Session/NetClientComponentOnReadEvent.cs

@@ -1,21 +0,0 @@
-namespace ET.Client
-{
-    [Event(SceneType.All)]
-    public class NetClientComponentOnReadEvent: AEvent<Scene, NetClientComponentOnRead>
-    {
-        protected override async ETTask Run(Scene scene, NetClientComponentOnRead args)
-        {
-            Session session = args.Session;
-            object message = args.Message;
-            if (message is IResponse response)
-            {
-                session.OnResponse(response);
-                return;
-            }
-            
-            // 普通消息或者是Rpc请求消息
-            MessageDispatcherComponent.Instance.Handle(session, message);
-            await ETTask.CompletedTask;
-        }
-    }
-}

+ 0 - 13
Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/M2C_CreateMyUnitHandler.cs

@@ -1,13 +0,0 @@
-namespace ET.Client
-{
-	[MessageHandler(SceneType.Demo)]
-	public class M2C_CreateMyUnitHandler : MessageHandler<M2C_CreateMyUnit>
-	{
-		protected override async ETTask Run(Session session, M2C_CreateMyUnit message)
-		{
-			// 通知场景切换协程继续往下走
-			session.Scene().GetComponent<ObjectWait>().Notify(new Wait_CreateMyUnit() {Message = message});
-			await ETTask.CompletedTask;
-		}
-	}
-}

+ 0 - 21
Unity/Assets/Scripts/Hotfix/Client/Demo/Unit/M2C_RemoveUnitsHandler.cs

@@ -1,21 +0,0 @@
-namespace ET.Client
-{
-	[MessageHandler(SceneType.Demo)]
-	public class M2C_RemoveUnitsHandler : MessageHandler<M2C_RemoveUnits>
-	{
-		protected override async ETTask Run(Session session, M2C_RemoveUnits message)
-		{	
-			UnitComponent unitComponent = session.Root().CurrentScene()?.GetComponent<UnitComponent>();
-			if (unitComponent == null)
-			{
-				return;
-			}
-			foreach (long unitId in message.Units)
-			{
-				unitComponent.Remove(unitId);
-			}
-
-			await ETTask.CompletedTask;
-		}
-	}
-}

+ 2 - 3
Unity/Assets/Scripts/Hotfix/Client/LockStep/LSClientHelper.cs

@@ -1,7 +1,6 @@
 using System.IO;
-using ET.Client;
 
-namespace ET
+namespace ET.Client
 {
     public static partial class LSClientHelper
     {
@@ -66,7 +65,7 @@ namespace ET
             C2Room_CheckHash c2RoomCheckHash = C2Room_CheckHash.Create();
             c2RoomCheckHash.Frame = frame;
             c2RoomCheckHash.Hash = hash;
-            self.Root().GetComponent<SessionComponent>().Session.Send(c2RoomCheckHash);
+            self.Root().GetComponent<ClientSenderCompnent>().Send(c2RoomCheckHash);
         }
         
         // 重新调整预测消息,只需要调整其他玩家的输入

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/LockStep/LSClientUpdaterSystem.cs

@@ -45,7 +45,7 @@ namespace ET.Client
                 FrameMessage frameMessage = FrameMessage.Create();
                 frameMessage.Frame = room.PredictionFrame;
                 frameMessage.Input = self.Input;
-                root.GetComponent<SessionComponent>().Session.Send(frameMessage);
+                root.GetComponent<ClientSenderCompnent>().Send(frameMessage);
                 
                 long timeNow2 = self.Fiber().TimeInfo.ServerNow();
                 if (timeNow2 - timeNow > 5)

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Client/LockStep/LSSceneChangeHelper.cs

@@ -14,7 +14,7 @@ namespace ET.Client
             // 等待表现层订阅的事件完成
             await EventSystem.Instance.PublishAsync(root, new EventType.LSSceneChangeStart() {Room = room});
 
-            root.GetComponent<SessionComponent>().Session.Send(new C2Room_ChangeSceneFinish());
+            root.GetComponent<ClientSenderCompnent>().Send(new C2Room_ChangeSceneFinish());
             
             // 等待Room2C_EnterMap消息
             WaitType.Wait_Room2C_Start waitRoom2CStart = await root.GetComponent<ObjectWait>().Wait<WaitType.Wait_Room2C_Start>();

+ 4 - 4
Unity/Assets/Scripts/Hotfix/Client/LockStep/Room2C_AdjustUpdateTimeHandler.cs

@@ -1,11 +1,11 @@
 namespace ET.Client
 {
-    [MessageHandler(SceneType.LockStep)]
-    public class Room2C_AdjustUpdateTimeHandler: MessageHandler<Room2C_AdjustUpdateTime>
+    [ActorMessageHandler(SceneType.LockStep)]
+    public class Room2C_AdjustUpdateTimeHandler: ActorMessageHandler<Scene, Room2C_AdjustUpdateTime>
     {
-        protected override async ETTask Run(Session session, Room2C_AdjustUpdateTime message)
+        protected override async ETTask Run(Scene root, Room2C_AdjustUpdateTime message)
         {
-            Room room = session.Scene().GetComponent<Room>();
+            Room room = root.GetComponent<Room>();
             int newInterval = (1000 + (message.DiffTime - LSConstValue.UpdateInterval)) * LSConstValue.UpdateInterval / 1000;
 
             if (newInterval < 40)

+ 3 - 4
Unity/Assets/Scripts/Hotfix/Client/LockStep/Room2C_CheckHashFailHandler.cs

@@ -1,11 +1,10 @@
 namespace ET.Client
 {
-    [MessageHandler(SceneType.LockStep)]
-    public class Room2C_CheckHashFailHandler: MessageHandler<Room2C_CheckHashFail>
+    [ActorMessageHandler(SceneType.LockStep)]
+    public class Room2C_CheckHashFailHandler: ActorMessageHandler<Scene, Room2C_CheckHashFail>
     {
-        protected override async ETTask Run(Session session, Room2C_CheckHashFail message)
+        protected override async ETTask Run(Scene root, Room2C_CheckHashFail message)
         {
-            Scene root = session.Root();
             LSWorld serverWorld = MongoHelper.Deserialize(typeof(LSWorld), message.LSWorldBytes, 0, message.LSWorldBytes.Length) as LSWorld;
             using (root.AddChild(serverWorld))
             {

+ 4 - 4
Unity/Assets/Scripts/Hotfix/Client/LockStep/Room2C_EnterMapHandler.cs

@@ -1,11 +1,11 @@
 namespace ET.Client
 {
-    [MessageHandler(SceneType.LockStep)]
-    public class Room2C_EnterMapHandler: MessageHandler<Room2C_Start>
+    [ActorMessageHandler(SceneType.LockStep)]
+    public class Room2C_EnterMapHandler: ActorMessageHandler<Scene, Room2C_Start>
     {
-        protected override async ETTask Run(Session session, Room2C_Start message)
+        protected override async ETTask Run(Scene root, Room2C_Start message)
         {
-            session.Scene().GetComponent<ObjectWait>().Notify(new WaitType.Wait_Room2C_Start() {Message = message});
+            root.GetComponent<ObjectWait>().Notify(new WaitType.Wait_Room2C_Start() {Message = message});
             await ETTask.CompletedTask;
         }
     }

+ 20 - 1
Unity/Assets/Scripts/Hotfix/Client/Module/Message/NetClientComponentSystem.cs

@@ -37,7 +37,26 @@ namespace ET.Client
 
             session.LastRecvTime = self.Fiber().TimeInfo.ClientNow();
             
-            EventSystem.Instance.Publish(self.Scene(), new NetClientComponentOnRead() {Session = session, Message = message});
+            switch (message)
+            {
+                case IActorMessage:
+                {
+                    // 扔到Main纤程队列中
+                    ActorMessageQueue.Instance.Send(new ActorId(self.Fiber().Process, ConstFiberId.Main), message as MessageObject);
+                    break;
+                }
+                case IResponse response:
+                {
+                    session.OnResponse(response);
+                    break;
+                }
+                default:
+                {
+                    // 普通消息或者是Rpc请求消息
+                    MessageDispatcherComponent.Instance.Handle(session, message);
+                    break;
+                }
+            }
         }
 
         private static void OnError(this NetClientComponent self, long channelId, int error)

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/Demo/Gate/FiberInit_Gate.cs

@@ -9,7 +9,7 @@ namespace ET.Server
         {
             Scene root = fiberInit.Fiber.Root;
             root.AddComponent<MailBoxComponent, MailBoxType>(MailBoxType.UnOrderedMessage);
-            root.AddComponent<ActorSenderComponent>();
+            root.AddComponent<ActorSenderComponent, SceneType>(SceneType.NetInner);
             root.AddComponent<ActorRecverComponent>();
             root.AddComponent<PlayerComponent>();
             root.AddComponent<GateSessionKeyComponent>();

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/Demo/Realm/FiberInit_Realm.cs

@@ -9,7 +9,7 @@ namespace ET.Server
         {
             Scene root = fiberInit.Fiber.Root;
             root.AddComponent<MailBoxComponent, MailBoxType>(MailBoxType.UnOrderedMessage);
-            root.AddComponent<ActorSenderComponent>();
+            root.AddComponent<ActorSenderComponent, SceneType>(SceneType.NetInner);
             root.AddComponent<ActorRecverComponent>();
             StartSceneConfig startSceneConfig = StartSceneConfigCategory.Instance.Get(root.Fiber.Id);
             root.AddComponent<NetServerComponent, IPEndPoint>(startSceneConfig.InnerIPPort);

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/LockStep/Map/FiberInit_Map.cs

@@ -9,7 +9,7 @@ namespace ET.Server
         {
             Scene root = fiberInit.Fiber.Root;
             root.AddComponent<MailBoxComponent, MailBoxType>(MailBoxType.UnOrderedMessage);
-            root.AddComponent<ActorSenderComponent>();
+            root.AddComponent<ActorSenderComponent, SceneType>(SceneType.NetInner);
             root.AddComponent<ActorRecverComponent>();
             root.AddComponent<UnitComponent>();
             root.AddComponent<AOIManagerComponent>();

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/LockStep/Match/FiberInit_Match.cs

@@ -9,7 +9,7 @@ namespace ET.Server
         {
             Scene root = fiberInit.Fiber.Root;
             root.AddComponent<MailBoxComponent, MailBoxType>(MailBoxType.UnOrderedMessage);
-            root.AddComponent<ActorSenderComponent>();
+            root.AddComponent<ActorSenderComponent, SceneType>(SceneType.NetInner);
             root.AddComponent<ActorRecverComponent>();
             root.AddComponent<MatchComponent>();
             root.AddComponent<LocationProxyComponent>();

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/LockStep/Room/FiberInit_RoomRoot.cs

@@ -9,7 +9,7 @@ namespace ET.Server
         {
             Scene root = fiberInit.Fiber.Root;
             root.AddComponent<MailBoxComponent, MailBoxType>(MailBoxType.UnOrderedMessage);
-            root.AddComponent<ActorSenderComponent>();
+            root.AddComponent<ActorSenderComponent, SceneType>(SceneType.NetInner);
             root.AddComponent<ActorRecverComponent>();
             Room room = root.AddChild<Room>();
             root.AddComponent<LocationProxyComponent>();

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/Module/ActorLocation/FiberInit_Location.cs

@@ -9,7 +9,7 @@ namespace ET.Server
         {
             Scene root = fiberInit.Fiber.Root;
             root.AddComponent<MailBoxComponent, MailBoxType>(MailBoxType.UnOrderedMessage);
-            root.AddComponent<ActorSenderComponent>();
+            root.AddComponent<ActorSenderComponent, SceneType>(SceneType.NetInner);
             root.AddComponent<ActorRecverComponent>();
             root.AddComponent<LocationManagerComoponent>();
 

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/Module/Message/A2Net_MessageHandler.cs → Unity/Assets/Scripts/Hotfix/Server/Module/Message/A2NetInner_MessageHandler.cs

@@ -3,7 +3,7 @@
 namespace ET.Server
 {
     [ActorMessageHandler(SceneType.NetInner)]
-    public class A2Net_MessageHandler: ActorMessageHandler<Scene, A2NetInner_Message>
+    public class A2NetInner_MessageHandler: ActorMessageHandler<Scene, A2NetInner_Message>
     {
         protected override async ETTask Run(Scene root, A2NetInner_Message innerMessage)
         {

+ 0 - 0
Unity/Assets/Scripts/Hotfix/Server/Module/Message/A2Net_MessageHandler.cs.meta → Unity/Assets/Scripts/Hotfix/Server/Module/Message/A2NetInner_MessageHandler.cs.meta


+ 0 - 21
Unity/Assets/Scripts/Hotfix/Server/Module/Message/NetInnerComponentSystem.cs

@@ -7,27 +7,6 @@ namespace ET.Server
     [FriendOf(typeof(NetInnerComponent))]
     public static partial class NetInnerComponentSystem
     {
-        //[EntitySystem]
-        //private static void Awake(this NetInnerComponent self)
-        //{
-        //    switch (self.InnerProtocol)
-        //    {
-        //        case NetworkProtocol.TCP:
-        //        {
-        //            self.AService = new TService(AddressFamily.InterNetwork, ServiceType.Inner);
-        //            break;
-        //        }
-        //        case NetworkProtocol.KCP:
-        //        {
-        //            self.AService = new KService(AddressFamily.InterNetwork, ServiceType.Inner);
-        //            break;
-        //        }
-        //    }
-        //        
-        //    self.AService.ReadCallback = self.OnRead;
-        //    self.AService.ErrorCallback = self.OnError;
-        //}
-
         [EntitySystem]
         private static void Awake(this NetInnerComponent self, IPEndPoint address)
         {

+ 17 - 0
Unity/Assets/Scripts/Hotfix/Server/Module/NetInner/ActorSenderInvoker_SendToNetInner.cs

@@ -0,0 +1,17 @@
+namespace ET.Server
+{
+    [Invoke((long)SceneType.NetInner)]
+    public class ActorSenderInvoker_SendToNetInner: AInvokeHandler<ActorSenderInvoker>
+    {
+        public override void Handle(ActorSenderInvoker args)
+        {
+            A2NetInner_Message netInnerMessage = A2NetInner_Message.Create();
+            netInnerMessage.FromAddress = args.Fiber.Address;
+            netInnerMessage.ActorId = args.ActorId;
+            netInnerMessage.MessageObject = args.MessageObject;
+            // 扔到Net纤程
+            StartSceneConfig startSceneConfig = StartSceneConfigCategory.Instance.NetInners[args.Fiber.Process];
+            ActorMessageQueue.Instance.Send(startSceneConfig.ActorId, netInnerMessage);
+        }
+    }
+}

+ 11 - 0
Unity/Assets/Scripts/Hotfix/Server/Module/NetInner/ActorSenderInvoker_SendToNetInner.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ad3ed8874566f7844941f265f495a009
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/Module/NetInner/FiberInit_Net.cs

@@ -9,7 +9,7 @@ namespace ET.Server
         {
             Scene root = fiberInit.Fiber.Root;
             root.AddComponent<MailBoxComponent, MailBoxType>(MailBoxType.UnOrderedMessage);
-            root.AddComponent<ActorSenderComponent>();
+            root.AddComponent<ActorSenderComponent, SceneType>(SceneType.NetInner);
             root.AddComponent<ActorRecverComponent>();
             StartMachineConfig startMachineConfig = StartMachineConfigCategory.Instance.Get(fiberInit.Fiber.Process);
             IPEndPoint ipEndPoint = NetworkHelper.ToIPEndPoint($"{startMachineConfig.InnerIP}:{startMachineConfig.WatcherPort}");

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/Module/Router/FiberInit_Router.cs

@@ -9,7 +9,7 @@ namespace ET.Server
         {
             Scene root = fiberInit.Fiber.Root;
             root.AddComponent<MailBoxComponent, MailBoxType>(MailBoxType.UnOrderedMessage);
-            root.AddComponent<ActorSenderComponent>();
+            root.AddComponent<ActorSenderComponent, SceneType>(SceneType.NetInner);
             root.AddComponent<ActorRecverComponent>();
             StartSceneConfig startSceneConfig = StartSceneConfigCategory.Instance.Get((int)root.Id);
             

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/Module/Router/FiberInit_RouterManager.cs

@@ -9,7 +9,7 @@ namespace ET.Server
         {
             Scene root = fiberInit.Fiber.Root;
             root.AddComponent<MailBoxComponent, MailBoxType>(MailBoxType.UnOrderedMessage);
-            root.AddComponent<ActorSenderComponent>();
+            root.AddComponent<ActorSenderComponent, SceneType>(SceneType.NetInner);
             root.AddComponent<ActorRecverComponent>();
             StartSceneConfig startSceneConfig = StartSceneConfigCategory.Instance.Get((int)root.Id);
             root.AddComponent<HttpComponent, string>($"http://*:{startSceneConfig.Port}/");

+ 0 - 3
Unity/Assets/Scripts/Hotfix/Share/FiberInit_Main.cs

@@ -6,9 +6,6 @@
         public override async ETTask Handle(FiberInit fiberInit)
         {
             Scene root = fiberInit.Fiber.Root;
-            root.AddComponent<MailBoxComponent, MailBoxType>(MailBoxType.UnOrderedMessage);
-            root.AddComponent<ActorSenderComponent>();
-            root.AddComponent<ActorRecverComponent>();
             await EventSystem.Instance.PublishAsync(root, new EventType.EntryEvent1());
             await EventSystem.Instance.PublishAsync(root, new EventType.EntryEvent2());
             await EventSystem.Instance.PublishAsync(root, new EventType.EntryEvent3());

+ 4 - 12
Unity/Assets/Scripts/Hotfix/Share/Module/Actor/ActorSenderComponentSystem.cs

@@ -24,8 +24,9 @@ namespace ET
         }
     
         [EntitySystem]
-        private static void Awake(this ActorSenderComponent self)
+        private static void Awake(this ActorSenderComponent self, SceneType sceneType)
         {
+            self.SceneType = sceneType;
             self.TimeoutCheckTimer = self.Fiber().TimerComponent.NewRepeatedTimer(1000, TimerInvokeType.ActorMessageSenderChecker, self);
         }
         
@@ -110,19 +111,10 @@ namespace ET
                 ActorMessageQueue.Instance.Send(fiber.Address, actorId, message);
                 return;
             }
-
-
-            A2NetInner_Message netInnerMessage = A2NetInner_Message.Create();
-            netInnerMessage.FromAddress = fiber.Address;
-            netInnerMessage.ActorId = actorId;
-            netInnerMessage.MessageObject = message;
-            // 扔到Net纤程
-            StartSceneConfig startSceneConfig = StartSceneConfigCategory.Instance.NetInners[fiber.Process];
-            ActorMessageQueue.Instance.Send(startSceneConfig.ActorId, netInnerMessage);
+            
+            EventSystem.Instance.Invoke((long)self.SceneType, new ActorSenderInvoker());
         }
 
-
-
         public static int GetRpcId(this ActorSenderComponent self)
         {
             return ++self.RpcId;

+ 4 - 0
Unity/Assets/Scripts/HotfixView/Client/Demo/EntryEvent3_InitClient.cs

@@ -9,6 +9,10 @@ namespace ET.Client
         protected override async ETTask Run(Scene root, EventType.EntryEvent3 args)
         {
             World.Instance.AddSingleton<UIEventComponent>();
+            
+            root.AddComponent<MailBoxComponent, MailBoxType>(MailBoxType.UnOrderedMessage);
+            root.AddComponent<ActorSenderComponent, SceneType>(SceneType.NetClient);
+            root.AddComponent<ActorRecverComponent>();
 
             GlobalComponent globalComponent = root.AddComponent<GlobalComponent>();
             root.AddComponent<UIGlobalComponent>();

+ 3 - 3
Unity/Assets/Scripts/HotfixView/Client/Demo/Opera/OperaComponentSystem.cs

@@ -23,7 +23,7 @@ namespace ET.Client
                 {
                     C2M_PathfindingResult c2MPathfindingResult = new C2M_PathfindingResult();
                     c2MPathfindingResult.Position = hit.point;
-                    self.Root().GetComponent<SessionComponent>().Session.Send(c2MPathfindingResult);
+                    self.Root().GetComponent<ClientSenderCompnent>().Send(c2MPathfindingResult);
                 }
             }
 
@@ -35,8 +35,8 @@ namespace ET.Client
         
             if (Input.GetKeyDown(KeyCode.T))
             {
-                C2M_TransferMap c2MTransferMap = new C2M_TransferMap();
-                self.Root().GetComponent<SessionComponent>().Session.Call(c2MTransferMap).Coroutine();
+                C2M_TransferMap c2MTransferMap = new();
+                self.Root().GetComponent<ClientSenderCompnent>().Call(c2MTransferMap).Coroutine();
             }
         }
     }

+ 3 - 0
Unity/Assets/Scripts/Model/Client/Demo/Main.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: c247787106f44a8f99a58bd0037a2c5e
+timeCreated: 1688537682

+ 24 - 0
Unity/Assets/Scripts/Model/Client/Demo/Main/ClientSenderCompnent.cs

@@ -0,0 +1,24 @@
+namespace ET.Client
+{
+    [ComponentOf(typeof(Scene))]
+    public class ClientSenderCompnent: Entity, IAwake, IDestroy
+    {
+        public int fiberId;
+
+        public ActorId netClientActorId;
+
+        private EntityRef<ActorSenderComponent> actorSender;
+
+        public ActorSenderComponent ActorSender
+        {
+            get
+            {
+                return this.actorSender;
+            }
+            set
+            {
+                this.actorSender = value;
+            }
+        }
+    }
+}

+ 11 - 0
Unity/Assets/Scripts/Model/Client/Demo/Main/ClientSenderCompnent.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 382c2c68ed7679d46a55104e0cc8b994
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 0 - 0
Unity/Assets/Scripts/Model/Client/Demo/Move.meta → Unity/Assets/Scripts/Model/Client/Demo/Main/Move.meta


+ 0 - 0
Unity/Assets/Scripts/Model/Client/Demo/Move/Wait_UnitStop.cs → Unity/Assets/Scripts/Model/Client/Demo/Main/Move/Wait_UnitStop.cs


+ 0 - 0
Unity/Assets/Scripts/Model/Client/Demo/Move/Wait_UnitStop.cs.meta → Unity/Assets/Scripts/Model/Client/Demo/Main/Move/Wait_UnitStop.cs.meta


+ 0 - 0
Unity/Assets/Scripts/Model/Client/Demo/Scene.meta → Unity/Assets/Scripts/Model/Client/Demo/Main/Scene.meta


Some files were not shown because too many files changed in this diff