Jelajahi Sumber

LSInput改成struct,运行成功

tanghai 2 tahun lalu
induk
melakukan
149e0ad197

+ 0 - 3
DotNet/ThirdParty/DotNet.ThirdParty.csproj

@@ -77,9 +77,6 @@
         <Link>runtimes\win\native\RecastDll.dll</Link>
         <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
       </Content>
-      <Compile Include="..\..\Unity\Assets\Scripts\ThirdParty\TrueSync\**\*.cs">
-          <Link>TrueSync/%(RecursiveDir)%(FileName)%(Extension)</Link>
-      </Compile>
     </ItemGroup>
 
     <ItemGroup>

+ 5 - 2
Share/Analyzer/Analyzer/EntityClassDeclarationAnalyzer.cs

@@ -4,6 +4,7 @@ using Microsoft.CodeAnalysis.Diagnostics;
 
 namespace ET.Analyzer
 {
+    /*
     [DiagnosticAnalyzer(LanguageNames.CSharp)]
     public class EntityClassDeclarationAnalyzer: DiagnosticAnalyzer
     {
@@ -18,7 +19,7 @@ namespace ET.Analyzer
 
             context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);
             context.EnableConcurrentExecution();
-            //context.RegisterSymbolAction(this.Analyzer, SymbolKind.NamedType);
+            context.RegisterSymbolAction(this.Analyzer, SymbolKind.NamedType);
         }
 
         private void Analyzer(SymbolAnalysisContext context)
@@ -28,7 +29,8 @@ namespace ET.Analyzer
                 return;
             }
 
-            if (namedTypeSymbol.BaseType?.BaseType?.ToString() != Definition.EntityType)
+            string? t = namedTypeSymbol.BaseType?.BaseType?.ToString();
+            if (t != Definition.EntityType && t != "ET.LSEntity")
             {
                 return;
             }
@@ -41,4 +43,5 @@ namespace ET.Analyzer
             }
         }
     }
+    */
 }

+ 1 - 2
Unity/Assets/Scripts/Codes/Hotfix/Client/LockStep/RoomClientUpdaterSystem.cs

@@ -88,8 +88,7 @@ namespace ET.Client
                 }
 
                 LSInput preInput = preFrame.Inputs[kv.Key];
-                kv.Value.V = preInput.V;
-                kv.Value.Button = preInput.Button;
+                predictionFrame.Inputs[kv.Key] = preInput;
             }
 
             LSInput oldMyInput = frameBuffer.GetFrame(predictionFrame.Frame).Inputs[self.MyId];

+ 4 - 5
Unity/Assets/Scripts/Codes/Hotfix/Share/LockStep/RoomSystem.cs

