Răsfoiți Sursa

虚拟进程之间的消息用ActorId发送

tanghai 2 ani în urmă
părinte
comite
6e0ba8cee1
56 a modificat fișierele cu 323 adăugiri și 379 ștergeri
  1. 4 3
      DotNet/Loader/Init.cs
  2. 2 2
      Share/Tool/Proto2CS/Proto2CS.cs
  3. 6 0
      Unity/Assets/Scripts/Core/VProcess/Module/CoroutineLock/CoroutineLockComponent.cs
  4. 1 1
      Unity/Assets/Scripts/Core/VProcess/Module/Entity/Entity.cs
  5. 1 1
      Unity/Assets/Scripts/Core/VProcess/Module/IdGenerater/IdGenerater.cs
  6. 10 10
      Unity/Assets/Scripts/Core/VProcess/Module/VProcessActor/VProcessActor.cs
  7. 4 1
      Unity/Assets/Scripts/Core/VProcess/VProcess.cs
  8. 9 6
      Unity/Assets/Scripts/Core/VProcess/VProcessSingleton.cs
  9. 0 0
      Unity/Assets/Scripts/Core/World/Module/Network/ActorResponse.cs
  10. 0 0
      Unity/Assets/Scripts/Core/World/Module/Network/ActorResponse.cs.meta
  11. 0 0
      Unity/Assets/Scripts/Core/World/Module/Network/IActorLocationMessage.cs
  12. 0 0
      Unity/Assets/Scripts/Core/World/Module/Network/IActorLocationMessage.cs.meta
  13. 0 0
      Unity/Assets/Scripts/Core/World/Module/Network/IActorMessage.cs
  14. 0 0
      Unity/Assets/Scripts/Core/World/Module/Network/IActorMessage.cs.meta
  15. 2 2
      Unity/Assets/Scripts/Core/World/Module/Network/KChannel.cs
  16. 1 1
      Unity/Assets/Scripts/Core/World/Module/Network/MessageSerializeHelper.cs
  17. 26 39
      Unity/Assets/Scripts/Core/World/Module/Network/NetServices.cs
  18. 16 0
      Unity/Assets/Scripts/Core/World/Module/Network/OpcodeHelper.cs
  19. 0 0
      Unity/Assets/Scripts/Core/World/Module/Network/OpcodeHelper.cs.meta
  20. 28 34
      Unity/Assets/Scripts/Core/World/Module/Network/OpcodeType.cs
  21. 0 0
      Unity/Assets/Scripts/Core/World/Module/Network/OpcodeType.cs.meta
  22. 0 0
      Unity/Assets/Scripts/Core/World/Module/Network/ResponseTypeAttribute.cs
  23. 0 0
      Unity/Assets/Scripts/Core/World/Module/Network/ResponseTypeAttribute.cs.meta
  24. 2 2
      Unity/Assets/Scripts/Core/World/Module/Network/TChannel.cs
  25. 1 1
      Unity/Assets/Scripts/Core/World/Module/Network/WChannel.cs
  26. 0 0
      Unity/Assets/Scripts/Core/World/Module/Scheduler.meta
  27. 7 0
      Unity/Assets/Scripts/Core/World/Module/Scheduler/IScheduler.cs
  28. 0 0
      Unity/Assets/Scripts/Core/World/Module/Scheduler/IScheduler.cs.meta
  29. 2 4
      Unity/Assets/Scripts/Core/World/Module/Scheduler/MainThreadScheduler.cs
  30. 0 0
      Unity/Assets/Scripts/Core/World/Module/Scheduler/MainThreadScheduler.cs.meta
  31. 5 6
      Unity/Assets/Scripts/Core/World/Module/Scheduler/ThreadPoolScheduler.cs
  32. 0 0
      Unity/Assets/Scripts/Core/World/Module/Scheduler/ThreadPoolScheduler.cs.meta
  33. 2 4
      Unity/Assets/Scripts/Core/World/Module/Scheduler/ThreadScheduler.cs
  34. 0 0
      Unity/Assets/Scripts/Core/World/Module/Scheduler/ThreadScheduler.cs.meta
  35. 3 3
      Unity/Assets/Scripts/Core/World/Module/VProcess/VProcessManager.cs
  36. 0 7
      Unity/Assets/Scripts/Core/World/Module/VProcessScheduler/IVProcessScheduler.cs
  37. 1 1
      Unity/Assets/Scripts/Core/World/Module/WorldActor/IProcessActorHandler.cs
  38. 3 4
      Unity/Assets/Scripts/Core/World/Module/WorldActor/ProcessActorHandler.cs
  39. 15 9
      Unity/Assets/Scripts/Core/World/Module/WorldActor/WorldActor.cs
  40. 2 1
      Unity/Assets/Scripts/Hotfix/Client/Module/Message/NetClientComponentSystem.cs
  41. 1 1
      Unity/Assets/Scripts/Hotfix/Server/Module/Actor/ActorHandleHelper.cs
  42. 1 1
      Unity/Assets/Scripts/Hotfix/Server/Module/Actor/ActorHelper.cs
  43. 3 2
      Unity/Assets/Scripts/Hotfix/Server/Module/Actor/ActorMessageDispatcherComponentSystem.cs
  44. 1 1
      Unity/Assets/Scripts/Hotfix/Server/Module/Actor/ActorMessageSenderComponentSystem.cs
  45. 2 1
      Unity/Assets/Scripts/Hotfix/Server/Module/Message/NetServerComponentSystem.cs
  46. 0 1
      Unity/Assets/Scripts/Hotfix/Share/Demo/EntryEvent1_InitShare.cs
  47. 2 2
      Unity/Assets/Scripts/Hotfix/Share/Module/Message/MessageDispatcherComponentSystem.cs
  48. 4 2
      Unity/Assets/Scripts/Loader/MonoBehaviour/Init.cs
  49. 46 46
      Unity/Assets/Scripts/Model/Generate/Server/Message/InnerMessage_S_20001.cs
  50. 12 12
      Unity/Assets/Scripts/Model/Generate/Server/Message/LockStepInner_S_21001.cs
  51. 24 24
      Unity/Assets/Scripts/Model/Generate/Server/Message/LockStepOuter_C_11001.cs
  52. 72 72
      Unity/Assets/Scripts/Model/Generate/Server/Message/OuterMessage_C_10001.cs
  53. 0 8
      Unity/Assets/Scripts/Model/Share/Module/Actor.meta
  54. 0 8
      Unity/Assets/Scripts/Model/Share/Module/ActorLocation.meta
  55. 0 53
      Unity/Assets/Scripts/Model/Share/Module/Message/OpcodeHelper.cs
  56. 2 3
      Unity/Assets/Scripts/Model/Share/Module/Message/Session.cs

+ 4 - 3
DotNet/Loader/Init.cs

@@ -22,18 +22,19 @@ namespace ET
 						.WithParsed(World.Instance.AddSingleton);
 				World.Instance.AddSingleton<Logger>().ILog = new NLogger(Options.Instance.AppType.ToString(), Options.Instance.Process, "../Config/NLog/NLog.config");
 				ETTask.ExceptionHandler += Log.Error;
+				World.Instance.AddSingleton<OpcodeType>();
 				World.Instance.AddSingleton<IdValueGenerater>();
 				World.Instance.AddSingleton<ObjectPool>();
 				World.Instance.AddSingleton<WorldActor>();
 				World.Instance.AddSingleton<CodeLoader>();
 				World.Instance.AddSingleton<VProcessManager>();
 
-				VProcessManager.ThreadPoolScheduler threadPoolScheduler = World.Instance.AddSingleton<VProcessManager.ThreadPoolScheduler>();
-				threadPoolScheduler.ThreadCount = 10;
+				VProcessManager.ThreadPoolScheduler threadPoolScheduler = World.Instance.AddSingleton<VProcessManager.ThreadPoolScheduler, int>(10);
 				
 				int vProcessId = VProcessManager.Instance.Create();
+				threadPoolScheduler.Add(vProcessId);
 				
-				WorldActor.Instance.Send(vProcessId, null);
+				WorldActor.Instance.Send(new ActorId(Options.Instance.Process, vProcessId, 0), null);
 				
 				Log.Console($"{Parser.Default.FormatCommandLine(Options.Instance)}");
 			}

+ 2 - 2
Share/Tool/Proto2CS/Proto2CS.cs

@@ -144,8 +144,8 @@ namespace ET
                     {
                         sb.Append("\t{\n");
                         
-                        sb.Append($"\t\tpublic static {msgName} Create(bool isFromPool = false) {{ return !isFromPool? new {msgName}() : NetServices.Instance.FetchMessage(typeof({msgName})) as {msgName}; }}\n\n");
-                        sb.Append($"\t\tpublic override void Dispose() {{ NetServices.Instance.RecycleMessage(this); }}\n\n");
+                        sb.Append($"\t\tpublic static {msgName} Create(bool isFromPool = false) {{ return !isFromPool? new {msgName}() : ObjectPool.Instance.Fetch(typeof({msgName})) as {msgName}; }}\n\n");
+                        sb.Append($"\t\tpublic override void Dispose() {{ ObjectPool.Instance.Recycle(this); }}\n\n");
                         continue;
                     }
 

+ 6 - 0
Unity/Assets/Scripts/Core/VProcess/Module/CoroutineLock/CoroutineLockComponent.cs

@@ -10,6 +10,12 @@ namespace ET
 
         public override void Dispose()
         {
+            if (this.IsDisposed)
+            {
+                return;
+            }
+            base.Dispose();
+            
             this.nextFrameRun.Clear();
         }
 

+ 1 - 1
Unity/Assets/Scripts/Core/VProcess/Module/Entity/Entity.cs

@@ -26,7 +26,7 @@ namespace ET
 
         public ActorId GetActorId()
         {
-            return new ActorId((short)Options.Instance.Process, this.VProcess().Id, this.InstanceId);
+            return new ActorId(this.VProcess().Process, this.VProcess().Id, this.InstanceId);
         }
 
         protected Entity()

+ 1 - 1
Unity/Assets/Scripts/Core/VProcess/Module/IdGenerater/IdGenerater.cs

@@ -123,7 +123,7 @@ namespace ET
             }
             this.value = IdValueGenerater.Instance.Value;
 
-            IdStruct idStruct = new(this.lastIdTime, (short)Options.Instance.Process, value);
+            IdStruct idStruct = new(this.lastIdTime, (short)this.VProcess.Process, value);
             return idStruct.ToLong();
         }
         

+ 10 - 10
Unity/Assets/Scripts/Core/VProcess/Module/VProcessActor/VProcessActor.cs

