From b65b860b98c009727b714ba8211b321b6d4a94b5 Mon Sep 17 00:00:00 2001 From: "DESKTOP-5RP3AKU\\Jisol" <2858626794@qq.com> Date: Mon, 23 Sep 2024 03:50:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=BB=E4=BB=8E=E4=BA=A4?= =?UTF-8?q?=E4=BA=92bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JNFrame2/AimingRig.csproj | 6 +-- JNFrame2/Assembly-CSharp.csproj | 2 +- .../JNGame/Network/Action/NActionEnum.cs | 4 +- .../Tile/Entity/Component/JNTileComponent.cs | 2 +- .../Sync/App/Tile/Entity/JNTileEntity.cs | 9 ++++ .../JNGame/Sync/App/Tile/IJNTileCycle.cs | 5 ++ .../Assets/JNGame/Sync/Entity/JNContext.cs | 28 +++++++--- .../Assets/JNGame/Sync/Entity/JNContexts.cs | 8 ++- .../Assets/JNGame/Sync/Entity/JNEntity.cs | 14 ++++- .../Sync/System/Data/STileDataSystem.cs | 3 +- JNFrame2/Assets/Scripts/AppGame/App.cs | 2 - .../Scripts/AppGame/Sync/JNGFrameSystem.cs | 2 +- .../AppGame/Sync/JNGStateServerSystem.cs | 2 +- .../AppGame/Systems/CServer/JNGClient.cs | 4 +- .../AppGame/Systems/CServer/JNGServer.cs | 21 ++++++++ .../AppGame/Systems/CServer/JNGTileClient.cs | 4 +- .../Assets/Scripts/AppGame/Systems/JNGGame.cs | 26 +++++---- .../Scripts/Game/Logic/Entity/EDContexts.cs | 2 + .../Game/Logic/Entity/EDEntityBasis.cs | 16 +++++- .../Controller/EDPlayerController.cs | 4 ++ .../Entity/Nodes/Contexts/EDPlayerContext.cs | 5 +- .../Scripts/Game/Logic/Entity/Nodes/EDBoss.cs | 6 --- .../Scripts/Game/Logic/Entity/Nodes/EDNode.cs | 7 --- .../Game/Logic/Entity/Nodes/EDPlayer.cs | 2 +- .../Game/Logic/System/DGBasisSystem.cs | 6 +++ .../Game/Logic/System/Logic/DPlayerSystem.cs | 16 +++++- .../Scripts/Game/View/Entity/VDPlayers.cs | 25 +++++++-- JNFrame2/BestHTTP.csproj | 8 +-- ...hadercompiler-UnityShaderCompiler.exe0.log | 3 -- JNFrame2/StompyRobot.SRDebugger.Editor.csproj | 6 +-- JNFrame2/StompyRobot.SRDebugger.csproj | 6 +-- JNFrame2/StompyRobot.SRF.Editor.csproj | 6 +-- JNFrame2/StompyRobot.SRF.csproj | 6 +-- JNFrame2/UniTask.Addressables.csproj | 6 +-- JNFrame2/UniTask.DOTween.csproj | 6 +-- JNFrame2/UniTask.Editor.csproj | 6 +-- JNFrame2/UniTask.Linq.csproj | 6 +-- JNFrame2/UniTask.TextMeshPro.csproj | 6 +-- JNFrame2/UniTask.csproj | 6 +-- .../UserSettings/Layouts/default-2021.dwlt | 50 +++++++++--------- .../AimingRig.csproj.AssemblyReference.cache | Bin 290148 -> 290148 bytes ...harp-Editor.csproj.AssemblyReference.cache | Bin 330256 -> 330256 bytes ...p-firstpass.csproj.AssemblyReference.cache | Bin 299442 -> 299442 bytes ...mbly-CSharp.csproj.AssemblyReference.cache | Bin 299442 -> 299442 bytes .../BestHTTP.csproj.AssemblyReference.cache | Bin 290148 -> 290148 bytes ...gger.Editor.csproj.AssemblyReference.cache | Bin 301203 -> 301203 bytes ....SRDebugger.csproj.AssemblyReference.cache | Bin 290148 -> 290148 bytes ....SRF.Editor.csproj.AssemblyReference.cache | Bin 301203 -> 301203 bytes ...pyRobot.SRF.csproj.AssemblyReference.cache | Bin 290148 -> 290148 bytes ...ddressables.csproj.AssemblyReference.cache | Bin 290148 -> 290148 bytes ...ask.DOTween.csproj.AssemblyReference.cache | Bin 296735 -> 296735 bytes ...Task.Editor.csproj.AssemblyReference.cache | Bin 307790 -> 307790 bytes ...niTask.Linq.csproj.AssemblyReference.cache | Bin 290148 -> 290148 bytes ...TextMeshPro.csproj.AssemblyReference.cache | Bin 291133 -> 291133 bytes .../UniTask.csproj.AssemblyReference.cache | Bin 290148 -> 290148 bytes 55 files changed, 233 insertions(+), 119 deletions(-) diff --git a/JNFrame2/AimingRig.csproj b/JNFrame2/AimingRig.csproj index ec4db832..ed44c4f3 100644 --- a/JNFrame2/AimingRig.csproj +++ b/JNFrame2/AimingRig.csproj @@ -806,12 +806,12 @@ C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll - - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll + + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll + diff --git a/JNFrame2/Assembly-CSharp.csproj b/JNFrame2/Assembly-CSharp.csproj index d2c386ef..1e36fccb 100644 --- a/JNFrame2/Assembly-CSharp.csproj +++ b/JNFrame2/Assembly-CSharp.csproj @@ -688,6 +688,7 @@ + @@ -703,7 +704,6 @@ - diff --git a/JNFrame2/Assets/JNGame/Network/Action/NActionEnum.cs b/JNFrame2/Assets/JNGame/Network/Action/NActionEnum.cs index 9fb84b47..0d483c21 100644 --- a/JNFrame2/Assets/JNGame/Network/Action/NActionEnum.cs +++ b/JNFrame2/Assets/JNGame/Network/Action/NActionEnum.cs @@ -8,8 +8,8 @@ LocalClientConnect = 11, //客户端连接 (用于客户端通知) LocalClientDisconnect = 12, //客户端断开 (用于客户端通知) - ServerClientConnect = 13, //服务器客户端连接 (用于服务端通知) - ServerClientDisconnect = 14, //服务器客户端断开 (用于服务端通知) + ServerClientConnect = 13, //服务器客户端连接 (用于业务服务端通知) + ServerClientDisconnect = 14, //服务器客户端断开 (用于业务服务端通知) NSyncFrameStart = 100, //帧同步开始 NSyncFrameEnd = 101, //帧同步结束 diff --git a/JNFrame2/Assets/JNGame/Sync/App/Tile/Entity/Component/JNTileComponent.cs b/JNFrame2/Assets/JNGame/Sync/App/Tile/Entity/Component/JNTileComponent.cs index 9d060d17..80ffdf06 100644 --- a/JNFrame2/Assets/JNGame/Sync/App/Tile/Entity/Component/JNTileComponent.cs +++ b/JNFrame2/Assets/JNGame/Sync/App/Tile/Entity/Component/JNTileComponent.cs @@ -26,6 +26,6 @@ namespace JNGame.Sync.State.Tile.Entity.Component public virtual void OnTileEnter(){} public virtual void OnTileExit(){} - + public void OnTileSlaveExit(){} } } \ No newline at end of file diff --git a/JNFrame2/Assets/JNGame/Sync/App/Tile/Entity/JNTileEntity.cs b/JNFrame2/Assets/JNGame/Sync/App/Tile/Entity/JNTileEntity.cs index 628694dc..f8498b56 100644 --- a/JNFrame2/Assets/JNGame/Sync/App/Tile/Entity/JNTileEntity.cs +++ b/JNFrame2/Assets/JNGame/Sync/App/Tile/Entity/JNTileEntity.cs @@ -125,6 +125,7 @@ namespace JNGame.Sync.State.Tile.Entity if (isHost && !isContains) { OnTileExit(); + if (SyncTile.IsSlave) OnTileSlaveExit(); } } @@ -147,5 +148,13 @@ namespace JNGame.Sync.State.Tile.Entity } } + public virtual void OnTileSlaveExit() + { + //给组件生命周期 + foreach (var component in GetComponents()) + { + (component as JNTileComponent)?.OnTileSlaveExit(); + } + } } } \ No newline at end of file diff --git a/JNFrame2/Assets/JNGame/Sync/App/Tile/IJNTileCycle.cs b/JNFrame2/Assets/JNGame/Sync/App/Tile/IJNTileCycle.cs index c1dc7ebb..1bb93eb5 100644 --- a/JNFrame2/Assets/JNGame/Sync/App/Tile/IJNTileCycle.cs +++ b/JNFrame2/Assets/JNGame/Sync/App/Tile/IJNTileCycle.cs @@ -13,5 +13,10 @@ /// public void OnTileExit(); + /// + /// 从服务器 - 退出当前区块 + /// + public void OnTileSlaveExit(); + } } \ No newline at end of file diff --git a/JNFrame2/Assets/JNGame/Sync/Entity/JNContext.cs b/JNFrame2/Assets/JNGame/Sync/Entity/JNContext.cs index 8bc40bb8..e7639fae 100644 --- a/JNFrame2/Assets/JNGame/Sync/Entity/JNContext.cs +++ b/JNFrame2/Assets/JNGame/Sync/Entity/JNContext.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using DotRecast.Core.Collections; using Entitas; using JNGame.Sync.Entity; using JNGame.Sync.Frame.Entity.Component.Components; @@ -17,18 +18,20 @@ namespace JNGame.Sync.Frame.Entity //方便查抄的实体Map public Dictionary Entities = new (); - - public JNContext(): base((new T()).NewCLookup().Count, () => new T()) + + public JNContext() + : this((new T()).NewCLookup().Count, () => new T()) { - CLookup = (new T()).NewCLookup(); } - public JNContext(int totalComponents, Func entityFactory) : base(totalComponents, entityFactory) + public JNContext(int totalComponents, Func entityFactory) : this(totalComponents, 0, null, null, entityFactory) { } - public JNContext(int totalComponents, int startCreationIndex, ContextInfo contextInfo, Func aercFactory, Func entityFactory) : base(totalComponents, startCreationIndex, contextInfo, aercFactory, entityFactory) + public JNContext(int totalComponents, int startCreationIndex, ContextInfo contextInfo, Func aercFactory, Func entityFactory) + : base(totalComponents, startCreationIndex, contextInfo, aercFactory, entityFactory) { + CLookup = (new T()).NewCLookup(); } public JNSyncService GetSync() @@ -96,8 +99,20 @@ namespace JNGame.Sync.Frame.Entity BindLifeCycle(entity); return entity; } + + //生效延迟销毁 + public void DelayDestroy() + { + GetEntities().ForEach(child => + { + if (child.IsDelayDestroy) + { + child.Destroy(); + } + }); + } - //帧同步 生命周期 + //生命周期 public virtual void OnSyncStart(){} public virtual void OnSyncUpdate(int dt) @@ -122,6 +137,7 @@ namespace JNGame.Sync.Frame.Entity public abstract void InitReference(JNSyncService data); public void AddEntity(ulong id,JNEntity entity); public void RemoveEntity(ulong id); + public void DelayDestroy(); } diff --git a/JNFrame2/Assets/JNGame/Sync/Entity/JNContexts.cs b/JNFrame2/Assets/JNGame/Sync/Entity/JNContexts.cs index 8c83f118..b429e770 100644 --- a/JNFrame2/Assets/JNGame/Sync/Entity/JNContexts.cs +++ b/JNFrame2/Assets/JNGame/Sync/Entity/JNContexts.cs @@ -19,12 +19,18 @@ namespace JNGame.Sync.Entity } //给所有实体推帧 - public void Simulate() + public virtual void Simulate() { for (var i = 0; i < allContexts.Length; i++) { (allContexts[i] as IJNContext)?.OnSyncUpdate(Sync.DeltaTime); } + + //延迟销毁 + for (var i = 0; i < allContexts.Length; i++) + { + (allContexts[i] as IJNContext)?.DelayDestroy(); + } } public T GetContext() where T : IContext diff --git a/JNFrame2/Assets/JNGame/Sync/Entity/JNEntity.cs b/JNFrame2/Assets/JNGame/Sync/Entity/JNEntity.cs index 303cb636..a27c96f7 100644 --- a/JNFrame2/Assets/JNGame/Sync/Entity/JNEntity.cs +++ b/JNFrame2/Assets/JNGame/Sync/Entity/JNEntity.cs @@ -50,6 +50,8 @@ namespace JNGame.Sync.Entity /// public LVector3 Position => Transform.Position; + public bool IsDelayDestroy { get; private set; } = false; + public virtual void OnInit(IJNContext context,ulong id = 0) { Context = context; @@ -127,12 +129,18 @@ namespace JNGame.Sync.Entity public override void Destroy() { + //清理缓存 Context.RemoveEntity(Id); OnSyncDestroy(); RemoveAllComponents(); base.Destroy(); } + public void DelayDestroy() + { + IsDelayDestroy = true; + } + //生命周期 public virtual void OnSyncStart(){} @@ -146,7 +154,11 @@ namespace JNGame.Sync.Entity } public virtual void OnSyncDestroy() - {} + { + _id = 0; + IsDelayDestroy = false; + } + } } \ No newline at end of file diff --git a/JNFrame2/Assets/JNGame/Sync/System/Data/STileDataSystem.cs b/JNFrame2/Assets/JNGame/Sync/System/Data/STileDataSystem.cs index a9fb9a32..4437215c 100644 --- a/JNFrame2/Assets/JNGame/Sync/System/Data/STileDataSystem.cs +++ b/JNFrame2/Assets/JNGame/Sync/System/Data/STileDataSystem.cs @@ -148,7 +148,6 @@ namespace JNGame.Sync.System.Data if (NodeContext.Query(child.Key) is null) { Delete(child.Key); - return; } //主动更新 @@ -179,7 +178,7 @@ namespace JNGame.Sync.System.Data { var entity = NodeContext.Query(keyValue.Key); //给从服务器发送数据 - if (IsMaster && entity is not null && entity.IsSyncSlave) + if (IsMaster && ((entity is not null && entity.IsSyncSlave) || keyValue.Value == SDByteOperate.Delete)) { slave[keyValue.Key] = keyValue.Value; } diff --git a/JNFrame2/Assets/Scripts/AppGame/App.cs b/JNFrame2/Assets/Scripts/AppGame/App.cs index ed572954..c032b359 100644 --- a/JNFrame2/Assets/Scripts/AppGame/App.cs +++ b/JNFrame2/Assets/Scripts/AppGame/App.cs @@ -35,7 +35,6 @@ namespace AppGame public static readonly JNGClientGroup Client = new JNGClientGroup(); public static readonly JNGResService Resource = new JNGResService(); public static readonly JNGGame Game = new JNGGame(); - public static readonly JNGSocket Socket = new JNGSocket(); public static readonly JAPI API = new(new JAPIConfig(){BaseURL = "http://127.0.0.1:8080"}); public static readonly GAPI GAPI = new GAPI(); public static readonly EventDispatcher Event = new(); @@ -50,7 +49,6 @@ namespace AppGame Client, Resource, Game, - // Socket, }; } diff --git a/JNFrame2/Assets/Scripts/AppGame/Sync/JNGFrameSystem.cs b/JNFrame2/Assets/Scripts/AppGame/Sync/JNGFrameSystem.cs index 6881a94e..5755935d 100644 --- a/JNFrame2/Assets/Scripts/AppGame/Sync/JNGFrameSystem.cs +++ b/JNFrame2/Assets/Scripts/AppGame/Sync/JNGFrameSystem.cs @@ -89,7 +89,7 @@ namespace AppGame.Sync protected override void OnSendInput(JNFrameInputs inputs) { //发送帧数据给服务端 - App.Socket.Send((int)NActionEnum.NSyncFrameInput,inputs); + App.Business.Send((int)NActionEnum.NSyncFrameInput,inputs); } /// diff --git a/JNFrame2/Assets/Scripts/AppGame/Sync/JNGStateServerSystem.cs b/JNFrame2/Assets/Scripts/AppGame/Sync/JNGStateServerSystem.cs index f9afeb82..4f606973 100644 --- a/JNFrame2/Assets/Scripts/AppGame/Sync/JNGStateServerSystem.cs +++ b/JNFrame2/Assets/Scripts/AppGame/Sync/JNGStateServerSystem.cs @@ -89,7 +89,7 @@ namespace AppGame.Sync if (inputs.Inputs.Count > 0) { //发送帧数据给服务端 - App.Socket.Send((int)NActionEnum.NSyncFrameInput,inputs); + App.Business.Send((int)NActionEnum.NSyncFrameInput,inputs); } } diff --git a/JNFrame2/Assets/Scripts/AppGame/Systems/CServer/JNGClient.cs b/JNFrame2/Assets/Scripts/AppGame/Systems/CServer/JNGClient.cs index d20a723a..49269390 100644 --- a/JNFrame2/Assets/Scripts/AppGame/Systems/CServer/JNGClient.cs +++ b/JNFrame2/Assets/Scripts/AppGame/Systems/CServer/JNGClient.cs @@ -74,7 +74,7 @@ namespace AppGame.Systems private void OnNSyncStateDataUpdate(byte[] data) { var info = JNStateItemData.Parser.ParseFrom(data); - App.Game.AddState(info); + App.Game.SyncState(info,true,false); } @@ -92,7 +92,7 @@ namespace AppGame.Systems //生效全局回调 allData.Data.Data.ForEach(child => { - App.Game.AddState(child); + App.Game.SyncState(child,true,false); }); } diff --git a/JNFrame2/Assets/Scripts/AppGame/Systems/CServer/JNGServer.cs b/JNFrame2/Assets/Scripts/AppGame/Systems/CServer/JNGServer.cs index 230f5954..d9169dc7 100644 --- a/JNFrame2/Assets/Scripts/AppGame/Systems/CServer/JNGServer.cs +++ b/JNFrame2/Assets/Scripts/AppGame/Systems/CServer/JNGServer.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using AppGame.Sync; using Cysharp.Threading.Tasks; using DotRecast.Core.Collections; +using Game.Logic.System; using Google.Protobuf; using JNGame.Network; using JNGame.Sync.State.Tile; @@ -31,6 +32,7 @@ namespace AppGame.Systems.CServer AddListener((int)NActionEnum.NSyncTileInput,OnNSyncTileInput); AddListener((int)NActionEnum.NSyncTileAllUpdate,OnNSyncTileAllUpdate); AddListener((int)NActionEnum.NSyncTileGetTileInfo,OnNSyncTileGetTileInfo); + AddListener((int)NActionEnum.LocalClientDisconnect,OnLocalClientDisconnect); OnInit_Game(); @@ -38,6 +40,7 @@ namespace AppGame.Systems.CServer await base.OnInit(); } + public override void OnClose() { isInit = false; @@ -165,5 +168,23 @@ namespace AppGame.Systems.CServer } + /// + /// 有客户端断开连接 + /// + private void OnLocalClientDisconnect(JNServerParam args) + { + + if (App.Game.Server is null) return; + //只有绑定过ID 的客户端才可以执行操作 + if (!ids.ContainsKey(args.Client)) return; + App.Game.Server.GetSystems().ForEach(child => + { + child.OnPlayerExitServer(ids[args.Client]); + }); + + + } + + } } \ No newline at end of file diff --git a/JNFrame2/Assets/Scripts/AppGame/Systems/CServer/JNGTileClient.cs b/JNFrame2/Assets/Scripts/AppGame/Systems/CServer/JNGTileClient.cs index 1fc97de2..a0f18c24 100644 --- a/JNFrame2/Assets/Scripts/AppGame/Systems/CServer/JNGTileClient.cs +++ b/JNFrame2/Assets/Scripts/AppGame/Systems/CServer/JNGTileClient.cs @@ -74,7 +74,7 @@ namespace AppGame.Systems private void OnNSyncStateDataUpdate(byte[] data) { var info = JNStateItemData.Parser.ParseFrom(data); - App.Game.AddState(info); + App.Game.SyncState(info,false,true); } /// @@ -91,7 +91,7 @@ namespace AppGame.Systems //生效全局状态 allData.Data.Data.ForEach(child => { - App.Game.AddState(child); + App.Game.SyncState(child,false,true); }); } diff --git a/JNFrame2/Assets/Scripts/AppGame/Systems/JNGGame.cs b/JNFrame2/Assets/Scripts/AppGame/Systems/JNGGame.cs index ccbd1988..664bef7a 100644 --- a/JNFrame2/Assets/Scripts/AppGame/Systems/JNGGame.cs +++ b/JNFrame2/Assets/Scripts/AppGame/Systems/JNGGame.cs @@ -112,24 +112,30 @@ namespace AppGame.Systems /// /// 接收状态数据 /// - public void AddState(JNStateItemData frame) + public void SyncState(JNStateItemData frame,bool isSyncClient,bool isSyncServer) { var message = new Dictionary(); foreach (var data in frame.Messages) { message.Add(data.Key,data.Value.Data.ToByteArray()); } - - client?.GetSystems().ForEach(child => + + if (isSyncClient) { - if (child.NetID != frame.NetID) return; - child.OnInsertUBytes(message); - }); - server?.GetSystems().ForEach(child => + client?.GetSystems().ForEach(child => + { + if (child.NetID != frame.NetID) return; + child.OnInsertUBytes(message); + }); + } + if (isSyncServer) { - if (child.NetID != frame.NetID) return; - child.OnInsertUBytes(message); - }); + server?.GetSystems().ForEach(child => + { + if (child.NetID != frame.NetID) return; + child.OnInsertUBytes(message); + }); + } } } diff --git a/JNFrame2/Assets/Scripts/Game/Logic/Entity/EDContexts.cs b/JNFrame2/Assets/Scripts/Game/Logic/Entity/EDContexts.cs index 836d5d1e..2096ed4f 100644 --- a/JNFrame2/Assets/Scripts/Game/Logic/Entity/EDContexts.cs +++ b/JNFrame2/Assets/Scripts/Game/Logic/Entity/EDContexts.cs @@ -8,6 +8,8 @@ namespace Game.JNGFrame.Logic.Entity { public override IContext[] allContexts { get; } = { new EDNodeContext(),new EDPlayerContext(),new EDBossContext(), }; + + } } \ No newline at end of file diff --git a/JNFrame2/Assets/Scripts/Game/Logic/Entity/EDEntityBasis.cs b/JNFrame2/Assets/Scripts/Game/Logic/Entity/EDEntityBasis.cs index 4c184473..05967d13 100644 --- a/JNFrame2/Assets/Scripts/Game/Logic/Entity/EDEntityBasis.cs +++ b/JNFrame2/Assets/Scripts/Game/Logic/Entity/EDEntityBasis.cs @@ -2,6 +2,8 @@ using JNGame.Sync.Frame.Service; using JNGame.Sync.State.Tile; using JNGame.Sync.State.Tile.Entity; +using JNGame.Sync.System.Data; +using NotImplementedException = System.NotImplementedException; namespace Game.Logic.Entity { @@ -24,7 +26,17 @@ namespace Game.Logic.Entity } return LVector3.Down; } - - + + public override void TileSyncData(ISTileData data) + { + Transform.Position = data.GetDataPosition(); + } + + public override void OnTileSlaveExit() + { + base.OnTileSlaveExit(); + //从服务器 - 实体移出后立即删除 + Destroy(); + } } } \ No newline at end of file diff --git a/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/Component/Controller/EDPlayerController.cs b/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/Component/Controller/EDPlayerController.cs index b5cdd437..6786c18f 100644 --- a/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/Component/Controller/EDPlayerController.cs +++ b/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/Component/Controller/EDPlayerController.cs @@ -34,6 +34,10 @@ namespace Game.JNGFrame.Logic.Entity.Controller public override void OnSyncStart() { + + //Player 同步到从服务器 + TileEntity.IsSyncSlave = true; + base.OnSyncStart(); Move.Speed = LFloat.L10; } diff --git a/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/Contexts/EDPlayerContext.cs b/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/Contexts/EDPlayerContext.cs index 200b0845..406d8dad 100644 --- a/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/Contexts/EDPlayerContext.cs +++ b/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/Contexts/EDPlayerContext.cs @@ -1,4 +1,5 @@ -using Game.JNGFrame.Logic.Entity.Controller; +using Entitas; +using Game.JNGFrame.Logic.Entity.Controller; using Game.Logic.Entity.Nodes; using Game.Logic.Entity.Nodes.Component.Components; using JNGame.Sync.State.Tile.Entity; @@ -7,6 +8,7 @@ namespace Game.JNGFrame.Logic.Entity.Contexts { public sealed partial class EDPlayerContext : JNTileContext { + protected override EDPlayer BindComponent(EDPlayer entity) { base.BindComponent(entity); @@ -14,5 +16,6 @@ namespace Game.JNGFrame.Logic.Entity.Contexts entity.AddComponent(); return entity; } + } } \ No newline at end of file diff --git a/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/EDBoss.cs b/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/EDBoss.cs index f099029e..3e5ecd79 100644 --- a/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/EDBoss.cs +++ b/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/EDBoss.cs @@ -13,12 +13,6 @@ namespace Game.Logic.Entity.Nodes public EDMoveComponent Move => CLookup.Query(this); public EDBossController Controller => CLookup.Query(this); - public override void TileSyncData(ISTileData data) - { - var nodeData = data as EDBossData; - Transform.Position = nodeData.Value.Position.ToLVector3(); - } - public override JNEntityLookup NewCLookup() { return new EDBoosLookup(); diff --git a/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/EDNode.cs b/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/EDNode.cs index 7f8b2ba6..f7134a63 100644 --- a/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/EDNode.cs +++ b/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/EDNode.cs @@ -12,13 +12,6 @@ namespace Game.Logic.Entity.Nodes public EDMoveComponent Move => CLookup.Query(this); - - public override void TileSyncData(ISTileData data) - { - var nodeData = data as EDNodeData; - Transform.Position = nodeData.Value.Position.ToLVector3(); - } - public override JNEntityLookup NewCLookup() { return new EDNodeLookup(); diff --git a/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/EDPlayer.cs b/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/EDPlayer.cs index 37727cf3..e9a39c31 100644 --- a/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/EDPlayer.cs +++ b/JNFrame2/Assets/Scripts/Game/Logic/Entity/Nodes/EDPlayer.cs @@ -16,9 +16,9 @@ namespace Game.Logic.Entity.Nodes public override void TileSyncData(ISTileData data) { + base.TileSyncData(data); var nodeData = data as EDPlayerData; Controller.AuthBind(nodeData.Value.Auth.Value); - Transform.Position = nodeData.Value.Position.ToLVector3(); } public override JNEntityLookup NewCLookup() diff --git a/JNFrame2/Assets/Scripts/Game/Logic/System/DGBasisSystem.cs b/JNFrame2/Assets/Scripts/Game/Logic/System/DGBasisSystem.cs index c583c05d..2618bba4 100644 --- a/JNFrame2/Assets/Scripts/Game/Logic/System/DGBasisSystem.cs +++ b/JNFrame2/Assets/Scripts/Game/Logic/System/DGBasisSystem.cs @@ -30,5 +30,11 @@ namespace Game.Logic.System return LVector3.Down; } + /// + /// [状态同步生命周期] 玩家离开服务器 不在游戏线程中执行 + /// + public virtual void OnPlayerExitServer(int auth){} + + } } \ No newline at end of file diff --git a/JNFrame2/Assets/Scripts/Game/Logic/System/Logic/DPlayerSystem.cs b/JNFrame2/Assets/Scripts/Game/Logic/System/Logic/DPlayerSystem.cs index d4f34602..290de287 100644 --- a/JNFrame2/Assets/Scripts/Game/Logic/System/Logic/DPlayerSystem.cs +++ b/JNFrame2/Assets/Scripts/Game/Logic/System/Logic/DPlayerSystem.cs @@ -1,6 +1,5 @@ using DotRecast.Core.Collections; using Game.Input; -using Game.JNGFrame.Logic.Entity; using Game.JNGFrame.Logic.Entity.Contexts; using Game.Logic.Entity.Nodes; using JNGame.Math; @@ -40,5 +39,20 @@ namespace Game.Logic.System.Logic }); } + + + public override void OnPlayerExitServer(int auth) + { + base.OnPlayerExitServer(auth); + + NodeContext.GetHostEntities().ForEach(child => + { + if (child.Controller.Auth == auth) + { + child.DelayDestroy(); + } + }); + + } } } \ No newline at end of file diff --git a/JNFrame2/Assets/Scripts/Game/View/Entity/VDPlayers.cs b/JNFrame2/Assets/Scripts/Game/View/Entity/VDPlayers.cs index a0a7793d..26fe8843 100644 --- a/JNFrame2/Assets/Scripts/Game/View/Entity/VDPlayers.cs +++ b/JNFrame2/Assets/Scripts/Game/View/Entity/VDPlayers.cs @@ -14,6 +14,9 @@ namespace Game.JNGFrame.View.Entity public GameObject VWorld => App.Resource.VWorld; public GameObject Player => App.Resource.Player; public CinemachineFreeLook FreeLook => App.Resource.FreeLook; + + //本地玩家 视图 + private GameObject LocalView; public VDPlayers(SViewSystem root) : base(root) { @@ -67,9 +70,20 @@ namespace Game.JNGFrame.View.Entity public override GameObject NewView(EDPlayerData data) { - var gameObject = Object.Instantiate(Player, VWorld.transform); - gameObject.name = $"Player_{data.Id}"; - return gameObject; + GameObject view; + //如果这个角色是自己 则 直接拿自己的 View + if (App.IsClient() && data.Value.Auth == App.ClientID) + { + if (LocalView is null) LocalView = Object.Instantiate(Player, VWorld.transform); + view = LocalView; + } + else + { + view = Object.Instantiate(Player, VWorld.transform); + } + + view.name = $"Player_{data.Id}"; + return view; } public override EDPlayerData[] GetData() @@ -80,7 +94,10 @@ namespace Game.JNGFrame.View.Entity public override void ViewRemove(GameObject view) { view.transform.DOKill(); - Object.Destroy(view); + if (LocalView != view) + { + Object.Destroy(view); + } } } } \ No newline at end of file diff --git a/JNFrame2/BestHTTP.csproj b/JNFrame2/BestHTTP.csproj index e07bd8db..d94f6c4b 100644 --- a/JNFrame2/BestHTTP.csproj +++ b/JNFrame2/BestHTTP.csproj @@ -1979,8 +1979,8 @@ - + @@ -2809,12 +2809,12 @@ C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll - - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll + + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll + diff --git a/JNFrame2/Logs/shadercompiler-UnityShaderCompiler.exe0.log b/JNFrame2/Logs/shadercompiler-UnityShaderCompiler.exe0.log index d9617fbf..e69de29b 100644 --- a/JNFrame2/Logs/shadercompiler-UnityShaderCompiler.exe0.log +++ b/JNFrame2/Logs/shadercompiler-UnityShaderCompiler.exe0.log @@ -1,3 +0,0 @@ -Base path: 'C:/APP/UnityEdit/2021.3.33f1c1/Editor/Data', plugins path 'C:/APP/UnityEdit/2021.3.33f1c1/Editor/Data/PlaybackEngines' -Cmd: initializeCompiler - diff --git a/JNFrame2/StompyRobot.SRDebugger.Editor.csproj b/JNFrame2/StompyRobot.SRDebugger.Editor.csproj index 8b66b138..017c3d1e 100644 --- a/JNFrame2/StompyRobot.SRDebugger.Editor.csproj +++ b/JNFrame2/StompyRobot.SRDebugger.Editor.csproj @@ -839,12 +839,12 @@ C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\UnityReferenceAssemblies\unity-4.8-api\Facades\System.Xml.XPath.XDocument.dll - - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll + + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.TestRunner.dll diff --git a/JNFrame2/StompyRobot.SRDebugger.csproj b/JNFrame2/StompyRobot.SRDebugger.csproj index f5c92a6b..14c03377 100644 --- a/JNFrame2/StompyRobot.SRDebugger.csproj +++ b/JNFrame2/StompyRobot.SRDebugger.csproj @@ -916,12 +916,12 @@ C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll - - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll + + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll + diff --git a/JNFrame2/StompyRobot.SRF.Editor.csproj b/JNFrame2/StompyRobot.SRF.Editor.csproj index d9a80448..8ed38a64 100644 --- a/JNFrame2/StompyRobot.SRF.Editor.csproj +++ b/JNFrame2/StompyRobot.SRF.Editor.csproj @@ -830,12 +830,12 @@ C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\UnityReferenceAssemblies\unity-4.8-api\Facades\System.Xml.XPath.XDocument.dll - - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll + + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.TestRunner.dll diff --git a/JNFrame2/StompyRobot.SRF.csproj b/JNFrame2/StompyRobot.SRF.csproj index a1b170eb..d7f5537e 100644 --- a/JNFrame2/StompyRobot.SRF.csproj +++ b/JNFrame2/StompyRobot.SRF.csproj @@ -861,12 +861,12 @@ C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll - - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll + + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll + diff --git a/JNFrame2/UniTask.Addressables.csproj b/JNFrame2/UniTask.Addressables.csproj index ac2ca5f7..a331c4e7 100644 --- a/JNFrame2/UniTask.Addressables.csproj +++ b/JNFrame2/UniTask.Addressables.csproj @@ -806,12 +806,12 @@ C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll - - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll + + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll + diff --git a/JNFrame2/UniTask.DOTween.csproj b/JNFrame2/UniTask.DOTween.csproj index 00a41b0e..2cf761ae 100644 --- a/JNFrame2/UniTask.DOTween.csproj +++ b/JNFrame2/UniTask.DOTween.csproj @@ -806,12 +806,12 @@ C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll - - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll + + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll + diff --git a/JNFrame2/UniTask.Editor.csproj b/JNFrame2/UniTask.Editor.csproj index 838d965b..49045b5d 100644 --- a/JNFrame2/UniTask.Editor.csproj +++ b/JNFrame2/UniTask.Editor.csproj @@ -826,12 +826,12 @@ C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\UnityReferenceAssemblies\unity-4.8-api\Facades\System.Xml.XPath.XDocument.dll - - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll + + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.TestRunner.dll diff --git a/JNFrame2/UniTask.Linq.csproj b/JNFrame2/UniTask.Linq.csproj index 1cd1ea69..25015907 100644 --- a/JNFrame2/UniTask.Linq.csproj +++ b/JNFrame2/UniTask.Linq.csproj @@ -878,12 +878,12 @@ C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll - - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll + + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll + diff --git a/JNFrame2/UniTask.TextMeshPro.csproj b/JNFrame2/UniTask.TextMeshPro.csproj index f1e4a588..66736b24 100644 --- a/JNFrame2/UniTask.TextMeshPro.csproj +++ b/JNFrame2/UniTask.TextMeshPro.csproj @@ -810,12 +810,12 @@ D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\Unity.TextMeshPro.dll - - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll + + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll + diff --git a/JNFrame2/UniTask.csproj b/JNFrame2/UniTask.csproj index b3457ec5..ef7114f0 100644 --- a/JNFrame2/UniTask.csproj +++ b/JNFrame2/UniTask.csproj @@ -878,12 +878,12 @@ C:\APP\UnityEdit\2021.3.33f1c1\Editor\Data\NetStandard\compat\2.1.0\shims\netfx\System.Xml.Serialization.dll - - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll - D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEngine.UI.dll + + D:\Jisol\JisolGame\JNFrame2\Library\ScriptAssemblies\UnityEditor.UI.dll + diff --git a/JNFrame2/UserSettings/Layouts/default-2021.dwlt b/JNFrame2/UserSettings/Layouts/default-2021.dwlt index 1dbf4745..3f2bb3f4 100644 --- a/JNFrame2/UserSettings/Layouts/default-2021.dwlt +++ b/JNFrame2/UserSettings/Layouts/default-2021.dwlt @@ -119,7 +119,7 @@ MonoBehaviour: m_MinSize: {x: 400, y: 200} m_MaxSize: {x: 32384, y: 16192} vertical: 0 - controlID: 22 + controlID: 82 --- !u!114 &6 MonoBehaviour: m_ObjectHideFlags: 52 @@ -144,7 +144,7 @@ MonoBehaviour: m_MinSize: {x: 300, y: 200} m_MaxSize: {x: 24288, y: 16192} vertical: 1 - controlID: 23 + controlID: 83 --- !u!114 &7 MonoBehaviour: m_ObjectHideFlags: 52 @@ -170,7 +170,7 @@ MonoBehaviour: m_MinSize: {x: 300, y: 100} m_MaxSize: {x: 24288, y: 8096} vertical: 0 - controlID: 24 + controlID: 28 --- !u!114 &8 MonoBehaviour: m_ObjectHideFlags: 52 @@ -243,8 +243,8 @@ MonoBehaviour: y: 0 width: 609 height: 528 - m_MinSize: {x: 102, y: 121} - m_MaxSize: {x: 4002, y: 4021} + m_MinSize: {x: 100, y: 100} + m_MaxSize: {x: 4000, y: 4000} m_ActualView: {fileID: 20} m_Panes: - {fileID: 20} @@ -394,23 +394,23 @@ MonoBehaviour: m_SceneHierarchy: m_TreeViewState: scrollPos: {x: 0, y: 0} - m_SelectedIDs: - m_LastClickedID: 0 - m_ExpandedIDs: d2e4ffff28e5ffffe6e7ffffeae7ffff14eaffff6aeaffff28edffff2cedffffa8f6fffffef6ffffbcf9ffffc0f9ffff1afbffff + m_SelectedIDs: 169d0000 + m_LastClickedID: 40214 + m_ExpandedIDs: f2beffff0ecaffff64caffff22cdffff26cdffff94e1ffff80e5ffff26f6ffff7cf6ffff3af9ffff3ef9ffff1afbffff12910000ee9c0000 m_RenameOverlay: m_UserAcceptedRename: 0 - m_Name: - m_OriginalName: + m_Name: World + m_OriginalName: World m_EditFieldRect: serializedVersion: 2 x: 0 y: 0 width: 0 height: 0 - m_UserData: 0 + m_UserData: 40174 m_IsWaitingForDelay: 0 m_IsRenaming: 0 - m_OriginalEventType: 11 + m_OriginalEventType: 0 m_IsRenamingFilename: 0 m_ClientGUIView: {fileID: 8} m_SearchString: @@ -734,9 +734,9 @@ MonoBehaviour: m_PlayAudio: 0 m_AudioPlay: 0 m_Position: - m_Target: {x: 66.17166, y: 74.382965, z: -68.47802} + m_Target: {x: 104.11677, y: 87.14451, z: -68.7427} speed: 2 - m_Value: {x: 66.17166, y: 74.382965, z: -68.47802} + m_Value: {x: 104.11677, y: 87.14451, z: -68.7427} m_RenderMode: 0 m_CameraMode: drawMode: 0 @@ -783,13 +783,13 @@ MonoBehaviour: m_GridAxis: 1 m_gridOpacity: 0.5 m_Rotation: - m_Target: {x: -0.2639696, y: -0.106222175, z: 0.029262349, w: -0.95822775} + m_Target: {x: -0.35256705, y: -0.0022476835, z: 0.000847305, w: -0.9357961} speed: 2 - m_Value: {x: -0.26396698, y: -0.106221125, z: 0.02926206, w: -0.9582183} + m_Value: {x: -0.35256287, y: -0.002247657, z: 0.000847295, w: -0.93578506} m_Size: - m_Target: 2.598076 + m_Target: 0.8660254 speed: 2 - m_Value: 2.598076 + m_Value: 0.8660254 m_Ortho: m_Target: 0 speed: 2 @@ -897,9 +897,9 @@ MonoBehaviour: m_IsLocked: 0 m_FolderTreeState: scrollPos: {x: 0, y: 0} - m_SelectedIDs: 26e80000 - m_LastClickedID: 59430 - m_ExpandedIDs: 000000000a740000 + m_SelectedIDs: 8e740000 + m_LastClickedID: 29838 + m_ExpandedIDs: 000000002274000000ca9a3b m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -927,7 +927,7 @@ MonoBehaviour: scrollPos: {x: 0, y: 0} m_SelectedIDs: m_LastClickedID: 0 - m_ExpandedIDs: 000000000a740000 + m_ExpandedIDs: 0000000022740000 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -952,9 +952,9 @@ MonoBehaviour: m_Icon: {fileID: 0} m_ResourceFile: m_ListAreaState: - m_SelectedInstanceIDs: f62f0100 - m_LastClickedInstanceID: 77814 - m_HadKeyboardFocusLastEvent: 0 + m_SelectedInstanceIDs: ce2e0000 + m_LastClickedInstanceID: 11982 + m_HadKeyboardFocusLastEvent: 1 m_ExpandedInstanceIDs: c623000000000000 m_RenameOverlay: m_UserAcceptedRename: 0 diff --git a/JNFrame2/obj/Debug/AimingRig.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/AimingRig.csproj.AssemblyReference.cache index bbee18008ee50ce3dee22619a575431800d7ef74..5af6fbdb61be84725cf1baeab804b5a8e9d234d6 100644 GIT binary patch delta 52 zcmaEIOYq4p!G;#b7N!>FEi5M4Y)W#kF6-UiZk5eq$;jqr`3%UJzP^yjdU|O#i_7$e HFEi5M4Y~?9Z?n$?{TV=CYGO~3uiUB#(*B3HbPcO}8ahcw5 HoG}Lg62cQn diff --git a/JNFrame2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache index 81972b0c9e281a1b56c62998b7c42357d77a3d4a..de34fb27f5410b669c3988834d48a420b7604262 100644 GIT binary patch delta 726 zcmZ8eT}V@L6z80s``>gooz5s~QbG`YNR|(k(TO_j&xCmi`Oh_#0c|OcqBD$@{l>Er*-s@J>QCD}7*9SiI8D7%v zs8~JRQ@JssR7L4Dh`EGb1SjYM2y3ucop9+_aQNMmveNvSib1Yfe_!p6n*hMd=VD}4 zf-%|)V%&01!-;&M^C0?e2es3RG#vJ~osxO`B<I4^sM-CTf3!UVnEwW^@yK_o6D!J;l6k7j`V&av5ia`yIb16wJBN*E z;j$1)9Dj>${xCy!E{>9sM;6H}9>)TjO_4>afsAMBy>0;UStD-#7wHB&pCfU_GBt=# z_PZKi?>ju^e`u4HEeXm+Okc(G1iIPiP9@V3Ej$t*28`SkJlT^vg^I&4P8FM)?hAq4; zruM#l#5@kmXv*gQh$L55n6e~E9uTdCdPd&-|DTs|(=6F|t3{3Hfk|r2Y$`uZQX%{X DIYSon delta 726 zcmZ8fT}YE*6y}_r@7>fd-BPk-%j_cQN3?`2&9Gm|YE6(@Vz@*|C{Te1^~$9 z^Fhi~yg}LvVzA1hK_@>^1Bg3UHfhk(C>(V+pOJaT4DI2HN7%)-S!zm@mEl?Pf&AK$ zmn1Caogpe#`a;wUqQk3kD0yKz0b*nzsm093B}h|x=g9h}ClaC4AUIP~#?vcsiXYy_ z#8l@K^l5~w^g3`NEF9>YAuq)2t@gnJ`hlGR?|P|V$ZFp@Z$MYUbzzD z0DNz#1lOXX8&xq5YKiq`igb*dNGmkQi2wPDN1r%lIuu&7*S!+oD};r?p->b)mt10MuiJME^tmOw8oPUR0G#+ zo@hzWKcaB;hy&P^;zk5p#X1o~Zhf@_~{OJ{5nfI2F zw&1_5gjJXL)LNi>OH?^DXcpXyjbA8?%UAfA-uX>QO?FN!FOm~&i{zEQKHfwBBiK=$-BWl=j6vN`Eg4s0~wYvJ;t%H z_;tRrxnrTY769Dzqm#Mi>o5j^@91@^bD9dX09Ahkv+O#BX5jhV73x?fBiI4rR*!2H zYo{X-W~ae9@X*8<2>O=52CD30XXs})p5Vr+3@JDPq7ZVg;%ezp0lc)Lu&pHO4V;e( zFF=xV8u#%2JDLQYi!%R>AT!gK1o}xCMl-dSd zqh%?r(d|*KQF5kOGp*0y0Sb1qHKfdgqBY>B<7u?;VJO#hl4)!z>8J>Y77*!Ant7y( ztpaXXmvtBLDDXr54vqTWC-7Yx)dOy$b)O+Z7cb#qQM0j>(m~5h;GmOB;E~=ztO4=R zQ#$P?qk<0$Amr5{t-0B^y5;U7H0GT9bz+}(lv!b%OaCS-Js)9K**=1P;9uJ{EqV6} nMu896bX(y?2vTdUsfrc{u%29_EJ1-Rw(-Dk{m1TS(E@(~fmis* diff --git a/JNFrame2/obj/Debug/Assembly-CSharp.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/Assembly-CSharp.csproj.AssemblyReference.cache index b6faeea21586b79906d92fa2880c8328ae410b78..135af0a7de0954fcfb33a0cf07922b69f4f00284 100644 GIT binary patch delta 754 zcmY+CT}YEr7{_^zPsfIDv?d{?sbD1(q1cVI%rUeNYEvVmkBioa5KVLC=U7XTWm1}x zVSg;65ATFBBzW&~5t&7X;f0YaCG8^WVnvsMz2}{ix;*DR&-wrVzvmepvW*Ve+Cvl) zp_Hfm@VrbPyuCYj7C$E_3)V3zia5$N)Hm^dbxOm)7`0;3%ZFuo=3P~IDoPH$rj~6a zW7a#yjUKGy(g9nk@L{XD6~Rh|Bm@&*$V3r+U{tJ{}?I{%sbo8z&Ez zwvvV)elEsRfVW}kC8gr?ICa9;z^Op<|AQ!w1j)s##bZ59=9ofM|v0fbvQu5E5o0Aj0&Xa}lVL6xgn=r?2A}0YKZq3;p-cPRUuym*L(7*@OIR6uuTpv_AAw32ba?_Mb(;x+!@;b zU;lax&X6xMHOz>G_^AA1A5fjUuJV}`zxNiYxUbjDUxYPZsScgj_=MK*U6q;;vJhV| zcEP(q`Fdd&7tp_i@)CsFx`cM?Bjv-rGi3`rty~D>%8HHG`HgIOYYz9&EIIMyLt+!m znN4bmB`{^u@w{84<8jRR#aO2@Si40F_Vnc2Jy_6Ff&J%rfgaCg@4ddY*U*4tXu#1HpnwR( zJmUvvNDIZ960hbc4U&Non7&->IV7Jb9ih)5M5mb-i|_3>1g+-7ApJ4g;4 zNVIOumKrW6*;k*ep6Mm+MebX&;hUfHkaSL5!mnCBv-oa$ygW#9%(F>-UOPe_%%_rp zAAZild^2yw{A*f?&m+_U??o<>P5rv<;2X-mbx7#0+3$0 z(^9{Y7AwtQ10NxYI4wThAWBelQs{yE5p3i+BRZ+7qpOH$J4$^b9wiaVF=zZ-wItLm zZRQb@zKR6Jo7lp6B;!*xf_t3uLu--@JTHjZfJ1e{h447FqPmq!<(*YMIXqk;ImQL&JNi{>($hjb}m?+YLz;X zJVD$3t6zuy3G#-<9x|cng^v%mA zI59VCWua=8(#(ubPAB70n!?Zyr7Sqq+9{0NQD^B^acMBi(^zc#n{e<4<^e58(n3g{-GOouf kfJGJe-%|>_(@P3wnmGr_y}}Q7kdI0CA05nlK`W*I0HXyKSO5S3 diff --git a/JNFrame2/obj/Debug/BestHTTP.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/BestHTTP.csproj.AssemblyReference.cache index 5ad5d628c8fd0f71c69b37366f755fc1a5e464ba..22b8e2ad97a5331be4caa759d75046450f495817 100644 GIT binary patch delta 56 zcmaEIOYq4p!G;#b7N!>FEi5M4Y)W#kF6-T%o_CnhdU|O#%Re?Z%V!{g^@U7e0hj4N Ha#(Tzv1u3f delta 56 zcmaEIOYq4p!G;#b7N!>FEi5M4Y~?9Z?n$?%=N)FWo?e>G@{g^XQ4A!ozK{tl;4=M3 H4oeOIiR~6l diff --git a/JNFrame2/obj/Debug/StompyRobot.SRDebugger.Editor.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/StompyRobot.SRDebugger.Editor.csproj.AssemblyReference.cache index ae8757196a850d9a7247401d67fa3f2582f4fee8..ddda92a7a319f72d220e522ea7559045fe797c27 100644 GIT binary patch delta 95 zcmbQdQE2i;p@tU57N!>FEi6kXvnk2Fx~zA5`nnb->&e}-IH$j#%<`4Z&GH#YFyG@Mx_OOKtf~2<_PGgB=gmETJXJKXp0I>onX8-^I delta 95 zcmbQdQE2i;p@tU57N!>FEi6kXvz4bvxhLJ4zOIGIdUE$H>(bvwUUiW)uSn#$02B p3tCS<-_FD~J%1|89=0p#ftCMf^_ diff --git a/JNFrame2/obj/Debug/StompyRobot.SRDebugger.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/StompyRobot.SRDebugger.csproj.AssemblyReference.cache index bbee18008ee50ce3dee22619a575431800d7ef74..5af6fbdb61be84725cf1baeab804b5a8e9d234d6 100644 GIT binary patch delta 52 zcmaEIOYq4p!G;#b7N!>FEi5M4Y)W#kF6-UiZk5eq$;jqr`3%UJzP^yjdU|O#i_7$e HFEi5M4Y~?9Z?n$?{TV=CYGO~3uiUB#(*B3HbPcO}8ahcw5 HoG}Lg62cQn diff --git a/JNFrame2/obj/Debug/StompyRobot.SRF.Editor.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/StompyRobot.SRF.Editor.csproj.AssemblyReference.cache index ae8757196a850d9a7247401d67fa3f2582f4fee8..ddda92a7a319f72d220e522ea7559045fe797c27 100644 GIT binary patch delta 95 zcmbQdQE2i;p@tU57N!>FEi6kXvnk2Fx~zA5`nnb->&e}-IH$j#%<`4Z&GH#YFyG@Mx_OOKtf~2<_PGgB=gmETJXJKXp0I>onX8-^I delta 95 zcmbQdQE2i;p@tU57N!>FEi6kXvz4bvxhLJ4zOIGIdUE$H>(bvwUUiW)uSn#$02B p3tCS<-_FD~J%1|89=0p#ftCMf^_ diff --git a/JNFrame2/obj/Debug/StompyRobot.SRF.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/StompyRobot.SRF.csproj.AssemblyReference.cache index bbee18008ee50ce3dee22619a575431800d7ef74..5af6fbdb61be84725cf1baeab804b5a8e9d234d6 100644 GIT binary patch delta 52 zcmaEIOYq4p!G;#b7N!>FEi5M4Y)W#kF6-UiZk5eq$;jqr`3%UJzP^yjdU|O#i_7$e HFEi5M4Y~?9Z?n$?{TV=CYGO~3uiUB#(*B3HbPcO}8ahcw5 HoG}Lg62cQn diff --git a/JNFrame2/obj/Debug/UniTask.Addressables.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/UniTask.Addressables.csproj.AssemblyReference.cache index 5ad5d628c8fd0f71c69b37366f755fc1a5e464ba..22b8e2ad97a5331be4caa759d75046450f495817 100644 GIT binary patch delta 56 zcmaEIOYq4p!G;#b7N!>FEi5M4Y)W#kF6-T%o_CnhdU|O#%Re?Z%V!{g^@U7e0hj4N Ha#(Tzv1u3f delta 56 zcmaEIOYq4p!G;#b7N!>FEi5M4Y~?9Z?n$?%=N)FWo?e>G@{g^XQ4A!ozK{tl;4=M3 H4oeOIiR~6l diff --git a/JNFrame2/obj/Debug/UniTask.DOTween.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/UniTask.DOTween.csproj.AssemblyReference.cache index 295c09c5c679603853f5c66bbbcb824aeb47f049..e21455afbe0f24d4d758a8e5727a8a6cf49df8aa 100644 GIT binary patch delta 56 zcmbQ=Cp5oLsG)_ig{g&k3(NZ!HYK@Nm-TK>*SyPUJ>8&{Sh89xJ*BP Hk1+=TVc->- diff --git a/JNFrame2/obj/Debug/UniTask.Editor.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/UniTask.Editor.csproj.AssemblyReference.cache index 66bac86c3640974b39d86c12e984415f4098e3a1..e2c9f1e74a3119abe5267fe2bf6ceb1dd0d41344 100644 GIT binary patch delta 119 zcmX^2MCjZTp@tU57N!>FEi4IZ*_7m7UDmrjz2*(0_4EhpSX`!W_`t|E{qFEi4IZ*~(L-+>>riuX)30J^jHt7MJN8J}|OPf4!Dv3tKm% z7)WZvd?xGdKq)pxwkzp^Ad&wIn4BkHDC3#_W*v*&^a%@@%BO$Wz!J(fcZ(!Q+VBG- KT-pL;UJU>z+BCNS diff --git a/JNFrame2/obj/Debug/UniTask.Linq.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/UniTask.Linq.csproj.AssemblyReference.cache index 5ad5d628c8fd0f71c69b37366f755fc1a5e464ba..22b8e2ad97a5331be4caa759d75046450f495817 100644 GIT binary patch delta 56 zcmaEIOYq4p!G;#b7N!>FEi5M4Y)W#kF6-T%o_CnhdU|O#%Re?Z%V!{g^@U7e0hj4N Ha#(Tzv1u3f delta 56 zcmaEIOYq4p!G;#b7N!>FEi5M4Y~?9Z?n$?%=N)FWo?e>G@{g^XQ4A!ozK{tl;4=M3 H4oeOIiR~6l diff --git a/JNFrame2/obj/Debug/UniTask.TextMeshPro.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/UniTask.TextMeshPro.csproj.AssemblyReference.cache index 1788975d5502a8a589712d196f7616be1f1c93fd..99ea1b878d315c1a650d647b23075e62eb7b37ff 100644 GIT binary patch delta 74 zcmdn{NO12X!G;#b7N!>FEi6ZK*_7m7UDmrjz3?!j-FD7A78XXB$jT#(*3FEi6ZK*{bF!xF_A3UU-<%ZaZfl3kxG#d5RQBWaSY?>*;>^ XEdSWL8O1;Xwk1qp0hj3qN|D diff --git a/JNFrame2/obj/Debug/UniTask.csproj.AssemblyReference.cache b/JNFrame2/obj/Debug/UniTask.csproj.AssemblyReference.cache index 5ad5d628c8fd0f71c69b37366f755fc1a5e464ba..22b8e2ad97a5331be4caa759d75046450f495817 100644 GIT binary patch delta 56 zcmaEIOYq4p!G;#b7N!>FEi5M4Y)W#kF6-T%o_CnhdU|O#%Re?Z%V!{g^@U7e0hj4N Ha#(Tzv1u3f delta 56 zcmaEIOYq4p!G;#b7N!>FEi5M4Y~?9Z?n$?%=N)FWo?e>G@{g^XQ4A!ozK{tl;4=M3 H4oeOIiR~6l