diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/PlayerPrefab.prefab b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/PlayerPrefab.prefab index 27ae64d..a82c290 100644 --- a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/PlayerPrefab.prefab +++ b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/PlayerPrefab.prefab @@ -117,7 +117,7 @@ MonoBehaviour: isSceneObject: 0 syncedComponents: - {fileID: -4404668399269848200} - - {fileID: 0} + - {fileID: 1181612843795795320} - {fileID: 7564913803199044469} --- !u!114 &-4404668399269848200 MonoBehaviour: diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/VelNetManager.cs b/TestVelGameServer/Packages/VelNetUnity/Runtime/VelNetManager.cs index f8eba65..c8b2a41 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Runtime/VelNetManager.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/VelNetManager.cs @@ -70,7 +70,17 @@ namespace VelNet public List prefabs = new List(); public NetworkObject[] sceneObjects; public List deletedSceneObjects = new List(); - public readonly Dictionary objects = new Dictionary(); //maintains a list of all known objects on the server (ones that have ids) + + /// + /// Maintains a list of all known objects on the server (ones that have ids) + /// + public readonly Dictionary objects = new Dictionary(); + + /// + /// Maintains a list of all known groups on the server + /// + public readonly Dictionary> groups = new Dictionary>(); + private VelNetPlayer masterPlayer; public static VelNetPlayer LocalPlayer => instance.players.Where(p => p.Value.isLocal).Select(p => p.Value).FirstOrDefault(); public static bool InRoom => LocalPlayer != null && LocalPlayer.room != "-1" && LocalPlayer.room != ""; @@ -192,6 +202,14 @@ namespace VelNet .Select(o => o.Key) .ToList().ForEach(DeleteNetworkObject); + // empty all the groups + foreach (string group in instance.groups.Keys) + { + SetupMessageGroup(group, new List()); + } + + instance.groups.Clear(); + Debug.Log("Left VelNet Room: " + oldRoom); try { @@ -268,7 +286,15 @@ namespace VelNet } // generic message case 3: - players[m.sender]?.HandleMessage(m); + if (players.ContainsKey(m.sender)) + { + players[m.sender]?.HandleMessage(m); + } + else + { + Debug.LogError("Received message from player that doesn't exist: " + m.text); + } + break; // change master player (this should only happen when the first player joins or if the master player leaves) case 4: @@ -615,8 +641,13 @@ namespace VelNet /// /// changes the designated group that sendto(4) will go to /// - public static void SetupMessageGroup(string groupName, IEnumerable userIds) + public static void SetupMessageGroup(string groupName, List userIds) { + if (userIds.Count > 0) + { + instance.groups[groupName] = userIds.ToList(); + } + SendNetworkMessage($"5:{groupName}:{string.Join(":", userIds)}"); } diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/NetworkGUI.cs b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/NetworkGUI.cs index f8bc206..46387bf 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/NetworkGUI.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/NetworkGUI.cs @@ -46,7 +46,7 @@ namespace VelNet { comms = FindObjectOfType(); microphones.AddOptions(new List(Microphone.devices)); - velNetManager.MessageReceived += (m) => + VelNetManager.MessageReceived += (m) => { string s = m.type + ":" + m.sender + ":" + m.text; messageBuffer.Add(s); diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/PlayerPrefab.prefab b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/PlayerPrefab.prefab index ee6b3e4..a82c290 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/PlayerPrefab.prefab +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/PlayerPrefab.prefab @@ -143,7 +143,7 @@ MonoBehaviour: m_GameObject: {fileID: 6139051692386484099} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c773e094326d413bb1bca7f91cbf7f8c, type: 3} + m_Script: {fileID: 11500000, guid: 068080cf74f24b74caef652efb5bcfdc, type: 3} m_Name: m_EditorClassIdentifier: networkObject: {fileID: 9102273340480352682} diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/VelNetMan.cs b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/VelNetMan.cs index 6988c1d..d5a4aa9 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/VelNetMan.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/VelNetMan.cs @@ -10,7 +10,7 @@ public class VelNetMan : MonoBehaviour // Start is called before the first frame update private void Start() { - VelNetManager.instance.OnJoinedRoom += player => + VelNetManager.OnJoinedRoom += player => { VelNetManager.InstantiateNetworkObject(playerPrefab.name); }; diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test.unity b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test.unity index 4ef181e..fb998c8 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test.unity +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test.unity @@ -301,7 +301,7 @@ RectTransform: - {fileID: 1557879931} - {fileID: 927188573} m_Father: {fileID: 244561620} - m_RootOrder: 7 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -596,14 +596,14 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} m_Children: - - {fileID: 1278634767} - - {fileID: 711524767} - {fileID: 1894247853} - - {fileID: 626742070} + - {fileID: 117638565} - {fileID: 1760805525} + - {fileID: 1278634767} + - {fileID: 626742070} + - {fileID: 711524767} - {fileID: 945446556} - {fileID: 1843597586} - - {fileID: 117638565} m_Father: {fileID: 0} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -870,7 +870,7 @@ RectTransform: - {fileID: 2034439} - {fileID: 1560686264} m_Father: {fileID: 244561620} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1041,7 +1041,7 @@ RectTransform: - {fileID: 162005664} - {fileID: 1484033256} m_Father: {fileID: 244561620} - m_RootOrder: 1 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1609,7 +1609,7 @@ RectTransform: - {fileID: 1954037272} - {fileID: 1235343401} m_Father: {fileID: 244561620} - m_RootOrder: 5 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1839,12 +1839,12 @@ MonoBehaviour: udpConnected: 0 userid: -1 room: + connected: 0 prefabs: - {fileID: 3951900052977689805, guid: 6e4a023f70e01405e8b249a4488fe319, type: 3} - {fileID: 9102273340480352682, guid: d4158ab9c4a204cdbba28d3273fc1fb3, type: 3} sceneObjects: [] deletedSceneObjects: [] - connected: 0 --- !u!1 &1154194181 GameObject: m_ObjectHideFlags: 0 @@ -2082,7 +2082,7 @@ RectTransform: m_Children: - {fileID: 1295274441} m_Father: {fileID: 244561620} - m_RootOrder: 0 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -2291,7 +2291,7 @@ MonoBehaviour: m_GameObject: {fileID: 1434745018} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5d2009d8e264649749c0315d48765749, type: 3} + m_Script: {fileID: 11500000, guid: 0b249e3fdf4af5d4d9d36b9222998afa, type: 3} m_Name: m_EditorClassIdentifier: dissonanceId: @@ -2350,7 +2350,7 @@ MonoBehaviour: _metadataExpanded: 1 _activationModeExpanded: 1 _tokensExpanded: 1 - _ampExpanded: 0 + _ampExpanded: 1 _activationFaderSettings: _volume: 1 _fadeInTicks: 0 @@ -2685,7 +2685,7 @@ RectTransform: m_Children: - {fileID: 2118429759} m_Father: {fileID: 244561620} - m_RootOrder: 4 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -2818,7 +2818,7 @@ RectTransform: m_Children: - {fileID: 1852007163} m_Father: {fileID: 244561620} - m_RootOrder: 6 + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -3028,7 +3028,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 244561620} - m_RootOrder: 2 + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 1} diff --git a/TestVelGameServer/Packages/VelNetUnity/package.json b/TestVelGameServer/Packages/VelNetUnity/package.json index 03addb5..4f2b772 100644 --- a/TestVelGameServer/Packages/VelNetUnity/package.json +++ b/TestVelGameServer/Packages/VelNetUnity/package.json @@ -1,7 +1,7 @@ { "name": "edu.uga.engr.vel.velnet", "displayName": "VelNet", - "version": "1.0.4", + "version": "1.0.5", "unity": "2019.1", "description": "A custom networking library for Unity.", "keywords": [