@@ -6,7 +6,7 @@ namespace ET
     {
         private readonly Dictionary<int, ETTask<IResponse>> requestCallbacks = new();
 
-        private readonly List<MessageObject> list = new();
+        private readonly List<ActorMessageInfo> list = new();
 
         private int rpcId;
         
@@ -31,13 +31,13 @@ namespace ET
         {
             this.list.Clear();
             WorldActor.Instance.Fetch(this.VProcess.Id, 1000, this.list);
-            foreach (MessageObject messageObject in this.list)
+            foreach (ActorMessageInfo actorMessageInfo in this.list)
             {
-                this.HandleMessage(messageObject);    
+                this.HandleMessage(actorMessageInfo.ActorId, actorMessageInfo.MessageObject);    
             }
         }
         
-        private void HandleMessage(MessageObject messageObject)
+        private void HandleMessage(ActorId actorId, MessageObject messageObject)
         {
             switch (messageObject)
             {
@@ -51,28 +51,28 @@ namespace ET
                 }
                 case IRequest iRequest:
                 {
-                    WorldActor.Instance.Handle(messageObject);
+                    WorldActor.Instance.Handle(actorId, messageObject);
                     break;
                 }
                 default: // IMessage:
                 {
-                    WorldActor.Instance.Handle(messageObject);
+                    WorldActor.Instance.Handle(actorId, messageObject);
                     break;
                 }
             }
         }
         
-        public void Send(int processId, MessageObject messageObject)
+        public void Send(ActorId actorId, MessageObject messageObject)
         {
-            WorldActor.Instance.Send(processId, messageObject);
+            WorldActor.Instance.Send(actorId, messageObject);
         }
         
-        public async ETTask<IResponse> Call(int processId, IRequest request)
+        public async ETTask<IResponse> Call(ActorId actorId, IRequest request)
         {
             ETTask<IResponse> task = ETTask<IResponse>.Create(true);
             request.RpcId = ++this.rpcId;
             this.requestCallbacks.Add(request.RpcId, task);
-            this.Send(processId, request as MessageObject);
+            this.Send(actorId, request as MessageObject);
             return await task;
         }
     }

+ 4 - 1
Unity/Assets/Scripts/Core/VProcess/VProcess.cs

@@ -11,6 +11,8 @@ namespace ET
         
         public int Id { get; private set; }
 
+        public int Process { get; private set; }
+
         public bool IsRuning;
 
         // 保存虚拟进程中的Instance,方便快速获取
@@ -24,9 +26,10 @@ namespace ET
 
         private readonly Queue<ETTask> frameFinishTask = new();
         
-        public VProcess(int id)
+        public VProcess(int process, int id)
         {
             this.Id = id;
+            this.Process = process;
         }
 
         private void Register()

+ 9 - 6
Unity/Assets/Scripts/Core/VProcess/VProcessSingleton.cs

@@ -8,12 +8,7 @@ namespace ET
         bool IsDisposed { get; }
     }
     
-    public interface IInstance<T> where T: class
-    {
-
-    }
-    
-    public abstract class VProcessSingleton<T>: IVProcessSingleton, IInstance<T> where T: VProcessSingleton<T>, new()
+    public abstract class VProcessSingleton<T>: IVProcessSingleton where T: VProcessSingleton<T>, new()
     {
         public VProcess VProcess { get; set; }
 
@@ -25,6 +20,11 @@ namespace ET
             }
         }
 
+        public virtual void Register()
+        {
+            this.VProcess.AddInstance(this);
+        }
+
         public bool IsDisposed
         {
             get
@@ -39,6 +39,9 @@ namespace ET
             {
                 return;
             }
+            
+            this.VProcess.RemoveInstance(typeof(T));
+            
             this.VProcess = null;
         }
     }

+ 0 - 0
Unity/Assets/Scripts/Model/Share/Module/ActorLocation/ActorResponse.cs → Unity/Assets/Scripts/Core/World/Module/Network/ActorResponse.cs


+ 0 - 0
Unity/Assets/Scripts/Model/Share/Module/ActorLocation/ActorResponse.cs.meta → Unity/Assets/Scripts/Core/World/Module/Network/ActorResponse.cs.meta


+ 0 - 0
Unity/Assets/Scripts/Model/Share/Module/ActorLocation/IActorLocationMessage.cs → Unity/Assets/Scripts/Core/World/Module/Network/IActorLocationMessage.cs


+ 0 - 0
Unity/Assets/Scripts/Model/Share/Module/ActorLocation/IActorLocationMessage.cs.meta → Unity/Assets/Scripts/Core/World/Module/Network/IActorLocationMessage.cs.meta


+ 0 - 0
Unity/Assets/Scripts/Model/Share/Module/Actor/IActorMessage.cs → Unity/Assets/Scripts/Core/World/Module/Network/IActorMessage.cs


+ 0 - 0
Unity/Assets/Scripts/Model/Share/Module/Actor/IActorMessage.cs.meta → Unity/Assets/Scripts/Core/World/Module/Network/IActorMessage.cs.meta


+ 2 - 2
Unity/Assets/Scripts/Core/World/Module/Network/KChannel.cs

@@ -505,7 +505,7 @@ namespace ET
 					case ServiceType.Outer:
 					{
 						ushort opcode = BitConverter.ToUInt16(memoryStream.GetBuffer(), Packet.KcpOpcodeIndex);
-						Type type = NetServices.Instance.GetType(opcode);
+						Type type = OpcodeType.Instance.GetType(opcode);
 						message = MessageSerializeHelper.Deserialize(type, memoryStream);
 						break;
 					}
@@ -516,7 +516,7 @@ namespace ET
 						actorId.VProcess = BitConverter.ToInt32(buffer, Packet.ActorIdIndex + 4);
 						actorId.InstanceId = BitConverter.ToInt64(buffer, Packet.ActorIdIndex + 8);
 						ushort opcode = BitConverter.ToUInt16(memoryStream.GetBuffer(), Packet.OpcodeIndex);
-						Type type = NetServices.Instance.GetType(opcode);
+						Type type = OpcodeType.Instance.GetType(opcode);
 						message = MessageSerializeHelper.Deserialize(type, memoryStream);
 						break;
 					}

+ 1 - 1
Unity/Assets/Scripts/Core/World/Module/Network/MessageSerializeHelper.cs