@@ -1,10 +1,10 @@
+using System;
+
 namespace ET
 {
     [FriendOf(typeof(Room))]
     public static class RoomSystem
     {
-        
-        
         public static void Init(this Room self, Room2C_Start room2CStart)
         {
             self.StartTime = room2CStart.StartTime;
@@ -30,9 +30,8 @@ namespace ET
             foreach (var kv in oneFrameMessages.Inputs)
             {
                 LSUnit lsUnit = unitComponent.GetChild<LSUnit>(kv.Key);
-                LSInput lsInput = lsUnit.GetComponent<LSInputComponent>().LSInput;
-                lsInput.V = kv.Value.V;
-                lsInput.Button = kv.Value.Button;
+                LSInputComponent lsInputComponent = lsUnit.GetComponent<LSInputComponent>();
+                lsInputComponent.LSInput = kv.Value;
             }
             
             lsWorld.Updater.Update();

+ 41 - 10
Unity/Assets/Scripts/Codes/Model/Generate/Client/Message/LockStepOuter_C_11001.cs

@@ -1,29 +1,36 @@
 using ET;
 using ProtoBuf;
+using MemoryPack;
 using System.Collections.Generic;
 namespace ET
 {
 	[ResponseType(nameof(G2C_Match))]
 	[Message(LockStepOuter.C2G_Match)]
 	[ProtoContract]
-	public partial class C2G_Match: ProtoObject, IRequest
+	[MemoryPackable]
+	public partial class C2G_Match: MessageObject, IRequest
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 	}
 
 	[Message(LockStepOuter.G2C_Match)]
 	[ProtoContract]
-	public partial class G2C_Match: ProtoObject, IResponse
+	[MemoryPackable]
+	public partial class G2C_Match: MessageObject, IResponse
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public int Error { get; set; }
 
 		[ProtoMember(3)]
+		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
 	}
@@ -31,13 +38,16 @@ namespace ET
 // 匹配成功,通知客户端切换场景
 	[Message(LockStepOuter.Match2G_NotifyMatchSuccess)]
 	[ProtoContract]
-	public partial class Match2G_NotifyMatchSuccess: ProtoObject, IActorLocationMessage
+	[MemoryPackable]
+	public partial class Match2G_NotifyMatchSuccess: MessageObject, IActorLocationMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 // 房间的instanceId
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public long InstanceId { get; set; }
 
 	}
@@ -45,24 +55,30 @@ namespace ET
 // 客户端通知房间切换场景完成
 	[Message(LockStepOuter.C2Room_ChangeSceneFinish)]
 	[ProtoContract]
-	public partial class C2Room_ChangeSceneFinish: ProtoObject, IActorRoom
+	[MemoryPackable]
+	public partial class C2Room_ChangeSceneFinish: MessageObject, IActorRoom
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
 
 	}
 
 	[Message(LockStepOuter.LockStepUnitInfo)]
 	[ProtoContract]
-	public partial class LockStepUnitInfo: ProtoObject
+	[MemoryPackable]
+	public partial class LockStepUnitInfo: MessageObject
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public TrueSync.TSVector Position { get; set; }
 
 		[ProtoMember(3)]
+		[MemoryPackOrder(2)]
 		public TrueSync.TSQuaternion Rotation { get; set; }
 
 	}
@@ -70,60 +86,75 @@ namespace ET
 // 房间通知客户端进入战斗
 	[Message(LockStepOuter.Room2C_Start)]
 	[ProtoContract]
-	public partial class Room2C_Start: ProtoObject, IActorMessage
+	[MemoryPackable]
+	public partial class Room2C_Start: MessageObject, IActorMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public long StartTime { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public List<LockStepUnitInfo> UnitInfo { get; set; }
 
 	}
 
 	[Message(LockStepOuter.LSInput)]
 	[ProtoContract]
-	public partial class LSInput: ProtoObject
+	[MemoryPackable]
+	public partial class LSInput: MessageObject
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public TrueSync.TSVector2 V { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public int Button { get; set; }
 
 	}
 
 	[Message(LockStepOuter.FrameMessage)]
 	[ProtoContract]
-	public partial class FrameMessage: ProtoObject, IActorMessage
+	[MemoryPackable]
+	public partial class FrameMessage: MessageObject, IActorMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int Frame { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public long PlayerId { get; set; }
 
 		[ProtoMember(3)]
+		[MemoryPackOrder(2)]
 		public LSInput Input { get; set; }
 
 	}
 
 	[Message(LockStepOuter.OneFrameMessages)]
 	[ProtoContract]
-	public partial class OneFrameMessages: ProtoObject, IActorMessage
+	[MemoryPackable]
+	public partial class OneFrameMessages: MessageObject, IActorMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int Frame { get; set; }
 
 		[MongoDB.Bson.Serialization.Attributes.BsonDictionaryOptions(MongoDB.Bson.Serialization.Options.DictionaryRepresentation.ArrayOfArrays)]
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public Dictionary<long, LSInput> Inputs { get; set; }
 	}
 
 	[Message(LockStepOuter.Room2C_AdjustUpdateTime)]
 	[ProtoContract]
-	public partial class Room2C_AdjustUpdateTime: ProtoObject, IActorMessage
+	[MemoryPackable]
+	public partial class Room2C_AdjustUpdateTime: MessageObject, IActorMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int DiffTime { get; set; }
 
 	}

