Skip to content

Commit c70b718

Browse files
committed
more fixes
1 parent e990653 commit c70b718

9 files changed

Lines changed: 85 additions & 144 deletions

File tree

Basis/Packages/com.basis.framework.editor/Editor/BasisEveryoneLoadNewAvatarLocalEditor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ private async void ForceLoadAvatars(byte loadmode, string password, string url)
4040

4141
foreach (var players in BasisNetworkPlayers.RemotePlayers)
4242
{
43-
await players.Value.RemotePlayer.CreateAvatar(loadmode, loadableBundle);
43+
await players.Value.CreateAvatar(loadmode, loadableBundle);
4444
}
4545

4646
Debug.Log("Avatar load initiated for all remote players.");

Basis/Packages/com.basis.framework/BasisUI/Menus/Main Menu Providers/SettingsProviderParts/SettingsProviderRemoteAudio.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ private static void ApplyJitterBufferDepth()
4848
_lastAppliedJitterDepth = depth;
4949
if (firstApply) return; // startup — no live receivers to poke
5050

51-
foreach (var kvp in BasisNetworkPlayers.RemotePlayers)
51+
foreach (var kvp in BasisNetworkPlayers.RemotePlayerReceivers)
5252
{
5353
BasisNetworkReceiver receiver = kvp.Value;
5454
if (receiver?.AudioReceiverModule?.VoiceBuffer != null)
@@ -70,7 +70,7 @@ private static void ApplyClipBufferScalar()
7070
BasisAudioClipPool.ClipBufferScalar = scalar;
7171
BasisAudioClipPool.Clear();
7272

73-
foreach (var kvp in BasisNetworkPlayers.RemotePlayers)
73+
foreach (var kvp in BasisNetworkPlayers.RemotePlayerReceivers)
7474
{
7575
BasisNetworkReceiver receiver = kvp.Value;
7676
if (receiver?.AudioReceiverModule != null && receiver.AudioReceiverModule.HasAudioSource)
@@ -612,7 +612,7 @@ public static void ResetRemoteAudioToDefaults()
612612
/// </summary>
613613
public static void ApplyRemoteAudioToAll()
614614
{
615-
foreach (var kvp in BasisNetworkPlayers.RemotePlayers)
615+
foreach (var kvp in BasisNetworkPlayers.RemotePlayerReceivers)
616616
{
617617
BasisNetworkReceiver receiver = kvp.Value;
618618
if (receiver?.AudioReceiverModule != null && receiver.AudioReceiverModule.HasAudioSource)

Basis/Packages/com.basis.framework/Networking/BasisNetworkPlayers.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ public static class BasisNetworkPlayers
1616
{
1717
// --- Collections (thread-safe) -------------------------------------
1818
public static readonly ConcurrentDictionary<ushort, BasisNetworkPlayer> Players = new();
19-
public static readonly ConcurrentDictionary<ushort, BasisNetworkReceiver> RemotePlayers = new();
19+
public static readonly ConcurrentDictionary<ushort, BasisNetworkReceiver> RemotePlayerReceivers = new();
20+
public static readonly ConcurrentDictionary<ushort, BasisRemotePlayer> RemotePlayers = new();
2021
public static readonly ConcurrentDictionary<ushort, byte> JoiningPlayers = new(); // used as a concurrent set
2122
public static readonly ConcurrentDictionary<string, ushort> OwnershipPairing = new();
2223

@@ -39,6 +40,7 @@ public static void ClearAllRegistries()
3940
BasisNetworkHandleRemoval.HandleDisconnectIdImmediate(BasisNetworkPlayer.Key);
4041
}
4142
Players.Clear();
43+
RemotePlayerReceivers.Clear();
4244
RemotePlayers.Clear();
4345
JoiningPlayers.Clear();
4446
OwnershipPairing.Clear();
@@ -54,7 +56,7 @@ public static void PublishReceiversSnapshot()
5456
{
5557
if (!_snapshotDirty) return;
5658

57-
int count = RemotePlayers.Count;
59+
int count = RemotePlayerReceivers.Count;
5860
if (count == 0)
5961
{
6062
// Null out stale references so GC can collect departed receivers
@@ -77,7 +79,7 @@ public static void PublishReceiversSnapshot()
7779

7880
// Enumerate directly (struct enumerator) — no Values/ToArray allocation
7981
int i = 0;
80-
foreach (var kvp in RemotePlayers)
82+
foreach (var kvp in RemotePlayerReceivers)
8183
{
8284
if (i >= _snapshotBuffer.Length) break;
8385
_snapshotBuffer[i++] = kvp.Value;
@@ -124,18 +126,19 @@ public static bool AddPlayer(BasisNetworkPlayer netPlayer)
124126

125127
if (!netPlayer.Player.IsLocal)
126128
{
127-
if (RemotePlayers.ContainsKey(netPlayer.playerId))
129+
if (RemotePlayerReceivers.ContainsKey(netPlayer.playerId))
128130
{
129131
BasisDebug.LogWarning($"Remote player {netPlayer.playerId} already exists. Removing old entry before adding new one.");
130132
BasisNetworkHandleRemoval.HandleDisconnectIdImmediate(netPlayer.playerId);
131133
}
132134

133-
if (!RemotePlayers.TryAdd(netPlayer.playerId, (BasisNetworkReceiver)netPlayer))
135+
if (!RemotePlayerReceivers.TryAdd(netPlayer.playerId, (BasisNetworkReceiver)netPlayer))
134136
{
135137
Players.TryRemove(netPlayer.playerId, out _);
136138
BasisDebug.LogError($"Failed to add remote player {netPlayer.playerId} to RemotePlayers. Rolled back from Players.");
137139
return false;
138140
}
141+
RemotePlayers[netPlayer.playerId] = (BasisRemotePlayer)netPlayer.Player;
139142
_snapshotDirty = true;
140143
}
141144

@@ -152,6 +155,7 @@ public static bool RemovePlayer(ushort netId, out BasisNetworkPlayer player)
152155
}
153156

154157
Players.TryRemove(netId, out player);
158+
RemotePlayerReceivers.TryRemove(netId, out _);
155159
RemotePlayers.TryRemove(netId, out _);
156160
_snapshotDirty = true;
157161
return true;

Basis/Packages/com.basis.framework/Networking/Handles/BasisNetworkHandleAvatar.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public static void HandleAvatarUpdate(NetDataReader reader, byte channel)
2222

2323
ushort playerId = ssm.playerIdMessage.playerID;
2424

25-
if (BasisNetworkPlayers.RemotePlayers.TryGetValue(playerId, out BasisNetworkReceiver player))
25+
if (BasisNetworkPlayers.RemotePlayerReceivers.TryGetValue(playerId, out BasisNetworkReceiver player))
2626
{
2727
BasisNetworkAvatarDecompressor.DecompressAndProcessAvatar(player, ssm);
2828
}

Basis/Packages/com.basis.framework/Networking/Handles/BasisNetworkHandleVoice.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public static async Task HandleAudioUpdate(NetPacketReader Reader, bool largeId)
2727
audioUpdate = new ServerAudioSegmentMessage();
2828
}
2929
audioUpdate.Deserialize(Reader, largeId);
30-
if (BasisNetworkPlayers.RemotePlayers.TryGetValue(audioUpdate.playerIdMessage.playerID, out BasisNetworkReceiver player))
30+
if (BasisNetworkPlayers.RemotePlayerReceivers.TryGetValue(audioUpdate.playerIdMessage.playerID, out BasisNetworkReceiver player))
3131
{
3232
if (audioUpdate.audioSegmentData.LengthUsed == 0)
3333
{

Basis/Packages/com.basis.framework/Networking/Object Sync/BasisSeatSync.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public void ProvideRemotePlayerTarget()
133133
}
134134

135135
// Try to get the remote player by id.
136-
if (!BasisNetworkPlayers.RemotePlayers.TryGetValue(storedId, out BasisNetworkReceiver rec))
136+
if (!BasisNetworkPlayers.RemotePlayerReceivers.TryGetValue(storedId, out BasisNetworkReceiver rec))
137137
{
138138
// ID no longer exists in dictionary (disconnected / removed).
139139
ClearCurrentRemote();

Basis/Packages/com.basis.framework/Networking/Recievers/BasisShoutAudioDriver.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public static void EnableShoutMode(ushort playerId)
104104
entry.Receiver.HasAudioSource = true;
105105

106106
// Wire up the player's existing viseme driver so lip-sync works during shout mode
107-
if (BasisNetworkPlayers.RemotePlayers.TryGetValue(playerId, out BasisNetworkReceiver receiver))
107+
if (BasisNetworkPlayers.RemotePlayerReceivers.TryGetValue(playerId, out BasisNetworkReceiver receiver))
108108
{
109109
entry.Driver.Initialize(receiver.AudioReceiverModule.visemeDriver);
110110
}
@@ -190,7 +190,7 @@ public static void ReceiveShoutAudio(ushort playerId, AudioSegmentDataMessage au
190190
entry.Receiver.Insert(audioData);
191191

192192
// Notify the player's nameplate that audio was received so it shows the talking state
193-
if (BasisNetworkPlayers.RemotePlayers.TryGetValue(playerId, out BasisNetworkReceiver receiver))
193+
if (BasisNetworkPlayers.RemotePlayerReceivers.TryGetValue(playerId, out BasisNetworkReceiver receiver))
194194
{
195195
receiver.Player.AudioReceived?.Invoke();
196196
}

Basis/Packages/com.basis.framework/Players/Remote/BasisRemotePlayer.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,9 @@ public void SetSelfMuted(bool muted)
257257
[System.NonSerialized]
258258
public Basis.Scripts.Avatar.BasisAvatarPerformanceLimits.PerformanceInfo LastPerformanceInfo;
259259

260+
[System.NonSerialized]
261+
public bool RequiresPerformanceReval;
262+
260263
/// <summary>
261264
/// Per-player override that tells the avatar performance filter to treat this
262265
/// remote as if no limits were enabled. Set from the individual-player menu

0 commit comments

Comments
 (0)