From eb94e706dfa6732041c6dda7edb3897dc946a0ab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E6=80=9D=E6=B5=B7?= <1464576565@qq.com>
Date: Fri, 5 Sep 2025 19:46:39 +0800
Subject: [PATCH] modify
---
Editor/CoreEditor.meta | 8 +
Editor/CoreEditor/Runtime.meta | 8 +
.../CoreEditor/Runtime/CheckUnityVersion.cs | 16 +
.../Runtime/CheckUnityVersion.cs.meta | 3 +
Editor/CoreEditor/Runtime/FantasyStartup.cs | 49 +
.../CoreEditor/Runtime/FantasyStartup.cs.meta | 3 +
Editor/CoreEditor/Runtime/LinkXmlGenerator.cs | 52 +
.../Runtime/LinkXmlGenerator.cs.meta | 3 +
Editor/CoreEditor/Runtime/Settings.meta | 3 +
.../Runtime/Settings/FantasySettings.cs | 13 +
.../Runtime/Settings/FantasySettings.cs.meta | 3 +
.../Settings/FantasySettingsProvider.cs | 102 +
.../Settings/FantasySettingsProvider.cs.meta | 3 +
.../FantasySettingsScriptableObject.cs | 25 +
.../FantasySettingsScriptableObject.cs.meta | 3 +
.../Settings/ScriptableObjectSingleton.cs | 100 +
.../ScriptableObjectSingleton.cs.meta | 3 +
Editor/CoreEditor/Runtime/WSocket.meta | 8 +
.../Runtime/WSocket/SettingsWindow.cs | 229 ++
.../Runtime/WSocket/SettingsWindow.cs.meta | 11 +
Runtime/CoreRuntime.meta | 8 +
Runtime/CoreRuntime/Core.meta | 8 +
Runtime/CoreRuntime/Core/Assembly.meta | 8 +
.../CoreRuntime/Core/Assembly/AssemblyInfo.cs | 89 +
.../Core/Assembly/AssemblyInfo.cs.meta | 11 +
.../Core/Assembly/AssemblySystem.cs | 285 +++
.../Core/Assembly/AssemblySystem.cs.meta | 11 +
.../CoreRuntime/Core/Assembly/IAssembly.cs | 27 +
.../Core/Assembly/IAssembly.cs.meta | 11 +
Runtime/CoreRuntime/Core/Benchmark.meta | 8 +
.../CoreRuntime/Core/Benchmark/Handler.meta | 8 +
.../Handler/BenchmarkRequestHandler.cs | 25 +
.../Handler/BenchmarkRequestHandler.cs.meta | 11 +
Runtime/CoreRuntime/Core/DataBase.meta | 8 +
.../CoreRuntime/Core/DataBase/DataBaseType.cs | 20 +
.../Core/DataBase/DataBaseType.cs.meta | 11 +
.../CoreRuntime/Core/DataBase/IDataBase.cs | 210 ++
.../Core/DataBase/IDataBase.cs.meta | 11 +
.../Core/DataBase/MongoDataBase.cs | 1081 ++++++++
.../Core/DataBase/MongoDataBase.cs.meta | 11 +
Runtime/CoreRuntime/Core/DataBase/World.cs | 77 +
.../CoreRuntime/Core/DataBase/World.cs.meta | 11 +
Runtime/CoreRuntime/Core/DataStructure.meta | 8 +
.../Core/DataStructure/Collection.meta | 8 +
.../Collection/CircularBuffer.cs | 346 +++
.../Collection/CircularBuffer.cs.meta | 11 +
.../Collection/ConcurrentOneToManyListPool.cs | 197 ++
.../ConcurrentOneToManyListPool.cs.meta | 11 +
.../ConcurrentOneToManyQueuePool.cs | 194 ++
.../ConcurrentOneToManyQueuePool.cs.meta | 11 +
.../DataStructure/Collection/HashSetPool.cs | 134 +
.../Collection/HashSetPool.cs.meta | 11 +
.../Core/DataStructure/Collection/ListPool.cs | 101 +
.../DataStructure/Collection/ListPool.cs.meta | 11 +
.../Collection/OneToManyHashSetPool.cs | 208 ++
.../Collection/OneToManyHashSetPool.cs.meta | 11 +
.../Collection/OneToManyListPool.cs | 232 ++
.../Collection/OneToManyListPool.cs.meta | 11 +
.../Collection/OneToManyQueuePool.cs | 204 ++
.../Collection/OneToManyQueuePool.cs.meta | 11 +
.../DataStructure/Collection/ReuseList.cs | 69 +
.../Collection/ReuseList.cs.meta | 11 +
.../SortedConcurrentOneToManyListPool.cs | 226 ++
.../SortedConcurrentOneToManyListPool.cs.meta | 11 +
.../Collection/SortedOneToManyHashSetPool.cs | 192 ++
.../SortedOneToManyHashSetPool.cs.meta | 11 +
.../Collection/SortedOneToManyListPool.cs | 217 ++
.../SortedOneToManyListPool.cs.meta | 11 +
.../Core/DataStructure/Dictionary.meta | 8 +
.../Dictionary/DictionaryExtensions.cs | 31 +
.../Dictionary/DictionaryExtensions.cs.meta | 11 +
.../Dictionary/DictionaryPool.cs | 70 +
.../Dictionary/DictionaryPool.cs.meta | 11 +
.../Dictionary/DoubleMapDictionaryPool.cs | 289 +++
.../DoubleMapDictionaryPool.cs.meta | 11 +
.../Dictionary/EntityDictionary.cs | 91 +
.../Dictionary/EntityDictionary.cs.meta | 11 +
.../Dictionary/OneToManyDictionaryPool.cs | 247 ++
.../OneToManyDictionaryPool.cs.meta | 11 +
.../OneToManySortedDictionaryPool.cs | 250 ++
.../OneToManySortedDictionaryPool.cs.meta | 11 +
.../Dictionary/ReuseDictionary.cs | 70 +
.../Dictionary/ReuseDictionary.cs.meta | 11 +
.../Dictionary/SortedDictionaryPool.cs | 70 +
.../Dictionary/SortedDictionaryPool.cs.meta | 11 +
.../Core/DataStructure/NativeCollections.meta | 8 +
.../Core/DataStructure/PriorityQueue.meta | 8 +
.../PriorityQueue/PriorityQueueGenerics.cs | 121 +
.../PriorityQueueGenerics.cs.meta | 11 +
.../PriorityQueue/PriorityQueueItem.cs | 30 +
.../PriorityQueue/PriorityQueueItem.cs.meta | 11 +
.../PriorityQueue/PriorityQueueSimple.cs | 116 +
.../PriorityQueue/PriorityQueueSimple.cs.meta | 11 +
.../Core/DataStructure/SkipTable.meta | 8 +
.../Core/DataStructure/SkipTable/SkipTable.cs | 190 ++
.../DataStructure/SkipTable/SkipTable.cs.meta | 11 +
.../DataStructure/SkipTable/SkipTableBase.cs | 282 +++
.../SkipTable/SkipTableBase.cs.meta | 11 +
.../DataStructure/SkipTable/SkipTableDesc.cs | 188 ++
.../SkipTable/SkipTableDesc.cs.meta | 11 +
.../DataStructure/SkipTable/SkipTableNode.cs | 68 +
.../SkipTable/SkipTableNode.cs.meta | 11 +
Runtime/CoreRuntime/Core/Entitas.meta | 8 +
.../CoreRuntime/Core/Entitas/Component.meta | 8 +
.../Core/Entitas/Component/CoroutineLock.meta | 8 +
.../Component/CoroutineLock/CoroutineLock.cs | 140 ++
.../CoroutineLock/CoroutineLock.cs.meta | 11 +
.../CoroutineLock/CoroutineLockComponent.cs | 100 +
.../CoroutineLockComponent.cs.meta | 11 +
.../CoroutineLock/CoroutineLockQueue.cs | 35 +
.../CoroutineLock/CoroutineLockQueue.cs.meta | 11 +
.../CoroutineLock/WaitCoroutineLock.cs | 146 ++
.../CoroutineLock/WaitCoroutineLock.cs.meta | 11 +
.../Core/Entitas/Component/EntityComponent.cs | 523 ++++
.../Entitas/Component/EntityComponent.cs.meta | 11 +
.../Entitas/Component/EventComponent.meta | 8 +
.../EventComponent/EventComponent.cs | 252 ++
.../EventComponent/EventComponent.cs.meta | 11 +
.../Component/EventComponent/Interface.meta | 8 +
.../EventComponent/Interface/IEvent.cs | 112 +
.../EventComponent/Interface/IEvent.cs.meta | 11 +
.../Entitas/Component/MessagePoolComponent.cs | 139 ++
.../Component/MessagePoolComponent.cs.meta | 11 +
.../Component/SingleCollectionComponent.meta | 8 +
.../SingleCollectionComponent.cs | 167 ++
.../SingleCollectionComponent.cs.meta | 11 +
.../Entitas/Component/TimerComponent.meta | 8 +
.../Component/TimerComponent/Interface.meta | 8 +
.../TimerComponent/Interface/TimerHandler.cs | 10 +
.../Interface/TimerHandler.cs.meta | 11 +
.../Component/TimerComponent/TimeWheel.meta | 8 +
.../TimerComponent/TimeWheel/ScheduledTask.cs | 49 +
.../TimeWheel/ScheduledTask.cs.meta | 11 +
.../TimerComponent/TimeWheel/TimeWheel.cs | 134 +
.../TimeWheel/TimeWheel.cs.meta | 11 +
.../Component/TimerComponent/TimerAction.cs | 27 +
.../TimerComponent/TimerAction.cs.meta | 11 +
.../TimerComponent/TimerComponent.cs | 52 +
.../TimerComponent/TimerComponent.cs.meta | 11 +
.../TimerComponent/TimerScheduler.meta | 8 +
.../TimerScheduler/TimerSchedulerNet.cs | 390 +++
.../TimerScheduler/TimerSchedulerNet.cs.meta | 11 +
.../TimerScheduler/TimerSchedulerNetUnity.cs | 372 +++
.../TimerSchedulerNetUnity.cs.meta | 11 +
.../Component/TimerComponent/TimerType.cs | 25 +
.../TimerComponent/TimerType.cs.meta | 11 +
Runtime/CoreRuntime/Core/Entitas/Entity.cs | 1066 ++++++++
.../CoreRuntime/Core/Entitas/Entity.cs.meta | 11 +
.../CoreRuntime/Core/Entitas/EntityPool.cs | 66 +
.../Core/Entitas/EntityPool.cs.meta | 11 +
.../Core/Entitas/EntityReference.cs | 59 +
.../Core/Entitas/EntityReference.cs.meta | 11 +
.../CoreRuntime/Core/Entitas/Interface.meta | 8 +
.../Core/Entitas/Interface/Supported.meta | 8 +
.../Supported/ISingleCollectionRoot.cs | 17 +
.../Supported/ISingleCollectionRoot.cs.meta | 11 +
.../Interface/Supported/ISupportedDataBase.cs | 19 +
.../Supported/ISupportedDataBase.cs.meta | 11 +
.../Supported/ISupportedMultiEntity.cs | 20 +
.../Supported/ISupportedMultiEntity.cs.meta | 11 +
.../Supported/ISupportedSingleCollection.cs | 47 +
.../ISupportedSingleCollection.cs.meta | 11 +
.../Interface/Supported/ISupportedTransfer.cs | 19 +
.../Supported/ISupportedTransfer.cs.meta | 11 +
.../Core/Entitas/Interface/System.meta | 8 +
.../Entitas/Interface/System/IAwakeSystem.cs | 32 +
.../Interface/System/IAwakeSystem.cs.meta | 11 +
.../Interface/System/ICustomEntitiesSystem.cs | 59 +
.../System/ICustomEntitiesSystem.cs.meta | 11 +
.../Interface/System/IDeserializeSystem.cs | 32 +
.../System/IDeserializeSystem.cs.meta | 11 +
.../Interface/System/IDestroySystem.cs | 32 +
.../Interface/System/IDestroySystem.cs.meta | 11 +
.../Interface/System/IEntitiesSystem.cs | 22 +
.../Interface/System/IEntitiesSystem.cs.meta | 11 +
.../Interface/System/ILateUpdateSystem.cs | 36 +
.../System/ILateUpdateSystem.cs.meta | 11 +
.../Entitas/Interface/System/IUpdateSystem.cs | 31 +
.../Interface/System/IUpdateSystem.cs.meta | 11 +
Runtime/CoreRuntime/Core/FTask.meta | 8 +
Runtime/CoreRuntime/Core/FTask/Builder.meta | 8 +
.../AsyncFTaskCompletedMethodBuilder.cs | 52 +
.../AsyncFTaskCompletedMethodBuilder.cs.meta | 11 +
.../FTask/Builder/AsyncFTaskMethodBuilder.cs | 140 ++
.../Builder/AsyncFTaskMethodBuilder.cs.meta | 11 +
.../FTask/Builder/AsyncFVoidMethodBuilder.cs | 62 +
.../Builder/AsyncFVoidMethodBuilder.cs.meta | 11 +
.../Core/FTask/FCancellationToken.meta | 8 +
.../FCancellationToken/FCancellationToken.cs | 121 +
.../FCancellationToken.cs.meta | 11 +
.../Core/FTask/FTask.Extension.meta | 8 +
.../FTask/FTask.Extension/FTask.Factory.cs | 115 +
.../FTask.Extension/FTask.Factory.cs.meta | 11 +
.../Core/FTask/FTask.Extension/FTask.Tools.cs | 345 +++
.../FTask/FTask.Extension/FTask.Tools.cs.meta | 11 +
Runtime/CoreRuntime/Core/FTask/Task.meta | 8 +
Runtime/CoreRuntime/Core/FTask/Task/FTask.cs | 263 ++
.../CoreRuntime/Core/FTask/Task/FTask.cs.meta | 11 +
.../Core/FTask/Task/FTaskCompleted.cs | 31 +
.../Core/FTask/Task/FTaskCompleted.cs.meta | 11 +
Runtime/CoreRuntime/Core/FTask/Task/FVoid.cs | 29 +
.../CoreRuntime/Core/FTask/Task/FVoid.cs.meta | 11 +
Runtime/CoreRuntime/Core/Helper.meta | 8 +
Runtime/CoreRuntime/Core/Helper/ByteHelper.cs | 801 ++++++
.../Core/Helper/ByteHelper.cs.meta | 11 +
Runtime/CoreRuntime/Core/Helper/Download.meta | 8 +
.../Core/Helper/Download/ADownload.cs | 50 +
.../Core/Helper/Download/ADownload.cs.meta | 3 +
.../Core/Helper/Download/Download.cs | 72 +
.../Core/Helper/Download/Download.cs.meta | 3 +
.../Helper/Download/DownloadAssetBundle.cs | 54 +
.../Download/DownloadAssetBundle.cs.meta | 3 +
.../Core/Helper/Download/DownloadAudioClip.cs | 54 +
.../Helper/Download/DownloadAudioClip.cs.meta | 3 +
.../Core/Helper/Download/DownloadByte.cs | 52 +
.../Core/Helper/Download/DownloadByte.cs.meta | 3 +
.../Core/Helper/Download/DownloadSprite.cs | 55 +
.../Helper/Download/DownloadSprite.cs.meta | 3 +
.../Core/Helper/Download/DownloadText.cs | 52 +
.../Core/Helper/Download/DownloadText.cs.meta | 3 +
.../Core/Helper/Download/DownloadTexture.cs | 54 +
.../Helper/Download/DownloadTexture.cs.meta | 3 +
.../CoreRuntime/Core/Helper/EncryptHelper.cs | 63 +
.../Core/Helper/EncryptHelper.cs.meta | 11 +
Runtime/CoreRuntime/Core/Helper/FileHelper.cs | 187 ++
.../Core/Helper/FileHelper.cs.meta | 11 +
.../CoreRuntime/Core/Helper/HashCodeHelper.cs | 336 +++
.../Core/Helper/HashCodeHelper.cs.meta | 11 +
.../CoreRuntime/Core/Helper/HttpClient.meta | 8 +
.../Helper/HttpClient/HttpClientHelper.cs | 144 ++
.../HttpClient/HttpClientHelper.cs.meta | 3 +
.../Core/Helper/HttpClient/HttpClientPool.cs | 44 +
.../Helper/HttpClient/HttpClientPool.cs.meta | 3 +
.../Core/Helper/HttpClient/IJsonRpcRequest.cs | 20 +
.../Helper/HttpClient/IJsonRpcRequest.cs.meta | 3 +
Runtime/CoreRuntime/Core/Helper/JsonHelper.cs | 57 +
.../Core/Helper/JsonHelper.cs.meta | 11 +
.../CoreRuntime/Core/Helper/NetworkHelper.cs | 438 ++++
.../Core/Helper/NetworkHelper.cs.meta | 11 +
.../CoreRuntime/Core/Helper/RandomHelper.cs | 415 ++++
.../Core/Helper/RandomHelper.cs.meta | 11 +
.../Core/Helper/RandomHelperWebgl.cs | 295 +++
.../Core/Helper/RandomHelperWebgl.cs.meta | 11 +
.../CoreRuntime/Core/Helper/SocketHelper.cs | 74 +
.../Core/Helper/SocketHelper.cs.meta | 11 +
Runtime/CoreRuntime/Core/Helper/TimeHelper.cs | 83 +
.../Core/Helper/TimeHelper.cs.meta | 11 +
.../Core/Helper/UnityWebRequest.meta | 8 +
.../UnityWebRequest/UnityWebRequestHelper.cs | 244 ++
.../UnityWebRequestHelper.cs.meta | 3 +
.../Core/Helper/WebSocketHelper.cs | 38 +
.../Core/Helper/WebSocketHelper.cs.meta | 11 +
Runtime/CoreRuntime/Core/Helper/WinPeriod.cs | 24 +
.../CoreRuntime/Core/Helper/WinPeriod.cs.meta | 11 +
Runtime/CoreRuntime/Core/IdFactory.meta | 8 +
.../CoreRuntime/Core/IdFactory/Default.meta | 8 +
.../Core/IdFactory/Default/EntityIdStruct.cs | 136 ++
.../IdFactory/Default/EntityIdStruct.cs.meta | 11 +
.../Core/IdFactory/Default/RuntimeIdStruct.cs | 137 ++
.../IdFactory/Default/RuntimeIdStruct.cs.meta | 11 +
.../Core/IdFactory/IdFactoryHelper.cs | 132 +
.../Core/IdFactory/IdFactoryHelper.cs.meta | 11 +
.../Core/IdFactory/IdFactoryType.cs | 23 +
.../Core/IdFactory/IdFactoryType.cs.meta | 11 +
.../CoreRuntime/Core/IdFactory/Interface.meta | 8 +
.../Core/IdFactory/Interface/IIdFactory.cs | 24 +
.../IdFactory/Interface/IIdFactory.cs.meta | 11 +
.../IdFactory/Interface/IIdFactoryTool.cs | 27 +
.../Interface/IIdFactoryTool.cs.meta | 11 +
Runtime/CoreRuntime/Core/IdFactory/World.meta | 8 +
.../IdFactory/World/WorldEntityIdFactory.cs | 153 ++
.../World/WorldEntityIdFactory.cs.meta | 11 +
.../IdFactory/World/WorldRuntimeIdFactory.cs | 155 ++
.../World/WorldRuntimeIdFactory.cs.meta | 11 +
Runtime/CoreRuntime/Core/InnerErrorCode.cs | 66 +
.../CoreRuntime/Core/InnerErrorCode.cs.meta | 11 +
Runtime/CoreRuntime/Core/Log.meta | 8 +
Runtime/CoreRuntime/Core/Log/ConsoleLog.cs | 144 ++
.../CoreRuntime/Core/Log/ConsoleLog.cs.meta | 11 +
Runtime/CoreRuntime/Core/Log/ILog.cs | 74 +
Runtime/CoreRuntime/Core/Log/ILog.cs.meta | 11 +
Runtime/CoreRuntime/Core/Log/Log.cs | 189 ++
Runtime/CoreRuntime/Core/Log/Log.cs.meta | 11 +
Runtime/CoreRuntime/Core/Log/UnityLog.cs | 74 +
Runtime/CoreRuntime/Core/Log/UnityLog.cs.meta | 11 +
Runtime/CoreRuntime/Core/Network.meta | 8 +
.../CoreRuntime/Core/Network/Addressable.meta | 8 +
.../Network/Addressable/AddressableHelper.cs | 141 ++
.../Addressable/AddressableHelper.cs.meta | 11 +
.../Addressable/AddressableManageComponent.cs | 144 ++
.../AddressableManageComponent.cs.meta | 11 +
.../AddressableMessageComponent.cs | 91 +
.../AddressableMessageComponent.cs.meta | 11 +
.../Addressable/AddressableRouteComponent.cs | 218 ++
.../AddressableRouteComponent.cs.meta | 11 +
.../Network/Addressable/AddressableScene.cs | 31 +
.../Addressable/AddressableScene.cs.meta | 11 +
.../Core/Network/Addressable/Handler.meta | 8 +
.../Handler/I_AddressableAddHandler.cs | 26 +
.../Handler/I_AddressableAddHandler.cs.meta | 11 +
.../Handler/I_AddressableGetHandler.cs | 26 +
.../Handler/I_AddressableGetHandler.cs.meta | 11 +
.../Handler/I_AddressableLockHandler.cs | 26 +
.../Handler/I_AddressableLockHandler.cs.meta | 11 +
.../Handler/I_AddressableRemoveHandler.cs | 26 +
.../I_AddressableRemoveHandler.cs.meta | 11 +
.../Handler/I_AddressableUnLockHandler.cs | 27 +
.../I_AddressableUnLockHandler.cs.meta | 11 +
.../Core/Network/MemoryStreamBufferPool.cs | 96 +
.../Network/MemoryStreamBufferPool.cs.meta | 11 +
Runtime/CoreRuntime/Core/Network/Message.meta | 8 +
.../Core/Network/Message/Dispatcher.meta | 8 +
.../Network/Message/Dispatcher/Interface.meta | 8 +
.../Dispatcher/Interface/IMessageHandler.cs | 220 ++
.../Interface/IMessageHandler.cs.meta | 11 +
.../Interface/IRouteMessageHandler.cs | 490 ++++
.../Interface/IRouteMessageHandler.cs.meta | 11 +
.../Dispatcher/MessageDispatcherComponent.cs | 426 ++++
.../MessageDispatcherComponent.cs.meta | 11 +
.../Core/Network/Message/IMessage.cs | 95 +
.../Core/Network/Message/IMessage.cs.meta | 11 +
.../Core/Network/Message/InnerMessage.cs | 319 +++
.../Core/Network/Message/InnerMessage.cs.meta | 11 +
.../Core/Network/Message/PacketParser.meta | 8 +
.../Network/Message/PacketParser/Handler.meta | 8 +
.../Handler/BufferPacketParser.cs | 392 +++
.../Handler/BufferPacketParser.cs.meta | 11 +
.../Handler/CircularBufferPacketParser.cs | 170 ++
.../CircularBufferPacketParser.cs.meta | 11 +
.../Handler/OuterBufferPacketParserHelper.cs | 73 +
.../OuterBufferPacketParserHelper.cs.meta | 11 +
.../Handler/ReadOnlyMemoryPacketParser.cs | 376 +++
.../ReadOnlyMemoryPacketParser.cs.meta | 11 +
.../Message/PacketParser/Interface.meta | 8 +
.../PacketParser/Interface/APackInfo.cs | 61 +
.../PacketParser/Interface/APackInfo.cs.meta | 11 +
.../PacketParser/Interface/APacketParser.cs | 30 +
.../Interface/APacketParser.cs.meta | 11 +
.../Network/Message/PacketParser/OpCode.cs | 125 +
.../Message/PacketParser/OpCode.cs.meta | 11 +
.../Network/Message/PacketParser/Pack.meta | 8 +
.../PacketParser/Pack/InnerPackInfo.cs | 79 +
.../PacketParser/Pack/InnerPackInfo.cs.meta | 11 +
.../PacketParser/Pack/OuterPackInfo.cs | 73 +
.../PacketParser/Pack/OuterPackInfo.cs.meta | 11 +
.../PacketParser/Pack/ProcessPackInfo.cs | 160 ++
.../PacketParser/Pack/ProcessPackInfo.cs.meta | 11 +
.../Network/Message/PacketParser/Packet.cs | 49 +
.../Message/PacketParser/Packet.cs.meta | 11 +
.../PacketParser/PacketParserFactory.cs | 173 ++
.../PacketParser/PacketParserFactory.cs.meta | 11 +
.../Core/Network/Message/Scheduler.meta | 8 +
.../Scheduler/ClientMessageScheduler.cs | 96 +
.../Scheduler/ClientMessageScheduler.cs.meta | 11 +
.../Scheduler/InnerMessageScheduler.cs | 211 ++
.../Scheduler/InnerMessageScheduler.cs.meta | 11 +
.../Network/Message/Scheduler/Interface.meta | 8 +
.../Interface/ANetworkMessageScheduler.cs | 30 +
.../ANetworkMessageScheduler.cs.meta | 11 +
.../Message/Scheduler/MessageHelper.meta | 8 +
.../Scheduler/MessageHelper/MessageSender.cs | 107 +
.../MessageHelper/MessageSender.cs.meta | 11 +
.../NetworkMessagingComponent.cs | 273 +++
.../NetworkMessagingComponent.cs.meta | 11 +
.../OnNetworkMessageUpdateCheckTimeout.cs | 60 +
...OnNetworkMessageUpdateCheckTimeout.cs.meta | 11 +
.../Scheduler/OuterMessageScheduler.cs | 366 +++
.../Scheduler/OuterMessageScheduler.cs.meta | 11 +
.../CoreRuntime/Core/Network/Protocol.meta | 8 +
.../Core/Network/Protocol/Exception.meta | 8 +
.../Protocol/Exception/ScanException.cs | 21 +
.../Protocol/Exception/ScanException.cs.meta | 11 +
.../Core/Network/Protocol/HTTP.meta | 8 +
.../Protocol/HTTP/HTTPServerNetwork.cs | 128 +
.../Protocol/HTTP/HTTPServerNetwork.cs.meta | 11 +
.../Protocol/HTTP/SceneContextFilter.cs | 54 +
.../Protocol/HTTP/SceneContextFilter.cs.meta | 11 +
.../Core/Network/Protocol/Interface.meta | 8 +
.../Protocol/Interface/AClientNetwork.cs | 38 +
.../Protocol/Interface/AClientNetwork.cs.meta | 11 +
.../Network/Protocol/Interface/ANetwork.cs | 149 ++
.../Protocol/Interface/ANetwork.cs.meta | 11 +
.../Interface/ANetworkServerChannel.cs | 55 +
.../Interface/ANetworkServerChannel.cs.meta | 11 +
.../Protocol/Interface/INetworkChannel.cs | 14 +
.../Interface/INetworkChannel.cs.meta | 11 +
.../Core/Network/Protocol/KCP.meta | 8 +
.../Core/Network/Protocol/KCP/Base.meta | 8 +
.../Core/Network/Protocol/KCP/Base/Kcp.cs | 451 ++++
.../Network/Protocol/KCP/Base/Kcp.cs.meta | 11 +
.../Core/Network/Protocol/KCP/Base/c.meta | 8 +
.../Core/Network/Protocol/KCP/Base/c/kcp.cs | 1367 +++++++++++
.../Network/Protocol/KCP/Base/c/kcp.cs.meta | 11 +
.../Network/Protocol/KCP/Base/define.meta | 8 +
.../Protocol/KCP/Base/define/system.cs | 41 +
.../Protocol/KCP/Base/define/system.cs.meta | 11 +
.../Network/Protocol/KCP/Base/include.meta | 8 +
.../Network/Protocol/KCP/Base/include/kcp.cs | 127 +
.../Protocol/KCP/Base/include/kcp.cs.meta | 11 +
.../Core/Network/Protocol/KCP/Client.meta | 8 +
.../Protocol/KCP/Client/KCPClientNetwork.cs | 697 ++++++
.../KCP/Client/KCPClientNetwork.cs.meta | 11 +
.../Core/Network/Protocol/KCP/KCPSettings.cs | 91 +
.../Network/Protocol/KCP/KCPSettings.cs.meta | 11 +
.../Core/Network/Protocol/KCP/KcpHeader.cs | 14 +
.../Network/Protocol/KCP/KcpHeader.cs.meta | 11 +
.../Core/Network/Protocol/KCP/Server.meta | 8 +
.../KCP/Server/KCPServerNetworkByArrayPool.cs | 575 +++++
.../KCPServerNetworkByArrayPool.cs.meta | 11 +
.../KCP/Server/KCPServerNetworkByPipe.cs | 619 +++++
.../KCP/Server/KCPServerNetworkByPipe.cs.meta | 11 +
.../KCP/Server/KCPServerNetworkChannel.cs | 165 ++
.../Server/KCPServerNetworkChannel.cs.meta | 11 +
.../Protocol/NetworkProtocolFactory.cs | 95 +
.../Protocol/NetworkProtocolFactory.cs.meta | 11 +
.../Network/Protocol/NetworkProtocolType.cs | 69 +
.../Protocol/NetworkProtocolType.cs.meta | 11 +
.../Protocol/NetworkThreadComponent.cs | 100 +
.../Protocol/NetworkThreadComponent.cs.meta | 11 +
.../Core/Network/Protocol/TCP.meta | 8 +
.../Core/Network/Protocol/TCP/Client.meta | 8 +
.../Protocol/TCP/Client/TCPClientNetwork.cs | 413 ++++
.../TCP/Client/TCPClientNetwork.cs.meta | 11 +
.../Core/Network/Protocol/TCP/Server.meta | 8 +
.../Protocol/TCP/Server/TCPServerNetwork.cs | 161 ++
.../TCP/Server/TCPServerNetwork.cs.meta | 11 +
.../TCP/Server/TCPServerNetworkChannel.cs | 294 +++
.../Server/TCPServerNetworkChannel.cs.meta | 11 +
.../Core/Network/Protocol/WebSocket.meta | 8 +
.../Network/Protocol/WebSocket/Client.meta | 8 +
.../Client/WebSocketClientNetwork.cs | 345 +++
.../Client/WebSocketClientNetwork.cs.meta | 11 +
.../Client/WebSocketClientNetworkWebgl.cs | 190 ++
.../WebSocketClientNetworkWebgl.cs.meta | 11 +
.../Network/Protocol/WebSocket/Server.meta | 8 +
.../Server/WebSocketServerNetwork.cs | 112 +
.../Server/WebSocketServerNetwork.cs.meta | 11 +
.../Server/WebSocketServerNetworkChannel.cs | 253 ++
.../WebSocketServerNetworkChannel.cs.meta | 11 +
Runtime/CoreRuntime/Core/Network/Roaming.meta | 8 +
.../Core/Network/Roaming/Component.meta | 8 +
.../Roaming/Component/RoamingComponent.cs | 254 ++
.../Component/RoamingComponent.cs.meta | 11 +
.../Component/SessionRoamingComponent.cs | 390 +++
.../Component/SessionRoamingComponent.cs.meta | 11 +
.../Component/SessionRoamingFlgComponent.cs | 23 +
.../SessionRoamingFlgComponent.cs.meta | 11 +
.../Roaming/Component/TerminusComponent.cs | 138 ++
.../Component/TerminusComponent.cs.meta | 11 +
.../Core/Network/Roaming/Entity.meta | 8 +
.../Core/Network/Roaming/Entity/Roaming.cs | 132 +
.../Network/Roaming/Entity/Roaming.cs.meta | 11 +
.../Core/Network/Roaming/Entity/Terminus.cs | 338 +++
.../Network/Roaming/Entity/Terminus.cs.meta | 11 +
.../Core/Network/Roaming/Handler.meta | 8 +
.../Handler/I_GetTerminusIdRequestHandler.cs | 32 +
.../I_GetTerminusIdRequestHandler.cs.meta | 11 +
.../Handler/I_LinkRoamingRequestHandler.cs | 26 +
.../I_LinkRoamingRequestHandler.cs.meta | 11 +
.../Handler/I_LockTerminusIdRequestHandler.cs | 35 +
.../I_LockTerminusIdRequestHandler.cs.meta | 11 +
.../I_TransferTerminusRequestHandler.cs | 22 +
.../I_TransferTerminusRequestHandler.cs.meta | 11 +
.../Handler/I_UnLinkRoamingRequestHandler.cs | 16 +
.../I_UnLinkRoamingRequestHandler.cs.meta | 11 +
.../I_UnLockTerminusIdRequestHandler.cs | 36 +
.../I_UnLockTerminusIdRequestHandler.cs.meta | 11 +
Runtime/CoreRuntime/Core/Network/Route.meta | 8 +
.../Core/Network/Route/RouteComponent.cs | 82 +
.../Core/Network/Route/RouteComponent.cs.meta | 11 +
Runtime/CoreRuntime/Core/Network/Session.meta | 8 +
.../Core/Network/Session/Component.meta | 8 +
.../ConsoleSessionHeartbeatComponent.cs | 156 ++
.../ConsoleSessionHeartbeatComponent.cs.meta | 11 +
.../Component/SessionIdleCheckerComponent.cs | 116 +
.../SessionIdleCheckerComponent.cs.meta | 11 +
.../UnitySessionHeartbeatComponent.cs | 188 ++
.../UnitySessionHeartbeatComponent.cs.meta | 11 +
.../Core/Network/Session/ProcessSession.meta | 8 +
.../ProcessSession/ProcessScheduler.cs | 269 ++
.../ProcessSession/ProcessScheduler.cs.meta | 11 +
.../Session/ProcessSession/ProcessSession.cs | 124 +
.../ProcessSession/ProcessSession.cs.meta | 11 +
.../ProcessSession/ProcessSessionInfo.cs | 17 +
.../ProcessSession/ProcessSessionInfo.cs.meta | 11 +
.../Core/Network/Session/Session.cs | 272 +++
.../Core/Network/Session/Session.cs.meta | 11 +
Runtime/CoreRuntime/Core/Platform.meta | 8 +
.../CoreRuntime/Core/Platform/Console.meta | 8 +
.../Core/Platform/Console/Entry.cs | 101 +
.../Core/Platform/Console/Entry.cs.meta | 11 +
.../Console/ThreadSynchronizationContext.cs | 38 +
.../ThreadSynchronizationContext.cs.meta | 11 +
Runtime/CoreRuntime/Core/Platform/Define.cs | 7 +
.../CoreRuntime/Core/Platform/Define.cs.meta | 11 +
Runtime/CoreRuntime/Core/Platform/Net.meta | 8 +
.../Core/Platform/Net/ConfigTable.meta | 8 +
.../Platform/Net/ConfigTable/MachineConfig.cs | 88 +
.../Net/ConfigTable/MachineConfig.cs.meta | 11 +
.../Platform/Net/ConfigTable/ProcessConfig.cs | 100 +
.../Net/ConfigTable/ProcessConfig.cs.meta | 11 +
.../Platform/Net/ConfigTable/SceneConfig.cs | 196 ++
.../Net/ConfigTable/SceneConfig.cs.meta | 11 +
.../Platform/Net/ConfigTable/WorldConfig.cs | 93 +
.../Net/ConfigTable/WorldConfig.cs.meta | 11 +
.../CoreRuntime/Core/Platform/Net/Entry.cs | 121 +
.../Core/Platform/Net/Entry.cs.meta | 11 +
.../CoreRuntime/Core/Platform/Net/Process.cs | 156 ++
.../Core/Platform/Net/Process.cs.meta | 11 +
.../Core/Platform/Net/ProcessDefine.cs | 99 +
.../Core/Platform/Net/ProcessDefine.cs.meta | 11 +
.../Net/ThreadSynchronizationContext.cs | 52 +
.../Net/ThreadSynchronizationContext.cs.meta | 11 +
Runtime/CoreRuntime/Core/Platform/Unity.meta | 8 +
.../Core/Platform/Unity/AppDefine.cs | 19 +
.../Core/Platform/Unity/AppDefine.cs.meta | 11 +
.../Core/Platform/Unity/Attributes.meta | 8 +
.../Attributes/BsonDefaultValueAttribute.cs | 11 +
.../BsonDefaultValueAttribute.cs.meta | 11 +
.../Unity/Attributes/BsonElementAttribute.cs | 13 +
.../Attributes/BsonElementAttribute.cs.meta | 11 +
.../Unity/Attributes/BsonIdAttribute.cs | 11 +
.../Unity/Attributes/BsonIdAttribute.cs.meta | 11 +
.../Unity/Attributes/BsonIgnoreAttribute.cs | 11 +
.../Attributes/BsonIgnoreAttribute.cs.meta | 11 +
.../BsonIgnoreIfDefaultAttribute.cs | 13 +
.../BsonIgnoreIfDefaultAttribute.cs.meta | 11 +
.../Attributes/BsonIgnoreIfNullAttribute.cs | 11 +
.../BsonIgnoreIfNullAttribute.cs.meta | 11 +
.../CoreRuntime/Core/Platform/Unity/Entry.cs | 109 +
.../Core/Platform/Unity/Entry.cs.meta | 11 +
.../CoreRuntime/Core/Platform/Unity/Temp.cs | 108 +
.../Core/Platform/Unity/Temp.cs.meta | 11 +
.../Unity/ThreadSynchronizationContext.cs | 104 +
.../ThreadSynchronizationContext.cs.meta | 11 +
Runtime/CoreRuntime/Core/Pool.meta | 8 +
Runtime/CoreRuntime/Core/Pool/Concurrent.meta | 8 +
.../Core/Pool/Concurrent/MultiThreadPool.cs | 37 +
.../Pool/Concurrent/MultiThreadPool.cs.meta | 11 +
.../Pool/Concurrent/MultiThreadPoolQueue.cs | 76 +
.../Concurrent/MultiThreadPoolQueue.cs.meta | 11 +
Runtime/CoreRuntime/Core/Pool/Interface.meta | 8 +
.../CoreRuntime/Core/Pool/Interface/IPool.cs | 18 +
.../Core/Pool/Interface/IPool.cs.meta | 11 +
Runtime/CoreRuntime/Core/Pool/Normal.meta | 8 +
Runtime/CoreRuntime/Core/Pool/Normal/Pool.cs | 77 +
.../CoreRuntime/Core/Pool/Normal/Pool.cs.meta | 11 +
.../CoreRuntime/Core/Pool/Normal/PoolCore.cs | 203 ++
.../Core/Pool/Normal/PoolCore.cs.meta | 11 +
.../Core/Pool/Normal/PoolWithDisposable.cs | 140 ++
.../Pool/Normal/PoolWithDisposable.cs.meta | 11 +
Runtime/CoreRuntime/Core/Pool/PoolHelper.cs | 79 +
.../CoreRuntime/Core/Pool/PoolHelper.cs.meta | 11 +
Runtime/CoreRuntime/Core/Scene.meta | 8 +
.../CoreRuntime/Core/Scene/ISceneUpdate.cs | 31 +
.../Core/Scene/ISceneUpdate.cs.meta | 11 +
Runtime/CoreRuntime/Core/Scene/Scene.cs | 645 +++++
Runtime/CoreRuntime/Core/Scene/Scene.cs.meta | 11 +
.../Core/Scene/SceneRuntimeMode.cs | 21 +
.../Core/Scene/SceneRuntimeMode.cs.meta | 11 +
.../Core/Scene/SceneRuntimeType.cs | 21 +
.../Core/Scene/SceneRuntimeType.cs.meta | 11 +
Runtime/CoreRuntime/Core/Scene/Scheduler.meta | 8 +
.../Core/Scene/Scheduler/ISceneScheduler.cs | 11 +
.../Scene/Scheduler/ISceneScheduler.cs.meta | 11 +
.../Core/Scene/Scheduler/MainScheduler.cs | 105 +
.../Scene/Scheduler/MainScheduler.cs.meta | 11 +
.../Scene/Scheduler/MultiThreadScheduler.cs | 103 +
.../Scheduler/MultiThreadScheduler.cs.meta | 11 +
.../Scene/Scheduler/ThreadPoolScheduler.cs | 138 ++
.../Scheduler/ThreadPoolScheduler.cs.meta | 11 +
.../Core/Scene/Scheduler/ThreadScheduler.cs | 73 +
.../Scene/Scheduler/ThreadScheduler.cs.meta | 11 +
Runtime/CoreRuntime/Core/Scene/SubScene.cs | 174 ++
.../CoreRuntime/Core/Scene/SubScene.cs.meta | 11 +
Runtime/CoreRuntime/Core/Serialize.meta | 8 +
.../CoreRuntime/Core/Serialize/BsonPack.meta | 8 +
.../Serialize/BsonPack/BsonPackHelperNet.cs | 311 +++
.../BsonPack/BsonPackHelperNet.cs.meta | 11 +
.../Serialize/BsonPack/BsonPackHelperUnity.cs | 70 +
.../BsonPack/BsonPackHelperUnity.cs.meta | 11 +
.../Serialize/BsonPack/StructBsonSerialize.cs | 65 +
.../BsonPack/StructBsonSerialize.cs.meta | 11 +
.../BsonPack/SupportInitializeChecker.cs | 17 +
.../BsonPack/SupportInitializeChecker.cs.meta | 11 +
.../CoreRuntime/Core/Serialize/Interface.meta | 8 +
.../Core/Serialize/Interface/ASerialize.cs | 60 +
.../Serialize/Interface/ASerialize.cs.meta | 11 +
.../Core/Serialize/Interface/ISerialize.cs | 100 +
.../Serialize/Interface/ISerialize.cs.meta | 11 +
.../Core/Serialize/MemoryStreamBuffer.cs | 73 +
.../Core/Serialize/MemoryStreamBuffer.cs.meta | 11 +
.../Core/Serialize/ProtoBufPackHelper.meta | 8 +
.../Serialize/ProtoBufPackHelper/IProto.cs | 9 +
.../ProtoBufPackHelper/IProto.cs.meta | 11 +
.../ProtoBufPackHelperNet.cs | 234 ++
.../ProtoBufPackHelperNet.cs.meta | 11 +
.../ProtoBufPackHelperUnity.cs | 225 ++
.../ProtoBufPackHelperUnity.cs.meta | 11 +
.../Core/Serialize/SerializerManager.cs | 154 ++
.../Core/Serialize/SerializerManager.cs.meta | 11 +
Runtime/CoreRuntime/Plugins.meta | 8 +
Runtime/CoreRuntime/Plugins/Other.meta | 8 +
.../Other/System.Collections.Immutable.dll | Bin 0 -> 252680 bytes
.../System.Collections.Immutable.dll.meta | 35 +
.../Plugins/Other/System.IO.Pipelines.dll | Bin 0 -> 84744 bytes
.../Other/System.IO.Pipelines.dll.meta | 92 +
...System.Runtime.CompilerServices.Unsafe.dll | Bin 0 -> 18024 bytes
...m.Runtime.CompilerServices.Unsafe.dll.meta | 35 +
Runtime/CoreRuntime/Plugins/Protobuf-net.meta | 8 +
.../Plugins/Protobuf-net/BclHelpers.cs | 712 ++++++
.../Plugins/Protobuf-net/BclHelpers.cs.meta | 11 +
.../Plugins/Protobuf-net/BufferExtension.cs | 78 +
.../Protobuf-net/BufferExtension.cs.meta | 11 +
.../Plugins/Protobuf-net/BufferPool.cs | 149 ++
.../Plugins/Protobuf-net/BufferPool.cs.meta | 11 +
.../Protobuf-net/CallbackAttributes.cs | 33 +
.../Protobuf-net/CallbackAttributes.cs.meta | 11 +
.../Plugins/Protobuf-net/Compiler.meta | 8 +
.../Protobuf-net/Compiler/CompilerContext.cs | 1435 +++++++++++
.../Compiler/CompilerContext.cs.meta | 11 +
.../Compiler/CompilerDelegates.cs | 7 +
.../Compiler/CompilerDelegates.cs.meta | 11 +
.../Plugins/Protobuf-net/Compiler/Local.cs | 58 +
.../Protobuf-net/Compiler/Local.cs.meta | 11 +
.../Plugins/Protobuf-net/DataFormat.cs | 49 +
.../Plugins/Protobuf-net/DataFormat.cs.meta | 11 +
.../DiscriminatedUnion.Serializable.cs | 176 ++
.../DiscriminatedUnion.Serializable.cs.meta | 11 +
.../Protobuf-net/DiscriminatedUnion.cs | 416 ++++
.../Protobuf-net/DiscriminatedUnion.cs.meta | 11 +
.../Plugins/Protobuf-net/Extensible.cs | 284 +++
.../Plugins/Protobuf-net/Extensible.cs.meta | 11 +
.../Plugins/Protobuf-net/ExtensibleUtil.cs | 118 +
.../Protobuf-net/ExtensibleUtil.cs.meta | 11 +
.../Protobuf-net/GlobalSuppressions.cs | Bin 0 -> 2750 bytes
.../Protobuf-net/GlobalSuppressions.cs.meta | 11 +
.../Plugins/Protobuf-net/Helpers.cs | 638 +++++
.../Plugins/Protobuf-net/Helpers.cs.meta | 11 +
.../Plugins/Protobuf-net/IExtensible.cs | 23 +
.../Plugins/Protobuf-net/IExtensible.cs.meta | 11 +
.../Plugins/Protobuf-net/IExtension.cs | 58 +
.../Plugins/Protobuf-net/IExtension.cs.meta | 11 +
.../Plugins/Protobuf-net/IProtoInputT.cs | 13 +
.../Plugins/Protobuf-net/IProtoInputT.cs.meta | 11 +
.../Plugins/Protobuf-net/IProtoOutputT.cs | 55 +
.../Protobuf-net/IProtoOutputT.cs.meta | 11 +
.../Plugins/Protobuf-net/ImplicitFields.cs | 29 +
.../Protobuf-net/ImplicitFields.cs.meta | 11 +
.../Plugins/Protobuf-net/KeyValuePairProxy.cs | 44 +
.../Protobuf-net/KeyValuePairProxy.cs.meta | 11 +
.../Plugins/Protobuf-net/Meta.meta | 8 +
.../Plugins/Protobuf-net/Meta/AttributeMap.cs | 108 +
.../Protobuf-net/Meta/AttributeMap.cs.meta | 11 +
.../Plugins/Protobuf-net/Meta/BasicList.cs | 267 ++
.../Protobuf-net/Meta/BasicList.cs.meta | 11 +
.../Plugins/Protobuf-net/Meta/CallbackSet.cs | 110 +
.../Protobuf-net/Meta/CallbackSet.cs.meta | 11 +
.../Plugins/Protobuf-net/Meta/MetaType.cs | 2171 +++++++++++++++++
.../Protobuf-net/Meta/MetaType.cs.meta | 11 +
.../Plugins/Protobuf-net/Meta/ProtoSyntax.cs | 17 +
.../Protobuf-net/Meta/ProtoSyntax.cs.meta | 11 +
.../Protobuf-net/Meta/RuntimeTypeModel.cs | 2036 ++++++++++++++++
.../Meta/RuntimeTypeModel.cs.meta | 11 +
.../Plugins/Protobuf-net/Meta/SubType.cs | 97 +
.../Plugins/Protobuf-net/Meta/SubType.cs.meta | 11 +
.../Protobuf-net/Meta/TypeAddedEventArgs.cs | 33 +
.../Meta/TypeAddedEventArgs.cs.meta | 11 +
.../Protobuf-net/Meta/TypeFormatEventArgs.cs | 64 +
.../Meta/TypeFormatEventArgs.cs.meta | 11 +
.../Meta/TypeModel.InputOutput.cs | 45 +
.../Meta/TypeModel.InputOutput.cs.meta | 11 +
.../Plugins/Protobuf-net/Meta/TypeModel.cs | 1696 +++++++++++++
.../Protobuf-net/Meta/TypeModel.cs.meta | 11 +
.../Plugins/Protobuf-net/Meta/ValueMember.cs | 855 +++++++
.../Protobuf-net/Meta/ValueMember.cs.meta | 11 +
.../Plugins/Protobuf-net/NetObjectCache.cs | 190 ++
.../Protobuf-net/NetObjectCache.cs.meta | 11 +
.../Plugins/Protobuf-net/PrefixStyle.cs | 26 +
.../Plugins/Protobuf-net/PrefixStyle.cs.meta | 11 +
.../Protobuf-net/ProtoContractAttribute.cs | 175 ++
.../ProtoContractAttribute.cs.meta | 11 +
.../Protobuf-net/ProtoConverterAttribute.cs | 13 +
.../ProtoConverterAttribute.cs.meta | 11 +
.../Protobuf-net/ProtoEnumAttribute.cs | 36 +
.../Protobuf-net/ProtoEnumAttribute.cs.meta | 11 +
.../Plugins/Protobuf-net/ProtoException.cs | 30 +
.../Protobuf-net/ProtoException.cs.meta | 11 +
.../Protobuf-net/ProtoIgnoreAttribute.cs | 40 +
.../Protobuf-net/ProtoIgnoreAttribute.cs.meta | 11 +
.../Protobuf-net/ProtoIncludeAttribute.cs | 60 +
.../ProtoIncludeAttribute.cs.meta | 11 +
.../Plugins/Protobuf-net/ProtoMapAttribute.cs | 29 +
.../Protobuf-net/ProtoMapAttribute.cs.meta | 11 +
.../Protobuf-net/ProtoMemberAttribute.cs | 228 ++
.../Protobuf-net/ProtoMemberAttribute.cs.meta | 11 +
.../Plugins/Protobuf-net/ProtoReader.cs | 1444 +++++++++++
.../Plugins/Protobuf-net/ProtoReader.cs.meta | 11 +
.../Plugins/Protobuf-net/ProtoWriter.cs | 1003 ++++++++
.../Plugins/Protobuf-net/ProtoWriter.cs.meta | 11 +
.../Protobuf-net/SerializationContext.cs | 76 +
.../Protobuf-net/SerializationContext.cs.meta | 11 +
.../Plugins/Protobuf-net/Serializer.cs | 514 ++++
.../Plugins/Protobuf-net/Serializer.cs.meta | 11 +
.../Plugins/Protobuf-net/Serializers.meta | 8 +
.../Serializers/ArrayDecorator.cs | 310 +++
.../Serializers/ArrayDecorator.cs.meta | 11 +
.../Serializers/BlobSerializer.cs | 59 +
.../Serializers/BlobSerializer.cs.meta | 11 +
.../Serializers/BooleanSerializer.cs | 41 +
.../Serializers/BooleanSerializer.cs.meta | 11 +
.../Serializers/ByteSerializer.cs | 42 +
.../Serializers/ByteSerializer.cs.meta | 11 +
.../Serializers/CharSerializer.cs | 32 +
.../Serializers/CharSerializer.cs.meta | 11 +
.../Serializers/CompiledSerializer.cs | 88 +
.../Serializers/CompiledSerializer.cs.meta | 11 +
.../Serializers/DateTimeSerializer.cs | 65 +
.../Serializers/DateTimeSerializer.cs.meta | 11 +
.../Serializers/DecimalSerializer.cs | 42 +
.../Serializers/DecimalSerializer.cs.meta | 11 +
.../Serializers/DefaultValueDecorator.cs | 259 ++
.../Serializers/DefaultValueDecorator.cs.meta | 11 +
.../Serializers/DoubleSerializer.cs | 42 +
.../Serializers/DoubleSerializer.cs.meta | 11 +
.../Serializers/EnumSerializer.cs | 267 ++
.../Serializers/EnumSerializer.cs.meta | 11 +
.../Serializers/FieldDecorator.cs | 104 +
.../Serializers/FieldDecorator.cs.meta | 11 +
.../Serializers/GuidSerializer.cs | 43 +
.../Serializers/GuidSerializer.cs.meta | 11 +
.../Serializers/IProtoSerializer.cs | 64 +
.../Serializers/IProtoSerializer.cs.meta | 11 +
.../Serializers/IProtoTypeSerializer.cs | 20 +
.../Serializers/IProtoTypeSerializer.cs.meta | 11 +
.../Serializers/ISerializerProxy.cs | 10 +
.../Serializers/ISerializerProxy.cs.meta | 11 +
.../ImmutableCollectionDecorator.cs | 304 +++
.../ImmutableCollectionDecorator.cs.meta | 11 +
.../Serializers/Int16Serializer.cs | 42 +
.../Serializers/Int16Serializer.cs.meta | 11 +
.../Serializers/Int32Serializer.cs | 42 +
.../Serializers/Int32Serializer.cs.meta | 11 +
.../Serializers/Int64Serializer.cs | 41 +
.../Serializers/Int64Serializer.cs.meta | 11 +
.../Protobuf-net/Serializers/ListDecorator.cs | 579 +++++
.../Serializers/ListDecorator.cs.meta | 11 +
.../Protobuf-net/Serializers/MapDecorator.cs | 298 +++
.../Serializers/MapDecorator.cs.meta | 11 +
.../Serializers/MemberSpecifiedDecorator.cs | 76 +
.../MemberSpecifiedDecorator.cs.meta | 11 +
.../Serializers/NetObjectSerializer.cs | 64 +
.../Serializers/NetObjectSerializer.cs.meta | 11 +
.../Protobuf-net/Serializers/NullDecorator.cs | 167 ++
.../Serializers/NullDecorator.cs.meta | 11 +
.../Serializers/ParseableSerializer.cs | 111 +
.../Serializers/ParseableSerializer.cs.meta | 11 +
.../Serializers/PropertyDecorator.cs | 167 ++
.../Serializers/PropertyDecorator.cs.meta | 11 +
.../Serializers/ProtoDecoratorBase.cs | 24 +
.../Serializers/ProtoDecoratorBase.cs.meta | 11 +
.../Serializers/ReflectedUriDecorator.cs | 90 +
.../Serializers/ReflectedUriDecorator.cs.meta | 11 +
.../Serializers/SByteSerializer.cs | 45 +
.../Serializers/SByteSerializer.cs.meta | 11 +
.../Serializers/SingleSerializer.cs | 45 +
.../Serializers/SingleSerializer.cs.meta | 11 +
.../Serializers/StringSerializer.cs | 41 +
.../Serializers/StringSerializer.cs.meta | 11 +
.../Serializers/SubItemSerializer.cs | 138 ++
.../Serializers/SubItemSerializer.cs.meta | 11 +
.../Serializers/SurrogateSerializer.cs | 157 ++
.../Serializers/SurrogateSerializer.cs.meta | 11 +
.../Serializers/SystemTypeSerializer.cs | 46 +
.../Serializers/SystemTypeSerializer.cs.meta | 11 +
.../Protobuf-net/Serializers/TagDecorator.cs | 108 +
.../Serializers/TagDecorator.cs.meta | 11 +
.../Serializers/TimeSpanSerializer.cs | 63 +
.../Serializers/TimeSpanSerializer.cs.meta | 11 +
.../Serializers/TupleSerializer.cs | 339 +++
.../Serializers/TupleSerializer.cs.meta | 11 +
.../Serializers/TypeSerializer.cs | 798 ++++++
.../Serializers/TypeSerializer.cs.meta | 11 +
.../Serializers/UInt16Serializer.cs | 43 +
.../Serializers/UInt16Serializer.cs.meta | 11 +
.../Serializers/UInt32Serializer.cs | 43 +
.../Serializers/UInt32Serializer.cs.meta | 11 +
.../Serializers/UInt64Serializer.cs | 43 +
.../Serializers/UInt64Serializer.cs.meta | 11 +
.../Protobuf-net/Serializers/UriDecorator.cs | 62 +
.../Serializers/UriDecorator.cs.meta | 11 +
.../Plugins/Protobuf-net/ServiceModel.meta | 8 +
.../ServiceModel/ProtoBehaviorAttribute.cs | 35 +
.../ProtoBehaviorAttribute.cs.meta | 11 +
.../ProtoBehaviorExtensionElement.cs | 29 +
.../ProtoBehaviorExtensionElement.cs.meta | 11 +
.../ServiceModel/ProtoEndpointBehavior.cs | 82 +
.../ProtoEndpointBehavior.cs.meta | 11 +
.../ServiceModel/ProtoOperationBehavior.cs | 52 +
.../ProtoOperationBehavior.cs.meta | 11 +
.../ServiceModel/XmlProtoSerializer.cs | 208 ++
.../ServiceModel/XmlProtoSerializer.cs.meta | 11 +
.../Plugins/Protobuf-net/SubItemToken.cs | 16 +
.../Plugins/Protobuf-net/SubItemToken.cs.meta | 11 +
.../Plugins/Protobuf-net/WireType.cs | 50 +
.../Plugins/Protobuf-net/WireType.cs.meta | 11 +
.../Plugins/Protobuf-net/protobuf-net.csproj | 86 +
.../Protobuf-net/protobuf-net.csproj.meta | 7 +
Runtime/CoreRuntime/Plugins/WSocket.meta | 8 +
Runtime/CoreRuntime/Plugins/WSocket/Core.meta | 8 +
.../Plugins/WSocket/Core/CloseEventArgs.cs | 89 +
.../WSocket/Core/CloseEventArgs.cs.meta | 11 +
.../Plugins/WSocket/Core/CloseStatusCode.cs | 91 +
.../WSocket/Core/CloseStatusCode.cs.meta | 11 +
.../Plugins/WSocket/Core/ErrorEventArgs.cs | 59 +
.../WSocket/Core/ErrorEventArgs.cs.meta | 11 +
.../Plugins/WSocket/Core/IWebSocket.cs | 143 ++
.../Plugins/WSocket/Core/IWebSocket.cs.meta | 11 +
.../Plugins/WSocket/Core/MessageEventArgs.cs | 115 +
.../WSocket/Core/MessageEventArgs.cs.meta | 11 +
.../Plugins/WSocket/Core/Opcode.cs | 26 +
.../Plugins/WSocket/Core/Opcode.cs.meta | 11 +
.../Plugins/WSocket/Core/OpenEventArgs.cs | 11 +
.../WSocket/Core/OpenEventArgs.cs.meta | 11 +
.../Plugins/WSocket/Core/Settings.cs | 12 +
.../Plugins/WSocket/Core/Settings.cs.meta | 11 +
.../Plugins/WSocket/Core/WebSocketState.cs | 36 +
.../WSocket/Core/WebSocketState.cs.meta | 11 +
.../Plugins/WSocket/Implementation.meta | 8 +
.../WSocket/Implementation/NoWebGL.meta | 8 +
.../Implementation/NoWebGL/WebSocket.cs | 345 +++
.../Implementation/NoWebGL/WebSocket.cs.meta | 11 +
.../NoWebGL/WebSocketManager.cs | 72 +
.../NoWebGL/WebSocketManager.cs.meta | 11 +
.../Plugins/WSocket/Implementation/WebGL.meta | 8 +
.../WSocket/Implementation/WebGL/WebSocket.cs | 154 ++
.../Implementation/WebGL/WebSocket.cs.meta | 12 +
.../Implementation/WebGL/WebSocketManager.cs | 159 ++
.../WebGL/WebSocketManager.cs.meta | 11 +
Runtime/CoreRuntime/Plugins/WebGL.meta | 8 +
.../CoreRuntime/Plugins/WebGL/WebSocket.jslib | 392 +++
.../Plugins/WebGL/WebSocket.jslib.meta | 42 +
Runtime/{Network.meta => Manager.meta} | 0
Runtime/{Network => Manager}/EConnectState.cs | 0
.../EConnectState.cs.meta | 0
.../{Network => Manager}/INetworkModule.cs | 0
.../INetworkModule.cs.meta | 0
.../{Network => Manager}/NetworkComponent.cs | 0
.../NetworkComponent.cs.meta | 0
Runtime/{Network => Manager}/NetworkModule.cs | 0
.../NetworkModule.cs.meta | 0
csc.rsp | 2 +
csc.rsp.meta | 7 +
package.json | 3 +
854 files changed, 64984 insertions(+)
create mode 100644 Editor/CoreEditor.meta
create mode 100644 Editor/CoreEditor/Runtime.meta
create mode 100644 Editor/CoreEditor/Runtime/CheckUnityVersion.cs
create mode 100644 Editor/CoreEditor/Runtime/CheckUnityVersion.cs.meta
create mode 100644 Editor/CoreEditor/Runtime/FantasyStartup.cs
create mode 100644 Editor/CoreEditor/Runtime/FantasyStartup.cs.meta
create mode 100644 Editor/CoreEditor/Runtime/LinkXmlGenerator.cs
create mode 100644 Editor/CoreEditor/Runtime/LinkXmlGenerator.cs.meta
create mode 100644 Editor/CoreEditor/Runtime/Settings.meta
create mode 100644 Editor/CoreEditor/Runtime/Settings/FantasySettings.cs
create mode 100644 Editor/CoreEditor/Runtime/Settings/FantasySettings.cs.meta
create mode 100644 Editor/CoreEditor/Runtime/Settings/FantasySettingsProvider.cs
create mode 100644 Editor/CoreEditor/Runtime/Settings/FantasySettingsProvider.cs.meta
create mode 100644 Editor/CoreEditor/Runtime/Settings/FantasySettingsScriptableObject.cs
create mode 100644 Editor/CoreEditor/Runtime/Settings/FantasySettingsScriptableObject.cs.meta
create mode 100644 Editor/CoreEditor/Runtime/Settings/ScriptableObjectSingleton.cs
create mode 100644 Editor/CoreEditor/Runtime/Settings/ScriptableObjectSingleton.cs.meta
create mode 100644 Editor/CoreEditor/Runtime/WSocket.meta
create mode 100644 Editor/CoreEditor/Runtime/WSocket/SettingsWindow.cs
create mode 100644 Editor/CoreEditor/Runtime/WSocket/SettingsWindow.cs.meta
create mode 100644 Runtime/CoreRuntime.meta
create mode 100644 Runtime/CoreRuntime/Core.meta
create mode 100644 Runtime/CoreRuntime/Core/Assembly.meta
create mode 100644 Runtime/CoreRuntime/Core/Assembly/AssemblyInfo.cs
create mode 100644 Runtime/CoreRuntime/Core/Assembly/AssemblyInfo.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Assembly/AssemblySystem.cs
create mode 100644 Runtime/CoreRuntime/Core/Assembly/AssemblySystem.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Assembly/IAssembly.cs
create mode 100644 Runtime/CoreRuntime/Core/Assembly/IAssembly.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Benchmark.meta
create mode 100644 Runtime/CoreRuntime/Core/Benchmark/Handler.meta
create mode 100644 Runtime/CoreRuntime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataBase.meta
create mode 100644 Runtime/CoreRuntime/Core/DataBase/DataBaseType.cs
create mode 100644 Runtime/CoreRuntime/Core/DataBase/DataBaseType.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataBase/IDataBase.cs
create mode 100644 Runtime/CoreRuntime/Core/DataBase/IDataBase.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataBase/MongoDataBase.cs
create mode 100644 Runtime/CoreRuntime/Core/DataBase/MongoDataBase.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataBase/World.cs
create mode 100644 Runtime/CoreRuntime/Core/DataBase/World.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/CircularBuffer.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/CircularBuffer.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/ConcurrentOneToManyListPool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/ConcurrentOneToManyListPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/ConcurrentOneToManyQueuePool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/ConcurrentOneToManyQueuePool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/HashSetPool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/HashSetPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/ListPool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/ListPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/OneToManyHashSetPool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/OneToManyHashSetPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/OneToManyListPool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/OneToManyListPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/OneToManyQueuePool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/OneToManyQueuePool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/ReuseList.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/ReuseList.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/SortedConcurrentOneToManyListPool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/SortedConcurrentOneToManyListPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/SortedOneToManyHashSetPool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/SortedOneToManyHashSetPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/SortedOneToManyListPool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Collection/SortedOneToManyListPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/DictionaryExtensions.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/DictionaryExtensions.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/DictionaryPool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/DictionaryPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/DoubleMapDictionaryPool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/DoubleMapDictionaryPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/EntityDictionary.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/EntityDictionary.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/OneToManyDictionaryPool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/OneToManyDictionaryPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/OneToManySortedDictionaryPool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/OneToManySortedDictionaryPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/ReuseDictionary.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/ReuseDictionary.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/SortedDictionaryPool.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/Dictionary/SortedDictionaryPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/NativeCollections.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/PriorityQueue.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/PriorityQueue/PriorityQueueGenerics.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/PriorityQueue/PriorityQueueGenerics.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/PriorityQueue/PriorityQueueItem.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/PriorityQueue/PriorityQueueItem.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/PriorityQueue/PriorityQueueSimple.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/PriorityQueue/PriorityQueueSimple.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/SkipTable.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/SkipTable/SkipTable.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/SkipTable/SkipTable.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/SkipTable/SkipTableBase.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/SkipTable/SkipTableBase.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/SkipTable/SkipTableDesc.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/SkipTable/SkipTableDesc.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/SkipTable/SkipTableNode.cs
create mode 100644 Runtime/CoreRuntime/Core/DataStructure/SkipTable/SkipTableNode.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/CoroutineLock.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/CoroutineLock/CoroutineLock.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/CoroutineLock/CoroutineLock.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/CoroutineLock/CoroutineLockComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/CoroutineLock/CoroutineLockComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/CoroutineLock/CoroutineLockQueue.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/CoroutineLock/CoroutineLockQueue.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/CoroutineLock/WaitCoroutineLock.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/CoroutineLock/WaitCoroutineLock.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/EntityComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/EntityComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/EventComponent.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/EventComponent/EventComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/EventComponent/EventComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/EventComponent/Interface.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/EventComponent/Interface/IEvent.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/EventComponent/Interface/IEvent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/MessagePoolComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/MessagePoolComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/SingleCollectionComponent.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/SingleCollectionComponent/SingleCollectionComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/SingleCollectionComponent/SingleCollectionComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/Interface.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/Interface/TimerHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/Interface/TimerHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimeWheel.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimeWheel/ScheduledTask.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimeWheel/ScheduledTask.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimeWheel/TimeWheel.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimeWheel/TimeWheel.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimerAction.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimerAction.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimerComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimerComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimerScheduler.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimerScheduler/TimerSchedulerNet.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimerScheduler/TimerSchedulerNet.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimerScheduler/TimerSchedulerNetUnity.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimerScheduler/TimerSchedulerNetUnity.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimerType.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Component/TimerComponent/TimerType.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Entity.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Entity.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/EntityPool.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/EntityPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/EntityReference.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/EntityReference.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/Supported.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/Supported/ISingleCollectionRoot.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/Supported/ISingleCollectionRoot.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/Supported/ISupportedDataBase.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/Supported/ISupportedDataBase.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/Supported/ISupportedMultiEntity.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/Supported/ISupportedMultiEntity.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/Supported/ISupportedSingleCollection.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/Supported/ISupportedSingleCollection.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/Supported/ISupportedTransfer.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/Supported/ISupportedTransfer.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System/IAwakeSystem.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System/IAwakeSystem.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System/ICustomEntitiesSystem.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System/ICustomEntitiesSystem.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System/IDeserializeSystem.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System/IDeserializeSystem.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System/IDestroySystem.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System/IDestroySystem.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System/IEntitiesSystem.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System/IEntitiesSystem.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System/ILateUpdateSystem.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System/ILateUpdateSystem.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System/IUpdateSystem.cs
create mode 100644 Runtime/CoreRuntime/Core/Entitas/Interface/System/IUpdateSystem.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/FTask.meta
create mode 100644 Runtime/CoreRuntime/Core/FTask/Builder.meta
create mode 100644 Runtime/CoreRuntime/Core/FTask/Builder/AsyncFTaskCompletedMethodBuilder.cs
create mode 100644 Runtime/CoreRuntime/Core/FTask/Builder/AsyncFTaskCompletedMethodBuilder.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/FTask/Builder/AsyncFTaskMethodBuilder.cs
create mode 100644 Runtime/CoreRuntime/Core/FTask/Builder/AsyncFTaskMethodBuilder.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/FTask/Builder/AsyncFVoidMethodBuilder.cs
create mode 100644 Runtime/CoreRuntime/Core/FTask/Builder/AsyncFVoidMethodBuilder.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/FTask/FCancellationToken.meta
create mode 100644 Runtime/CoreRuntime/Core/FTask/FCancellationToken/FCancellationToken.cs
create mode 100644 Runtime/CoreRuntime/Core/FTask/FCancellationToken/FCancellationToken.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/FTask/FTask.Extension.meta
create mode 100644 Runtime/CoreRuntime/Core/FTask/FTask.Extension/FTask.Factory.cs
create mode 100644 Runtime/CoreRuntime/Core/FTask/FTask.Extension/FTask.Factory.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/FTask/FTask.Extension/FTask.Tools.cs
create mode 100644 Runtime/CoreRuntime/Core/FTask/FTask.Extension/FTask.Tools.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/FTask/Task.meta
create mode 100644 Runtime/CoreRuntime/Core/FTask/Task/FTask.cs
create mode 100644 Runtime/CoreRuntime/Core/FTask/Task/FTask.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/FTask/Task/FTaskCompleted.cs
create mode 100644 Runtime/CoreRuntime/Core/FTask/Task/FTaskCompleted.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/FTask/Task/FVoid.cs
create mode 100644 Runtime/CoreRuntime/Core/FTask/Task/FVoid.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/ByteHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/ByteHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/ADownload.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/ADownload.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/Download.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/Download.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/DownloadAssetBundle.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/DownloadAssetBundle.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/DownloadAudioClip.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/DownloadAudioClip.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/DownloadByte.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/DownloadByte.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/DownloadSprite.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/DownloadSprite.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/DownloadText.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/DownloadText.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/DownloadTexture.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/Download/DownloadTexture.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/EncryptHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/EncryptHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/FileHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/FileHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/HashCodeHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/HashCodeHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/HttpClient.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/HttpClient/HttpClientHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/HttpClient/HttpClientHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/HttpClient/HttpClientPool.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/HttpClient/HttpClientPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/HttpClient/IJsonRpcRequest.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/HttpClient/IJsonRpcRequest.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/JsonHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/JsonHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/NetworkHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/NetworkHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/RandomHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/RandomHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/RandomHelperWebgl.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/RandomHelperWebgl.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/SocketHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/SocketHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/TimeHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/TimeHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/UnityWebRequest.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/UnityWebRequest/UnityWebRequestHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/UnityWebRequest/UnityWebRequestHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/WebSocketHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/WebSocketHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Helper/WinPeriod.cs
create mode 100644 Runtime/CoreRuntime/Core/Helper/WinPeriod.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/IdFactory.meta
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/Default.meta
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/Default/EntityIdStruct.cs
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/Default/EntityIdStruct.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/Default/RuntimeIdStruct.cs
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/Default/RuntimeIdStruct.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/IdFactoryHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/IdFactoryHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/IdFactoryType.cs
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/IdFactoryType.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/Interface.meta
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/Interface/IIdFactory.cs
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/Interface/IIdFactory.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/Interface/IIdFactoryTool.cs
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/Interface/IIdFactoryTool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/World.meta
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/World/WorldEntityIdFactory.cs
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/World/WorldEntityIdFactory.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/World/WorldRuntimeIdFactory.cs
create mode 100644 Runtime/CoreRuntime/Core/IdFactory/World/WorldRuntimeIdFactory.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/InnerErrorCode.cs
create mode 100644 Runtime/CoreRuntime/Core/InnerErrorCode.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Log.meta
create mode 100644 Runtime/CoreRuntime/Core/Log/ConsoleLog.cs
create mode 100644 Runtime/CoreRuntime/Core/Log/ConsoleLog.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Log/ILog.cs
create mode 100644 Runtime/CoreRuntime/Core/Log/ILog.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Log/Log.cs
create mode 100644 Runtime/CoreRuntime/Core/Log/Log.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Log/UnityLog.cs
create mode 100644 Runtime/CoreRuntime/Core/Log/UnityLog.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/AddressableHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/AddressableHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/AddressableManageComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/AddressableManageComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/AddressableMessageComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/AddressableMessageComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/AddressableRouteComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/AddressableRouteComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/AddressableScene.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/AddressableScene.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/Handler.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/Handler/I_AddressableAddHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/Handler/I_AddressableAddHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/Handler/I_AddressableGetHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/Handler/I_AddressableGetHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/Handler/I_AddressableLockHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/Handler/I_AddressableLockHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/Handler/I_AddressableRemoveHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/Handler/I_AddressableRemoveHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/Handler/I_AddressableUnLockHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Addressable/Handler/I_AddressableUnLockHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/MemoryStreamBufferPool.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/MemoryStreamBufferPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Dispatcher.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Dispatcher/Interface.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Dispatcher/Interface/IMessageHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Dispatcher/Interface/IMessageHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Dispatcher/Interface/IRouteMessageHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Dispatcher/Interface/IRouteMessageHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Dispatcher/MessageDispatcherComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Dispatcher/MessageDispatcherComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/IMessage.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/IMessage.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/InnerMessage.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/InnerMessage.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Handler.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Handler/BufferPacketParser.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Handler/BufferPacketParser.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Handler/CircularBufferPacketParser.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Handler/CircularBufferPacketParser.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Handler/OuterBufferPacketParserHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Handler/OuterBufferPacketParserHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Handler/ReadOnlyMemoryPacketParser.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Handler/ReadOnlyMemoryPacketParser.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Interface.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Interface/APackInfo.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Interface/APackInfo.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Interface/APacketParser.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Interface/APacketParser.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/OpCode.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/OpCode.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Pack.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Pack/InnerPackInfo.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Pack/InnerPackInfo.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Pack/OuterPackInfo.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Pack/OuterPackInfo.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Pack/ProcessPackInfo.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Pack/ProcessPackInfo.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Packet.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/Packet.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/PacketParserFactory.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/PacketParser/PacketParserFactory.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/ClientMessageScheduler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/ClientMessageScheduler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/InnerMessageScheduler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/InnerMessageScheduler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/Interface.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/Interface/ANetworkMessageScheduler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/Interface/ANetworkMessageScheduler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/MessageHelper.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/MessageHelper/MessageSender.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/MessageHelper/MessageSender.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/MessageHelper/NetworkMessagingComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/MessageHelper/NetworkMessagingComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/MessageHelper/OnNetworkMessageUpdateCheckTimeout.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/MessageHelper/OnNetworkMessageUpdateCheckTimeout.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/OuterMessageScheduler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Message/Scheduler/OuterMessageScheduler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/Exception.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/Exception/ScanException.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/Exception/ScanException.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/HTTP.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/HTTP/HTTPServerNetwork.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/HTTP/HTTPServerNetwork.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/HTTP/SceneContextFilter.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/HTTP/SceneContextFilter.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/Interface.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/Interface/AClientNetwork.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/Interface/AClientNetwork.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/Interface/ANetwork.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/Interface/ANetwork.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/Interface/ANetworkServerChannel.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/Interface/ANetworkServerChannel.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/Interface/INetworkChannel.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/Interface/INetworkChannel.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Base.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Base/Kcp.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Base/Kcp.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Base/c.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Base/c/kcp.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Base/c/kcp.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Base/define.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Base/define/system.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Base/define/system.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Base/include.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Base/include/kcp.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Base/include/kcp.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Client.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Client/KCPClientNetwork.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Client/KCPClientNetwork.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/KCPSettings.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/KCPSettings.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/KcpHeader.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/KcpHeader.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Server.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Server/KCPServerNetworkByArrayPool.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Server/KCPServerNetworkByArrayPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Server/KCPServerNetworkByPipe.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Server/KCPServerNetworkByPipe.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Server/KCPServerNetworkChannel.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/KCP/Server/KCPServerNetworkChannel.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/NetworkProtocolFactory.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/NetworkProtocolFactory.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/NetworkProtocolType.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/NetworkProtocolType.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/NetworkThreadComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/NetworkThreadComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/TCP.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/TCP/Client.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/TCP/Client/TCPClientNetwork.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/TCP/Client/TCPClientNetwork.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/TCP/Server.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/TCP/Server/TCPServerNetwork.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/TCP/Server/TCPServerNetwork.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/TCP/Server/TCPServerNetworkChannel.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/TCP/Server/TCPServerNetworkChannel.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/WebSocket.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/WebSocket/Client.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/WebSocket/Client/WebSocketClientNetwork.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/WebSocket/Client/WebSocketClientNetwork.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/WebSocket/Client/WebSocketClientNetworkWebgl.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/WebSocket/Client/WebSocketClientNetworkWebgl.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/WebSocket/Server.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/WebSocket/Server/WebSocketServerNetwork.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/WebSocket/Server/WebSocketServerNetwork.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/WebSocket/Server/WebSocketServerNetworkChannel.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Protocol/WebSocket/Server/WebSocketServerNetworkChannel.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Component.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Component/RoamingComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Component/RoamingComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Component/SessionRoamingComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Component/SessionRoamingComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Component/SessionRoamingFlgComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Component/SessionRoamingFlgComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Component/TerminusComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Component/TerminusComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Entity.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Entity/Roaming.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Entity/Roaming.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Entity/Terminus.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Entity/Terminus.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Handler.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Handler/I_GetTerminusIdRequestHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Handler/I_GetTerminusIdRequestHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Handler/I_LinkRoamingRequestHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Handler/I_LinkRoamingRequestHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Handler/I_LockTerminusIdRequestHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Handler/I_LockTerminusIdRequestHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Handler/I_TransferTerminusRequestHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Handler/I_TransferTerminusRequestHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Handler/I_UnLinkRoamingRequestHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Handler/I_UnLinkRoamingRequestHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Handler/I_UnLockTerminusIdRequestHandler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Roaming/Handler/I_UnLockTerminusIdRequestHandler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Route.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Route/RouteComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Route/RouteComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Session.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/Component.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/Component/ConsoleSessionHeartbeatComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/Component/ConsoleSessionHeartbeatComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/Component/SessionIdleCheckerComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/Component/SessionIdleCheckerComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/Component/UnitySessionHeartbeatComponent.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/Component/UnitySessionHeartbeatComponent.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/ProcessSession.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/ProcessSession/ProcessScheduler.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/ProcessSession/ProcessScheduler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/ProcessSession/ProcessSession.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/ProcessSession/ProcessSession.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/ProcessSession/ProcessSessionInfo.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/ProcessSession/ProcessSessionInfo.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/Session.cs
create mode 100644 Runtime/CoreRuntime/Core/Network/Session/Session.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Console.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Console/Entry.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Console/Entry.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Console/ThreadSynchronizationContext.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Console/ThreadSynchronizationContext.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Define.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Define.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/ConfigTable.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/ConfigTable/MachineConfig.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/ConfigTable/MachineConfig.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/ConfigTable/ProcessConfig.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/ConfigTable/ProcessConfig.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/ConfigTable/SceneConfig.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/ConfigTable/SceneConfig.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/ConfigTable/WorldConfig.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/ConfigTable/WorldConfig.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/Entry.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/Entry.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/Process.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/Process.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/ProcessDefine.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/ProcessDefine.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/ThreadSynchronizationContext.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Net/ThreadSynchronizationContext.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/AppDefine.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/AppDefine.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Attributes.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Attributes/BsonDefaultValueAttribute.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Attributes/BsonDefaultValueAttribute.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Attributes/BsonElementAttribute.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Attributes/BsonElementAttribute.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Attributes/BsonIdAttribute.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Attributes/BsonIdAttribute.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Attributes/BsonIgnoreAttribute.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Attributes/BsonIgnoreAttribute.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Attributes/BsonIgnoreIfDefaultAttribute.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Attributes/BsonIgnoreIfDefaultAttribute.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Attributes/BsonIgnoreIfNullAttribute.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Attributes/BsonIgnoreIfNullAttribute.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Entry.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Entry.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Temp.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/Temp.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/ThreadSynchronizationContext.cs
create mode 100644 Runtime/CoreRuntime/Core/Platform/Unity/ThreadSynchronizationContext.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Pool.meta
create mode 100644 Runtime/CoreRuntime/Core/Pool/Concurrent.meta
create mode 100644 Runtime/CoreRuntime/Core/Pool/Concurrent/MultiThreadPool.cs
create mode 100644 Runtime/CoreRuntime/Core/Pool/Concurrent/MultiThreadPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Pool/Concurrent/MultiThreadPoolQueue.cs
create mode 100644 Runtime/CoreRuntime/Core/Pool/Concurrent/MultiThreadPoolQueue.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Pool/Interface.meta
create mode 100644 Runtime/CoreRuntime/Core/Pool/Interface/IPool.cs
create mode 100644 Runtime/CoreRuntime/Core/Pool/Interface/IPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Pool/Normal.meta
create mode 100644 Runtime/CoreRuntime/Core/Pool/Normal/Pool.cs
create mode 100644 Runtime/CoreRuntime/Core/Pool/Normal/Pool.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Pool/Normal/PoolCore.cs
create mode 100644 Runtime/CoreRuntime/Core/Pool/Normal/PoolCore.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Pool/Normal/PoolWithDisposable.cs
create mode 100644 Runtime/CoreRuntime/Core/Pool/Normal/PoolWithDisposable.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Pool/PoolHelper.cs
create mode 100644 Runtime/CoreRuntime/Core/Pool/PoolHelper.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Scene.meta
create mode 100644 Runtime/CoreRuntime/Core/Scene/ISceneUpdate.cs
create mode 100644 Runtime/CoreRuntime/Core/Scene/ISceneUpdate.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Scene/Scene.cs
create mode 100644 Runtime/CoreRuntime/Core/Scene/Scene.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Scene/SceneRuntimeMode.cs
create mode 100644 Runtime/CoreRuntime/Core/Scene/SceneRuntimeMode.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Scene/SceneRuntimeType.cs
create mode 100644 Runtime/CoreRuntime/Core/Scene/SceneRuntimeType.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Scene/Scheduler.meta
create mode 100644 Runtime/CoreRuntime/Core/Scene/Scheduler/ISceneScheduler.cs
create mode 100644 Runtime/CoreRuntime/Core/Scene/Scheduler/ISceneScheduler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Scene/Scheduler/MainScheduler.cs
create mode 100644 Runtime/CoreRuntime/Core/Scene/Scheduler/MainScheduler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Scene/Scheduler/MultiThreadScheduler.cs
create mode 100644 Runtime/CoreRuntime/Core/Scene/Scheduler/MultiThreadScheduler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Scene/Scheduler/ThreadPoolScheduler.cs
create mode 100644 Runtime/CoreRuntime/Core/Scene/Scheduler/ThreadPoolScheduler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Scene/Scheduler/ThreadScheduler.cs
create mode 100644 Runtime/CoreRuntime/Core/Scene/Scheduler/ThreadScheduler.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Scene/SubScene.cs
create mode 100644 Runtime/CoreRuntime/Core/Scene/SubScene.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize/BsonPack.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize/BsonPack/BsonPackHelperNet.cs
create mode 100644 Runtime/CoreRuntime/Core/Serialize/BsonPack/BsonPackHelperNet.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize/BsonPack/BsonPackHelperUnity.cs
create mode 100644 Runtime/CoreRuntime/Core/Serialize/BsonPack/BsonPackHelperUnity.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize/BsonPack/StructBsonSerialize.cs
create mode 100644 Runtime/CoreRuntime/Core/Serialize/BsonPack/StructBsonSerialize.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize/BsonPack/SupportInitializeChecker.cs
create mode 100644 Runtime/CoreRuntime/Core/Serialize/BsonPack/SupportInitializeChecker.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize/Interface.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize/Interface/ASerialize.cs
create mode 100644 Runtime/CoreRuntime/Core/Serialize/Interface/ASerialize.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize/Interface/ISerialize.cs
create mode 100644 Runtime/CoreRuntime/Core/Serialize/Interface/ISerialize.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize/MemoryStreamBuffer.cs
create mode 100644 Runtime/CoreRuntime/Core/Serialize/MemoryStreamBuffer.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize/ProtoBufPackHelper.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize/ProtoBufPackHelper/IProto.cs
create mode 100644 Runtime/CoreRuntime/Core/Serialize/ProtoBufPackHelper/IProto.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize/ProtoBufPackHelper/ProtoBufPackHelperNet.cs
create mode 100644 Runtime/CoreRuntime/Core/Serialize/ProtoBufPackHelper/ProtoBufPackHelperNet.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize/ProtoBufPackHelper/ProtoBufPackHelperUnity.cs
create mode 100644 Runtime/CoreRuntime/Core/Serialize/ProtoBufPackHelper/ProtoBufPackHelperUnity.cs.meta
create mode 100644 Runtime/CoreRuntime/Core/Serialize/SerializerManager.cs
create mode 100644 Runtime/CoreRuntime/Core/Serialize/SerializerManager.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Other.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Other/System.Collections.Immutable.dll
create mode 100644 Runtime/CoreRuntime/Plugins/Other/System.Collections.Immutable.dll.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Other/System.IO.Pipelines.dll
create mode 100644 Runtime/CoreRuntime/Plugins/Other/System.IO.Pipelines.dll.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Other/System.Runtime.CompilerServices.Unsafe.dll
create mode 100644 Runtime/CoreRuntime/Plugins/Other/System.Runtime.CompilerServices.Unsafe.dll.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/BclHelpers.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/BclHelpers.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/BufferExtension.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/BufferExtension.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/BufferPool.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/BufferPool.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/CallbackAttributes.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/CallbackAttributes.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Compiler.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Compiler/CompilerContext.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Compiler/CompilerContext.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Compiler/CompilerDelegates.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Compiler/CompilerDelegates.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Compiler/Local.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Compiler/Local.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/DataFormat.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/DataFormat.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/DiscriminatedUnion.Serializable.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/DiscriminatedUnion.Serializable.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/DiscriminatedUnion.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/DiscriminatedUnion.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Extensible.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Extensible.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ExtensibleUtil.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ExtensibleUtil.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/GlobalSuppressions.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/GlobalSuppressions.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Helpers.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Helpers.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/IExtensible.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/IExtensible.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/IExtension.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/IExtension.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/IProtoInputT.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/IProtoInputT.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/IProtoOutputT.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/IProtoOutputT.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ImplicitFields.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ImplicitFields.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/KeyValuePairProxy.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/KeyValuePairProxy.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/AttributeMap.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/AttributeMap.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/BasicList.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/BasicList.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/CallbackSet.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/CallbackSet.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/MetaType.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/MetaType.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/ProtoSyntax.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/ProtoSyntax.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/RuntimeTypeModel.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/RuntimeTypeModel.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/SubType.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/SubType.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/TypeAddedEventArgs.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/TypeAddedEventArgs.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/TypeFormatEventArgs.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/TypeFormatEventArgs.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/TypeModel.InputOutput.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/TypeModel.InputOutput.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/TypeModel.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/TypeModel.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/ValueMember.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Meta/ValueMember.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/NetObjectCache.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/NetObjectCache.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/PrefixStyle.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/PrefixStyle.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoContractAttribute.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoContractAttribute.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoConverterAttribute.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoConverterAttribute.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoEnumAttribute.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoEnumAttribute.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoException.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoException.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoIgnoreAttribute.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoIgnoreAttribute.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoIncludeAttribute.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoIncludeAttribute.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoMapAttribute.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoMapAttribute.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoMemberAttribute.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoMemberAttribute.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoReader.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoReader.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoWriter.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ProtoWriter.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/SerializationContext.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/SerializationContext.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ArrayDecorator.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ArrayDecorator.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/BlobSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/BlobSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/BooleanSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/BooleanSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ByteSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ByteSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/CharSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/CharSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/CompiledSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/CompiledSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/DateTimeSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/DateTimeSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/DecimalSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/DecimalSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/DefaultValueDecorator.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/DefaultValueDecorator.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/DoubleSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/DoubleSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/EnumSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/EnumSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/FieldDecorator.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/FieldDecorator.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/GuidSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/GuidSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/IProtoSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/IProtoSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/IProtoTypeSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/IProtoTypeSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ISerializerProxy.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ISerializerProxy.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ImmutableCollectionDecorator.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ImmutableCollectionDecorator.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/Int16Serializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/Int16Serializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/Int32Serializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/Int32Serializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/Int64Serializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/Int64Serializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ListDecorator.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ListDecorator.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/MapDecorator.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/MapDecorator.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/MemberSpecifiedDecorator.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/MemberSpecifiedDecorator.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/NetObjectSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/NetObjectSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/NullDecorator.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/NullDecorator.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ParseableSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ParseableSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/PropertyDecorator.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/PropertyDecorator.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ProtoDecoratorBase.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ProtoDecoratorBase.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ReflectedUriDecorator.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/ReflectedUriDecorator.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/SByteSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/SByteSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/SingleSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/SingleSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/StringSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/StringSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/SubItemSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/SubItemSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/SurrogateSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/SurrogateSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/SystemTypeSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/SystemTypeSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/TagDecorator.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/TagDecorator.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/TimeSpanSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/TimeSpanSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/TupleSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/TupleSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/TypeSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/TypeSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/UInt16Serializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/UInt16Serializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/UInt32Serializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/UInt32Serializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/UInt64Serializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/UInt64Serializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/UriDecorator.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/Serializers/UriDecorator.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ServiceModel.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ServiceModel/ProtoBehaviorAttribute.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ServiceModel/ProtoBehaviorAttribute.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ServiceModel/ProtoBehaviorExtensionElement.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ServiceModel/ProtoBehaviorExtensionElement.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ServiceModel/ProtoEndpointBehavior.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ServiceModel/ProtoEndpointBehavior.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ServiceModel/ProtoOperationBehavior.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ServiceModel/ProtoOperationBehavior.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ServiceModel/XmlProtoSerializer.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/ServiceModel/XmlProtoSerializer.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/SubItemToken.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/SubItemToken.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/WireType.cs
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/WireType.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/protobuf-net.csproj
create mode 100644 Runtime/CoreRuntime/Plugins/Protobuf-net/protobuf-net.csproj.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/CloseEventArgs.cs
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/CloseEventArgs.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/CloseStatusCode.cs
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/CloseStatusCode.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/ErrorEventArgs.cs
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/ErrorEventArgs.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/IWebSocket.cs
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/IWebSocket.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/MessageEventArgs.cs
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/MessageEventArgs.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/Opcode.cs
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/Opcode.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/OpenEventArgs.cs
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/OpenEventArgs.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/Settings.cs
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/Settings.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/WebSocketState.cs
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Core/WebSocketState.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Implementation.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Implementation/NoWebGL.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Implementation/NoWebGL/WebSocket.cs
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Implementation/NoWebGL/WebSocket.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Implementation/NoWebGL/WebSocketManager.cs
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Implementation/NoWebGL/WebSocketManager.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Implementation/WebGL.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Implementation/WebGL/WebSocket.cs
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Implementation/WebGL/WebSocket.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Implementation/WebGL/WebSocketManager.cs
create mode 100644 Runtime/CoreRuntime/Plugins/WSocket/Implementation/WebGL/WebSocketManager.cs.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WebGL.meta
create mode 100644 Runtime/CoreRuntime/Plugins/WebGL/WebSocket.jslib
create mode 100644 Runtime/CoreRuntime/Plugins/WebGL/WebSocket.jslib.meta
rename Runtime/{Network.meta => Manager.meta} (100%)
rename Runtime/{Network => Manager}/EConnectState.cs (100%)
rename Runtime/{Network => Manager}/EConnectState.cs.meta (100%)
rename Runtime/{Network => Manager}/INetworkModule.cs (100%)
rename Runtime/{Network => Manager}/INetworkModule.cs.meta (100%)
rename Runtime/{Network => Manager}/NetworkComponent.cs (100%)
rename Runtime/{Network => Manager}/NetworkComponent.cs.meta (100%)
rename Runtime/{Network => Manager}/NetworkModule.cs (100%)
rename Runtime/{Network => Manager}/NetworkModule.cs.meta (100%)
create mode 100644 csc.rsp
create mode 100644 csc.rsp.meta
diff --git a/Editor/CoreEditor.meta b/Editor/CoreEditor.meta
new file mode 100644
index 0000000..1956489
--- /dev/null
+++ b/Editor/CoreEditor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 77313bd6dcc91f645a147a10abedadc3
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/CoreEditor/Runtime.meta b/Editor/CoreEditor/Runtime.meta
new file mode 100644
index 0000000..de03432
--- /dev/null
+++ b/Editor/CoreEditor/Runtime.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e8ba5b17cffbb4ffea892f674fc8629f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/CoreEditor/Runtime/CheckUnityVersion.cs b/Editor/CoreEditor/Runtime/CheckUnityVersion.cs
new file mode 100644
index 0000000..34f112c
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/CheckUnityVersion.cs
@@ -0,0 +1,16 @@
+using System;
+using UnityEditor;
+
+namespace Fantasy
+{
+ internal static class CheckUnityVersion
+ {
+ [InitializeOnLoadMethod]
+ private static void OnInitializeOnLoad()
+ {
+#if !UNITY_2021_3_OR_NEWER
+ Debug.LogError("Fantasy支持的最低版本为Unity2021.3.14f1c1");
+#endif
+ }
+ }
+}
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/CheckUnityVersion.cs.meta b/Editor/CoreEditor/Runtime/CheckUnityVersion.cs.meta
new file mode 100644
index 0000000..1f13ace
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/CheckUnityVersion.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 455f338921e74471841971fd6b79db01
+timeCreated: 1725943424
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/FantasyStartup.cs b/Editor/CoreEditor/Runtime/FantasyStartup.cs
new file mode 100644
index 0000000..c541657
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/FantasyStartup.cs
@@ -0,0 +1,49 @@
+using System.IO;
+using UnityEditor;
+using UnityEngine;
+
+namespace Fantasy
+{
+ [InitializeOnLoad]
+ public static class FantasyStartup
+ {
+ private const string ScriptAssemblies = "Library/ScriptAssemblies/";
+
+ static FantasyStartup()
+ {
+ if (!FantasySettingsScriptableObject.Instance.autoCopyAssembly)
+ {
+ return;
+ }
+
+ var hotUpdatePath = FantasySettingsScriptableObject.Instance.hotUpdatePath;
+
+ if (string.IsNullOrEmpty(hotUpdatePath))
+ {
+ Debug.LogError("请先在菜单Fantasy-Fantasy Settings里设置HotUpdatePath目录位置");
+ return;
+ }
+
+ if (!Directory.Exists(hotUpdatePath))
+ {
+ Directory.CreateDirectory(hotUpdatePath);
+ }
+
+ // ReSharper disable once StringLastIndexOfIsCultureSpecific.1
+ if (hotUpdatePath.LastIndexOf("/") != hotUpdatePath.Length - 1)
+ {
+ FantasySettingsScriptableObject.Instance.hotUpdatePath += "/";
+ hotUpdatePath = FantasySettingsScriptableObject.Instance.hotUpdatePath;
+ }
+
+ foreach (var instanceHotUpdateAssemblyDefinition in FantasySettingsScriptableObject.Instance.hotUpdateAssemblyDefinitions)
+ {
+ var dll = instanceHotUpdateAssemblyDefinition.name;
+ File.Copy($"{ScriptAssemblies}{dll}.dll", $"{hotUpdatePath}/{dll}.dll.bytes", true);
+ File.Copy($"{ScriptAssemblies}{dll}.pdb", $"{hotUpdatePath}/{dll}.pdb.bytes", true);
+ }
+
+ AssetDatabase.Refresh();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/FantasyStartup.cs.meta b/Editor/CoreEditor/Runtime/FantasyStartup.cs.meta
new file mode 100644
index 0000000..abcd77d
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/FantasyStartup.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 42156ba2865a4aa4a3e1e57b3ac9b984
+timeCreated: 1688276977
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/LinkXmlGenerator.cs b/Editor/CoreEditor/Runtime/LinkXmlGenerator.cs
new file mode 100644
index 0000000..155d0f8
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/LinkXmlGenerator.cs
@@ -0,0 +1,52 @@
+using System.IO;
+using UnityEditor;
+using UnityEngine;
+
+namespace Fantasy
+{
+ public class LinkXmlGenerator
+ {
+ private const string LinkPath = "Assets/link.xml";
+ // 在Unity编辑器中运行该方法来生成link.xml文件
+ [UnityEditor.MenuItem("Fantasy/Generate link.xml")]
+ public static void GenerateLinkXml()
+ {
+ using (var writer = new StreamWriter("Assets/link.xml"))
+ {
+ writer.WriteLine("");
+
+ foreach (var assembly in FantasySettingsScriptableObject.Instance.includeAssembly)
+ {
+ GenerateLinkXml(writer, assembly, LinkPath);
+ Debug.Log($"{assembly} Link generation completed");
+ }
+
+ if (FantasySettingsScriptableObject.Instance?.linkAssemblyDefinitions != null)
+ {
+ foreach (var linkAssembly in FantasySettingsScriptableObject.Instance.linkAssemblyDefinitions)
+ {
+ GenerateLinkXml(writer, linkAssembly.name, LinkPath);
+ Debug.Log($"{linkAssembly.name} Link generation completed");
+ }
+ }
+ writer.WriteLine("");
+ }
+
+ AssetDatabase.Refresh();
+ Debug.Log("link.xml generated successfully!");
+ }
+
+ private static void GenerateLinkXml(StreamWriter writer, string assemblyName, string outputPath)
+ {
+ var assembly = System.Reflection.Assembly.Load(assemblyName);
+ var types = assembly.GetTypes();
+ writer.WriteLine($" ");
+ foreach (var type in types)
+ {
+ var typeName = type.FullName.Replace('<', '+').Replace('>', '+');
+ writer.WriteLine($" ");
+ }
+ writer.WriteLine(" ");
+ }
+ }
+}
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/LinkXmlGenerator.cs.meta b/Editor/CoreEditor/Runtime/LinkXmlGenerator.cs.meta
new file mode 100644
index 0000000..dbab220
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/LinkXmlGenerator.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: cda4c9403de946df9c31654416193a21
+timeCreated: 1722743236
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/Settings.meta b/Editor/CoreEditor/Runtime/Settings.meta
new file mode 100644
index 0000000..6b097c8
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/Settings.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 3a6997d946f3400e8c423fe1b9245f65
+timeCreated: 1688277110
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/Settings/FantasySettings.cs b/Editor/CoreEditor/Runtime/Settings/FantasySettings.cs
new file mode 100644
index 0000000..4c85dc7
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/Settings/FantasySettings.cs
@@ -0,0 +1,13 @@
+using UnityEditor;
+
+namespace Fantasy
+{
+ public class FantasySettings
+ {
+ [MenuItem("Fantasy/Fantasy Settings")]
+ public static void OpenFantasySettings()
+ {
+ SettingsService.OpenProjectSettings("Project/Fantasy Settings");
+ }
+ }
+}
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/Settings/FantasySettings.cs.meta b/Editor/CoreEditor/Runtime/Settings/FantasySettings.cs.meta
new file mode 100644
index 0000000..852e825
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/Settings/FantasySettings.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 977a7c172c30403da60286ba39b7bc72
+timeCreated: 1686913667
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/Settings/FantasySettingsProvider.cs b/Editor/CoreEditor/Runtime/Settings/FantasySettingsProvider.cs
new file mode 100644
index 0000000..11ae01c
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/Settings/FantasySettingsProvider.cs
@@ -0,0 +1,102 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+using UnityEditor;
+using UnityEngine;
+using UnityEngine.UIElements;
+
+namespace Fantasy
+{
+ public class FantasySettingsProvider : SettingsProvider
+ {
+ private SerializedObject _serializedObject;
+ private SerializedProperty _autoCopyAssembly;
+ private SerializedProperty _hotUpdatePath;
+ private SerializedProperty _hotUpdateAssemblyDefinitions;
+ private SerializedProperty _linkAssemblyDefinitions;
+ private SerializedProperty _includeAssembly;
+ public FantasySettingsProvider() : base("Project/Fantasy Settings", SettingsScope.Project) { }
+
+ public override void OnActivate(string searchContext, VisualElement rootElement)
+ {
+ Init();
+ base.OnActivate(searchContext, rootElement);
+ }
+
+ public override void OnDeactivate()
+ {
+ base.OnDeactivate();
+ FantasySettingsScriptableObject.Save();
+ }
+
+ private void Init()
+ {
+ _serializedObject?.Dispose();
+ _serializedObject = new SerializedObject(FantasySettingsScriptableObject.Instance);
+ _autoCopyAssembly = _serializedObject.FindProperty("autoCopyAssembly");
+ _hotUpdatePath = _serializedObject.FindProperty("hotUpdatePath");
+ _hotUpdateAssemblyDefinitions = _serializedObject.FindProperty("hotUpdateAssemblyDefinitions");
+ _linkAssemblyDefinitions = _serializedObject.FindProperty("linkAssemblyDefinitions");
+ _includeAssembly = _serializedObject.FindProperty("includeAssembly");
+ }
+
+ public override void OnGUI(string searchContext)
+ {
+ if (_serializedObject == null || !_serializedObject.targetObject)
+ {
+ Init();
+ }
+
+ using (CreateSettingsWindowGUIScope())
+ {
+ _serializedObject!.Update();
+
+ EditorGUI.BeginChangeCheck();
+ EditorGUILayout.PropertyField(_autoCopyAssembly);
+ EditorGUILayout.PropertyField(_hotUpdatePath);
+ EditorGUILayout.PropertyField(_hotUpdateAssemblyDefinitions);
+ EditorGUILayout.PropertyField(_includeAssembly);
+ EditorGUILayout.PropertyField(_linkAssemblyDefinitions);
+ // EditorGUILayout.HelpBox("默认包括Fantasy.Unity,所以不需要再次指定。", MessageType.Info);
+
+ if (GUILayout.Button("GenerateLinkXml"))
+ {
+ LinkXmlGenerator.GenerateLinkXml();
+ }
+
+ if (EditorGUI.EndChangeCheck())
+ {
+ _serializedObject.ApplyModifiedProperties();
+ FantasySettingsScriptableObject.Save();
+ EditorApplication.RepaintHierarchyWindow();
+ }
+
+ base.OnGUI(searchContext);
+ }
+ }
+
+ private IDisposable CreateSettingsWindowGUIScope()
+ {
+ var unityEditorAssembly = System.Reflection.Assembly.GetAssembly(typeof(EditorWindow));
+ var type = unityEditorAssembly.GetType("UnityEditor.SettingsWindow+GUIScope");
+ return Activator.CreateInstance(type) as IDisposable;
+ }
+
+ static FantasySettingsProvider _provider;
+
+ [SettingsProvider]
+ public static SettingsProvider CreateMyCustomSettingsProvider()
+ {
+ if (FantasySettingsScriptableObject.Instance && _provider == null)
+ {
+ _provider = new FantasySettingsProvider();
+ using (var so = new SerializedObject(FantasySettingsScriptableObject.Instance))
+ {
+ _provider.keywords = GetSearchKeywordsFromSerializedObject(so);
+ }
+ }
+ return _provider;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/Settings/FantasySettingsProvider.cs.meta b/Editor/CoreEditor/Runtime/Settings/FantasySettingsProvider.cs.meta
new file mode 100644
index 0000000..72e475d
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/Settings/FantasySettingsProvider.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 047b2f13e73f413fa000bf7be979fb4a
+timeCreated: 1688380387
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/Settings/FantasySettingsScriptableObject.cs b/Editor/CoreEditor/Runtime/Settings/FantasySettingsScriptableObject.cs
new file mode 100644
index 0000000..5d03955
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/Settings/FantasySettingsScriptableObject.cs
@@ -0,0 +1,25 @@
+using UnityEditor;
+using UnityEditor.Compilation;
+using UnityEditorInternal;
+using UnityEngine;
+using UnityEngine.Serialization;
+
+namespace Fantasy
+{
+ [ScriptableObjectPath("ProjectSettings/FantasySettings.asset")]
+ public class FantasySettingsScriptableObject : ScriptableObjectSingleton, ISerializationCallbackReceiver
+ {
+ [FormerlySerializedAs("AutoCopyAssembly")] [Header("自动拷贝程序集到HotUpdatePath目录中")]
+ public bool autoCopyAssembly = false;
+ [FormerlySerializedAs("HotUpdatePath")] [Header("HotUpdate目录(Unity编译后会把所有HotUpdate程序集Copy一份到这个目录下)")]
+ public string hotUpdatePath;
+ [FormerlySerializedAs("HotUpdateAssemblyDefinitions")] [Header("HotUpdate程序集")]
+ public AssemblyDefinitionAsset[] hotUpdateAssemblyDefinitions;
+ [FormerlySerializedAs("LinkAssemblyDefinitions")] [Header("指定要生成Link.xml的程序集")]
+ public AssemblyDefinitionAsset[] linkAssemblyDefinitions;
+ [FormerlySerializedAs("IncludeAssembly")] [Header("生成Link.xml时候默认包含的程序集")]
+ public string[] includeAssembly = new[] { "Assembly-CSharp", "Fantasy.Unity" };
+ public void OnBeforeSerialize() { }
+ public void OnAfterDeserialize() { }
+ }
+}
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/Settings/FantasySettingsScriptableObject.cs.meta b/Editor/CoreEditor/Runtime/Settings/FantasySettingsScriptableObject.cs.meta
new file mode 100644
index 0000000..b5bae5a
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/Settings/FantasySettingsScriptableObject.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 27a37e930ca3454fb57bc895f50d2106
+timeCreated: 1688277120
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/Settings/ScriptableObjectSingleton.cs b/Editor/CoreEditor/Runtime/Settings/ScriptableObjectSingleton.cs
new file mode 100644
index 0000000..6206676
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/Settings/ScriptableObjectSingleton.cs
@@ -0,0 +1,100 @@
+using System;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using UnityEditorInternal;
+using UnityEngine;
+// ReSharper disable AssignNullToNotNullAttribute
+
+namespace Fantasy
+{
+ public class ScriptableObjectSingleton : ScriptableObject where T : ScriptableObject
+ {
+ private static T _instance;
+
+ public static T Instance
+ {
+ get
+ {
+ if (_instance == null)
+ {
+ _instance = Load();
+ }
+
+ return _instance;
+ }
+ }
+
+ private static T Load()
+ {
+ var scriptableObjectPath = GetScriptableObjectPath();
+
+ if (string.IsNullOrEmpty(scriptableObjectPath))
+ {
+ return null;
+ }
+
+ var loadSerializedFileAndForget = InternalEditorUtility.LoadSerializedFileAndForget(scriptableObjectPath);
+
+ if (loadSerializedFileAndForget.Length <= 0)
+ {
+ return CreateInstance();
+ }
+
+ return loadSerializedFileAndForget[0] as T;
+ }
+
+ public static void Save(bool saveAsText = true)
+ {
+ if (_instance == null)
+ {
+ Debug.LogError("Cannot save ScriptableObjectSingleton: no instance!");
+ return;
+ }
+
+ var scriptableObjectPath = GetScriptableObjectPath();
+
+ if (string.IsNullOrEmpty(scriptableObjectPath))
+ {
+ return;
+ }
+
+ var directoryName = Path.GetDirectoryName(scriptableObjectPath);
+
+ if (!Directory.Exists(directoryName))
+ {
+ Directory.CreateDirectory(directoryName);
+ }
+
+ UnityEngine.Object[] obj = { _instance };
+ InternalEditorUtility.SaveToSerializedFileAndForget(obj, scriptableObjectPath, saveAsText);
+ }
+
+ private static string GetScriptableObjectPath()
+ {
+ var scriptableObjectPathAttribute = typeof(T).GetCustomAttribute(typeof(ScriptableObjectPathAttribute)) as ScriptableObjectPathAttribute;
+ return scriptableObjectPathAttribute?.ScriptableObjectPath;
+ }
+ }
+
+ [AttributeUsage(AttributeTargets.Class, Inherited = false)]
+ public class ScriptableObjectPathAttribute : Attribute
+ {
+ internal readonly string ScriptableObjectPath;
+
+ public ScriptableObjectPathAttribute(string scriptableObjectPath)
+ {
+ if (string.IsNullOrEmpty(scriptableObjectPath))
+ {
+ throw new ArgumentException("Invalid relative path (it is empty)");
+ }
+
+ if (scriptableObjectPath[0] == '/')
+ {
+ scriptableObjectPath = scriptableObjectPath.Substring(1);
+ }
+
+ ScriptableObjectPath = scriptableObjectPath;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/Settings/ScriptableObjectSingleton.cs.meta b/Editor/CoreEditor/Runtime/Settings/ScriptableObjectSingleton.cs.meta
new file mode 100644
index 0000000..5105c6f
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/Settings/ScriptableObjectSingleton.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 3c77f5208dc14542ae7497d59321ef76
+timeCreated: 1688278016
\ No newline at end of file
diff --git a/Editor/CoreEditor/Runtime/WSocket.meta b/Editor/CoreEditor/Runtime/WSocket.meta
new file mode 100644
index 0000000..21883b6
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/WSocket.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b9e5c7d1436ec414fa3f69a23aaafc3b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Editor/CoreEditor/Runtime/WSocket/SettingsWindow.cs b/Editor/CoreEditor/Runtime/WSocket/SettingsWindow.cs
new file mode 100644
index 0000000..0313b0e
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/WSocket/SettingsWindow.cs
@@ -0,0 +1,229 @@
+using UnityEngine;
+using UnityEditor;
+using UnityEngine.Networking;
+using System.IO;
+using System;
+
+namespace UnityWebSocket.Editor
+{
+ internal class SettingsWindow : EditorWindow
+ {
+ static SettingsWindow window = null;
+ [MenuItem("Tools/UnityWebSocket", priority = 100)]
+ internal static void Open()
+ {
+ if (window != null)
+ {
+ window.Close();
+ }
+
+ window = GetWindow(true, "UnityWebSocket");
+ window.minSize = window.maxSize = new Vector2(600, 310);
+ window.Show();
+ window.BeginCheck();
+ }
+
+ private void OnGUI()
+ {
+ DrawLogo();
+ DrawVersion();
+ DrawSeparator(80);
+ DrawSeparator(186);
+ DrawHelper();
+ DrawFooter();
+ }
+
+ Texture2D logoTex = null;
+ private void DrawLogo()
+ {
+ if (logoTex == null)
+ {
+ logoTex = new Texture2D(66, 66);
+ logoTex.LoadImage(Convert.FromBase64String(LOGO_BASE64.VALUE));
+ for (int i = 0; i < 66; i++) for (int j = 0; j < 15; j++) logoTex.SetPixel(i, j, Color.clear);
+ logoTex.Apply();
+ }
+
+ var logoPos = new Rect(10, 10, 66, 66);
+ GUI.DrawTexture(logoPos, logoTex);
+ var title = "UnityWebSocket";
+ var titlePos = new Rect(80, 20, 500, 50);
+ GUI.Label(titlePos, title, TextStyle(24));
+ }
+
+ private void DrawSeparator(int y)
+ {
+ EditorGUI.DrawRect(new Rect(10, y, 580, 1), Color.white * 0.5f);
+ }
+
+ private GUIStyle TextStyle(int fontSize = 10, TextAnchor alignment = TextAnchor.UpperLeft, float alpha = 0.85f)
+ {
+ var style = new GUIStyle();
+ style.fontSize = fontSize;
+ style.normal.textColor = (EditorGUIUtility.isProSkin ? Color.white : Color.black) * alpha;
+ style.alignment = alignment;
+ style.richText = true;
+ return style;
+ }
+
+ private void DrawVersion()
+ {
+ GUI.Label(new Rect(440, 10, 150, 10), "Current Version: " + Settings.VERSION, TextStyle(alignment: TextAnchor.MiddleLeft));
+ if (string.IsNullOrEmpty(latestVersion))
+ {
+ GUI.Label(new Rect(440, 30, 150, 10), "Checking for Updates...", TextStyle(alignment: TextAnchor.MiddleLeft));
+ }
+ else if (latestVersion == "unknown")
+ {
+
+ }
+ else
+ {
+ GUI.Label(new Rect(440, 30, 150, 10), "Latest Version: " + latestVersion, TextStyle(alignment: TextAnchor.MiddleLeft));
+ if (Settings.VERSION == latestVersion)
+ {
+ if (GUI.Button(new Rect(440, 50, 150, 18), "Check Update"))
+ {
+ latestVersion = "";
+ changeLog = "";
+ BeginCheck();
+ }
+ }
+ else
+ {
+ if (GUI.Button(new Rect(440, 50, 150, 18), "Update to | " + latestVersion))
+ {
+ ShowUpdateDialog();
+ }
+ }
+ }
+ }
+
+ private void ShowUpdateDialog()
+ {
+ var isOK = EditorUtility.DisplayDialog("UnityWebSocket",
+ "Update UnityWebSocket now?\n" + changeLog,
+ "Update Now", "Cancel");
+
+ if (isOK)
+ {
+ UpdateVersion();
+ }
+ }
+
+ private void UpdateVersion()
+ {
+ Application.OpenURL(Settings.GITHUB + "/releases");
+ }
+
+ private void DrawHelper()
+ {
+ GUI.Label(new Rect(330, 200, 100, 18), "GitHub:", TextStyle(10, TextAnchor.MiddleRight));
+ if (GUI.Button(new Rect(440, 200, 150, 18), "UnityWebSocket"))
+ {
+ Application.OpenURL(Settings.GITHUB);
+ }
+
+ GUI.Label(new Rect(330, 225, 100, 18), "Report:", TextStyle(10, TextAnchor.MiddleRight));
+ if (GUI.Button(new Rect(440, 225, 150, 18), "Report an Issue"))
+ {
+ Application.OpenURL(Settings.GITHUB + "/issues/new");
+ }
+
+ GUI.Label(new Rect(330, 250, 100, 18), "Email:", TextStyle(10, TextAnchor.MiddleRight));
+ if (GUI.Button(new Rect(440, 250, 150, 18), Settings.EMAIL))
+ {
+ var uri = new Uri(string.Format("mailto:{0}?subject={1}", Settings.EMAIL, "UnityWebSocket Feedback"));
+ Application.OpenURL(uri.AbsoluteUri);
+ }
+
+ GUI.Label(new Rect(330, 275, 100, 18), "QQ群:", TextStyle(10, TextAnchor.MiddleRight));
+ if (GUI.Button(new Rect(440, 275, 150, 18), Settings.QQ_GROUP))
+ {
+ Application.OpenURL(Settings.QQ_GROUP_LINK);
+ }
+ }
+
+ private void DrawFooter()
+ {
+ EditorGUI.DropShadowLabel(new Rect(10, 230, 400, 20), "Developed by " + Settings.AUHTOR);
+ EditorGUI.DropShadowLabel(new Rect(10, 250, 400, 20), "All rights reserved");
+ }
+
+ UnityWebRequest req;
+ string changeLog = "";
+ string latestVersion = "";
+ void BeginCheck()
+ {
+ EditorApplication.update -= VersionCheckUpdate;
+ EditorApplication.update += VersionCheckUpdate;
+
+ req = UnityWebRequest.Get(Settings.GITHUB + "/releases/latest");
+ req.SendWebRequest();
+ }
+
+ private void VersionCheckUpdate()
+ {
+#if UNITY_2020_3_OR_NEWER
+ if (req == null
+ || req.result == UnityWebRequest.Result.ConnectionError
+ || req.result == UnityWebRequest.Result.DataProcessingError
+ || req.result == UnityWebRequest.Result.ProtocolError)
+#elif UNITY_2018_1_OR_NEWER
+ if (req == null || req.isNetworkError || req.isHttpError)
+#else
+ if (req == null || req.isError)
+#endif
+ {
+ EditorApplication.update -= VersionCheckUpdate;
+ latestVersion = "unknown";
+ return;
+ }
+
+ if (req.isDone)
+ {
+ EditorApplication.update -= VersionCheckUpdate;
+ latestVersion = req.url.Substring(req.url.LastIndexOf("/") + 1).TrimStart('v');
+
+ if (Settings.VERSION != latestVersion)
+ {
+ var text = req.downloadHandler.text;
+ var st = text.IndexOf("content=\"" + latestVersion);
+ st = st > 0 ? text.IndexOf("\n", st) : -1;
+ var end = st > 0 ? text.IndexOf("\" />", st) : -1;
+ if (st > 0 && end > st)
+ {
+ changeLog = text.Substring(st + 1, end - st - 1).Trim();
+ changeLog = changeLog.Replace("\r", "");
+ changeLog = changeLog.Replace("\n", "\n- ");
+ changeLog = "\nCHANGE LOG: \n- " + changeLog + "\n";
+ }
+ }
+
+ Repaint();
+ }
+ }
+ }
+
+ internal static class LOGO_BASE64
+ {
+ internal const string VALUE = "iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAMAAADUivDaAAAAq1BMVEUAAABKmtcvjtYzl" +
+ "9szmNszl9syl9k0mNs0mNwzmNs0mNszl9szl9s0mNs0mNwzmNw0mNwyltk0mNw0mNwzl9s0mNsymNs0mNszmNwzmNwzm" +
+ "NszmNs0mNwzl9w0mNwzmNw0mNs0mNs0mNwzl9wzmNs0mNwzmNs0mNwzl90zmNszmNszl9szmNsxmNszmNszmNw0mNwzm" +
+ "Nw0mNs2neM4pe41mt43ouo2oOY5qfM+UHlaAAAAMnRSTlMAAwXN3sgI+/069MSCK6M/MA74h9qfFHB8STWMJ9OSdmNcI" +
+ "8qya1IeF+/U0EIa57mqmFTYJe4AAAN3SURBVFjD7ZbpkppAFEa/bgVBREF2kEVGFNeZsM77P1kadURnJkr8k1Qlx1Khu" +
+ "/pw7+2lwH/+YcgfMBBLG7VocwDamzH+wJBB8Qhjve2f0TdrGwjei6o4Ub/nM/APw5Z7vvSB/qrCrqbD6fBEVtigeMxks" +
+ "fX9zWbj+z1jhqgSBplQ50eGo4614WXlRAzgrRhmtSfvxAn7pB0N5ObaKKZZuU5/d37IBcBgUQwqDuf7Z2gUmVAl4NGNr" +
+ "/UeHxV5n39ulbaKLI86h6HilmM5M1aN126lpNhtl59yeTsp8nUMvpNC1J3bh5FtfVRk+bJrJunn5d4U4piJ/Vw9eXgsj" +
+ "4ZpZaCjg9waZkIpnBWLJ44OwoNu60F2UnSaEkKv4XnAlCpm6B4F/aKMDiyGi2L8SEEAVdxNLuzmgV7nFwObEe2xQVuX+" +
+ "RV1lWetga3w+cN1sXgvm4cJH8OEgZC1DPKhfF/BIymmQrMjq/x65FUeEkDup8GxoexZmznHCvANtXU/CAq13yimhQGtm" +
+ "H4VCPnBBL1fTKo3CqEcvq7Lb/OwHxWTYlyw+JmjKoVvDLVOQB4pVsM8K8smgvLCxZDlIijwyOEc+nr/msMwK0+GQWGBd" +
+ "tmhjv8icTds1s2ammaFh04QLLe69NK7guP6mTDMaw3o6nAX/Z7EXUskPSvWEWg4srVlp5NTDXv9Lce9HGN5eeG4nj5Yz" +
+ "ACteU2wQLo4MBtJfd1nw5nG1/s9zwUQ6pykL1TQjqdeuvQW0naz2XKLYL4Cwzr4vj+OQdD96CSp7Lrynp4aeFF0xdm5q" +
+ "6OFtFfPv7URxpWJNjd/N+3+I9+1klMav12Qtgbt9R2JaIopjkzaPtOFq4KxUpqfUMSFnQrySWjLoQzRZS4HMH84ME1ej" +
+ "S1YJpQZ3B+sR1uCQJSBdGdCk1eAEgORR88KK05W8dh2MA+A/SKCYu3mCJ0Ek7HBx4HHeuwYy5G3x8hSMTJcOMFbinCsn" +
+ "hO1V1aszGULvA0g4UFsb4VA0hAFcyo6cgLsAoT7uUtGAH5wQKQle0wuLyxLTaNyJEYwxw4wSljLK1TP8CAaOyhBMMEsj" +
+ "OBoXgo7VGElFkSWL+vef1RF2YNXeRWYzQBTpkhC8KaZHhuIogArkQLKClBZjU26B2IZgGz+cpZkHl8g3fYUaW/YP2kb2" +
+ "M/V97JY/vZN859n+QmO7XtC9Bf2jAAAAABJRU5ErkJggg==";
+ }
+}
diff --git a/Editor/CoreEditor/Runtime/WSocket/SettingsWindow.cs.meta b/Editor/CoreEditor/Runtime/WSocket/SettingsWindow.cs.meta
new file mode 100644
index 0000000..7412468
--- /dev/null
+++ b/Editor/CoreEditor/Runtime/WSocket/SettingsWindow.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 902614e06186a482f9e816e1d1984547
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/CoreRuntime.meta b/Runtime/CoreRuntime.meta
new file mode 100644
index 0000000..ded1d9b
--- /dev/null
+++ b/Runtime/CoreRuntime.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dcbd0e41955f82b45bab54ebc1183deb
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/CoreRuntime/Core.meta b/Runtime/CoreRuntime/Core.meta
new file mode 100644
index 0000000..112dbca
--- /dev/null
+++ b/Runtime/CoreRuntime/Core.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4e4623e6f2b7ffd41b068edd3c9568d9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/CoreRuntime/Core/Assembly.meta b/Runtime/CoreRuntime/Core/Assembly.meta
new file mode 100644
index 0000000..e0bc296
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/Assembly.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5006194ae42edaa4bb33cb6172c123ab
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/CoreRuntime/Core/Assembly/AssemblyInfo.cs b/Runtime/CoreRuntime/Core/Assembly/AssemblyInfo.cs
new file mode 100644
index 0000000..3957539
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/Assembly/AssemblyInfo.cs
@@ -0,0 +1,89 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using Fantasy.DataStructure.Collection;
+
+// ReSharper disable CollectionNeverQueried.Global
+#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
+
+namespace Fantasy.Assembly
+{
+ ///
+ /// AssemblyInfo提供有关程序集和类型的信息
+ ///
+ public sealed class AssemblyInfo
+ {
+ ///
+ /// 唯一标识
+ ///
+ public readonly long AssemblyIdentity;
+ ///
+ /// 获取或设置与此程序集相关联的 实例。
+ ///
+ public System.Reflection.Assembly Assembly { get; private set; }
+ ///
+ /// 程序集类型集合,获取一个列表,包含从程序集加载的所有类型。
+ ///
+ public readonly List AssemblyTypeList = new List();
+ ///
+ /// 程序集类型分组集合,获取一个分组列表,将接口类型映射到实现这些接口的类型。
+ ///
+ public readonly OneToManyList AssemblyTypeGroupList = new OneToManyList();
+
+ ///
+ /// 初始化 类的新实例。
+ ///
+ ///
+ public AssemblyInfo(long assemblyIdentity)
+ {
+ AssemblyIdentity = assemblyIdentity;
+ }
+
+ ///
+ /// 从指定的程序集加载类型信息并进行分类。
+ ///
+ /// 要加载信息的程序集。
+ public void Load(System.Reflection.Assembly assembly)
+ {
+ Assembly = assembly;
+ var assemblyTypes = assembly.GetTypes().ToList();
+
+ foreach (var type in assemblyTypes)
+ {
+ if (type.IsAbstract || type.IsInterface)
+ {
+ continue;
+ }
+
+ var interfaces = type.GetInterfaces();
+
+ foreach (var interfaceType in interfaces)
+ {
+ AssemblyTypeGroupList.Add(interfaceType, type);
+ }
+ }
+
+ AssemblyTypeList.AddRange(assemblyTypes);
+ }
+
+ ///
+ /// 重新加载程序集的类型信息。
+ ///
+ ///
+ public void ReLoad(System.Reflection.Assembly assembly)
+ {
+ Unload();
+ Load(assembly);
+ }
+
+ ///
+ /// 卸载程序集的类型信息。
+ ///
+ public void Unload()
+ {
+ AssemblyTypeList.Clear();
+ AssemblyTypeGroupList.Clear();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Runtime/CoreRuntime/Core/Assembly/AssemblyInfo.cs.meta b/Runtime/CoreRuntime/Core/Assembly/AssemblyInfo.cs.meta
new file mode 100644
index 0000000..f1bb2d8
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/Assembly/AssemblyInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6c962fd73de88d64fa9d1ab97ed270b6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/CoreRuntime/Core/Assembly/AssemblySystem.cs b/Runtime/CoreRuntime/Core/Assembly/AssemblySystem.cs
new file mode 100644
index 0000000..deb9da6
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/Assembly/AssemblySystem.cs
@@ -0,0 +1,285 @@
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Security.Cryptography;
+using System.Text;
+using Fantasy.Async;
+using Fantasy.Helper;
+#pragma warning disable CS8604 // Possible null reference argument.
+#pragma warning disable CS8602 // Dereference of a possibly null reference.
+#pragma warning disable CS8603
+#pragma warning disable CS8618
+namespace Fantasy.Assembly
+{
+ ///
+ /// 管理程序集加载和卸载的帮助类。
+ ///
+ public static class AssemblySystem
+ {
+#if FANTASY_WEBGL
+ private static readonly List AssemblySystems = new List();
+ private static readonly Dictionary AssemblyList = new Dictionary();
+#else
+ private static readonly ConcurrentQueue AssemblySystems = new ConcurrentQueue();
+ private static readonly ConcurrentDictionary AssemblyList = new ConcurrentDictionary();
+#endif
+ ///
+ /// 初始化 AssemblySystem。(仅限内部)
+ ///
+ ///
+ internal static async FTask InnerInitialize(params System.Reflection.Assembly[] assemblies)
+ {
+ await LoadAssembly(typeof(AssemblySystem).Assembly);
+ foreach (var assembly in assemblies)
+ {
+ await LoadAssembly(assembly);
+ }
+ }
+
+ ///
+ /// 加载指定的程序集,并触发相应的事件。
+ ///
+ /// 要加载的程序集。
+ /// 如果当前Domain中已经存在同名的Assembly,使用Domain中的程序集。
+ public static async FTask LoadAssembly(System.Reflection.Assembly assembly, bool isCurrentDomain = true)
+ {
+ if (isCurrentDomain)
+ {
+ var currentDomainAssemblies = System.AppDomain.CurrentDomain.GetAssemblies();
+ var currentAssembly = currentDomainAssemblies.FirstOrDefault(d => d.GetName().Name == assembly.GetName().Name);
+ if (currentAssembly != null)
+ {
+ assembly = currentAssembly;
+ }
+ }
+
+ var assemblyIdentity = AssemblyIdentity(assembly);
+
+ if (AssemblyList.TryGetValue(assemblyIdentity, out var assemblyInfo))
+ {
+ assemblyInfo.ReLoad(assembly);
+ foreach (var assemblySystem in AssemblySystems)
+ {
+ await assemblySystem.ReLoad(assemblyIdentity);
+ }
+ }
+ else
+ {
+ assemblyInfo = new AssemblyInfo(assemblyIdentity);
+ assemblyInfo.Load(assembly);
+ AssemblyList.TryAdd(assemblyIdentity, assemblyInfo);
+ foreach (var assemblySystem in AssemblySystems)
+ {
+ await assemblySystem.Load(assemblyIdentity);
+ }
+ }
+ }
+
+ ///
+ /// 卸载程序集
+ ///
+ ///
+ public static async FTask UnLoadAssembly(System.Reflection.Assembly assembly)
+ {
+ var assemblyIdentity = AssemblyIdentity(assembly);
+
+ if (!AssemblyList.Remove(assemblyIdentity, out var assemblyInfo))
+ {
+ return;
+ }
+
+ assemblyInfo.Unload();
+ foreach (var assemblySystem in AssemblySystems)
+ {
+ await assemblySystem.OnUnLoad(assemblyIdentity);
+ }
+ }
+
+ ///
+ /// 将AssemblySystem接口的object注册到程序集管理中心
+ ///
+ ///
+ public static async FTask Register(object obj)
+ {
+ if (obj is not IAssembly assemblySystem)
+ {
+ return;
+ }
+#if FANTASY_WEBGL
+ AssemblySystems.Add(assemblySystem);
+#else
+ AssemblySystems.Enqueue(assemblySystem);
+#endif
+ foreach (var (assemblyIdentity, _) in AssemblyList)
+ {
+ await assemblySystem.Load(assemblyIdentity);
+ }
+ }
+
+ ///
+ /// 程序集管理中心卸载注册的Load、ReLoad、UnLoad的接口
+ ///
+ ///
+ public static void UnRegister(object obj)
+ {
+ if (obj is not IAssembly assemblySystem)
+ {
+ return;
+ }
+#if FANTASY_WEBGL
+ AssemblySystems.Remove(assemblySystem);
+#else
+ var count = AssemblySystems.Count;
+
+ for (var i = 0; i < count; i++)
+ {
+ if (!AssemblySystems.TryDequeue(out var removeAssemblySystem))
+ {
+ continue;
+ }
+
+ if (removeAssemblySystem == assemblySystem)
+ {
+ break;
+ }
+
+ AssemblySystems.Enqueue(removeAssemblySystem);
+ }
+#endif
+ }
+
+ ///
+ /// 获取所有已加载程序集中的所有类型。
+ ///
+ /// 所有已加载程序集中的类型。
+ public static IEnumerable ForEach()
+ {
+ foreach (var (_, assemblyInfo) in AssemblyList)
+ {
+ foreach (var type in assemblyInfo.AssemblyTypeList)
+ {
+ yield return type;
+ }
+ }
+ }
+
+ ///
+ /// 获取指定程序集中的所有类型。
+ ///
+ /// 程序集唯一标识。
+ /// 指定程序集中的类型。
+ public static IEnumerable ForEach(long assemblyIdentity)
+ {
+ if (!AssemblyList.TryGetValue(assemblyIdentity, out var assemblyInfo))
+ {
+ yield break;
+ }
+
+ foreach (var type in assemblyInfo.AssemblyTypeList)
+ {
+ yield return type;
+ }
+ }
+
+ ///
+ /// 获取所有已加载程序集中实现指定类型的所有类型。
+ ///
+ /// 要查找的基类或接口类型。
+ /// 所有已加载程序集中实现指定类型的类型。
+ public static IEnumerable ForEach(Type findType)
+ {
+ foreach (var (_, assemblyInfo) in AssemblyList)
+ {
+ if (!assemblyInfo.AssemblyTypeGroupList.TryGetValue(findType, out var assemblyLoad))
+ {
+ continue;
+ }
+
+ foreach (var type in assemblyLoad)
+ {
+ yield return type;
+ }
+ }
+ }
+
+ ///
+ /// 获取指定程序集中实现指定类型的所有类型。
+ ///
+ /// 程序集唯一标识。
+ /// 要查找的基类或接口类型。
+ /// 指定程序集中实现指定类型的类型。
+ public static IEnumerable ForEach(long assemblyIdentity, Type findType)
+ {
+ if (!AssemblyList.TryGetValue(assemblyIdentity, out var assemblyInfo))
+ {
+ yield break;
+ }
+
+ if (!assemblyInfo.AssemblyTypeGroupList.TryGetValue(findType, out var assemblyLoad))
+ {
+ yield break;
+ }
+
+ foreach (var type in assemblyLoad)
+ {
+ yield return type;
+ }
+ }
+
+ ///
+ /// 获取指定程序集的实例。
+ ///
+ /// 程序集名称。
+ /// 指定程序集的实例,如果未加载则返回 null。
+ public static System.Reflection.Assembly GetAssembly(long assemblyIdentity)
+ {
+ return !AssemblyList.TryGetValue(assemblyIdentity, out var assemblyInfo) ? null : assemblyInfo.Assembly;
+ }
+
+ ///
+ /// 获取当前框架注册的Assembly
+ ///
+ ///
+ public static IEnumerable ForEachAssembly
+ {
+ get
+ {
+ foreach (var (_, assemblyInfo) in AssemblyList)
+ {
+ yield return assemblyInfo.Assembly;
+ }
+ }
+ }
+
+ ///
+ /// 根据Assembly的强命名计算唯一标识。
+ ///
+ ///
+ ///
+ private static long AssemblyIdentity(System.Reflection.Assembly assembly)
+ {
+ return HashCodeHelper.ComputeHash64(assembly.GetName().Name);
+ }
+
+ ///
+ /// 释放资源,卸载所有加载的程序集。
+ ///
+ public static void Dispose()
+ {
+ DisposeAsync().Coroutine();
+ }
+
+ private static async FTask DisposeAsync()
+ {
+ foreach (var (_, assemblyInfo) in AssemblyList.ToArray())
+ {
+ await UnLoadAssembly(assemblyInfo.Assembly);
+ }
+
+ AssemblyList.Clear();
+ AssemblySystems.Clear();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Runtime/CoreRuntime/Core/Assembly/AssemblySystem.cs.meta b/Runtime/CoreRuntime/Core/Assembly/AssemblySystem.cs.meta
new file mode 100644
index 0000000..0252da6
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/Assembly/AssemblySystem.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 533740363a43b98499d20ddab704ae7b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/CoreRuntime/Core/Assembly/IAssembly.cs b/Runtime/CoreRuntime/Core/Assembly/IAssembly.cs
new file mode 100644
index 0000000..185e037
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/Assembly/IAssembly.cs
@@ -0,0 +1,27 @@
+using System;
+using Fantasy.Async;
+
+namespace Fantasy.Assembly
+{
+ ///
+ /// 实现这个接口、会再程序集首次加载、卸载、重载的时候调用
+ ///
+ public interface IAssembly : IDisposable
+ {
+ ///
+ /// 程序集加载时调用
+ ///
+ /// 程序集标识
+ public FTask Load(long assemblyIdentity);
+ ///
+ /// 程序集重新加载的时候调用
+ ///
+ /// 程序集标识
+ public FTask ReLoad(long assemblyIdentity);
+ ///
+ /// 卸载的时候调用
+ ///
+ /// 程序集标识
+ public FTask OnUnLoad(long assemblyIdentity);
+ }
+}
\ No newline at end of file
diff --git a/Runtime/CoreRuntime/Core/Assembly/IAssembly.cs.meta b/Runtime/CoreRuntime/Core/Assembly/IAssembly.cs.meta
new file mode 100644
index 0000000..16313d1
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/Assembly/IAssembly.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2265dda8f756ced42b346d101b5c431c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/CoreRuntime/Core/Benchmark.meta b/Runtime/CoreRuntime/Core/Benchmark.meta
new file mode 100644
index 0000000..ca50a8f
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/Benchmark.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b9672ac65f515574a8e888c0baa4f5a2
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/CoreRuntime/Core/Benchmark/Handler.meta b/Runtime/CoreRuntime/Core/Benchmark/Handler.meta
new file mode 100644
index 0000000..92992e6
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/Benchmark/Handler.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dcf9f758978488e4d94d0aec6c151e3f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/CoreRuntime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs b/Runtime/CoreRuntime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs
new file mode 100644
index 0000000..8532547
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs
@@ -0,0 +1,25 @@
+using Fantasy.Async;
+using Fantasy.InnerMessage;
+using Fantasy.Network.Interface;
+
+#if FANTASY_NET
+namespace Fantasy.Network.Benchmark.Handler;
+
+///
+/// BenchmarkRequestHandler
+///
+public sealed class BenchmarkRequestHandler : MessageRPC
+{
+ ///
+ /// Run方法
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected override async FTask Run(Session session, BenchmarkRequest request, BenchmarkResponse response, Action reply)
+ {
+ await FTask.CompletedTask;
+ }
+}
+#endif
diff --git a/Runtime/CoreRuntime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs.meta b/Runtime/CoreRuntime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs.meta
new file mode 100644
index 0000000..8288de2
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/Benchmark/Handler/BenchmarkRequestHandler.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0584f8f7232c13e4a9043b14fcb00ba6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/CoreRuntime/Core/DataBase.meta b/Runtime/CoreRuntime/Core/DataBase.meta
new file mode 100644
index 0000000..ef8664a
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/DataBase.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 158dbd1e6090fc6408b93c074e56a894
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/CoreRuntime/Core/DataBase/DataBaseType.cs b/Runtime/CoreRuntime/Core/DataBase/DataBaseType.cs
new file mode 100644
index 0000000..2fb03ec
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/DataBase/DataBaseType.cs
@@ -0,0 +1,20 @@
+// ReSharper disable CheckNamespace
+// ReSharper disable InconsistentNaming
+#if FANTASY_NET
+namespace Fantasy.DataBase;
+
+///
+/// 数据库类型
+///
+public enum DataBaseType
+{
+ ///
+ /// 默认
+ ///
+ None = 0,
+ ///
+ /// MongoDB
+ ///
+ MongoDB = 1
+}
+#endif
\ No newline at end of file
diff --git a/Runtime/CoreRuntime/Core/DataBase/DataBaseType.cs.meta b/Runtime/CoreRuntime/Core/DataBase/DataBaseType.cs.meta
new file mode 100644
index 0000000..ad9a88d
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/DataBase/DataBaseType.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a76811d05f24f5449bdc0fe27e6f7b8e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/CoreRuntime/Core/DataBase/IDataBase.cs b/Runtime/CoreRuntime/Core/DataBase/IDataBase.cs
new file mode 100644
index 0000000..6a2fe8b
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/DataBase/IDataBase.cs
@@ -0,0 +1,210 @@
+#if FANTASY_NET
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+using Fantasy.Async;
+using Fantasy.Entitas;
+using MongoDB.Driver;
+// ReSharper disable InconsistentNaming
+#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable.
+
+#pragma warning disable CS8625
+
+namespace Fantasy.DataBase
+{
+ ///
+ /// 数据库设置助手
+ ///
+ public static class DataBaseSetting
+ {
+ ///
+ /// 初始化自定义委托,当设置了这个委托后,就不会自动创建MongoClient,需要自己在委托里创建MongoClient。
+ ///
+ public static Func? MongoDBCustomInitialize;
+ }
+
+ ///
+ /// MongoDB自定义连接参数
+ ///
+ public sealed class DataBaseCustomConfig
+ {
+ ///
+ /// 当前Scene
+ ///
+ public Scene Scene;
+ ///
+ /// 连接字符串
+ ///
+ public string ConnectionString;
+ ///
+ /// 数据库名字
+ ///
+ public string DBName;
+ }
+
+ ///
+ /// 表示用于执行各种数据库操作的数据库接口。
+ ///
+ public interface IDataBase : IDisposable
+ {
+ ///
+ /// 获得当前数据的类型
+ ///
+ public DataBaseType GetDataBaseType { get;}
+ ///
+ /// 获得对应数据的操作实例
+ ///
+ /// 如MongoDB就是IMongoDatabase
+ public object GetDataBaseInstance { get;}
+ ///
+ /// 初始化数据库连接。
+ ///
+ IDataBase Initialize(Scene scene, string connectionString, string dbName);
+ ///
+ /// 在指定的集合中检索类型 的实体数量。
+ ///
+ FTask Count(string collection = null) where T : Entity;
+ ///
+ /// 在指定的集合中检索满足给定筛选条件的类型 的实体数量。
+ ///
+ FTask Count(Expression> filter, string collection = null) where T : Entity;
+ ///
+ /// 检查指定集合中是否存在类型 的实体。
+ ///
+ FTask Exist(string collection = null) where T : Entity;
+ ///
+ /// 检查指定集合中是否存在满足给定筛选条件的类型 的实体。
+ ///
+ FTask Exist(Expression> filter, string collection = null) where T : Entity;
+ ///
+ /// 从指定集合中检索指定 ID 的类型 的实体,不锁定。
+ ///
+ FTask QueryNotLock(long id, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 从指定集合中检索指定 ID 的类型 的实体。
+ ///
+ FTask Query(long id, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 按页查询满足给定筛选条件的类型 的实体数量和日期。
+ ///
+ FTask<(int count, List dates)> QueryCountAndDatesByPage(Expression> filter, int pageIndex, int pageSize, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 按页查询满足给定筛选条件的类型 的实体数量和日期。
+ ///
+ FTask<(int count, List dates)> QueryCountAndDatesByPage(Expression> filter, int pageIndex, int pageSize, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 分页查询指定集合中满足给定筛选条件的类型 的实体列表。
+ ///
+ FTask> QueryByPage(Expression> filter, int pageIndex, int pageSize, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 分页查询指定集合中满足给定筛选条件的类型 的实体列表,仅返回指定列的数据。
+ ///
+ FTask> QueryByPage(Expression> filter, int pageIndex, int pageSize, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 从指定集合中按页查询满足给定筛选条件的类型 的实体列表,按指定字段排序。
+ ///
+ FTask> QueryByPageOrderBy(Expression> filter, int pageIndex, int pageSize, Expression> orderByExpression, bool isAsc = true, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 检索满足给定筛选条件的类型 的第一个实体,从指定集合中。
+ ///
+ FTask First(Expression> filter, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 查询指定集合中满足给定 JSON 查询字符串的类型 的第一个实体,仅返回指定列的数据。
+ ///
+ FTask First(string json, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 从指定集合中按页查询满足给定筛选条件的类型 的实体列表,按指定字段排序。
+ ///
+ FTask> QueryOrderBy(Expression> filter, Expression> orderByExpression, bool isAsc = true, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 从指定集合中按页查询满足给定筛选条件的类型 的实体列表。
+ ///
+ FTask> Query(Expression> filter, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 查询指定集合中满足给定筛选条件的类型 实体列表,仅返回指定字段的数据。
+ ///
+ FTask> Query(Expression> filter, Expression>[] cols, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 查询指定 ID 的多个集合,将结果存储在给定的实体列表中。
+ ///
+ FTask Query(long id, List collectionNames, List result, bool isDeserialize = false);
+ ///
+ /// 根据给定的 JSON 查询字符串查询指定集合中的类型 实体列表。
+ ///
+ FTask> QueryJson(string json, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 根据给定的 JSON 查询字符串查询指定集合中的类型 实体列表,仅返回指定列的数据。
+ ///
+ FTask> QueryJson(string json, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 根据给定的 JSON 查询字符串查询指定集合中的类型 实体列表,通过指定的任务 ID 进行标识。
+ ///
+ FTask> QueryJson(long taskId, string json, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 查询指定集合中满足给定筛选条件的类型 实体列表,仅返回指定列的数据。
+ ///
+ FTask> Query(Expression> filter, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity;
+ ///
+ /// 保存类型 实体到指定集合中,如果集合不存在将自动创建。
+ ///
+ FTask Save(T entity, string collection = null) where T : Entity, new();
+ ///
+ /// 保存一组实体到数据库中,根据实体列表的 ID 进行区分和存储。
+ ///
+ FTask Save(long id, List entities);
+ ///
+ /// 通过事务会话将类型 实体保存到指定集合中,如果集合不存在将自动创建。
+ ///
+ FTask Save(object transactionSession, T entity, string collection = null) where T : Entity;
+ ///
+ /// 向指定集合中插入一个类型 实体,如果集合不存在将自动创建。
+ ///
+ FTask Insert(T entity, string collection = null) where T : Entity, new();
+ ///
+ /// 批量插入一组类型 实体到指定集合中,如果集合不存在将自动创建。
+ ///
+ FTask InsertBatch(IEnumerable list, string collection = null) where T : Entity, new();
+ ///
+ /// 通过事务会话,批量插入一组类型 实体到指定集合中,如果集合不存在将自动创建。
+ ///
+ FTask InsertBatch(object transactionSession, IEnumerable list, string collection = null) where T : Entity, new();
+ ///
+ /// 通过事务会话,根据指定的 ID 从数据库中删除指定类型 实体。
+ ///
+ FTask Remove(object transactionSession, long id, string collection = null) where T : Entity, new();
+ ///
+ /// 根据指定的 ID 从数据库中删除指定类型 实体。
+ ///
+ FTask Remove(long id, string collection = null) where T : Entity, new();
+ ///
+ /// 通过事务会话,根据给定的筛选条件从数据库中删除指定类型 实体。
+ ///
+ FTask Remove(long coroutineLockQueueKey, object transactionSession, Expression> filter, string collection = null) where T : Entity, new();
+ ///
+ /// 根据给定的筛选条件从数据库中删除指定类型 实体。
+ ///
+ FTask Remove(long coroutineLockQueueKey, Expression> filter, string collection = null) where T : Entity, new();
+ ///
+ /// 根据给定的筛选条件计算指定集合中类型 实体某个属性的总和。
+ ///
+ FTask Sum(Expression> filter, Expression> sumExpression, string collection = null) where T : Entity;
+ ///
+ /// 在指定的集合中创建索引,以提高类型 实体的查询性能。
+ ///
+ FTask CreateIndex(string collection, params object[] keys) where T : Entity;
+ ///
+ /// 在默认集合中创建索引,以提高类型 实体的查询性能。
+ ///
+ FTask CreateIndex(params object[] keys) where T : Entity;
+ ///
+ /// 创建指定类型 的数据库,用于存储实体。
+ ///
+ FTask CreateDB() where T : Entity;
+ ///
+ /// 根据指定类型创建数据库,用于存储实体。
+ ///
+ FTask CreateDB(Type type);
+ }
+}
+
+#endif
\ No newline at end of file
diff --git a/Runtime/CoreRuntime/Core/DataBase/IDataBase.cs.meta b/Runtime/CoreRuntime/Core/DataBase/IDataBase.cs.meta
new file mode 100644
index 0000000..b01c0d5
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/DataBase/IDataBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1630d7e4e5e733d439ab42b7e57fee87
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/CoreRuntime/Core/DataBase/MongoDataBase.cs b/Runtime/CoreRuntime/Core/DataBase/MongoDataBase.cs
new file mode 100644
index 0000000..49948f4
--- /dev/null
+++ b/Runtime/CoreRuntime/Core/DataBase/MongoDataBase.cs
@@ -0,0 +1,1081 @@
+#if FANTASY_NET
+using System.Linq.Expressions;
+using Fantasy.Async;
+using Fantasy.DataStructure.Collection;
+using Fantasy.Entitas;
+using Fantasy.Helper;
+using Fantasy.Serialize;
+using MongoDB.Bson;
+using MongoDB.Driver;
+#pragma warning disable CS8602 // Dereference of a possibly null reference.
+#pragma warning disable CS8603 // Possible null reference return.
+#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
+#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
+
+namespace Fantasy.DataBase
+{
+ ///
+ /// 使用 MongoDB 数据库的实现。
+ ///
+ public sealed class MongoDataBase : IDataBase
+ {
+ private const int DefaultTaskSize = 1024;
+ private Scene _scene;
+ private MongoClient _mongoClient;
+ private ISerialize _serializer;
+ private IMongoDatabase _mongoDatabase;
+ private CoroutineLock _dataBaseLock;
+ private readonly HashSet _collections = new HashSet();
+ ///
+ /// 获得当前数据的类型
+ ///
+ public DataBaseType GetDataBaseType { get; } = DataBaseType.MongoDB;
+ ///
+ /// 获得对应数据的操作实例
+ ///
+ public object GetDataBaseInstance => _mongoDatabase;
+ ///
+ /// 初始化 MongoDB 数据库连接并记录所有集合名。
+ ///
+ /// 场景对象。
+ /// 数据库连接字符串。
+ /// 数据库名称。
+ /// 初始化后的数据库实例。
+ public IDataBase Initialize(Scene scene, string connectionString, string dbName)
+ {
+ _scene = scene;
+ _mongoClient = DataBaseSetting.MongoDBCustomInitialize != null
+ ? DataBaseSetting.MongoDBCustomInitialize(new DataBaseCustomConfig()
+ {
+ Scene = scene, ConnectionString = connectionString, DBName = dbName
+ })
+ : new MongoClient(connectionString);
+ _mongoDatabase = _mongoClient.GetDatabase(dbName);
+ _dataBaseLock = scene.CoroutineLockComponent.Create(GetType().TypeHandle.Value.ToInt64());
+ // 记录所有集合名
+ _collections.UnionWith(_mongoDatabase.ListCollectionNames().ToList());
+ _serializer = SerializerManager.GetSerializer(FantasySerializerType.Bson);
+ return this;
+ }
+
+ ///
+ /// 销毁释放资源。
+ ///
+ public void Dispose()
+ {
+ // 优先释放协程锁。
+ _dataBaseLock.Dispose();
+ // 清理资源。
+ _scene = null;
+ _serializer = null;
+ _mongoDatabase = null;
+ _dataBaseLock = null;
+ _collections.Clear();
+ _mongoClient.Dispose();
+ }
+
+ #region Other
+
+ ///
+ /// 对满足条件的文档中的某个数值字段进行求和操作。
+ ///
+ /// 实体类型。
+ /// 用于筛选文档的表达式。
+ /// 要对其进行求和的字段表达式。
+ /// 集合名称,可选。如果未指定,将使用实体类型的名称。
+ /// 满足条件的文档中指定字段的求和结果。
+ public async FTask Sum(Expression> filter, Expression> sumExpression, string collection = null) where T : Entity
+ {
+ var member = (MemberExpression)((UnaryExpression)sumExpression.Body).Operand;
+ var projection = new BsonDocument("_id", "null").Add("Result", new BsonDocument("$sum", $"${member.Member.Name}"));
+ var data = await GetCollection(collection).Aggregate().Match(filter).Group(projection).FirstOrDefaultAsync();
+ return data == null ? 0 : Convert.ToInt64(data["Result"]);
+ }
+
+ #endregion
+
+ #region GetCollection
+
+ ///
+ /// 获取指定集合中的 MongoDB 文档的 IMongoCollection 对象。
+ ///
+ /// 实体类型。
+ /// 集合名称,可选。如果未指定,将使用实体类型的名称。
+ /// IMongoCollection 对象。
+ private IMongoCollection GetCollection(string collection = null)
+ {
+ return _mongoDatabase.GetCollection(collection ?? typeof(T).Name);
+ }
+
+ ///
+ /// 获取指定集合中的 MongoDB 文档的 IMongoCollection 对象,其中实体类型为 Entity。
+ ///
+ /// 集合名称。
+ /// IMongoCollection 对象。
+ private IMongoCollection GetCollection(string name)
+ {
+ return _mongoDatabase.GetCollection(name);
+ }
+
+ #endregion
+
+ #region Count
+
+ ///
+ /// 统计指定集合中满足条件的文档数量。
+ ///
+ /// 实体类型。
+ /// 集合名称,可选。如果未指定,将使用实体类型的名称。
+ /// 满足条件的文档数量。
+ public async FTask Count(string collection = null) where T : Entity
+ {
+ return await GetCollection(collection).CountDocumentsAsync(d => true);
+ }
+
+ ///
+ /// 统计指定集合中满足条件的文档数量。
+ ///
+ /// 实体类型。
+ /// 用于筛选文档的表达式。
+ /// 集合名称,可选。如果未指定,将使用实体类型的名称。
+ /// 满足条件的文档数量。
+ public async FTask Count(Expression> filter, string collection = null) where T : Entity
+ {
+ return await GetCollection(collection).CountDocumentsAsync(filter);
+ }
+
+ #endregion
+
+ #region Exist
+
+ ///
+ /// 判断指定集合中是否存在文档。
+ ///
+ /// 实体类型。
+ /// 集合名称,可选。如果未指定,将使用实体类型的名称。
+ /// 如果存在文档则返回 true,否则返回 false。
+ public async FTask Exist(string collection = null) where T : Entity
+ {
+ return await Count(collection) > 0;
+ }
+
+ ///
+ /// 判断指定集合中是否存在满足条件的文档。
+ ///
+ /// 实体类型。
+ /// 用于筛选文档的表达式。
+ /// 集合名称,可选。如果未指定,将使用实体类型的名称。
+ /// 如果存在满足条件的文档则返回 true,否则返回 false。
+ public async FTask Exist(Expression> filter, string collection = null) where T : Entity
+ {
+ return await Count(filter, collection) > 0;
+ }
+
+ #endregion
+
+ #region Query
+
+ ///
+ /// 在不加数据库锁定的情况下,查询指定 ID 的文档。
+ ///
+ /// 文档实体类型。
+ /// 要查询的文档 ID。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 查询到的文档。
+ public async FTask QueryNotLock(long id, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ var cursor = await GetCollection(collection).FindAsync(d => d.Id == id);
+ var v = await cursor.FirstOrDefaultAsync();
+
+ if (isDeserialize && v != null)
+ {
+ v.Deserialize(_scene);
+ }
+
+ return v;
+ }
+
+ ///
+ /// 查询指定 ID 的文档,并加数据库锁定以确保数据一致性。
+ ///
+ /// 文档实体类型。
+ /// 要查询的文档 ID。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 查询到的文档。
+ public async FTask Query(long id, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(id))
+ {
+ var cursor = await GetCollection(collection).FindAsync(d => d.Id == id);
+ var v = await cursor.FirstOrDefaultAsync();
+
+ if (isDeserialize && v != null)
+ {
+ v.Deserialize(_scene);
+ }
+
+ return v;
+ }
+ }
+
+ ///
+ /// 通过分页查询并返回满足条件的文档数量和日期列表(不加锁)。
+ ///
+ /// 文档实体类型。
+ /// 查询过滤条件。
+ /// 页码。
+ /// 每页大小。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 满足条件的文档数量和日期列表。
+ public async FTask<(int count, List dates)> QueryCountAndDatesByPage(Expression> filter, int pageIndex, int pageSize, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ var count = await Count(filter);
+ var dates = await QueryByPage(filter, pageIndex, pageSize, isDeserialize, collection);
+ return ((int)count, dates);
+ }
+ }
+
+ ///
+ /// 通过分页查询并返回满足条件的文档数量和日期列表(加锁)。
+ ///
+ /// 文档实体类型。
+ /// 查询过滤条件。
+ /// 页码。
+ /// 每页大小。
+ /// 要查询的列名称数组。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 满足条件的文档数量和日期列表。
+ public async FTask<(int count, List dates)> QueryCountAndDatesByPage(Expression> filter, int pageIndex, int pageSize, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ var count = await Count(filter);
+ var dates = await QueryByPage(filter, pageIndex, pageSize, cols, isDeserialize, collection);
+ return ((int)count, dates);
+ }
+ }
+
+ ///
+ /// 通过分页查询并返回满足条件的文档列表(不加锁)。
+ ///
+ /// 文档实体类型。
+ /// 查询过滤条件。
+ /// 页码。
+ /// 每页大小。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 满足条件的文档列表。
+ public async FTask> QueryByPage(Expression> filter, int pageIndex, int pageSize, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ var list = await GetCollection(collection).Find(filter).Skip((pageIndex - 1) * pageSize)
+ .Limit(pageSize)
+ .ToListAsync();
+
+ if (!isDeserialize || list is not { Count: > 0 })
+ {
+ return list;
+ }
+
+ foreach (var entity in list)
+ {
+ entity.Deserialize(_scene);
+ }
+
+ return list;
+ }
+ }
+
+ ///
+ /// 通过分页查询并返回满足条件的文档列表(加锁)。
+ ///
+ /// 文档实体类型。
+ /// 查询过滤条件。
+ /// 页码。
+ /// 每页大小。
+ /// 要查询的列名称数组。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 满足条件的文档列表。
+ public async FTask> QueryByPage(Expression> filter, int pageIndex, int pageSize, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ var projection = Builders.Projection.Include("");
+
+ foreach (var col in cols)
+ {
+ projection = projection.Include(col);
+ }
+
+ var list = await GetCollection(collection).Find(filter).Project(projection)
+ .Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync();
+
+ if (!isDeserialize || list is not { Count: > 0 })
+ {
+ return list;
+ }
+
+ foreach (var entity in list)
+ {
+ entity.Deserialize(_scene);
+ }
+
+ return list;
+ }
+ }
+
+ ///
+ /// 通过分页查询并返回满足条件的文档列表,并按指定表达式进行排序(加锁)。
+ ///
+ /// 文档实体类型。
+ /// 查询过滤条件。
+ /// 页码。
+ /// 每页大小。
+ /// 排序表达式。
+ /// 是否升序排序。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 满足条件的文档列表。
+ public async FTask> QueryByPageOrderBy(Expression> filter, int pageIndex, int pageSize, Expression> orderByExpression, bool isAsc = true, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ List list;
+
+ if (isAsc)
+ {
+ list = await GetCollection(collection).Find(filter).SortBy(orderByExpression).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync();
+ }
+ else
+ {
+ list = await GetCollection(collection).Find(filter).SortByDescending(orderByExpression).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync();
+ }
+
+ if (!isDeserialize || list is not { Count: > 0 })
+ {
+ return list;
+ }
+
+ foreach (var entity in list)
+ {
+ entity.Deserialize(_scene);
+ }
+
+ return list;
+ }
+ }
+
+ ///
+ /// 通过指定过滤条件查询并返回满足条件的第一个文档(加锁)。
+ ///
+ /// 文档实体类型。
+ /// 查询过滤条件。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 满足条件的第一个文档,如果未找到则为 null。
+ public async FTask First(Expression> filter, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ var cursor = await GetCollection(collection).FindAsync(filter);
+ var t = await cursor.FirstOrDefaultAsync();
+
+ if (isDeserialize && t != null)
+ {
+ t.Deserialize(_scene);
+ }
+
+ return t;
+ }
+ }
+
+ ///
+ /// 通过指定 JSON 格式查询并返回满足条件的第一个文档(加锁)。
+ ///
+ /// 文档实体类型。
+ /// JSON 查询条件。
+ /// 要查询的列名称数组。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 满足条件的第一个文档。
+ public async FTask First(string json, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ var projection = Builders.Projection.Include("");
+
+ foreach (var col in cols)
+ {
+ projection = projection.Include(col);
+ }
+
+ var options = new FindOptions { Projection = projection };
+
+ FilterDefinition filterDefinition = new JsonFilterDefinition(json);
+
+ var cursor = await GetCollection(collection).FindAsync(filterDefinition, options);
+ var t = await cursor.FirstOrDefaultAsync();
+
+ if (isDeserialize && t != null)
+ {
+ t.Deserialize(_scene);
+ }
+
+ return t;
+ }
+ }
+
+ ///
+ /// 通过指定过滤条件查询并返回满足条件的文档列表,并按指定表达式进行排序(加锁)。
+ ///
+ /// 文档实体类型。
+ /// 查询过滤条件。
+ /// 排序表达式。
+ /// 是否升序排序。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 满足条件的文档列表。
+ public async FTask> QueryOrderBy(Expression> filter, Expression> orderByExpression, bool isAsc = true, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ List list;
+
+ if (isAsc)
+ {
+ list = await GetCollection(collection).Find(filter).SortBy(orderByExpression).ToListAsync();
+ }
+ else
+ {
+ list = await GetCollection(collection).Find(filter).SortByDescending(orderByExpression).ToListAsync();
+ }
+
+ if (!isDeserialize || list is not { Count: > 0 })
+ {
+ return list;
+ }
+
+ foreach (var entity in list)
+ {
+ entity.Deserialize(_scene);
+ }
+
+ return list;
+ }
+ }
+
+ ///
+ /// 通过指定过滤条件查询并返回满足条件的文档列表(加锁)。
+ ///
+ /// 文档实体类型。
+ /// 查询过滤条件。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 满足条件的文档列表。
+ public async FTask> Query(Expression> filter, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ var cursor = await GetCollection(collection).FindAsync(filter);
+ var list = await cursor.ToListAsync();
+
+ if (!isDeserialize || list is not { Count: > 0 })
+ {
+ return list;
+ }
+
+ foreach (var entity in list)
+ {
+ entity.Deserialize(_scene);
+ }
+
+ return list;
+ }
+ }
+
+ ///
+ /// 根据指定 ID 加锁查询多个集合中的文档。
+ ///
+ /// 文档 ID。
+ /// 要查询的集合名称列表。
+ /// 查询结果存储列表。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ public async FTask Query(long id, List? collectionNames, List result, bool isDeserialize = false)
+ {
+ using (await _dataBaseLock.Wait(id))
+ {
+ if (collectionNames == null || collectionNames.Count == 0)
+ {
+ return;
+ }
+
+ foreach (var collectionName in collectionNames)
+ {
+ var cursor = await GetCollection(collectionName).FindAsync(d => d.Id == id);
+
+ var e = await cursor.FirstOrDefaultAsync();
+
+ if (e == null)
+ {
+ continue;
+ }
+
+ if (isDeserialize)
+ {
+ e.Deserialize(_scene);
+ }
+
+ result.Add(e);
+ }
+ }
+ }
+
+ ///
+ /// 根据指定的 JSON 查询条件查询并返回满足条件的文档列表(加锁)。
+ ///
+ /// 文档实体类型。
+ /// JSON 查询条件。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 满足条件的文档列表。
+ public async FTask> QueryJson(string json, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ FilterDefinition filterDefinition = new JsonFilterDefinition(json);
+ var cursor = await GetCollection(collection).FindAsync(filterDefinition);
+ var list = await cursor.ToListAsync();
+
+ if (!isDeserialize || list is not { Count: > 0 })
+ {
+ return list;
+ }
+
+ foreach (var entity in list)
+ {
+ entity.Deserialize(_scene);
+ }
+
+ return list;
+ }
+ }
+
+ ///
+ /// 根据指定的 JSON 查询条件查询并返回满足条件的文档列表,并选择指定的列(加锁)。
+ ///
+ /// 文档实体类型。
+ /// JSON 查询条件。
+ /// 要查询的列名称数组。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 满足条件的文档列表。
+ public async FTask> QueryJson(string json, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ var projection = Builders.Projection.Include("");
+
+ foreach (var col in cols)
+ {
+ projection = projection.Include(col);
+ }
+
+ var options = new FindOptions { Projection = projection };
+
+ FilterDefinition filterDefinition = new JsonFilterDefinition(json);
+
+ var cursor = await GetCollection(collection).FindAsync(filterDefinition, options);
+ var list = await cursor.ToListAsync();
+
+ if (!isDeserialize || list is not { Count: > 0 })
+ {
+ return list;
+ }
+
+ foreach (var entity in list)
+ {
+ entity.Deserialize(_scene);
+ }
+
+ return list;
+ }
+ }
+
+ ///
+ /// 根据指定的 JSON 查询条件和任务 ID 查询并返回满足条件的文档列表(加锁)。
+ ///
+ /// 文档实体类型。
+ /// 任务 ID。
+ /// JSON 查询条件。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 满足条件的文档列表。
+ public async FTask> QueryJson(long taskId, string json, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(taskId))
+ {
+ FilterDefinition filterDefinition = new JsonFilterDefinition(json);
+ var cursor = await GetCollection(collection).FindAsync(filterDefinition);
+ var list = await cursor.ToListAsync();
+
+ if (!isDeserialize || list is not { Count: > 0 })
+ {
+ return list;
+ }
+
+ foreach (var entity in list)
+ {
+ entity.Deserialize(_scene);
+ }
+
+ return list;
+ }
+ }
+
+ ///
+ /// 根据指定过滤条件查询并返回满足条件的文档列表,选择指定的列(加锁)。
+ ///
+ /// 文档实体类型。
+ /// 查询过滤条件。
+ /// 要查询的列名称数组。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ /// 满足条件的文档列表。
+ public async FTask> Query(Expression> filter, string[] cols, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ var projection = Builders.Projection.Include("_id");
+
+ foreach (var t in cols)
+ {
+ projection = projection.Include(t);
+ }
+
+ var list = await GetCollection(collection).Find(filter).Project(projection).ToListAsync();
+
+ if (!isDeserialize || list is not { Count: > 0 })
+ {
+ return list;
+ }
+
+ foreach (var entity in list)
+ {
+ entity.Deserialize(_scene);
+ }
+
+ return list;
+ }
+ }
+
+ ///
+ /// 根据指定过滤条件查询并返回满足条件的文档列表,选择指定的列(加锁)。
+ ///
+ /// 文档实体类型。
+ /// 查询过滤条件。
+ /// 要查询的列名称数组。
+ /// 是否在查询后反序列化,执行反序列化后会自动将实体注册到框架系统中,并且能正常使用组件相关功能。
+ /// 集合名称。
+ ///
+ public async FTask> Query(Expression> filter, Expression>[] cols, bool isDeserialize = false, string collection = null) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ var projection = Builders.Projection.Include("_id");
+
+ foreach (var col in cols)
+ {
+ if (col.Body is not MemberExpression memberExpression)
+ {
+ throw new ArgumentException("Lambda expression must be a member access expression.");
+ }
+
+ projection = projection.Include(memberExpression.Member.Name);
+ }
+
+ var list = await GetCollection(collection).Find(filter).Project(projection).ToListAsync();
+
+ if (!isDeserialize || list is not { Count: > 0 })
+ {
+ return list;
+ }
+
+ foreach (var entity in list)
+ {
+ entity.Deserialize(_scene);
+ }
+
+ return list;
+ }
+ }
+
+ #endregion
+
+ #region Save
+
+ ///
+ /// 保存实体对象到数据库(加锁)。
+ ///
+ /// 实体类型。
+ /// 事务会话对象。
+ /// 要保存的实体对象。
+ /// 集合名称。
+ public async FTask Save(object transactionSession, T? entity, string collection = null) where T : Entity
+ {
+ if (entity == null)
+ {
+ Log.Error($"save entity is null: {typeof(T).Name}");
+ return;
+ }
+
+ var clone = _serializer.Clone(entity);
+
+ using (await _dataBaseLock.Wait(clone.Id))
+ {
+ await GetCollection(collection).ReplaceOneAsync(
+ (IClientSessionHandle)transactionSession, d => d.Id == clone.Id, clone,
+ new ReplaceOptions { IsUpsert = true });
+ }
+ }
+
+ ///
+ /// 保存实体对象到数据库(加锁)。
+ ///
+ /// 实体类型。
+ /// 要保存的实体对象。
+ /// 集合名称。
+ public async FTask Save(T? entity, string collection = null) where T : Entity, new()
+ {
+ if (entity == null)
+ {
+ Log.Error($"save entity is null: {typeof(T).Name}");
+
+ return;
+ }
+
+ var clone = _serializer.Clone(entity);
+
+ using (await _dataBaseLock.Wait(clone.Id))
+ {
+ await GetCollection(collection).ReplaceOneAsync(d => d.Id == clone.Id, clone, new ReplaceOptions { IsUpsert = true });
+ }
+ }
+
+ ///
+ /// 保存实体对象到数据库(加锁)。
+ ///
+ /// 保存的条件表达式。
+ /// 实体类型。
+ /// 集合名称。
+ ///
+ public async FTask Save(Expression> filter, T? entity, string collection = null) where T : Entity, new()
+ {
+ if (entity == null)
+ {
+ Log.Error($"save entity is null: {typeof(T).Name}");
+ return;
+ }
+
+ T clone = _serializer.Clone(entity);
+
+ using (await _dataBaseLock.Wait(clone.Id))
+ {
+ await GetCollection(collection).ReplaceOneAsync(filter, clone, new ReplaceOptions { IsUpsert = true });
+ }
+ }
+
+ ///
+ /// 保存多个实体对象到数据库(加锁)。
+ ///
+ /// 文档 ID。
+ /// 要保存的实体对象列表。
+ public async FTask Save(long id, List? entities)
+ {
+ if (entities == null || entities.Count == 0)
+ {
+ Log.Error("save entity is null");
+ return;
+ }
+
+ using var listPool = ListPool.Create();
+
+ foreach (var entity in entities)
+ {
+ listPool.Add(_serializer.Clone(entity));
+ }
+
+ using (await _dataBaseLock.Wait(id))
+ {
+ foreach (var clone in listPool)
+ {
+ try
+ {
+ await GetCollection(clone.GetType().Name).ReplaceOneAsync(d => d.Id == clone.Id, clone, new ReplaceOptions { IsUpsert = true });
+ }
+ catch (Exception e)
+ {
+ Log.Error($"Save List Entity Error: {clone.GetType().Name} {clone}\n{e}");
+ }
+ }
+ }
+ }
+
+ #endregion
+
+ #region Insert
+
+ ///
+ /// 插入单个实体对象到数据库(加锁)。
+ ///
+ /// 实体类型。
+ /// 要插入的实体对象。
+ /// 集合名称。
+ public async FTask Insert(T? entity, string collection = null) where T : Entity, new()
+ {
+ if (entity == null)
+ {
+ Log.Error($"insert entity is null: {typeof(T).Name}");
+ return;
+ }
+
+ var clone = _serializer.Clone(entity);
+
+ using (await _dataBaseLock.Wait(entity.Id))
+ {
+ await GetCollection(collection).InsertOneAsync(clone);
+ }
+ }
+
+ ///
+ /// 批量插入实体对象列表到数据库(加锁)。
+ ///
+ /// 实体类型。
+ /// 要插入的实体对象列表。
+ /// 集合名称。
+ public async FTask InsertBatch(IEnumerable list, string collection = null) where T : Entity, new()
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ await GetCollection(collection).InsertManyAsync(list);
+ }
+ }
+
+ ///
+ /// 批量插入实体对象列表到数据库(加锁)。
+ ///
+ /// 实体类型。
+ /// 事务会话对象。
+ /// 要插入的实体对象列表。
+ /// 集合名称。
+ public async FTask InsertBatch(object transactionSession, IEnumerable list, string collection = null)
+ where T : Entity, new()
+ {
+ using (await _dataBaseLock.Wait(RandomHelper.RandInt64() % DefaultTaskSize))
+ {
+ await GetCollection(collection).InsertManyAsync((IClientSessionHandle)transactionSession, list);
+ }
+ }
+
+ ///
+ /// 插入BsonDocument到数据库(加锁)。
+ ///
+ ///
+ ///
+ ///
+ public async Task Insert(BsonDocument bsonDocument, long taskId) where T : Entity
+ {
+ using (await _dataBaseLock.Wait(taskId))
+ {
+ await GetCollection(typeof(T).Name).InsertOneAsync(bsonDocument);
+ }
+ }
+
+ #endregion
+
+ #region Remove
+
+ ///
+ /// 根据ID删除单个实体对象(加锁)。
+ ///
+ /// 实体类型。
+ /// 事务会话对象。
+ /// 要删除的实体的ID。
+ /// 集合名称。
+ /// 删除的实体数量。
+ public async FTask Remove(object transactionSession, long id, string collection = null)
+ where T : Entity, new()
+ {
+ using (await _dataBaseLock.Wait(id))
+ {
+ var result = await GetCollection(collection)
+ .DeleteOneAsync((IClientSessionHandle)transactionSession, d => d.Id == id);
+ return result.DeletedCount;
+ }
+ }
+
+ ///
+ /// 根据ID删除单个实体对象(加锁)。
+ ///
+ /// 实体类型。
+ /// 要删除的实体的ID。
+ /// 集合名称。
+ /// 删除的实体数量。
+ public async FTask Remove(long id, string collection = null) where T : Entity, new()
+ {
+ using (await _dataBaseLock.Wait(id))
+ {
+ var result = await GetCollection(collection).DeleteOneAsync(d => d.Id == id);
+ return result.DeletedCount;
+ }
+ }
+
+ ///
+ /// 根据ID和筛选条件删除多个实体对象(加锁)。
+ ///
+ /// 实体类型。
+ /// 异步锁Id。
+ /// 事务会话对象。
+ /// 筛选条件。
+ /// 集合名称。
+ /// 删除的实体数量。
+ public async FTask Remove(long coroutineLockQueueKey, object transactionSession,
+ Expression> filter, string collection = null) where T : Entity, new()
+ {
+ using (await _dataBaseLock.Wait(coroutineLockQueueKey))
+ {
+ var result = await GetCollection(collection)
+ .DeleteManyAsync((IClientSessionHandle)transactionSession, filter);
+ return result.DeletedCount;
+ }
+ }
+
+ ///
+ /// 根据ID和筛选条件删除多个实体对象(加锁)。
+ ///
+ /// 实体类型。
+ /// 异步锁Id。
+ /// 筛选条件。
+ /// 集合名称。
+ /// 删除的实体数量。
+ public async FTask Remove(long coroutineLockQueueKey, Expression> filter,
+ string collection = null) where T : Entity, new()
+ {
+ using (await _dataBaseLock.Wait(coroutineLockQueueKey))
+ {
+ var result = await GetCollection(collection).DeleteManyAsync(filter);
+ return result.DeletedCount;
+ }
+ }
+
+ #endregion
+
+ #region Index
+
+ ///
+ /// 创建数据库索引(加锁)。
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// 使用例子(可多个):
+ /// 1 : Builders.IndexKeys.Ascending(d=>d.Id)
+ /// 2 : Builders.IndexKeys.Descending(d=>d.Id).Ascending(d=>d.Name)
+ /// 3 : Builders.IndexKeys.Descending(d=>d.Id),Builders.IndexKeys.Descending(d=>d.Name)
+ ///
+ public async FTask CreateIndex(string collection, params object[]? keys) where T : Entity
+ {
+ if (keys == null || keys.Length <= 0)
+ {
+ return;
+ }
+
+ var indexModels = new List>();
+
+ foreach (object key in keys)
+ {
+ IndexKeysDefinition indexKeysDefinition = (IndexKeysDefinition)key;
+
+ indexModels.Add(new CreateIndexModel(indexKeysDefinition));
+ }
+
+ await GetCollection(collection).Indexes.CreateManyAsync(indexModels);
+ }
+
+ ///
+ /// 创建数据库的索引(加锁)。
+ ///
+ /// 实体类型。
+ /// 索引键定义。
+ public async FTask CreateIndex(params object[]? keys) where T : Entity
+ {
+ if (keys == null)
+ {
+ return;
+ }
+
+ List