+ 20 - 4
Unity/Assets/Scripts/Codes/Model/Generate/ClientServer/Message/LockStepInner_S_21001.cs

@@ -1,5 +1,6 @@
 using ET;
 using ProtoBuf;
+using MemoryPack;
 using System.Collections.Generic;
 namespace ET
 {
@@ -7,27 +8,34 @@ namespace ET
 	[ResponseType(nameof(Match2G_Match))]
 	[Message(LockStepInner.G2Match_Match)]
 	[ProtoContract]
-	public partial class G2Match_Match: ProtoObject, IActorRequest
+	[MemoryPackable]
+	public partial class G2Match_Match: MessageObject, IActorRequest
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public long Id { get; set; }
 
 	}
 
 	[Message(LockStepInner.Match2G_Match)]
 	[ProtoContract]
-	public partial class Match2G_Match: ProtoObject, IActorResponse
+	[MemoryPackable]
+	public partial class Match2G_Match: MessageObject, IActorResponse
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public int Error { get; set; }
 
 		[ProtoMember(3)]
+		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
 	}
@@ -35,31 +43,39 @@ namespace ET
 	[ResponseType(nameof(Map2Match_GetRoom))]
 	[Message(LockStepInner.Match2Map_GetRoom)]
 	[ProtoContract]
-	public partial class Match2Map_GetRoom: ProtoObject, IActorRequest
+	[MemoryPackable]
+	public partial class Match2Map_GetRoom: MessageObject, IActorRequest
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public List<long> PlayerIds { get; set; }
 
 	}
 
 	[Message(LockStepInner.Map2Match_GetRoom)]
 	[ProtoContract]
-	public partial class Map2Match_GetRoom: ProtoObject, IActorResponse
+	[MemoryPackable]
+	public partial class Map2Match_GetRoom: MessageObject, IActorResponse
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public int Error { get; set; }
 
 		[ProtoMember(3)]
+		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
 // 房间的instanceId
 		[ProtoMember(4)]
+		[MemoryPackOrder(3)]
 		public long InstanceId { get; set; }
 
 	}

+ 37 - 21
Unity/Assets/Scripts/Codes/Model/Generate/ClientServer/Message/LockStepOuter_C_11001.cs

@@ -1,29 +1,36 @@
 using ET;
 using ProtoBuf;
+using MemoryPack;
 using System.Collections.Generic;
 namespace ET
 {
 	[ResponseType(nameof(G2C_Match))]
 	[Message(LockStepOuter.C2G_Match)]
 	[ProtoContract]
-	public partial class C2G_Match: ProtoObject, IRequest
+	[MemoryPackable]
+	public partial class C2G_Match: MessageObject, IRequest
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 	}
 
 	[Message(LockStepOuter.G2C_Match)]
 	[ProtoContract]
-	public partial class G2C_Match: ProtoObject, IResponse
+	[MemoryPackable]
+	public partial class G2C_Match: MessageObject, IResponse
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public int Error { get; set; }
 
 		[ProtoMember(3)]
+		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
 	}
@@ -31,13 +38,16 @@ namespace ET
 // 匹配成功,通知客户端切换场景
 	[Message(LockStepOuter.Match2G_NotifyMatchSuccess)]
 	[ProtoContract]
-	public partial class Match2G_NotifyMatchSuccess: ProtoObject, IActorLocationMessage
+	[MemoryPackable]
+	public partial class Match2G_NotifyMatchSuccess: MessageObject, IActorLocationMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 // 房间的instanceId
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public long InstanceId { get; set; }
 
 	}
@@ -45,24 +55,30 @@ namespace ET
 // 客户端通知房间切换场景完成
 	[Message(LockStepOuter.C2Room_ChangeSceneFinish)]
 	[ProtoContract]
-	public partial class C2Room_ChangeSceneFinish: ProtoObject, IActorRoom
+	[MemoryPackable]
+	public partial class C2Room_ChangeSceneFinish: MessageObject, IActorRoom
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
 
 	}
 
 	[Message(LockStepOuter.LockStepUnitInfo)]
 	[ProtoContract]