@@ -33,7 +33,7 @@ namespace ET
         {
             int headOffset = Packet.ActorIdLength;
 
-            ushort opcode = NetServices.Instance.GetOpcode(message.GetType());
+            ushort opcode = OpcodeType.Instance.GetOpcode(message.GetType());
             
             stream.Seek(headOffset + Packet.OpcodeLength, SeekOrigin.Begin);
             stream.SetLength(headOffset + Packet.OpcodeLength);

+ 26 - 39
Unity/Assets/Scripts/Core/World/Module/Network/NetServices.cs

@@ -16,46 +16,31 @@ namespace ET
 
     public class NetServices: VProcessSingleton<NetServices>, IVProcessSingletonUpdate
     {
-        public NetServices()
-        {
-            HashSet<Type> types = EventSystem.Instance.GetTypes(typeof (MessageAttribute));
-            foreach (Type type in types)
-            {
-                object[] attrs = type.GetCustomAttributes(typeof (MessageAttribute), false);
-                if (attrs.Length == 0)
-                {
-                    continue;
-                }
-
-                MessageAttribute messageAttribute = attrs[0] as MessageAttribute;
-                if (messageAttribute == null)
-                {
-                    continue;
-                }
+        private readonly Dictionary<int, Action<long, IPEndPoint>> acceptCallback = new();
+        private readonly Dictionary<int, Action<long, ActorId, object>> readCallback = new();
+        private readonly Dictionary<int, Action<long, int>> errorCallback = new();
+        
+        private readonly Dictionary<int, AService> services = new();
+        private readonly Queue<int> queue = new();
 
-                this.typeOpcode.Add(type, messageAttribute.Opcode);
-            }
-        }
+        private readonly Queue<MemoryBuffer> pool = new();
 
-        // 初始化后不变,所以主线程,网络线程都可以读
-        private readonly DoubleMap<Type, ushort> typeOpcode = new();
+        private int serviceIdGenerator;
 
-        public ushort GetOpcode(Type type)
+        public override void Dispose()
         {
-            return this.typeOpcode.GetValueByKey(type);
-        }
+            if (this.IsDisposed)
+            {
+                return;
+            }
+            base.Dispose();
 
-        public Type GetType(ushort opcode)
-        {
-            return this.typeOpcode.GetKeyByValue(opcode);
+            foreach (var kv in this.services)
+            {
+                kv.Value.Dispose();
+            }
         }
 
-        private readonly Dictionary<int, Action<long, IPEndPoint>> acceptCallback = new();
-        private readonly Dictionary<int, Action<long, ActorId, object>> readCallback = new();
-        private readonly Dictionary<int, Action<long, int>> errorCallback = new();
-
-        private int serviceIdGenerator;
-
         public (uint, uint) GetChannelConn(int serviceId, long channelId)
         {
             AService service = this.Get(serviceId);
@@ -83,6 +68,13 @@ namespace ET
             AService service = this.Get(serviceId);
             if (service != null)
             {
+                // 同一进程
+                if (actorId.Process == this.VProcess.Process)
+                {
+                    VProcessActor.Instance.Send(actorId, message);
+                    return;
+                }
+
                 service.Send(channelId, actorId, message);
             }
         }
@@ -131,12 +123,7 @@ namespace ET
         {
             this.errorCallback.Add(serviceId, action);
         }
-
-
-        private readonly Dictionary<int, AService> services = new();
-        private readonly Queue<int> queue = new();
-
-        private readonly Queue<MemoryBuffer> pool = new();
+        
 
         public MemoryBuffer FetchMemoryBuffer()
         {

+ 16 - 0
Unity/Assets/Scripts/Core/World/Module/Network/OpcodeHelper.cs

@@ -0,0 +1,16 @@
+
+namespace ET
+{
+    public static class OpcodeHelper
+    {
+        public static bool IsOuterMessage(ushort opcode)
+        {
+            return opcode < OpcodeRangeDefine.OuterMaxOpcode;
+        }
+
+        public static bool IsInnerMessage(ushort opcode)
+        {
+            return opcode >= OpcodeRangeDefine.InnerMinOpcode;
+        }
+    }
+}

+ 0 - 0
Unity/Assets/Scripts/Model/Share/Module/Message/OpcodeHelper.cs.meta → Unity/Assets/Scripts/Core/World/Module/Network/OpcodeHelper.cs.meta


+ 28 - 34
Unity/Assets/Scripts/Model/Share/Module/Message/OpcodeTypeComponent.cs → Unity/Assets/Scripts/Core/World/Module/Network/OpcodeType.cs

@@ -1,25 +1,19 @@
 using System;
 using System.Collections.Generic;
-using MongoDB.Driver.Core.Events;
 
 namespace ET
 {
-    [FriendOf(typeof (OpcodeTypeComponent))]
-    public static partial class OpcodeTypeComponentSystem
+    public class OpcodeType: Singleton<OpcodeType>, ISingletonAwake
     {
-        [EntitySystem]
-        private static void Destroy(this OpcodeTypeComponent self)
-        {
-            OpcodeTypeComponent.Instance = null;
-        }
+        // 初始化后不变,所以主线程,网络线程都可以读
+        private readonly DoubleMap<Type, ushort> typeOpcode = new();
         
-        [EntitySystem]
-        private static void Awake(this OpcodeTypeComponent self)
-        {
-            OpcodeTypeComponent.Instance = self;
-            
-            self.requestResponse.Clear();
+        private readonly HashSet<ushort> outrActorMessage = new HashSet<ushort>();
 
+        private readonly Dictionary<Type, Type> requestResponse = new Dictionary<Type, Type>();
+        
+        public void Awake()
+        {
             HashSet<Type> types = EventSystem.Instance.GetTypes(typeof (MessageAttribute));
             foreach (Type type in types)
             {
@@ -36,10 +30,12 @@ namespace ET
                 }
 
                 ushort opcode = messageAttribute.Opcode;
+                
+                this.typeOpcode.Add(type, opcode);
 
                 if (OpcodeHelper.IsOuterMessage(opcode) && typeof (IActorMessage).IsAssignableFrom(type))
                 {
-                    self.outrActorMessage.Add(opcode);
+                    this.outrActorMessage.Add(opcode);
                 }
 
                 // 检查request response
@@ -47,7 +43,7 @@ namespace ET
                 {
                     if (typeof (IActorLocationMessage).IsAssignableFrom(type))
                     {
-                        self.requestResponse.Add(type, typeof (ActorResponse));
+                        this.requestResponse.Add(type, typeof (ActorResponse));
                         continue;
                     }
 
@@ -59,36 +55,34 @@ namespace ET
                     }
 
                     ResponseTypeAttribute responseTypeAttribute = attrs[0] as ResponseTypeAttribute;
-                    self.requestResponse.Add(type, EventSystem.Instance.GetType($"ET.{responseTypeAttribute.Type}"));
+                    this.requestResponse.Add(type, EventSystem.Instance.GetType($"ET.{responseTypeAttribute.Type}"));
                 }
             }
         }
+        
+        public ushort GetOpcode(Type type)
+        {
+            return this.typeOpcode.GetValueByKey(type);
+        }
 
-        public static bool IsOutrActorMessage(this OpcodeTypeComponent self, ushort opcode)
+        public Type GetType(ushort opcode)
         {
-            return self.outrActorMessage.Contains(opcode);
+            return this.typeOpcode.GetKeyByValue(opcode);
         }
 
-        public static Type GetResponseType(this OpcodeTypeComponent self, Type request)
+        public bool IsOutrActorMessage(ushort opcode)
         {
-            if (!self.requestResponse.TryGetValue(request, out Type response))
+            return this.outrActorMessage.Contains(opcode);
+        }
+
+        public Type GetResponseType(Type request)
+        {
+            if (!this.requestResponse.TryGetValue(request, out Type response))
             {
-                throw new Exception($"not found response type, request type: {request.GetType().FullName}");
+                throw new Exception($"not found response type, request type: {request.FullName}");
             }
 
             return response;
         }
     }
-
-    [ComponentOf(typeof (Scene))]
-    public class OpcodeTypeComponent: Entity, IAwake, IDestroy
-    {
-        [ThreadStatic]
-        [StaticField]
-        public static OpcodeTypeComponent Instance;
-
-        public HashSet<ushort> outrActorMessage = new HashSet<ushort>();
-
-        public readonly Dictionary<Type, Type> requestResponse = new Dictionary<Type, Type>();
-    }
 }

+ 0 - 0
Unity/Assets/Scripts/Model/Share/Module/Message/OpcodeTypeComponent.cs.meta → Unity/Assets/Scripts/Core/World/Module/Network/OpcodeType.cs.meta


+ 0 - 0
Unity/Assets/Scripts/Model/Share/Module/Message/ResponseTypeAttribute.cs → Unity/Assets/Scripts/Core/World/Module/Network/ResponseTypeAttribute.cs


+ 0 - 0
Unity/Assets/Scripts/Model/Share/Module/Message/ResponseTypeAttribute.cs.meta → Unity/Assets/Scripts/Core/World/Module/Network/ResponseTypeAttribute.cs.meta


+ 2 - 2
Unity/Assets/Scripts/Core/World/Module/Network/TChannel.cs

@@ -368,7 +368,7 @@ namespace ET
 					case ServiceType.Outer:
 					{
 						ushort opcode = BitConverter.ToUInt16(memoryStream.GetBuffer(), Packet.KcpOpcodeIndex);
-						Type type = NetServices.Instance.GetType(opcode);
+						Type type = OpcodeType.Instance.GetType(opcode);
 						message = MessageSerializeHelper.Deserialize(type, memoryStream);
 						break;
 					}
@@ -379,7 +379,7 @@ namespace ET
 						actorId.VProcess = BitConverter.ToInt32(buffer, Packet.ActorIdIndex + 4);
 						actorId.InstanceId = BitConverter.ToInt64(buffer, Packet.ActorIdIndex + 8);
 						ushort opcode = BitConverter.ToUInt16(buffer, Packet.OpcodeIndex);
-						Type type = NetServices.Instance.GetType(opcode);
+						Type type = OpcodeType.Instance.GetType(opcode);
 						message = MessageSerializeHelper.Deserialize(type, memoryStream);
 						break;
 					}

+ 1 - 1
Unity/Assets/Scripts/Core/World/Module/Network/WChannel.cs

@@ -225,7 +225,7 @@ namespace ET
                     case ServiceType.Outer:
                     {
                         ushort opcode = BitConverter.ToUInt16(memoryStream.GetBuffer(), Packet.KcpOpcodeIndex);
-                        Type type = NetServices.Instance.GetType(opcode);
+                        Type type = OpcodeType.Instance.GetType(opcode);
                         message = MessageSerializeHelper.Deserialize(type, memoryStream);
                         break;
                     }

+ 0 - 0
Unity/Assets/Scripts/Core/World/Module/VProcessScheduler.meta → Unity/Assets/Scripts/Core/World/Module/Scheduler.meta


+ 7 - 0
Unity/Assets/Scripts/Core/World/Module/Scheduler/IScheduler.cs

@@ -0,0 +1,7 @@
+namespace ET
+{
+    public interface IScheduler
+    {
+        void Add(int vProcessId);
+    }
+}

+ 0 - 0
Unity/Assets/Scripts/Core/World/Module/VProcessScheduler/IVProcessScheduler.cs.meta → Unity/Assets/Scripts/Core/World/Module/Scheduler/IScheduler.cs.meta


+ 2 - 4
Unity/Assets/Scripts/Core/World/Module/VProcessScheduler/MainThreadScheduler.cs → Unity/Assets/Scripts/Core/World/Module/Scheduler/MainThreadScheduler.cs

@@ -4,7 +4,7 @@ namespace ET
 {
     public partial class VProcessManager: Singleton<VProcessManager>
     {
-        public class MainThreadScheduler: Singleton<MainThreadScheduler>, IVProcessScheduler
+        public class MainThreadScheduler: Singleton<MainThreadScheduler>, IScheduler
         {
             private readonly Queue<int> idQueue = new();
             private readonly Queue<int> addIds = new();
@@ -62,11 +62,9 @@ namespace ET
                 }
             }
 
-            public int Create(int vProcessId = 0)
+            public void Add(int vProcessId = 0)
             {
-                vProcessId = VProcessManager.Instance.Create(vProcessId);
                 this.addIds.Enqueue(vProcessId);
-                return vProcessId;
             }
         }
     }

+ 0 - 0
Unity/Assets/Scripts/Core/World/Module/VProcessScheduler/MainThreadScheduler.cs.meta → Unity/Assets/Scripts/Core/World/Module/Scheduler/MainThreadScheduler.cs.meta


+ 5 - 6
Unity/Assets/Scripts/Core/World/Module/VProcessScheduler/ThreadPoolScheduler.cs → Unity/Assets/Scripts/Core/World/Module/Scheduler/ThreadPoolScheduler.cs

@@ -7,19 +7,20 @@ namespace ET
 {
     public partial class VProcessManager: Singleton<VProcessManager>
     {
-        public class ThreadPoolScheduler: Singleton<ThreadPoolScheduler>, IVProcessScheduler, IAwake
+        public class ThreadPoolScheduler: Singleton<ThreadPoolScheduler>, IScheduler, ISingletonAwake<int>
         {
             private bool isStart;
 
             private readonly HashSet<Thread> threads = new();
 
-            public int ThreadCount { get; set; }
+            private int ThreadCount { get; set; }
 
             private readonly ConcurrentQueue<int> idQueue = new();
 
-            public void Awake()
+            public void Awake(int count)
             {
                 this.isStart = true;
+                this.ThreadCount = count;
                 for (int i = 0; i < this.ThreadCount; ++i)
                 {
                     this.threads.Add(new Thread(this.Loop));
@@ -79,11 +80,9 @@ namespace ET
                 }
             }
 
-            public int Create(int vProcessId = 0)
+            public void Add(int vProcessId)
             {
-                vProcessId = VProcessManager.Instance.Create(vProcessId);
                 this.idQueue.Enqueue(vProcessId);
-                return vProcessId;
             }
         }
     }

+ 0 - 0
Unity/Assets/Scripts/Core/World/Module/VProcessScheduler/ThreadPoolScheduler.cs.meta → Unity/Assets/Scripts/Core/World/Module/Scheduler/ThreadPoolScheduler.cs.meta


+ 2 - 4
Unity/Assets/Scripts/Core/World/Module/VProcessScheduler/ThreadScheduler.cs → Unity/Assets/Scripts/Core/World/Module/Scheduler/ThreadScheduler.cs

@@ -8,7 +8,7 @@ namespace ET
     public partial class VProcessManager: Singleton<VProcessManager>
     {
         // 一个Process一个固定的线程
-        public class ThreadScheduler: Singleton<ThreadScheduler>, IVProcessScheduler
+        public class ThreadScheduler: Singleton<ThreadScheduler>, IScheduler
         {
             private bool isStart;
 
@@ -54,12 +54,10 @@ namespace ET
                 }
             }
 
-            public int Create(int vProcessId = 0)
+            public void Add(int vProcessId)
             {
-                vProcessId = VProcessManager.Instance.Create(vProcessId);
                 Thread thread = new(() => this.Loop(vProcessId));
                 thread.Start();
-                return vProcessId;
             }
         }
     }

+ 0 - 0
Unity/Assets/Scripts/Core/World/Module/VProcessScheduler/ThreadScheduler.cs.meta → Unity/Assets/Scripts/Core/World/Module/Scheduler/ThreadScheduler.cs.meta


+ 3 - 3
Unity/Assets/Scripts/Core/World/Module/VProcess/VProcessManager.cs

@@ -15,15 +15,15 @@ namespace ET
                 {
                     processId = --this.idGenerator;
                 }
-                VProcess vProcess = new(processId);
+                VProcess vProcess = new(Options.Instance.Process, processId);
                 vProcess.AddSingleton<Root>();
                 vProcess.AddSingleton<EntitySystem>();
                 this.vProcesses.TryAdd(vProcess.Id, vProcess);
-                return vProcess.Id;
+                return processId;
             }
         }
         
