Skip to content

Commit 27561ea

Browse files
committed
Merge remote-tracking branch 'origin/main'
2 parents 6020da6 + fd40d9d commit 27561ea

12 files changed

Lines changed: 168 additions & 39 deletions

Scripts/Extensions/NetDataReaderExtension.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ public static TValue[] GetArrayExtension<TValue>(this NetDataReader reader)
140140
return result;
141141
}
142142

143-
public static object GetArray(this NetDataReader reader, Type type)
143+
public static object GetArrayObject(this NetDataReader reader, Type type)
144144
{
145145
int count = reader.GetInt();
146146
Array array = Array.CreateInstance(type, count);

Scripts/Extensions/NetDataWriterExtension.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ public static void PutArrayExtension<TValue>(this NetDataWriter writer, TValue[]
217217
}
218218
}
219219

220-
public static void PutArray(this NetDataWriter writer, Type type, object array)
220+
public static void PutArrayObject(this NetDataWriter writer, Type type, object array)
221221
{
222222
if (array == null)
223223
{

Scripts/GameApi/AddressableAssets/AssetReferenceLiteNetLibBehaviour.cs

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
using Insthync.AddressableAssetTools;
21
using UnityEngine;
3-
using UnityEngine.AddressableAssets;
4-
using UnityEngine.ResourceManagement.AsyncOperations;
52
#if UNITY_EDITOR
63
using UnityEditor;
74
#endif
@@ -60,21 +57,6 @@ public override bool SetEditorAsset(Object value)
6057
}
6158
#endif
6259

63-
public new AsyncOperationHandle<TBehaviour> InstantiateAsync(Vector3 position, Quaternion rotation, Transform parent = null)
64-
{
65-
return Addressables.ResourceManager.CreateChainOperation(Addressables.InstantiateAsync(RuntimeKey, position, rotation, parent, false), AssetReferenceUtils.CreateGetComponentCompletedOperation<TBehaviour>);
66-
}
67-
68-
public new AsyncOperationHandle<TBehaviour> InstantiateAsync(Transform parent = null, bool instantiateInWorldSpace = false)
69-
{
70-
return Addressables.ResourceManager.CreateChainOperation(Addressables.InstantiateAsync(RuntimeKey, parent, instantiateInWorldSpace, false), AssetReferenceUtils.CreateGetComponentCompletedOperation<TBehaviour>);
71-
}
72-
73-
public new AsyncOperationHandle<TBehaviour> LoadAssetAsync()
74-
{
75-
return Addressables.ResourceManager.CreateChainOperation(base.LoadAssetAsync<GameObject>(), AssetReferenceUtils.CreateGetComponentCompletedOperation<TBehaviour>);
76-
}
77-
7860
public override bool ValidateAsset(Object obj)
7961
{
8062
return ValidateAsset<TBehaviour>(obj);

Scripts/GameApi/AddressableAssets/AssetReferenceLiteNetLibIdentity.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public AssetReferenceLiteNetLibIdentity(LiteNetLibIdentity identity) : base(Asse
3131
return;
3232
}
3333
hashAssetId = identity.HashAssetId;
34-
Debug.Log($"[AssetReferenceLiteNetLibBehaviour] Set `hashAssetId` to `{hashAssetId}`, name: {identity.name}");
34+
Debug.Log($"[AssetReferenceLiteNetLibIdentity] Set `hashAssetId` to `{hashAssetId}`, name: {identity.name}");
3535
}
3636
#endif
3737

Scripts/GameApi/LiteNetLibAdditiveSceneLoader.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ await AddressableAssetDownloadManager.Download(
9494
var op = Addressables.LoadSceneAsync(
9595
addressableScenes[i].RuntimeKey,
9696
new LoadSceneParameters(LoadSceneMode.Additive));
97+
AddressableAssetsManager.AddAddressableSceneHandle(op);
9798
while (!op.IsDone)
9899
{
99100
await UniTask.Yield();

Scripts/GameApi/LiteNetLibFunction.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ public void DeserializeParameters(NetDataReader reader)
182182
for (int i = 0; i < Parameters.Length; ++i)
183183
{
184184
if (ParameterTypes[i].IsArray)
185-
Parameters[i] = reader.GetArray(ParameterTypes[i].GetElementType());
185+
Parameters[i] = reader.GetArrayObject(ParameterTypes[i].GetElementType());
186186
else
187187
Parameters[i] = reader.GetValue(ParameterTypes[i]);
188188
}
@@ -195,7 +195,7 @@ public void SerializeParameters(NetDataWriter writer)
195195
for (int i = 0; i < Parameters.Length; ++i)
196196
{
197197
if (ParameterTypes[i].IsArray)
198-
writer.PutArray(ParameterTypes[i].GetElementType(), Parameters[i]);
198+
writer.PutArrayObject(ParameterTypes[i].GetElementType(), Parameters[i]);
199199
else
200200
writer.PutValue(ParameterTypes[i], Parameters[i]);
201201
}

Scripts/GameApi/LiteNetLibGameManager.cs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -390,29 +390,36 @@ await AddressableAssetDownloadManager.Download(
390390
Assets.onSceneDepsFileDownloading.Invoke,
391391
Assets.onSceneDepsDownloaded.Invoke,
392392
null);
393-
// Load the scene
394-
AsyncOperationHandle<SceneInstance> asyncOp = Addressables.LoadSceneAsync(
393+
await AddressableAssetsManager.UnloadAddressableScenes();
394+
AsyncOperationHandle<SceneInstance> addressableAsyncOp = Addressables.LoadSceneAsync(
395395
serverSceneInfo.addressableKey,
396-
new LoadSceneParameters(LoadSceneMode.Single));
396+
new LoadSceneParameters(LoadSceneMode.Single), false);
397+
AddressableAssetsManager.AddAddressableSceneHandle(addressableAsyncOp);
397398
// Wait until scene loaded
398-
while (!asyncOp.IsDone)
399+
while (!addressableAsyncOp.IsDone)
399400
{
400401
await UniTask.Yield();
401-
float percentageComplete = asyncOp.GetDownloadStatus().Percent;
402+
float percentageComplete = addressableAsyncOp.GetDownloadStatus().Percent;
402403
Assets.onLoadSceneProgress.Invoke(serverSceneInfo.sceneName, false, isOnline, percentageComplete);
403404
}
405+
await addressableAsyncOp.Result.ActivateAsync();
404406
}
405407
else
406408
{
409+
await AddressableAssetsManager.UnloadAddressableScenes();
407410
// Load the scene
408411
AsyncOperation asyncOp = SceneManager.LoadSceneAsync(
409412
serverSceneInfo.sceneName,
410413
new LoadSceneParameters(LoadSceneMode.Single));
414+
if (asyncOp != null)
415+
asyncOp.allowSceneActivation = false;
411416
// Wait until scene loaded
412417
while (asyncOp != null && !asyncOp.isDone)
413418
{
414419
await UniTask.Yield();
415420
Assets.onLoadSceneProgress.Invoke(serverSceneInfo.sceneName, false, isOnline, asyncOp.progress);
421+
if (asyncOp.progress >= 0.9f)
422+
asyncOp.allowSceneActivation = true;
416423
}
417424
}
418425

@@ -532,13 +539,13 @@ protected override void RegisterMessages()
532539
RegisterClientMessage(GameMsgTypes.Disconnect, HandleServerDisconnect);
533540
}
534541

535-
public async void KickClient(long connectionId, byte[] data)
542+
public async UniTask<bool> KickClient(long connectionId, byte[] data)
536543
{
537544
if (!IsServer)
538-
return;
545+
return false;
539546
ServerSendPacket(connectionId, 0, DeliveryMethod.ReliableOrdered, GameMsgTypes.Disconnect, (writer) => writer.PutBytesWithLength(data));
540547
await UniTask.Delay(500);
541-
ServerTransport.ServerDisconnect(connectionId);
548+
return ServerTransport.ServerDisconnect(connectionId);
542549
}
543550

544551
public override void OnPeerConnected(long connectionId)

Scripts/GameApi/LiteNetLibIdentity.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -764,6 +764,11 @@ public bool IsHideFrom(LiteNetLibIdentity identity)
764764
// Don't hide, player own this one
765765
return false;
766766
}
767+
if (string.IsNullOrEmpty(SubChannelId) && string.IsNullOrEmpty(identity.SubChannelId))
768+
{
769+
// Don't hide, because sub-channelIDs aren't different
770+
return false;
771+
}
767772
if (!string.Equals(SubChannelId, identity.SubChannelId))
768773
{
769774
// Hide because sub-channelIDs are different

0 commit comments

Comments
 (0)