-	public partial class LockStepUnitInfo: ProtoObject
+	[MemoryPackable]
+	public partial class LockStepUnitInfo: MessageObject
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public TrueSync.TSVector Position { get; set; }
 
 		[ProtoMember(3)]
+		[MemoryPackOrder(2)]
 		public TrueSync.TSQuaternion Rotation { get; set; }
 
 	}
@@ -70,60 +86,60 @@ namespace ET
 // 房间通知客户端进入战斗
 	[Message(LockStepOuter.Room2C_Start)]
 	[ProtoContract]
-	public partial class Room2C_Start: ProtoObject, IActorMessage
+	[MemoryPackable]
+	public partial class Room2C_Start: MessageObject, IActorMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public long StartTime { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public List<LockStepUnitInfo> UnitInfo { get; set; }
 
 	}
 
-	[Message(LockStepOuter.LSInput)]
-	[ProtoContract]
-	public partial class LSInput: ProtoObject
-	{
-		[ProtoMember(1)]
-		public TrueSync.TSVector2 V { get; set; }
-
-		[ProtoMember(2)]
-		public int Button { get; set; }
-
-	}
-
 	[Message(LockStepOuter.FrameMessage)]
 	[ProtoContract]
-	public partial class FrameMessage: ProtoObject, IActorMessage
+	[MemoryPackable]
+	public partial class FrameMessage: MessageObject, IActorMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int Frame { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public long PlayerId { get; set; }
 
 		[ProtoMember(3)]
+		[MemoryPackOrder(2)]
 		public LSInput Input { get; set; }
 
 	}
 
 	[Message(LockStepOuter.OneFrameMessages)]
 	[ProtoContract]
-	public partial class OneFrameMessages: ProtoObject, IActorMessage
+	[MemoryPackable]
+	public partial class OneFrameMessages: MessageObject, IActorMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int Frame { get; set; }
 
 		[MongoDB.Bson.Serialization.Attributes.BsonDictionaryOptions(MongoDB.Bson.Serialization.Options.DictionaryRepresentation.ArrayOfArrays)]
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public Dictionary<long, LSInput> Inputs { get; set; }
 	}
 
 	[Message(LockStepOuter.Room2C_AdjustUpdateTime)]
 	[ProtoContract]
-	public partial class Room2C_AdjustUpdateTime: ProtoObject, IActorMessage
+	[MemoryPackable]
+	public partial class Room2C_AdjustUpdateTime: MessageObject, IActorMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int DiffTime { get; set; }
 
 	}

+ 20 - 4
Unity/Assets/Scripts/Codes/Model/Generate/Server/Message/LockStepInner_S_21001.cs

@@ -1,5 +1,6 @@
 using ET;
 using ProtoBuf;
+using MemoryPack;
 using System.Collections.Generic;
 namespace ET
 {
@@ -7,27 +8,34 @@ namespace ET
 	[ResponseType(nameof(Match2G_Match))]
 	[Message(LockStepInner.G2Match_Match)]
 	[ProtoContract]
-	public partial class G2Match_Match: ProtoObject, IActorRequest
+	[MemoryPackable]
+	public partial class G2Match_Match: MessageObject, IActorRequest
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public long Id { get; set; }
 
 	}
 
 	[Message(LockStepInner.Match2G_Match)]
 	[ProtoContract]
-	public partial class Match2G_Match: ProtoObject, IActorResponse
+	[MemoryPackable]
+	public partial class Match2G_Match: MessageObject, IActorResponse
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public int Error { get; set; }
 
 		[ProtoMember(3)]
+		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
 	}
@@ -35,31 +43,39 @@ namespace ET
 	[ResponseType(nameof(Map2Match_GetRoom))]
 	[Message(LockStepInner.Match2Map_GetRoom)]
 	[ProtoContract]
-	public partial class Match2Map_GetRoom: ProtoObject, IActorRequest
+	[MemoryPackable]
+	public partial class Match2Map_GetRoom: MessageObject, IActorRequest
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public List<long> PlayerIds { get; set; }
 
 	}
 
 	[Message(LockStepInner.Map2Match_GetRoom)]
 	[ProtoContract]