-        // 不允许外部调用,容易出现多线程问题
+        // 不允许外部调用,只能由Schecher执行完成一帧调用否则容易出现多线程问题
         private void Remove(int id)
         {
             lock (this)

+ 0 - 7
Unity/Assets/Scripts/Core/World/Module/VProcessScheduler/IVProcessScheduler.cs

@@ -1,7 +0,0 @@
-namespace ET
-{
-    public interface IVProcessScheduler: IVProcessSingletonAwake
-    {
-        int Create(int vProcessId = 0);
-    }
-}

+ 1 - 1
Unity/Assets/Scripts/Core/World/Module/WorldActor/IProcessActorHandler.cs

@@ -2,7 +2,7 @@
 {
     public interface IProcessActorHandler
     {
-        void Handle(MessageObject messageObject);
+        void Handle(ActorId actorId, MessageObject messageObject);
         System.Type GetMessageType();
     }
 }

+ 3 - 4
Unity/Assets/Scripts/Core/World/Module/WorldActor/ProcessActorHandler.cs

@@ -7,7 +7,7 @@ namespace ET
     {
         protected abstract void Run(T messageObject);
 
-        public void Handle(MessageObject messageObject)
+        public void Handle(ActorId actorId, MessageObject messageObject)
         {
             this.Run((T)messageObject);
         }
@@ -23,13 +23,12 @@ namespace ET
     {
         protected abstract void Run(Request request, Response response);
 
-        public void Handle(MessageObject messageObject)
+        public void Handle(ActorId actorId, MessageObject messageObject)
         {
             Request request = (Request)messageObject;
-            int processId = request.ProcessId;
             Response response = new();
             this.Run(request, response);
-            VProcessActor.Instance.Send(processId, response);
+            VProcessActor.Instance.Send(actorId, response);
         }
 
         public Type GetMessageType()

+ 15 - 9
Unity/Assets/Scripts/Core/World/Module/WorldActor/WorldActor.cs

@@ -4,11 +4,17 @@ using System.Collections.Generic;
 
 namespace ET
 {
+    public struct ActorMessageInfo
+    {
+        public ActorId ActorId;
+        public MessageObject MessageObject;
+    }
+    
     public class WorldActor: Singleton<WorldActor>, ISingletonAwake, IVProcessSingletonLoad
     {
         private readonly Dictionary<Type, List<IProcessActorHandler>> handlers = new();
 
-        private readonly ConcurrentDictionary<int, ConcurrentQueue<MessageObject>> messages = new();
+        private readonly ConcurrentDictionary<int, ConcurrentQueue<ActorMessageInfo>> messages = new();
         
         public void Awake()
         {
@@ -37,7 +43,7 @@ namespace ET
             }
         }
 
-        public void Handle(MessageObject messageObject)
+        public void Handle(ActorId actorId, MessageObject messageObject)
         {
             if (!this.handlers.TryGetValue(messageObject.GetType(), out var list))
             {
@@ -46,20 +52,20 @@ namespace ET
 
             foreach (IProcessActorHandler processActorHandler in list)
             {
-                processActorHandler.Handle(messageObject);
+                processActorHandler.Handle(actorId, messageObject);
             }
         }
         
-        public void Send(int processId, MessageObject messageObject)
+        public void Send(ActorId actorId, MessageObject messageObject)
         {
-            if (!this.messages.TryGetValue(processId, out var queue))
+            if (!this.messages.TryGetValue(actorId.VProcess, out var queue))
             {
                 return;
             }
-            queue.Enqueue(messageObject);
+            queue.Enqueue(new ActorMessageInfo() {ActorId = actorId, MessageObject = messageObject});
         }
         
-        public void Fetch(int processId, int count, List<MessageObject> list)
+        public void Fetch(int processId, int count, List<ActorMessageInfo> list)
         {
             if (!this.messages.TryGetValue(processId, out var queue))
             {
@@ -68,7 +74,7 @@ namespace ET
 
             for (int i = 0; i < count; ++i)
             {
-                if (!queue.TryDequeue(out var message))
+                if (!queue.TryDequeue(out ActorMessageInfo message))
                 {
                     break;
                 }
@@ -78,7 +84,7 @@ namespace ET
 
         public void AddActor(int processId)
         {
-            var queue = new ConcurrentQueue<MessageObject>();
+            var queue = new ConcurrentQueue<ActorMessageInfo>();
             this.messages[processId] = queue;
         }
         

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

@@ -1,5 +1,6 @@
 using System.Net;
 using System.Net.Sockets;
+using MongoDB.Bson;
 
 namespace ET.Client
 {
@@ -30,7 +31,7 @@ namespace ET.Client
 
             session.LastRecvTime = TimeHelper.ClientNow();
             
-            self.LogMsg(message);
+            Log.Debug(message.ToJson());
             
             EventSystem.Instance.Publish(self.IScene, new NetClientComponentOnRead() {Session = session, Message = message});
         }

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/Module/Actor/ActorHandleHelper.cs

@@ -6,7 +6,7 @@ namespace ET.Server
     {
         public static void Reply(ActorId actorId, IActorResponse response)
         {
-            if (actorId.Process == Options.Instance.Process) // 返回消息是同一个进程
+            if (actorId.Process == VProcess.Instance.Process) // 返回消息是同一个进程
             {
                 async ETTask HandleMessageInNextFrame()
                 {

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/Module/Actor/ActorHelper.cs

@@ -7,7 +7,7 @@ namespace ET.Server
     {
         public static IActorResponse CreateResponse(IActorRequest iActorRequest, int error)
         {
-            Type responseType = OpcodeTypeComponent.Instance.GetResponseType(iActorRequest.GetType());
+            Type responseType = OpcodeType.Instance.GetResponseType(iActorRequest.GetType());
             IActorResponse response = (IActorResponse)Activator.CreateInstance(responseType);
             response.Error = error;
             response.RpcId = iActorRequest.RpcId;

+ 3 - 2
Unity/Assets/Scripts/Hotfix/Server/Module/Actor/ActorMessageDispatcherComponentSystem.cs

@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using MongoDB.Bson;
 
 namespace ET.Server
 {
@@ -65,7 +66,7 @@ namespace ET.Server
                 Type handleResponseType = imHandler.GetResponseType();
                 if (handleResponseType != null)
                 {
-                    Type responseType = OpcodeTypeComponent.Instance.GetResponseType(messageType);
+                    Type responseType = OpcodeType.Instance.GetResponseType(messageType);
                     if (handleResponseType != responseType)
                     {
                         throw new Exception($"message handler response type error: {messageType.FullName}");
@@ -122,7 +123,7 @@ namespace ET.Server
                 return;
             }
             
-            self.LogMsg(iActorRequest);
+            Log.Debug(iActorRequest.ToJson());
 
             MailBoxComponent mailBoxComponent = entity.GetComponent<MailBoxComponent>();
             if (mailBoxComponent == null)

+ 1 - 1
Unity/Assets/Scripts/Hotfix/Server/Module/Actor/ActorMessageSenderComponentSystem.cs

@@ -97,7 +97,7 @@ namespace ET.Server
             
             
             // 这里做了优化,如果发向同一个进程,则等一帧直接处理,不需要通过网络层
-            if (actorId.Process == Options.Instance.Process)
+            if (actorId.Process == VProcess.Instance.Process)
             {
                 async ETTask HandleMessageInNextFrame()
                 {

+ 2 - 1
Unity/Assets/Scripts/Hotfix/Server/Module/Message/NetServerComponentSystem.cs

@@ -1,4 +1,5 @@
 using System.Net;
+using MongoDB.Bson;
 
 namespace ET.Server
 {
@@ -56,7 +57,7 @@ namespace ET.Server
             }
             session.LastRecvTime = TimeHelper.ClientNow();
             
-            self.LogMsg(message);
+            Log.Debug(message.ToJson());
 			
             EventSystem.Instance.Publish(self.IScene, new NetServerComponentOnRead() {Session = session, Message = message});
         }

+ 0 - 1
Unity/Assets/Scripts/Hotfix/Share/Demo/EntryEvent1_InitShare.cs

@@ -5,7 +5,6 @@ namespace ET
     {
         protected override async ETTask Run(Scene scene, EventType.EntryEvent1 args)
         {
-            scene.AddComponent<OpcodeTypeComponent>();
             scene.AddComponent<MessageDispatcherComponent>();
             scene.AddComponent<NumericWatcherComponent>();
             scene.AddComponent<AIDispatcherComponent>();

+ 2 - 2
Unity/Assets/Scripts/Hotfix/Share/Module/Message/MessageDispatcherComponentSystem.cs

@@ -48,7 +48,7 @@ namespace ET
                     
                     Type messageType = iMHandler.GetMessageType();
                     
-                    ushort opcode = NetServices.Instance.GetOpcode(messageType);
+                    ushort opcode = OpcodeType.Instance.GetOpcode(messageType);
                     if (opcode == 0)
                     {
                         Log.Error($"消息opcode为0: {messageType.Name}");
@@ -74,7 +74,7 @@ namespace ET
         public static void Handle(this MessageDispatcherComponent self, Session session, object message)
         {
             List<MessageDispatcherInfo> actions;
-            ushort opcode = NetServices.Instance.GetOpcode(message.GetType());
+            ushort opcode = OpcodeType.Instance.GetOpcode(message.GetType());
             if (!self.Handlers.TryGetValue(opcode, out actions))
             {
                 Log.Error($"消息没有处理: {opcode} {message}");

+ 4 - 2
Unity/Assets/Scripts/Loader/MonoBehaviour/Init.cs

@@ -24,6 +24,7 @@ namespace ET
 			
 			World.Instance.AddSingleton<Logger>().ILog = new UnityLogger();
 			ETTask.ExceptionHandler += Log.Error;
+			World.Instance.AddSingleton<OpcodeType>();
 			World.Instance.AddSingleton<IdValueGenerater>();
 			World.Instance.AddSingleton<ObjectPool>();
 			World.Instance.AddSingleton<WorldActor>();
@@ -31,10 +32,11 @@ namespace ET
 			World.Instance.AddSingleton<VProcessManager>();
 			VProcessManager.MainThreadScheduler mainThreadScheduler = World.Instance.AddSingleton<VProcessManager.MainThreadScheduler>();
 
-			int vProcessId = mainThreadScheduler.Create();
+			int vProcessId = VProcessManager.Instance.Create();
+			mainThreadScheduler.Add(vProcessId);
 			
 			// 发送消息
-			WorldActor.Instance.Send(vProcessId, null);
+			WorldActor.Instance.Send(new ActorId(Options.Instance.Process, vProcessId, 0), null);
 		}
 
 		private void Update()

+ 46 - 46
Unity/Assets/Scripts/Model/Generate/Server/Message/InnerMessage_S_20001.cs

@@ -9,9 +9,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectQueryRequest: MessageObject, IActorRequest
 	{
-		public static ObjectQueryRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectQueryRequest() : NetServices.Instance.FetchMessage(typeof(ObjectQueryRequest)) as ObjectQueryRequest; }
+		public static ObjectQueryRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectQueryRequest() : ObjectPool.Instance.Fetch(typeof(ObjectQueryRequest)) as ObjectQueryRequest; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -29,9 +29,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2A_Reload: MessageObject, IActorRequest
 	{
-		public static M2A_Reload Create(bool isFromPool = false) { return !isFromPool? new M2A_Reload() : NetServices.Instance.FetchMessage(typeof(M2A_Reload)) as M2A_Reload; }
+		public static M2A_Reload Create(bool isFromPool = false) { return !isFromPool? new M2A_Reload() : ObjectPool.Instance.Fetch(typeof(M2A_Reload)) as M2A_Reload; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -42,9 +42,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class A2M_Reload: MessageObject, IActorResponse
 	{
-		public static A2M_Reload Create(bool isFromPool = false) { return !isFromPool? new A2M_Reload() : NetServices.Instance.FetchMessage(typeof(A2M_Reload)) as A2M_Reload; }
+		public static A2M_Reload Create(bool isFromPool = false) { return !isFromPool? new A2M_Reload() : ObjectPool.Instance.Fetch(typeof(A2M_Reload)) as A2M_Reload; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -62,9 +62,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2G_LockRequest: MessageObject, IActorRequest
 	{
-		public static G2G_LockRequest Create(bool isFromPool = false) { return !isFromPool? new G2G_LockRequest() : NetServices.Instance.FetchMessage(typeof(G2G_LockRequest)) as G2G_LockRequest; }
+		public static G2G_LockRequest Create(bool isFromPool = false) { return !isFromPool? new G2G_LockRequest() : ObjectPool.Instance.Fetch(typeof(G2G_LockRequest)) as G2G_LockRequest; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -81,9 +81,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2G_LockResponse: MessageObject, IActorResponse
 	{
-		public static G2G_LockResponse Create(bool isFromPool = false) { return !isFromPool? new G2G_LockResponse() : NetServices.Instance.FetchMessage(typeof(G2G_LockResponse)) as G2G_LockResponse; }
+		public static G2G_LockResponse Create(bool isFromPool = false) { return !isFromPool? new G2G_LockResponse() : ObjectPool.Instance.Fetch(typeof(G2G_LockResponse)) as G2G_LockResponse; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -101,9 +101,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2G_LockReleaseRequest: MessageObject, IActorRequest
 	{
-		public static G2G_LockReleaseRequest Create(bool isFromPool = false) { return !isFromPool? new G2G_LockReleaseRequest() : NetServices.Instance.FetchMessage(typeof(G2G_LockReleaseRequest)) as G2G_LockReleaseRequest; }
+		public static G2G_LockReleaseRequest Create(bool isFromPool = false) { return !isFromPool? new G2G_LockReleaseRequest() : ObjectPool.Instance.Fetch(typeof(G2G_LockReleaseRequest)) as G2G_LockReleaseRequest; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -120,9 +120,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2G_LockReleaseResponse: MessageObject, IActorResponse
 	{
-		public static G2G_LockReleaseResponse Create(bool isFromPool = false) { return !isFromPool? new G2G_LockReleaseResponse() : NetServices.Instance.FetchMessage(typeof(G2G_LockReleaseResponse)) as G2G_LockReleaseResponse; }
+		public static G2G_LockReleaseResponse Create(bool isFromPool = false) { return !isFromPool? new G2G_LockReleaseResponse() : ObjectPool.Instance.Fetch(typeof(G2G_LockReleaseResponse)) as G2G_LockReleaseResponse; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -140,9 +140,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectAddRequest: MessageObject, IActorRequest
 	{
-		public static ObjectAddRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectAddRequest() : NetServices.Instance.FetchMessage(typeof(ObjectAddRequest)) as ObjectAddRequest; }
+		public static ObjectAddRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectAddRequest() : ObjectPool.Instance.Fetch(typeof(ObjectAddRequest)) as ObjectAddRequest; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -162,9 +162,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectAddResponse: MessageObject, IActorResponse
 	{
-		public static ObjectAddResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectAddResponse() : NetServices.Instance.FetchMessage(typeof(ObjectAddResponse)) as ObjectAddResponse; }
+		public static ObjectAddResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectAddResponse() : ObjectPool.Instance.Fetch(typeof(ObjectAddResponse)) as ObjectAddResponse; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -182,9 +182,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectLockRequest: MessageObject, IActorRequest
 	{
-		public static ObjectLockRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectLockRequest() : NetServices.Instance.FetchMessage(typeof(ObjectLockRequest)) as ObjectLockRequest; }
+		public static ObjectLockRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectLockRequest() : ObjectPool.Instance.Fetch(typeof(ObjectLockRequest)) as ObjectLockRequest; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -207,9 +207,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectLockResponse: MessageObject, IActorResponse
 	{
-		public static ObjectLockResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectLockResponse() : NetServices.Instance.FetchMessage(typeof(ObjectLockResponse)) as ObjectLockResponse; }
+		public static ObjectLockResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectLockResponse() : ObjectPool.Instance.Fetch(typeof(ObjectLockResponse)) as ObjectLockResponse; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -227,9 +227,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectUnLockRequest: MessageObject, IActorRequest
 	{
-		public static ObjectUnLockRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectUnLockRequest() : NetServices.Instance.FetchMessage(typeof(ObjectUnLockRequest)) as ObjectUnLockRequest; }
+		public static ObjectUnLockRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectUnLockRequest() : ObjectPool.Instance.Fetch(typeof(ObjectUnLockRequest)) as ObjectUnLockRequest; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -252,9 +252,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectUnLockResponse: MessageObject, IActorResponse
 	{
-		public static ObjectUnLockResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectUnLockResponse() : NetServices.Instance.FetchMessage(typeof(ObjectUnLockResponse)) as ObjectUnLockResponse; }
+		public static ObjectUnLockResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectUnLockResponse() : ObjectPool.Instance.Fetch(typeof(ObjectUnLockResponse)) as ObjectUnLockResponse; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -272,9 +272,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectRemoveRequest: MessageObject, IActorRequest
 	{
-		public static ObjectRemoveRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectRemoveRequest() : NetServices.Instance.FetchMessage(typeof(ObjectRemoveRequest)) as ObjectRemoveRequest; }
+		public static ObjectRemoveRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectRemoveRequest() : ObjectPool.Instance.Fetch(typeof(ObjectRemoveRequest)) as ObjectRemoveRequest; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -291,9 +291,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectRemoveResponse: MessageObject, IActorResponse
 	{
-		public static ObjectRemoveResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectRemoveResponse() : NetServices.Instance.FetchMessage(typeof(ObjectRemoveResponse)) as ObjectRemoveResponse; }
+		public static ObjectRemoveResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectRemoveResponse() : ObjectPool.Instance.Fetch(typeof(ObjectRemoveResponse)) as ObjectRemoveResponse; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -311,9 +311,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectGetRequest: MessageObject, IActorRequest
 	{
-		public static ObjectGetRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectGetRequest() : NetServices.Instance.FetchMessage(typeof(ObjectGetRequest)) as ObjectGetRequest; }
+		public static ObjectGetRequest Create(bool isFromPool = false) { return !isFromPool? new ObjectGetRequest() : ObjectPool.Instance.Fetch(typeof(ObjectGetRequest)) as ObjectGetRequest; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -330,9 +330,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectGetResponse: MessageObject, IActorResponse
 	{
-		public static ObjectGetResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectGetResponse() : NetServices.Instance.FetchMessage(typeof(ObjectGetResponse)) as ObjectGetResponse; }
+		public static ObjectGetResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectGetResponse() : ObjectPool.Instance.Fetch(typeof(ObjectGetResponse)) as ObjectGetResponse; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -356,9 +356,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class R2G_GetLoginKey: MessageObject, IActorRequest
 	{
-		public static R2G_GetLoginKey Create(bool isFromPool = false) { return !isFromPool? new R2G_GetLoginKey() : NetServices.Instance.FetchMessage(typeof(R2G_GetLoginKey)) as R2G_GetLoginKey; }
+		public static R2G_GetLoginKey Create(bool isFromPool = false) { return !isFromPool? new R2G_GetLoginKey() : ObjectPool.Instance.Fetch(typeof(R2G_GetLoginKey)) as R2G_GetLoginKey; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -372,9 +372,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2R_GetLoginKey: MessageObject, IActorResponse
 	{
-		public static G2R_GetLoginKey Create(bool isFromPool = false) { return !isFromPool? new G2R_GetLoginKey() : NetServices.Instance.FetchMessage(typeof(G2R_GetLoginKey)) as G2R_GetLoginKey; }
+		public static G2R_GetLoginKey Create(bool isFromPool = false) { return !isFromPool? new G2R_GetLoginKey() : ObjectPool.Instance.Fetch(typeof(G2R_GetLoginKey)) as G2R_GetLoginKey; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -397,9 +397,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2M_SessionDisconnect: MessageObject, IActorLocationMessage
 	{
-		public static G2M_SessionDisconnect Create(bool isFromPool = false) { return !isFromPool? new G2M_SessionDisconnect() : NetServices.Instance.FetchMessage(typeof(G2M_SessionDisconnect)) as G2M_SessionDisconnect; }
+		public static G2M_SessionDisconnect Create(bool isFromPool = false) { return !isFromPool? new G2M_SessionDisconnect() : ObjectPool.Instance.Fetch(typeof(G2M_SessionDisconnect)) as G2M_SessionDisconnect; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -410,9 +410,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class ObjectQueryResponse: MessageObject, IActorResponse
 	{
-		public static ObjectQueryResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectQueryResponse() : NetServices.Instance.FetchMessage(typeof(ObjectQueryResponse)) as ObjectQueryResponse; }
+		public static ObjectQueryResponse Create(bool isFromPool = false) { return !isFromPool? new ObjectQueryResponse() : ObjectPool.Instance.Fetch(typeof(ObjectQueryResponse)) as ObjectQueryResponse; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -433,9 +433,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2M_UnitTransferRequest: MessageObject, IActorRequest
 	{
-		public static M2M_UnitTransferRequest Create(bool isFromPool = false) { return !isFromPool? new M2M_UnitTransferRequest() : NetServices.Instance.FetchMessage(typeof(M2M_UnitTransferRequest)) as M2M_UnitTransferRequest; }
+		public static M2M_UnitTransferRequest Create(bool isFromPool = false) { return !isFromPool? new M2M_UnitTransferRequest() : ObjectPool.Instance.Fetch(typeof(M2M_UnitTransferRequest)) as M2M_UnitTransferRequest; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -455,9 +455,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2M_UnitTransferResponse: MessageObject, IActorResponse
 	{
-		public static M2M_UnitTransferResponse Create(bool isFromPool = false) { return !isFromPool? new M2M_UnitTransferResponse() : NetServices.Instance.FetchMessage(typeof(M2M_UnitTransferResponse)) as M2M_UnitTransferResponse; }
+		public static M2M_UnitTransferResponse Create(bool isFromPool = false) { return !isFromPool? new M2M_UnitTransferResponse() : ObjectPool.Instance.Fetch(typeof(M2M_UnitTransferResponse)) as M2M_UnitTransferResponse; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }

+ 12 - 12
Unity/Assets/Scripts/Model/Generate/Server/Message/LockStepInner_S_21001.cs

@@ -9,9 +9,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2Match_Match: MessageObject, IActorRequest
 	{
-		public static G2Match_Match Create(bool isFromPool = false) { return !isFromPool? new G2Match_Match() : NetServices.Instance.FetchMessage(typeof(G2Match_Match)) as G2Match_Match; }
+		public static G2Match_Match Create(bool isFromPool = false) { return !isFromPool? new G2Match_Match() : ObjectPool.Instance.Fetch(typeof(G2Match_Match)) as G2Match_Match; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -25,9 +25,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class Match2G_Match: MessageObject, IActorResponse
 	{
-		public static Match2G_Match Create(bool isFromPool = false) { return !isFromPool? new Match2G_Match() : NetServices.Instance.FetchMessage(typeof(Match2G_Match)) as Match2G_Match; }
+		public static Match2G_Match Create(bool isFromPool = false) { return !isFromPool? new Match2G_Match() : ObjectPool.Instance.Fetch(typeof(Match2G_Match)) as Match2G_Match; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -45,9 +45,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class Match2Map_GetRoom: MessageObject, IActorRequest
 	{
-		public static Match2Map_GetRoom Create(bool isFromPool = false) { return !isFromPool? new Match2Map_GetRoom() : NetServices.Instance.FetchMessage(typeof(Match2Map_GetRoom)) as Match2Map_GetRoom; }
+		public static Match2Map_GetRoom Create(bool isFromPool = false) { return !isFromPool? new Match2Map_GetRoom() : ObjectPool.Instance.Fetch(typeof(Match2Map_GetRoom)) as Match2Map_GetRoom; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -61,9 +61,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class Map2Match_GetRoom: MessageObject, IActorResponse
 	{
-		public static Map2Match_GetRoom Create(bool isFromPool = false) { return !isFromPool? new Map2Match_GetRoom() : NetServices.Instance.FetchMessage(typeof(Map2Match_GetRoom)) as Map2Match_GetRoom; }
+		public static Map2Match_GetRoom Create(bool isFromPool = false) { return !isFromPool? new Map2Match_GetRoom() : ObjectPool.Instance.Fetch(typeof(Map2Match_GetRoom)) as Map2Match_GetRoom; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -85,9 +85,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2Room_Reconnect: MessageObject, IActorRequest
 	{
-		public static G2Room_Reconnect Create(bool isFromPool = false) { return !isFromPool? new G2Room_Reconnect() : NetServices.Instance.FetchMessage(typeof(G2Room_Reconnect)) as G2Room_Reconnect; }
+		public static G2Room_Reconnect Create(bool isFromPool = false) { return !isFromPool? new G2Room_Reconnect() : ObjectPool.Instance.Fetch(typeof(G2Room_Reconnect)) as G2Room_Reconnect; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -101,9 +101,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class Room2G_Reconnect: MessageObject, IActorResponse
 	{
-		public static Room2G_Reconnect Create(bool isFromPool = false) { return !isFromPool? new Room2G_Reconnect() : NetServices.Instance.FetchMessage(typeof(Room2G_Reconnect)) as Room2G_Reconnect; }
+		public static Room2G_Reconnect Create(bool isFromPool = false) { return !isFromPool? new Room2G_Reconnect() : ObjectPool.Instance.Fetch(typeof(Room2G_Reconnect)) as Room2G_Reconnect; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }

+ 24 - 24
Unity/Assets/Scripts/Model/Generate/Server/Message/LockStepOuter_C_11001.cs

@@ -8,9 +8,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2G_Match: MessageObject, IRequest
 	{
-		public static C2G_Match Create(bool isFromPool = false) { return !isFromPool? new C2G_Match() : NetServices.Instance.FetchMessage(typeof(C2G_Match)) as C2G_Match; }
+		public static C2G_Match Create(bool isFromPool = false) { return !isFromPool? new C2G_Match() : ObjectPool.Instance.Fetch(typeof(C2G_Match)) as C2G_Match; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -21,9 +21,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2C_Match: MessageObject, IResponse
 	{
-		public static G2C_Match Create(bool isFromPool = false) { return !isFromPool? new G2C_Match() : NetServices.Instance.FetchMessage(typeof(G2C_Match)) as G2C_Match; }
+		public static G2C_Match Create(bool isFromPool = false) { return !isFromPool? new G2C_Match() : ObjectPool.Instance.Fetch(typeof(G2C_Match)) as G2C_Match; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -41,9 +41,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class Match2G_NotifyMatchSuccess: MessageObject, IActorMessage
 	{
-		public static Match2G_NotifyMatchSuccess Create(bool isFromPool = false) { return !isFromPool? new Match2G_NotifyMatchSuccess() : NetServices.Instance.FetchMessage(typeof(Match2G_NotifyMatchSuccess)) as Match2G_NotifyMatchSuccess; }
+		public static Match2G_NotifyMatchSuccess Create(bool isFromPool = false) { return !isFromPool? new Match2G_NotifyMatchSuccess() : ObjectPool.Instance.Fetch(typeof(Match2G_NotifyMatchSuccess)) as Match2G_NotifyMatchSuccess; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -59,9 +59,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2Room_ChangeSceneFinish: MessageObject, IActorRoom
 	{
-		public static C2Room_ChangeSceneFinish Create(bool isFromPool = false) { return !isFromPool? new C2Room_ChangeSceneFinish() : NetServices.Instance.FetchMessage(typeof(C2Room_ChangeSceneFinish)) as C2Room_ChangeSceneFinish; }
+		public static C2Room_ChangeSceneFinish Create(bool isFromPool = false) { return !isFromPool? new C2Room_ChangeSceneFinish() : ObjectPool.Instance.Fetch(typeof(C2Room_ChangeSceneFinish)) as C2Room_ChangeSceneFinish; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
@@ -72,9 +72,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class LockStepUnitInfo: MessageObject
 	{
-		public static LockStepUnitInfo Create(bool isFromPool = false) { return !isFromPool? new LockStepUnitInfo() : NetServices.Instance.FetchMessage(typeof(LockStepUnitInfo)) as LockStepUnitInfo; }
+		public static LockStepUnitInfo Create(bool isFromPool = false) { return !isFromPool? new LockStepUnitInfo() : ObjectPool.Instance.Fetch(typeof(LockStepUnitInfo)) as LockStepUnitInfo; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
@@ -92,9 +92,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class Room2C_Start: MessageObject, IActorMessage
 	{
-		public static Room2C_Start Create(bool isFromPool = false) { return !isFromPool? new Room2C_Start() : NetServices.Instance.FetchMessage(typeof(Room2C_Start)) as Room2C_Start; }
+		public static Room2C_Start Create(bool isFromPool = false) { return !isFromPool? new Room2C_Start() : ObjectPool.Instance.Fetch(typeof(Room2C_Start)) as Room2C_Start; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public long StartTime { get; set; }
@@ -108,9 +108,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class FrameMessage: MessageObject, IActorMessage
 	{
-		public static FrameMessage Create(bool isFromPool = false) { return !isFromPool? new FrameMessage() : NetServices.Instance.FetchMessage(typeof(FrameMessage)) as FrameMessage; }
+		public static FrameMessage Create(bool isFromPool = false) { return !isFromPool? new FrameMessage() : ObjectPool.Instance.Fetch(typeof(FrameMessage)) as FrameMessage; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int Frame { get; set; }
@@ -127,9 +127,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class OneFrameInputs: MessageObject, IActorMessage
 	{
-		public static OneFrameInputs Create(bool isFromPool = false) { return !isFromPool? new OneFrameInputs() : NetServices.Instance.FetchMessage(typeof(OneFrameInputs)) as OneFrameInputs; }
+		public static OneFrameInputs Create(bool isFromPool = false) { return !isFromPool? new OneFrameInputs() : ObjectPool.Instance.Fetch(typeof(OneFrameInputs)) as OneFrameInputs; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MongoDB.Bson.Serialization.Attributes.BsonDictionaryOptions(MongoDB.Bson.Serialization.Options.DictionaryRepresentation.ArrayOfArrays)]
 		[MemoryPackOrder(1)]
@@ -140,9 +140,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class Room2C_AdjustUpdateTime: MessageObject, IActorMessage
 	{
-		public static Room2C_AdjustUpdateTime Create(bool isFromPool = false) { return !isFromPool? new Room2C_AdjustUpdateTime() : NetServices.Instance.FetchMessage(typeof(Room2C_AdjustUpdateTime)) as Room2C_AdjustUpdateTime; }
+		public static Room2C_AdjustUpdateTime Create(bool isFromPool = false) { return !isFromPool? new Room2C_AdjustUpdateTime() : ObjectPool.Instance.Fetch(typeof(Room2C_AdjustUpdateTime)) as Room2C_AdjustUpdateTime; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int DiffTime { get; set; }
@@ -153,9 +153,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2Room_CheckHash: MessageObject, IActorRoom
 	{
-		public static C2Room_CheckHash Create(bool isFromPool = false) { return !isFromPool? new C2Room_CheckHash() : NetServices.Instance.FetchMessage(typeof(C2Room_CheckHash)) as C2Room_CheckHash; }
+		public static C2Room_CheckHash Create(bool isFromPool = false) { return !isFromPool? new C2Room_CheckHash() : ObjectPool.Instance.Fetch(typeof(C2Room_CheckHash)) as C2Room_CheckHash; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
@@ -172,9 +172,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class Room2C_CheckHashFail: MessageObject, IActorMessage
 	{
-		public static Room2C_CheckHashFail Create(bool isFromPool = false) { return !isFromPool? new Room2C_CheckHashFail() : NetServices.Instance.FetchMessage(typeof(Room2C_CheckHashFail)) as Room2C_CheckHashFail; }
+		public static Room2C_CheckHashFail Create(bool isFromPool = false) { return !isFromPool? new Room2C_CheckHashFail() : ObjectPool.Instance.Fetch(typeof(Room2C_CheckHashFail)) as Room2C_CheckHashFail; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int Frame { get; set; }
@@ -188,9 +188,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2C_Reconnect: MessageObject, IActorMessage
 	{
-		public static G2C_Reconnect Create(bool isFromPool = false) { return !isFromPool? new G2C_Reconnect() : NetServices.Instance.FetchMessage(typeof(G2C_Reconnect)) as G2C_Reconnect; }
+		public static G2C_Reconnect Create(bool isFromPool = false) { return !isFromPool? new G2C_Reconnect() : ObjectPool.Instance.Fetch(typeof(G2C_Reconnect)) as G2C_Reconnect; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public long StartTime { get; set; }

+ 72 - 72
Unity/Assets/Scripts/Model/Generate/Server/Message/OuterMessage_C_10001.cs

@@ -7,9 +7,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class HttpGetRouterResponse: MessageObject
 	{
-		public static HttpGetRouterResponse Create(bool isFromPool = false) { return !isFromPool? new HttpGetRouterResponse() : NetServices.Instance.FetchMessage(typeof(HttpGetRouterResponse)) as HttpGetRouterResponse; }
+		public static HttpGetRouterResponse Create(bool isFromPool = false) { return !isFromPool? new HttpGetRouterResponse() : ObjectPool.Instance.Fetch(typeof(HttpGetRouterResponse)) as HttpGetRouterResponse; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public List<string> Realms { get; set; }
@@ -23,9 +23,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class RouterSync: MessageObject
 	{
-		public static RouterSync Create(bool isFromPool = false) { return !isFromPool? new RouterSync() : NetServices.Instance.FetchMessage(typeof(RouterSync)) as RouterSync; }
+		public static RouterSync Create(bool isFromPool = false) { return !isFromPool? new RouterSync() : ObjectPool.Instance.Fetch(typeof(RouterSync)) as RouterSync; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public uint ConnectId { get; set; }
@@ -40,9 +40,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2M_TestRequest: MessageObject, IActorLocationRequest
 	{
-		public static C2M_TestRequest Create(bool isFromPool = false) { return !isFromPool? new C2M_TestRequest() : NetServices.Instance.FetchMessage(typeof(C2M_TestRequest)) as C2M_TestRequest; }
+		public static C2M_TestRequest Create(bool isFromPool = false) { return !isFromPool? new C2M_TestRequest() : ObjectPool.Instance.Fetch(typeof(C2M_TestRequest)) as C2M_TestRequest; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -56,9 +56,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2C_TestResponse: MessageObject, IActorResponse
 	{
-		public static M2C_TestResponse Create(bool isFromPool = false) { return !isFromPool? new M2C_TestResponse() : NetServices.Instance.FetchMessage(typeof(M2C_TestResponse)) as M2C_TestResponse; }
+		public static M2C_TestResponse Create(bool isFromPool = false) { return !isFromPool? new M2C_TestResponse() : ObjectPool.Instance.Fetch(typeof(M2C_TestResponse)) as M2C_TestResponse; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -79,9 +79,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class Actor_TransferRequest: MessageObject, IActorLocationRequest
 	{
-		public static Actor_TransferRequest Create(bool isFromPool = false) { return !isFromPool? new Actor_TransferRequest() : NetServices.Instance.FetchMessage(typeof(Actor_TransferRequest)) as Actor_TransferRequest; }
+		public static Actor_TransferRequest Create(bool isFromPool = false) { return !isFromPool? new Actor_TransferRequest() : ObjectPool.Instance.Fetch(typeof(Actor_TransferRequest)) as Actor_TransferRequest; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -95,9 +95,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class Actor_TransferResponse: MessageObject, IActorLocationResponse
 	{
-		public static Actor_TransferResponse Create(bool isFromPool = false) { return !isFromPool? new Actor_TransferResponse() : NetServices.Instance.FetchMessage(typeof(Actor_TransferResponse)) as Actor_TransferResponse; }
+		public static Actor_TransferResponse Create(bool isFromPool = false) { return !isFromPool? new Actor_TransferResponse() : ObjectPool.Instance.Fetch(typeof(Actor_TransferResponse)) as Actor_TransferResponse; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -115,9 +115,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2G_EnterMap: MessageObject, IRequest
 	{
-		public static C2G_EnterMap Create(bool isFromPool = false) { return !isFromPool? new C2G_EnterMap() : NetServices.Instance.FetchMessage(typeof(C2G_EnterMap)) as C2G_EnterMap; }
+		public static C2G_EnterMap Create(bool isFromPool = false) { return !isFromPool? new C2G_EnterMap() : ObjectPool.Instance.Fetch(typeof(C2G_EnterMap)) as C2G_EnterMap; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -128,9 +128,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2C_EnterMap: MessageObject, IResponse
 	{
-		public static G2C_EnterMap Create(bool isFromPool = false) { return !isFromPool? new G2C_EnterMap() : NetServices.Instance.FetchMessage(typeof(G2C_EnterMap)) as G2C_EnterMap; }
+		public static G2C_EnterMap Create(bool isFromPool = false) { return !isFromPool? new G2C_EnterMap() : ObjectPool.Instance.Fetch(typeof(G2C_EnterMap)) as G2C_EnterMap; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -151,9 +151,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class MoveInfo: MessageObject
 	{
-		public static MoveInfo Create(bool isFromPool = false) { return !isFromPool? new MoveInfo() : NetServices.Instance.FetchMessage(typeof(MoveInfo)) as MoveInfo; }
+		public static MoveInfo Create(bool isFromPool = false) { return !isFromPool? new MoveInfo() : ObjectPool.Instance.Fetch(typeof(MoveInfo)) as MoveInfo; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public List<Unity.Mathematics.float3> Points { get; set; }
@@ -170,9 +170,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class UnitInfo: MessageObject
 	{
-		public static UnitInfo Create(bool isFromPool = false) { return !isFromPool? new UnitInfo() : NetServices.Instance.FetchMessage(typeof(UnitInfo)) as UnitInfo; }
+		public static UnitInfo Create(bool isFromPool = false) { return !isFromPool? new UnitInfo() : ObjectPool.Instance.Fetch(typeof(UnitInfo)) as UnitInfo; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public long UnitId { get; set; }
@@ -201,9 +201,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2C_CreateUnits: MessageObject, IActorMessage
 	{
-		public static M2C_CreateUnits Create(bool isFromPool = false) { return !isFromPool? new M2C_CreateUnits() : NetServices.Instance.FetchMessage(typeof(M2C_CreateUnits)) as M2C_CreateUnits; }
+		public static M2C_CreateUnits Create(bool isFromPool = false) { return !isFromPool? new M2C_CreateUnits() : ObjectPool.Instance.Fetch(typeof(M2C_CreateUnits)) as M2C_CreateUnits; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public List<UnitInfo> Units { get; set; }
@@ -214,9 +214,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2C_CreateMyUnit: MessageObject, IActorMessage
 	{
-		public static M2C_CreateMyUnit Create(bool isFromPool = false) { return !isFromPool? new M2C_CreateMyUnit() : NetServices.Instance.FetchMessage(typeof(M2C_CreateMyUnit)) as M2C_CreateMyUnit; }
+		public static M2C_CreateMyUnit Create(bool isFromPool = false) { return !isFromPool? new M2C_CreateMyUnit() : ObjectPool.Instance.Fetch(typeof(M2C_CreateMyUnit)) as M2C_CreateMyUnit; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public UnitInfo Unit { get; set; }
@@ -227,9 +227,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2C_StartSceneChange: MessageObject, IActorMessage
 	{
-		public static M2C_StartSceneChange Create(bool isFromPool = false) { return !isFromPool? new M2C_StartSceneChange() : NetServices.Instance.FetchMessage(typeof(M2C_StartSceneChange)) as M2C_StartSceneChange; }
+		public static M2C_StartSceneChange Create(bool isFromPool = false) { return !isFromPool? new M2C_StartSceneChange() : ObjectPool.Instance.Fetch(typeof(M2C_StartSceneChange)) as M2C_StartSceneChange; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public long SceneInstanceId { get; set; }
@@ -243,9 +243,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2C_RemoveUnits: MessageObject, IActorMessage
 	{
-		public static M2C_RemoveUnits Create(bool isFromPool = false) { return !isFromPool? new M2C_RemoveUnits() : NetServices.Instance.FetchMessage(typeof(M2C_RemoveUnits)) as M2C_RemoveUnits; }
+		public static M2C_RemoveUnits Create(bool isFromPool = false) { return !isFromPool? new M2C_RemoveUnits() : ObjectPool.Instance.Fetch(typeof(M2C_RemoveUnits)) as M2C_RemoveUnits; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public List<long> Units { get; set; }
@@ -256,9 +256,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2M_PathfindingResult: MessageObject, IActorLocationMessage
 	{
-		public static C2M_PathfindingResult Create(bool isFromPool = false) { return !isFromPool? new C2M_PathfindingResult() : NetServices.Instance.FetchMessage(typeof(C2M_PathfindingResult)) as C2M_PathfindingResult; }
+		public static C2M_PathfindingResult Create(bool isFromPool = false) { return !isFromPool? new C2M_PathfindingResult() : ObjectPool.Instance.Fetch(typeof(C2M_PathfindingResult)) as C2M_PathfindingResult; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -272,9 +272,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2M_Stop: MessageObject, IActorLocationMessage
 	{
-		public static C2M_Stop Create(bool isFromPool = false) { return !isFromPool? new C2M_Stop() : NetServices.Instance.FetchMessage(typeof(C2M_Stop)) as C2M_Stop; }
+		public static C2M_Stop Create(bool isFromPool = false) { return !isFromPool? new C2M_Stop() : ObjectPool.Instance.Fetch(typeof(C2M_Stop)) as C2M_Stop; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -285,9 +285,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2C_PathfindingResult: MessageObject, IActorMessage
 	{
-		public static M2C_PathfindingResult Create(bool isFromPool = false) { return !isFromPool? new M2C_PathfindingResult() : NetServices.Instance.FetchMessage(typeof(M2C_PathfindingResult)) as M2C_PathfindingResult; }
+		public static M2C_PathfindingResult Create(bool isFromPool = false) { return !isFromPool? new M2C_PathfindingResult() : ObjectPool.Instance.Fetch(typeof(M2C_PathfindingResult)) as M2C_PathfindingResult; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public long Id { get; set; }
@@ -304,9 +304,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2C_Stop: MessageObject, IActorMessage
 	{
-		public static M2C_Stop Create(bool isFromPool = false) { return !isFromPool? new M2C_Stop() : NetServices.Instance.FetchMessage(typeof(M2C_Stop)) as M2C_Stop; }
+		public static M2C_Stop Create(bool isFromPool = false) { return !isFromPool? new M2C_Stop() : ObjectPool.Instance.Fetch(typeof(M2C_Stop)) as M2C_Stop; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int Error { get; set; }
@@ -327,9 +327,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2G_Ping: MessageObject, IRequest
 	{
-		public static C2G_Ping Create(bool isFromPool = false) { return !isFromPool? new C2G_Ping() : NetServices.Instance.FetchMessage(typeof(C2G_Ping)) as C2G_Ping; }
+		public static C2G_Ping Create(bool isFromPool = false) { return !isFromPool? new C2G_Ping() : ObjectPool.Instance.Fetch(typeof(C2G_Ping)) as C2G_Ping; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -340,9 +340,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2C_Ping: MessageObject, IResponse
 	{
-		public static G2C_Ping Create(bool isFromPool = false) { return !isFromPool? new G2C_Ping() : NetServices.Instance.FetchMessage(typeof(G2C_Ping)) as G2C_Ping; }
+		public static G2C_Ping Create(bool isFromPool = false) { return !isFromPool? new G2C_Ping() : ObjectPool.Instance.Fetch(typeof(G2C_Ping)) as G2C_Ping; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -362,9 +362,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2C_Test: MessageObject, IMessage
 	{
-		public static G2C_Test Create(bool isFromPool = false) { return !isFromPool? new G2C_Test() : NetServices.Instance.FetchMessage(typeof(G2C_Test)) as G2C_Test; }
+		public static G2C_Test Create(bool isFromPool = false) { return !isFromPool? new G2C_Test() : ObjectPool.Instance.Fetch(typeof(G2C_Test)) as G2C_Test; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 	}
 
@@ -373,9 +373,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2M_Reload: MessageObject, IRequest
 	{
-		public static C2M_Reload Create(bool isFromPool = false) { return !isFromPool? new C2M_Reload() : NetServices.Instance.FetchMessage(typeof(C2M_Reload)) as C2M_Reload; }
+		public static C2M_Reload Create(bool isFromPool = false) { return !isFromPool? new C2M_Reload() : ObjectPool.Instance.Fetch(typeof(C2M_Reload)) as C2M_Reload; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -392,9 +392,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2C_Reload: MessageObject, IResponse
 	{
-		public static M2C_Reload Create(bool isFromPool = false) { return !isFromPool? new M2C_Reload() : NetServices.Instance.FetchMessage(typeof(M2C_Reload)) as M2C_Reload; }
+		public static M2C_Reload Create(bool isFromPool = false) { return !isFromPool? new M2C_Reload() : ObjectPool.Instance.Fetch(typeof(M2C_Reload)) as M2C_Reload; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -412,9 +412,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2R_Login: MessageObject, IRequest
 	{
-		public static C2R_Login Create(bool isFromPool = false) { return !isFromPool? new C2R_Login() : NetServices.Instance.FetchMessage(typeof(C2R_Login)) as C2R_Login; }
+		public static C2R_Login Create(bool isFromPool = false) { return !isFromPool? new C2R_Login() : ObjectPool.Instance.Fetch(typeof(C2R_Login)) as C2R_Login; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -431,9 +431,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class R2C_Login: MessageObject, IResponse
 	{
-		public static R2C_Login Create(bool isFromPool = false) { return !isFromPool? new R2C_Login() : NetServices.Instance.FetchMessage(typeof(R2C_Login)) as R2C_Login; }
+		public static R2C_Login Create(bool isFromPool = false) { return !isFromPool? new R2C_Login() : ObjectPool.Instance.Fetch(typeof(R2C_Login)) as R2C_Login; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -460,9 +460,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2G_LoginGate: MessageObject, IRequest
 	{
-		public static C2G_LoginGate Create(bool isFromPool = false) { return !isFromPool? new C2G_LoginGate() : NetServices.Instance.FetchMessage(typeof(C2G_LoginGate)) as C2G_LoginGate; }
+		public static C2G_LoginGate Create(bool isFromPool = false) { return !isFromPool? new C2G_LoginGate() : ObjectPool.Instance.Fetch(typeof(C2G_LoginGate)) as C2G_LoginGate; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -479,9 +479,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2C_LoginGate: MessageObject, IResponse
 	{
-		public static G2C_LoginGate Create(bool isFromPool = false) { return !isFromPool? new G2C_LoginGate() : NetServices.Instance.FetchMessage(typeof(G2C_LoginGate)) as G2C_LoginGate; }
+		public static G2C_LoginGate Create(bool isFromPool = false) { return !isFromPool? new G2C_LoginGate() : ObjectPool.Instance.Fetch(typeof(G2C_LoginGate)) as G2C_LoginGate; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -501,9 +501,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2C_TestHotfixMessage: MessageObject, IMessage
 	{
-		public static G2C_TestHotfixMessage Create(bool isFromPool = false) { return !isFromPool? new G2C_TestHotfixMessage() : NetServices.Instance.FetchMessage(typeof(G2C_TestHotfixMessage)) as G2C_TestHotfixMessage; }
+		public static G2C_TestHotfixMessage Create(bool isFromPool = false) { return !isFromPool? new G2C_TestHotfixMessage() : ObjectPool.Instance.Fetch(typeof(G2C_TestHotfixMessage)) as G2C_TestHotfixMessage; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public string Info { get; set; }
@@ -515,9 +515,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2M_TestRobotCase: MessageObject, IActorLocationRequest
 	{
-		public static C2M_TestRobotCase Create(bool isFromPool = false) { return !isFromPool? new C2M_TestRobotCase() : NetServices.Instance.FetchMessage(typeof(C2M_TestRobotCase)) as C2M_TestRobotCase; }
+		public static C2M_TestRobotCase Create(bool isFromPool = false) { return !isFromPool? new C2M_TestRobotCase() : ObjectPool.Instance.Fetch(typeof(C2M_TestRobotCase)) as C2M_TestRobotCase; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -531,9 +531,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2C_TestRobotCase: MessageObject, IActorLocationResponse
 	{
-		public static M2C_TestRobotCase Create(bool isFromPool = false) { return !isFromPool? new M2C_TestRobotCase() : NetServices.Instance.FetchMessage(typeof(M2C_TestRobotCase)) as M2C_TestRobotCase; }
+		public static M2C_TestRobotCase Create(bool isFromPool = false) { return !isFromPool? new M2C_TestRobotCase() : ObjectPool.Instance.Fetch(typeof(M2C_TestRobotCase)) as M2C_TestRobotCase; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -553,9 +553,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2M_TestRobotCase2: MessageObject, IActorLocationMessage
 	{
-		public static C2M_TestRobotCase2 Create(bool isFromPool = false) { return !isFromPool? new C2M_TestRobotCase2() : NetServices.Instance.FetchMessage(typeof(C2M_TestRobotCase2)) as C2M_TestRobotCase2; }
+		public static C2M_TestRobotCase2 Create(bool isFromPool = false) { return !isFromPool? new C2M_TestRobotCase2() : ObjectPool.Instance.Fetch(typeof(C2M_TestRobotCase2)) as C2M_TestRobotCase2; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -569,9 +569,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2C_TestRobotCase2: MessageObject, IActorLocationMessage
 	{
-		public static M2C_TestRobotCase2 Create(bool isFromPool = false) { return !isFromPool? new M2C_TestRobotCase2() : NetServices.Instance.FetchMessage(typeof(M2C_TestRobotCase2)) as M2C_TestRobotCase2; }
+		public static M2C_TestRobotCase2 Create(bool isFromPool = false) { return !isFromPool? new M2C_TestRobotCase2() : ObjectPool.Instance.Fetch(typeof(M2C_TestRobotCase2)) as M2C_TestRobotCase2; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -586,9 +586,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2M_TransferMap: MessageObject, IActorLocationRequest
 	{
-		public static C2M_TransferMap Create(bool isFromPool = false) { return !isFromPool? new C2M_TransferMap() : NetServices.Instance.FetchMessage(typeof(C2M_TransferMap)) as C2M_TransferMap; }
+		public static C2M_TransferMap Create(bool isFromPool = false) { return !isFromPool? new C2M_TransferMap() : ObjectPool.Instance.Fetch(typeof(C2M_TransferMap)) as C2M_TransferMap; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -599,9 +599,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class M2C_TransferMap: MessageObject, IActorLocationResponse
 	{
-		public static M2C_TransferMap Create(bool isFromPool = false) { return !isFromPool? new M2C_TransferMap() : NetServices.Instance.FetchMessage(typeof(M2C_TransferMap)) as M2C_TransferMap; }
+		public static M2C_TransferMap Create(bool isFromPool = false) { return !isFromPool? new M2C_TransferMap() : ObjectPool.Instance.Fetch(typeof(M2C_TransferMap)) as M2C_TransferMap; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -619,9 +619,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class C2G_Benchmark: MessageObject, IRequest
 	{
-		public static C2G_Benchmark Create(bool isFromPool = false) { return !isFromPool? new C2G_Benchmark() : NetServices.Instance.FetchMessage(typeof(C2G_Benchmark)) as C2G_Benchmark; }
+		public static C2G_Benchmark Create(bool isFromPool = false) { return !isFromPool? new C2G_Benchmark() : ObjectPool.Instance.Fetch(typeof(C2G_Benchmark)) as C2G_Benchmark; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
@@ -632,9 +632,9 @@ namespace ET
 	[MemoryPackable]
 	public partial class G2C_Benchmark: MessageObject, IResponse
 	{
-		public static G2C_Benchmark Create(bool isFromPool = false) { return !isFromPool? new G2C_Benchmark() : NetServices.Instance.FetchMessage(typeof(G2C_Benchmark)) as G2C_Benchmark; }
+		public static G2C_Benchmark Create(bool isFromPool = false) { return !isFromPool? new G2C_Benchmark() : ObjectPool.Instance.Fetch(typeof(G2C_Benchmark)) as G2C_Benchmark; }
 
-		public override void Dispose() { NetServices.Instance.RecycleMessage(this); }
+		public override void Dispose() { ObjectPool.Instance.Recycle(this); }
 
 		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }

+ 0 - 8
Unity/Assets/Scripts/Model/Share/Module/Actor.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 8de5f6e1d860db5449c212f035e2c1ba
-folderAsset: yes
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 8
Unity/Assets/Scripts/Model/Share/Module/ActorLocation.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 608e5a93a1a981c41882a4bb25d91aa7
-folderAsset: yes
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 53
Unity/Assets/Scripts/Model/Share/Module/Message/OpcodeHelper.cs

@@ -1,53 +0,0 @@
-using System.Collections.Generic;
-using System.Diagnostics;
-
-namespace ET
-{
-    public static class OpcodeHelper
-    {
-        [StaticField]
-        private static readonly HashSet<ushort> ignoreDebugLogMessageSet = new HashSet<ushort>
-        {
-            OuterMessage.C2G_Ping,
-            OuterMessage.G2C_Ping,
-            OuterMessage.C2G_Benchmark,
-            OuterMessage.G2C_Benchmark,
-            LockStepOuter.OneFrameInputs,
-            LockStepOuter.FrameMessage,
-            LockStepOuter.C2Room_CheckHash,
-            ushort.MaxValue, // ActorResponse
-        };
-
-        private static bool IsNeedLogMessage(ushort opcode)
-        {
-            if (ignoreDebugLogMessageSet.Contains(opcode))
-            {
-                return false;
-            }
-
-            return true;
-        }
-
-        public static bool IsOuterMessage(ushort opcode)
-        {
-            return opcode < OpcodeRangeDefine.OuterMaxOpcode;
-        }
-
-        public static bool IsInnerMessage(ushort opcode)
-        {
-            return opcode >= OpcodeRangeDefine.InnerMinOpcode;
-        }
-
-        [Conditional("DEBUG")]
-        public static void LogMsg(this Entity entity, object message)
-        {
-            ushort opcode = NetServices.Instance.GetOpcode(message.GetType());
-            if (!IsNeedLogMessage(opcode))
-            {
-                return;
-            }
-            
-            Logger.Instance.Debug($"{entity.IScene.SceneType} {message}");
-        }
-    }
-}

+ 2 - 3
Unity/Assets/Scripts/Model/Share/Module/Message/Session.cs

@@ -1,6 +1,5 @@
 using System;
 using System.Collections.Generic;
-using System.IO;
 using System.Linq;
 using System.Net;
 
@@ -82,7 +81,7 @@ namespace ET
                 }
 
                 self.requestCallbacks.Remove(rpcId);
-                Type responseType = OpcodeTypeComponent.Instance.GetResponseType(action.Request.GetType());
+                Type responseType = OpcodeType.Instance.GetResponseType(action.Request.GetType());
                 IResponse response = (IResponse) Activator.CreateInstance(responseType);
                 response.Error = ErrorCore.ERR_Cancel;
                 action.Tcs.SetResult(response);
@@ -119,7 +118,7 @@ namespace ET
         public static void Send(this Session self, ActorId actorId, IMessage message)
         {
             self.LastSendTime = TimeHelper.ClientNow();
-            self.LogMsg(message);
+            Log.Debug(message.ToString());
             NetServices.Instance.SendMessage(self.ServiceId, self.Id, actorId, message as MessageObject);
         }
     }