-	public partial class Map2Match_GetRoom: ProtoObject, IActorResponse
+	[MemoryPackable]
+	public partial class Map2Match_GetRoom: MessageObject, IActorResponse
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public int Error { get; set; }
 
 		[ProtoMember(3)]
+		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
 // 房间的instanceId
 		[ProtoMember(4)]
+		[MemoryPackOrder(3)]
 		public long InstanceId { get; set; }
 
 	}

+ 37 - 21
Unity/Assets/Scripts/Codes/Model/Generate/Server/Message/LockStepOuter_C_11001.cs

@@ -1,29 +1,36 @@
 using ET;
 using ProtoBuf;
+using MemoryPack;
 using System.Collections.Generic;
 namespace ET
 {
 	[ResponseType(nameof(G2C_Match))]
 	[Message(LockStepOuter.C2G_Match)]
 	[ProtoContract]
-	public partial class C2G_Match: ProtoObject, IRequest
+	[MemoryPackable]
+	public partial class C2G_Match: MessageObject, IRequest
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 	}
 
 	[Message(LockStepOuter.G2C_Match)]
 	[ProtoContract]
-	public partial class G2C_Match: ProtoObject, IResponse
+	[MemoryPackable]
+	public partial class G2C_Match: MessageObject, IResponse
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public int Error { get; set; }
 
 		[ProtoMember(3)]
+		[MemoryPackOrder(2)]
 		public string Message { get; set; }
 
 	}
@@ -31,13 +38,16 @@ namespace ET
 // 匹配成功,通知客户端切换场景
 	[Message(LockStepOuter.Match2G_NotifyMatchSuccess)]
 	[ProtoContract]
-	public partial class Match2G_NotifyMatchSuccess: ProtoObject, IActorLocationMessage
+	[MemoryPackable]
+	public partial class Match2G_NotifyMatchSuccess: MessageObject, IActorLocationMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int RpcId { get; set; }
 
 // 房间的instanceId
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public long InstanceId { get; set; }
 
 	}
@@ -45,24 +55,30 @@ namespace ET
 // 客户端通知房间切换场景完成
 	[Message(LockStepOuter.C2Room_ChangeSceneFinish)]
 	[ProtoContract]
-	public partial class C2Room_ChangeSceneFinish: ProtoObject, IActorRoom
+	[MemoryPackable]
+	public partial class C2Room_ChangeSceneFinish: MessageObject, IActorRoom
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
 
 	}
 
 	[Message(LockStepOuter.LockStepUnitInfo)]
 	[ProtoContract]
-	public partial class LockStepUnitInfo: ProtoObject
+	[MemoryPackable]
+	public partial class LockStepUnitInfo: MessageObject
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public long PlayerId { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public TrueSync.TSVector Position { get; set; }
 
 		[ProtoMember(3)]
+		[MemoryPackOrder(2)]
 		public TrueSync.TSQuaternion Rotation { get; set; }
 
 	}
@@ -70,60 +86,60 @@ namespace ET
 // 房间通知客户端进入战斗
 	[Message(LockStepOuter.Room2C_Start)]
 	[ProtoContract]
-	public partial class Room2C_Start: ProtoObject, IActorMessage
+	[MemoryPackable]
+	public partial class Room2C_Start: MessageObject, IActorMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public long StartTime { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public List<LockStepUnitInfo> UnitInfo { get; set; }
 
 	}
 
-	[Message(LockStepOuter.LSInput)]
-	[ProtoContract]
-	public partial class LSInput: ProtoObject
-	{
-		[ProtoMember(1)]
-		public TrueSync.TSVector2 V { get; set; }
-
-		[ProtoMember(2)]
-		public int Button { get; set; }
-
-	}
-
 	[Message(LockStepOuter.FrameMessage)]
 	[ProtoContract]
-	public partial class FrameMessage: ProtoObject, IActorMessage
+	[MemoryPackable]
+	public partial class FrameMessage: MessageObject, IActorMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int Frame { get; set; }
 
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public long PlayerId { get; set; }
 
 		[ProtoMember(3)]
+		[MemoryPackOrder(2)]
 		public LSInput Input { get; set; }
 
 	}
 
 	[Message(LockStepOuter.OneFrameMessages)]
 	[ProtoContract]
-	public partial class OneFrameMessages: ProtoObject, IActorMessage
+	[MemoryPackable]
+	public partial class OneFrameMessages: MessageObject, IActorMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int Frame { get; set; }
 
 		[MongoDB.Bson.Serialization.Attributes.BsonDictionaryOptions(MongoDB.Bson.Serialization.Options.DictionaryRepresentation.ArrayOfArrays)]
 		[ProtoMember(2)]
+		[MemoryPackOrder(1)]
 		public Dictionary<long, LSInput> Inputs { get; set; }
 	}
 
 	[Message(LockStepOuter.Room2C_AdjustUpdateTime)]
 	[ProtoContract]
-	public partial class Room2C_AdjustUpdateTime: ProtoObject, IActorMessage
+	[MemoryPackable]
+	public partial class Room2C_AdjustUpdateTime: MessageObject, IActorMessage
 	{
 		[ProtoMember(1)]
+		[MemoryPackOrder(0)]
 		public int DiffTime { get; set; }
 
 	}

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

@@ -1,4 +1,5 @@
 using System.Collections.Generic;
+using System.Diagnostics;
 
 namespace ET
 {

+ 16 - 20
Unity/Assets/Scripts/Codes/Model/Share/LockStep/LSInput.cs → Unity/Assets/Scripts/Core/LockStep/LSInput.cs

@@ -1,33 +1,29 @@
 using System;
-using TrueSync;
+using MemoryPack;
+using ProtoBuf;
 
 namespace ET
 {
-    public partial class LSInput
+    [ProtoContract]
+    [MemoryPackable]
+    public partial struct LSInput
     {
-        protected bool Equals(LSInput other)
+        [ProtoMember(1)]
+        [MemoryPackOrder(0)]
+        public TrueSync.TSVector2 V;
+
+        [ProtoMember(2)]
+        [MemoryPackOrder(1)]
+        public int Button;
+        
+        public bool Equals(LSInput other)
         {
-            return this.V.Equals(other.V) && this.Button == other.Button;
+            return this.V == other.V && this.Button == other.Button;
         }
 
         public override bool Equals(object obj)
         {
-            if (ReferenceEquals(null, obj))
-            {
-                return false;
-            }
-
-            if (ReferenceEquals(this, obj))
-            {
-                return true;
-            }
-
-            if (obj.GetType() != this.GetType())
-            {
-                return false;
-            }
-
-            return Equals((LSInput) obj);
+            return obj is LSInput other && Equals(other);
         }
 
         public override int GetHashCode()

+ 0 - 0
Unity/Assets/Scripts/Codes/Model/Share/LockStep/LSInput.cs.meta → Unity/Assets/Scripts/Core/LockStep/LSInput.cs.meta


+ 1 - 0
Unity/Assets/Scripts/Core/Serialize/MongoHelper.cs

@@ -100,6 +100,7 @@ namespace ET
             RegisterStruct<TSVector2>();
             RegisterStruct<TSVector4>();
             RegisterStruct<TSQuaternion>();
+            RegisterStruct<LSInput>();
 
             Dictionary<string, Type> types = EventSystem.Instance.GetTypes();
             foreach (Type type in types.Values)

+ 1 - 1
Unity/ProjectSettings/ProjectSettings.asset

@@ -841,7 +841,7 @@ PlayerSettings:
   scriptingDefineSymbols:
     Android: UNITY;SINGLE_THREAD
     Server: UNITY
-    Standalone: UNITY;SINGLE_THREAD;ENABLE_CODES;ENABLE_VIEW
+    Standalone: UNITY;SINGLE_THREAD;ENABLE_VIEW;ENABLE_CODES
     WebGL: UNITY
     iPhone: UNITY;SINGLE_THREAD;ENABLE_CODES
   additionalCompilerArguments: {}