diff --git a/Basic/Invaders/Assets/Prefabs/Invaders Game Manager.prefab b/Basic/Invaders/Assets/Prefabs/Invaders Game Manager.prefab
index dbfb0dfb4..3b9b380f5 100644
--- a/Basic/Invaders/Assets/Prefabs/Invaders Game Manager.prefab
+++ b/Basic/Invaders/Assets/Prefabs/Invaders Game Manager.prefab
@@ -10,7 +10,7 @@ GameObject:
m_Component:
- component: {fileID: 4266113290039088506}
- component: {fileID: 4266113290039088507}
- - component: {fileID: 4266113290039088509}
+ - component: {fileID: 2756959678467573149}
m_Layer: 0
m_Name: Invaders Game Manager
m_TagString: Untagged
@@ -28,6 +28,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
@@ -60,7 +61,7 @@ MonoBehaviour:
m_EnemyMovingDirection:
m_InternalValue: 0.3
m_RandomThresholdForSaucerCreation: 0.92
---- !u!114 &4266113290039088509
+--- !u!114 &2756959678467573149
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -72,8 +73,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier:
- NetworkInstanceId: 0
- PrefabHash: 16858280994969747278
- PrefabHashGenerator: Invaders Game Manager
+ GlobalObjectIdHash: 951099334
AlwaysReplicateAsRoot: 0
DontDestroyWithOwner: 0
+ AutoObjectParentSync: 1
diff --git a/Basic/Invaders/Assets/Prefabs/NetworkManager.prefab b/Basic/Invaders/Assets/Prefabs/NetworkManager.prefab
index 4509751e9..1797b57fb 100644
--- a/Basic/Invaders/Assets/Prefabs/NetworkManager.prefab
+++ b/Basic/Invaders/Assets/Prefabs/NetworkManager.prefab
@@ -10,8 +10,7 @@ GameObject:
m_Component:
- component: {fileID: 2577463361084716461}
- component: {fileID: 2577463361084716463}
- - component: {fileID: 2577463361084716458}
- - component: {fileID: 2053099818}
+ - component: {fileID: 8303540700821626563}
m_Layer: 0
m_Name: NetworkManager
m_TagString: Untagged
@@ -29,6 +28,7 @@ Transform:
m_LocalRotation: {x: 0, y: -0.01745245, z: 0, w: 0.99984777}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
@@ -45,12 +45,11 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3}
m_Name:
m_EditorClassIdentifier:
- DontDestroy: 1
RunInBackground: 1
LogLevel: 1
NetworkConfig:
ProtocolVersion: 0
- NetworkTransport: {fileID: 2053099818}
+ NetworkTransport: {fileID: 8303540700821626563}
PlayerPrefab: {fileID: 0}
NetworkPrefabs:
- Override: 0
@@ -112,22 +111,9 @@ MonoBehaviour:
NetworkIdRecycleDelay: 120
RpcHashSize: 0
LoadSceneTimeOut: 120
- MessageBufferTimeout: 20
+ SpawnTimeout: 1
EnableNetworkLogs: 1
---- !u!114 &2577463361084716458
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2577463361084716459}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 5ea5becd79dc277409330648bf627a3e, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- DefaultMainMenu: StartMenu
---- !u!114 &2053099818
+--- !u!114 &8303540700821626563
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -140,9 +126,18 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_ProtocolType: 0
- m_MessageBufferSize: 6144
- m_ReciveQueueSize: 128
- m_SendQueueSize: 128
- m_SendQueueBatchSize: 4096
- m_ServerAddress: 127.0.0.1
- m_ServerPort: 7777
+ m_MaxPacketQueueSize: 128
+ m_MaxPayloadSize: 32000
+ m_MaxSendQueueSize: 98304
+ m_HeartbeatTimeoutMS: 500
+ m_ConnectTimeoutMS: 1000
+ m_MaxConnectAttempts: 60
+ m_DisconnectTimeoutMS: 30000
+ ConnectionData:
+ Address: 127.0.0.1
+ Port: 7777
+ ServerListenAddress:
+ DebugSimulator:
+ PacketDelayMS: 0
+ PacketJitterMS: 0
+ PacketDropRate: 0
diff --git a/Basic/Invaders/Assets/Prefabs/SceneTransitionHandler.prefab b/Basic/Invaders/Assets/Prefabs/SceneTransitionHandler.prefab
new file mode 100644
index 000000000..8978380e8
--- /dev/null
+++ b/Basic/Invaders/Assets/Prefabs/SceneTransitionHandler.prefab
@@ -0,0 +1,63 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &7334280962834855350
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7334280962834855337}
+ - component: {fileID: 7334280962834855336}
+ - component: {fileID: 7334280962834855351}
+ m_Layer: 0
+ m_Name: SceneTransitionHandler
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7334280962834855337
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7334280962834855350}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &7334280962834855336
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7334280962834855350}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5ea5becd79dc277409330648bf627a3e, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ DefaultMainMenu: StartMenu
+--- !u!114 &7334280962834855351
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7334280962834855350}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ GlobalObjectIdHash: 951099334
+ AlwaysReplicateAsRoot: 0
+ DontDestroyWithOwner: 0
+ AutoObjectParentSync: 1
diff --git a/Basic/Invaders/Assets/Prefabs/SceneTransitionHandler.prefab.meta b/Basic/Invaders/Assets/Prefabs/SceneTransitionHandler.prefab.meta
new file mode 100644
index 000000000..b4ac785df
--- /dev/null
+++ b/Basic/Invaders/Assets/Prefabs/SceneTransitionHandler.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 91098c3dcdcf21840a4b3d63b07286d8
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Basic/Invaders/Assets/Prefabs/player.prefab b/Basic/Invaders/Assets/Prefabs/player.prefab
index ae5be07b3..c2d78b8a1 100644
--- a/Basic/Invaders/Assets/Prefabs/player.prefab
+++ b/Basic/Invaders/Assets/Prefabs/player.prefab
@@ -14,7 +14,7 @@ GameObject:
- component: {fileID: 6100000}
- component: {fileID: 5000000}
- component: {fileID: 5053919295125167455}
- - component: {fileID: 1149981187404082562}
+ - component: {fileID: 2800302518702725854}
m_Layer: 0
m_Name: player
m_TagString: Untagged
@@ -173,7 +173,7 @@ MonoBehaviour:
AlwaysReplicateAsRoot: 0
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
---- !u!114 &1149981187404082562
+--- !u!114 &2800302518702725854
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -182,21 +182,20 @@ MonoBehaviour:
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
+ m_Script: {fileID: 11500000, guid: df2868252ab5c4d1da357e8f11f1b524, type: 3}
m_Name:
m_EditorClassIdentifier:
SyncPositionX: 1
- SyncPositionY: 1
- SyncPositionZ: 1
- SyncRotAngleX: 1
- SyncRotAngleY: 1
- SyncRotAngleZ: 1
- SyncScaleX: 1
- SyncScaleY: 1
- SyncScaleZ: 1
+ SyncPositionY: 0
+ SyncPositionZ: 0
+ SyncRotAngleX: 0
+ SyncRotAngleY: 0
+ SyncRotAngleZ: 0
+ SyncScaleX: 0
+ SyncScaleY: 0
+ SyncScaleZ: 0
PositionThreshold: 0.001
RotAngleThreshold: 0.01
ScaleThreshold: 0.01
InLocalSpace: 0
Interpolate: 1
- CanCommitToTransform: 0
diff --git a/Basic/Invaders/Assets/Scenes/InGame.unity b/Basic/Invaders/Assets/Scenes/InGame.unity
index bb5116f20..52e0553cc 100644
--- a/Basic/Invaders/Assets/Scenes/InGame.unity
+++ b/Basic/Invaders/Assets/Scenes/InGame.unity
@@ -2129,6 +2129,11 @@ PrefabInstance:
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
+ - target: {fileID: 2756959678467573149, guid: 67eb58ec33df0475ca152786107f9037,
+ type: 3}
+ propertyPath: GlobalObjectIdHash
+ value: 1720109418
+ objectReference: {fileID: 0}
- target: {fileID: 4266113290039088506, guid: 67eb58ec33df0475ca152786107f9037,
type: 3}
propertyPath: m_RootOrder
diff --git a/Basic/Invaders/Assets/Scenes/InitBootStrap.unity b/Basic/Invaders/Assets/Scenes/InitBootStrap.unity
index 9805fe7b0..e20de3666 100644
--- a/Basic/Invaders/Assets/Scenes/InitBootStrap.unity
+++ b/Basic/Invaders/Assets/Scenes/InitBootStrap.unity
@@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
- m_IndirectSpecularColor: {r: 0.3731193, g: 0.38073996, b: 0.35872698, a: 1}
+ m_IndirectSpecularColor: {r: 0.37311953, g: 0.38074014, b: 0.3587274, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
@@ -213,3 +213,77 @@ PrefabInstance:
objectReference: {fileID: 100000, guid: c02eab22aaa0b68408500d6e87878b32, type: 3}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a33721e9ba3981444b972ae70c494d73, type: 3}
+--- !u!1001 &7334280963267320184
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 7334280962834855337, guid: 91098c3dcdcf21840a4b3d63b07286d8,
+ type: 3}
+ propertyPath: m_RootOrder
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 7334280962834855337, guid: 91098c3dcdcf21840a4b3d63b07286d8,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7334280962834855337, guid: 91098c3dcdcf21840a4b3d63b07286d8,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7334280962834855337, guid: 91098c3dcdcf21840a4b3d63b07286d8,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7334280962834855337, guid: 91098c3dcdcf21840a4b3d63b07286d8,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 7334280962834855337, guid: 91098c3dcdcf21840a4b3d63b07286d8,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7334280962834855337, guid: 91098c3dcdcf21840a4b3d63b07286d8,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7334280962834855337, guid: 91098c3dcdcf21840a4b3d63b07286d8,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7334280962834855337, guid: 91098c3dcdcf21840a4b3d63b07286d8,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7334280962834855337, guid: 91098c3dcdcf21840a4b3d63b07286d8,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7334280962834855337, guid: 91098c3dcdcf21840a4b3d63b07286d8,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7334280962834855350, guid: 91098c3dcdcf21840a4b3d63b07286d8,
+ type: 3}
+ propertyPath: m_Name
+ value: SceneTransitionHandler
+ objectReference: {fileID: 0}
+ - target: {fileID: 7334280962834855351, guid: 91098c3dcdcf21840a4b3d63b07286d8,
+ type: 3}
+ propertyPath: GlobalObjectIdHash
+ value: 4152329973
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 91098c3dcdcf21840a4b3d63b07286d8, type: 3}
diff --git a/Basic/Invaders/Assets/Scripts/InvadersGame.cs b/Basic/Invaders/Assets/Scripts/InvadersGame.cs
index c5c2e36c6..3c61d5b95 100644
--- a/Basic/Invaders/Assets/Scripts/InvadersGame.cs
+++ b/Basic/Invaders/Assets/Scripts/InvadersGame.cs
@@ -193,13 +193,13 @@ public override void OnNetworkSpawn()
/// true or false
private bool ShouldStartCountDown()
{
- //If the game has started, then don't both with the rest of the count down checks.
+ //If the game has started, then don't bother with the rest of the count down checks.
if (HasGameStarted()) return false;
if (IsServer)
{
m_CountdownStarted.Value = SceneTransitionHandler.sceneTransitionHandler.AllClientsAreLoaded();
- //While we are counting down, continually set the m_ReplicatedTimeRemaining.Value (client should only receive the update once)
+ //While we are counting down, continually set the replicated time remaining value for clients (client should only receive the update once)
if (m_CountdownStarted.Value && !m_ReplicatedTimeSent)
{
SetReplicatedTimeRemainingClientRPC(m_DelayedStartTime);
diff --git a/Basic/Invaders/Assets/Scripts/LobbyControl.cs b/Basic/Invaders/Assets/Scripts/LobbyControl.cs
index a04153a40..dd4ad8d8a 100644
--- a/Basic/Invaders/Assets/Scripts/LobbyControl.cs
+++ b/Basic/Invaders/Assets/Scripts/LobbyControl.cs
@@ -7,9 +7,6 @@
public class LobbyControl : NetworkBehaviour
{
- [HideInInspector]
- public static bool isHosting;
-
[SerializeField]
private string m_InGameSceneName = "InGame";
@@ -23,40 +20,27 @@ public class LobbyControl : NetworkBehaviour
private Dictionary m_ClientsInLobby;
private string m_UserLobbyStatusText;
- ///
- /// Awake
- /// This is one way to kick off a multiplayer session
- ///
- private void Awake()
+ public override void OnNetworkSpawn()
{
m_ClientsInLobby = new Dictionary();
+
+ //Always add ourselves to the list at first
+ m_ClientsInLobby.Add(NetworkManager.LocalClientId, false);
- //We added this information to tell us if we are going to host a game or join an the game session
- if (isHosting)
- NetworkManager.Singleton.StartHost(); //Spin up the host
- else
- NetworkManager.Singleton.StartClient(); //Spin up the client
-
- if (NetworkManager.Singleton.IsListening)
+ //If we are hosting, then handle the server side for detecting when clients have connected
+ //and when their lobby scenes are finished loading.
+ if (IsServer)
{
- //Always add ourselves to the list at first
- m_ClientsInLobby.Add(NetworkManager.Singleton.LocalClientId, false);
-
- //If we are hosting, then handle the server side for detecting when clients have connected
- //and when their lobby scenes are finished loading.
- if (IsServer)
- {
- m_AllPlayersInLobby = false;
-
- //Server will be notified when a client connects
- NetworkManager.Singleton.OnClientConnectedCallback += OnClientConnectedCallback;
- SceneTransitionHandler.sceneTransitionHandler.OnClientLoadedScene += ClientLoadedScene;
- }
+ m_AllPlayersInLobby = false;
- //Update our lobby
- GenerateUserStatsForLobby();
+ //Server will be notified when a client connects
+ NetworkManager.OnClientConnectedCallback += OnClientConnectedCallback;
+ SceneTransitionHandler.sceneTransitionHandler.OnClientLoadedScene += ClientLoadedScene;
}
+ //Update our lobby
+ GenerateUserStatsForLobby();
+
SceneTransitionHandler.sceneTransitionHandler.SetSceneState(SceneTransitionHandler.SceneStates.Lobby);
}
@@ -124,7 +108,7 @@ private void ClientLoadedScene(ulong clientId)
///
/// OnClientConnectedCallback
- /// Since we are entering a lobby and MLAPI NetowrkingManager is spawning the player,
+ /// Since we are entering a lobby and Netcode's NetworkManager is spawning the player,
/// the server can be configured to only listen for connected clients at this stage.
///
/// client that connected
@@ -195,14 +179,13 @@ private void CheckForAllPlayersReady()
///
public void PlayerIsReady()
{
+ m_ClientsInLobby[NetworkManager.Singleton.LocalClientId] = true;
if (IsServer)
{
- m_ClientsInLobby[NetworkManager.Singleton.ServerClientId] = true;
UpdateAndCheckPlayersInLobby();
}
else
{
- m_ClientsInLobby[NetworkManager.Singleton.LocalClientId] = true;
OnClientIsReadyServerRpc(NetworkManager.Singleton.LocalClientId);
}
diff --git a/Basic/Invaders/Assets/Scripts/MenuControl.cs b/Basic/Invaders/Assets/Scripts/MenuControl.cs
index 4d3839cbb..d0158748e 100644
--- a/Basic/Invaders/Assets/Scripts/MenuControl.cs
+++ b/Basic/Invaders/Assets/Scripts/MenuControl.cs
@@ -1,7 +1,7 @@
-using System.Text.RegularExpressions;
+using System.Text.RegularExpressions;
using TMPro;
using Unity.Netcode;
-using Unity.Netcode.Transports.UNET;
+using Unity.Netcode.Transports.UTP;
using UnityEngine;
using UnityEngine.UI;
@@ -18,8 +18,14 @@ public void StartLocalGame()
// Update the current HostNameInput with whatever we have set in the NetworkConfig as default
var utpTransport = (UnityTransport)NetworkManager.Singleton.NetworkConfig.NetworkTransport;
if (utpTransport) m_HostIpInput.text = "127.0.0.1";
- LobbyControl.isHosting = true; //This is a work around to handle proper instantiation of a scene for the first time.(See LobbyControl.cs)
- SceneTransitionHandler.sceneTransitionHandler.SwitchScene(m_LobbySceneName);
+ if (NetworkManager.Singleton.StartHost())
+ {
+ SceneTransitionHandler.sceneTransitionHandler.SwitchScene(m_LobbySceneName);
+ }
+ else
+ {
+ Debug.LogError("Failed to start host.");
+ }
}
public void JoinLocalGame()
@@ -30,11 +36,11 @@ public void JoinLocalGame()
if (utpTransport)
{
utpTransport.SetConnectionData(Sanitize(m_HostIpInput.text), 7777);
- // utpTransport.ConnectAddress = m_HostIpInput.text;
- // utpTransport.ConnectPort = 7777;
}
- LobbyControl.isHosting = false; //This is a work around to handle proper instantiation of a scene for the first time. (See LobbyControl.cs)
- SceneTransitionHandler.sceneTransitionHandler.SwitchScene(m_LobbySceneName);
+ if (!NetworkManager.Singleton.StartClient())
+ {
+ Debug.LogError("Failed to start client.");
+ }
}
}
diff --git a/Basic/Invaders/Assets/Scripts/SceneTransitionHandler.cs b/Basic/Invaders/Assets/Scripts/SceneTransitionHandler.cs
index dff55cc1b..aaa3fe739 100644
--- a/Basic/Invaders/Assets/Scripts/SceneTransitionHandler.cs
+++ b/Basic/Invaders/Assets/Scripts/SceneTransitionHandler.cs
@@ -1,3 +1,4 @@
+using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using Unity.Netcode;
@@ -47,6 +48,7 @@ private void Awake()
}
sceneTransitionHandler = this;
SetSceneState(SceneStates.Init);
+ DontDestroyOnLoad(this);
}
///
@@ -93,7 +95,9 @@ public void SwitchScene(string scenename)
{
if(NetworkManager.Singleton.IsListening)
{
- NetworkManager.Singleton.SceneManager.OnSceneEvent += OnSceneEvent;
+ m_numberOfClientLoaded = 0;
+ NetworkManager.Singleton.SceneManager.OnLoadComplete += OnLoadComplete;
+ NetworkManager.Singleton.SceneManager.OnLoadEventCompleted += OnLoadEventCompleted;
NetworkManager.Singleton.SceneManager.LoadScene(scenename, LoadSceneMode.Single);
}
else
@@ -101,13 +105,17 @@ public void SwitchScene(string scenename)
SceneManager.LoadSceneAsync(scenename);
}
}
- private void OnSceneEvent(SceneEvent sceneEvent)
- {
- //We are only interested by Client Loaded Scene events
- if (sceneEvent.SceneEventType != SceneEventType.LoadComplete) return;
+ void OnLoadComplete(ulong clientId, string sceneName, LoadSceneMode loadSceneMode)
+ {
m_numberOfClientLoaded += 1;
- OnClientLoadedScene?.Invoke(sceneEvent.ClientId);
+ OnClientLoadedScene?.Invoke(clientId);
+ }
+
+ void OnLoadEventCompleted(string sceneName, LoadSceneMode loadSceneMode, List clientsCompleted, List clientsTimedOut)
+ {
+ NetworkManager.Singleton.SceneManager.OnLoadComplete -= OnLoadComplete;
+ NetworkManager.Singleton.SceneManager.OnLoadEventCompleted -= OnLoadEventCompleted;
}
public bool AllClientsAreLoaded()
diff --git a/Basic/Invaders/Packages/manifest.json b/Basic/Invaders/Packages/manifest.json
index 3d38f3884..46cecb7c9 100644
--- a/Basic/Invaders/Packages/manifest.json
+++ b/Basic/Invaders/Packages/manifest.json
@@ -4,7 +4,9 @@
"com.unity.ide.rider": "3.0.13",
"com.unity.ide.visualstudio": "2.0.14",
"com.unity.ide.vscode": "1.2.5",
- "com.unity.netcode.adapter.utp": "1.0.0-pre.2",
+ "com.unity.multiplayer.samples.coop": "https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop.git?path=/Packages/com.unity.multiplayer.samples.coop",
+ "com.unity.multiplayer.tools": "1.0.0-pre.7",
+ "com.unity.netcode.gameobjects": "1.0.0",
"com.unity.render-pipelines.universal": "12.1.6",
"com.unity.textmeshpro": "3.0.6",
"com.unity.timeline": "1.6.4",
diff --git a/Basic/Invaders/Packages/packages-lock.json b/Basic/Invaders/Packages/packages-lock.json
index 504e30704..9691d345d 100644
--- a/Basic/Invaders/Packages/packages-lock.json
+++ b/Basic/Invaders/Packages/packages-lock.json
@@ -7,8 +7,8 @@
"dependencies": {}
},
"com.unity.burst": {
- "version": "1.6.5",
- "depth": 1,
+ "version": "1.6.6",
+ "depth": 2,
"source": "registry",
"dependencies": {
"com.unity.mathematics": "1.2.1"
@@ -16,15 +16,22 @@
"url": "https://packages.unity.com"
},
"com.unity.collections": {
- "version": "1.2.3",
+ "version": "1.2.4",
"depth": 2,
"source": "registry",
"dependencies": {
- "com.unity.burst": "1.6.4",
+ "com.unity.burst": "1.6.6",
"com.unity.test-framework": "1.1.31"
},
"url": "https://packages.unity.com"
},
+ "com.unity.editorcoroutines": {
+ "version": "1.0.0",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
"com.unity.ext.nunit": {
"version": "1.0.6",
"depth": 1,
@@ -57,6 +64,16 @@
"dependencies": {},
"url": "https://packages.unity.com"
},
+ "com.unity.learn.iet-framework": {
+ "version": "2.2.1",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.editorcoroutines": "1.0.0",
+ "com.unity.settings-manager": "1.0.3"
+ },
+ "url": "https://packages.unity.com"
+ },
"com.unity.mathematics": {
"version": "1.2.6",
"depth": 1,
@@ -64,31 +81,60 @@
"dependencies": {},
"url": "https://packages.unity.com"
},
- "com.unity.netcode.adapter.utp": {
- "version": "1.0.0-pre.2",
+ "com.unity.multiplayer.samples.coop": {
+ "version": "https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop.git?path=/Packages/com.unity.multiplayer.samples.coop",
+ "depth": 0,
+ "source": "git",
+ "dependencies": {
+ "com.unity.learn.iet-framework": "1.2.1",
+ "com.unity.multiplayer.tools": "1.0.0-pre.7",
+ "com.unity.netcode.gameobjects": "1.0.0-pre.10",
+ "com.unity.services.authentication": "1.0.0-pre.4",
+ "com.unity.services.lobby": "1.0.0-pre.6",
+ "com.unity.services.relay": "1.0.2"
+ },
+ "hash": "55bc606b0ae04e2368bdaeda903440570bd44900"
+ },
+ "com.unity.multiplayer.tools": {
+ "version": "1.0.0-pre.7",
"depth": 0,
"source": "registry",
"dependencies": {
- "com.unity.netcode.gameobjects": "1.0.0-pre.2",
- "com.unity.transport": "1.0.0-pre.6"
+ "com.unity.profiling.core": "1.0.0-pre.1",
+ "com.unity.nuget.newtonsoft-json": "2.0.0",
+ "com.unity.nuget.mono-cecil": "1.10.1",
+ "com.unity.collections": "1.1.0",
+ "com.unity.modules.uielements": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.netcode.gameobjects": {
- "version": "1.0.0-pre.2",
- "depth": 1,
+ "version": "1.0.0",
+ "depth": 0,
"source": "registry",
"dependencies": {
- "com.unity.modules.ai": "1.0.0",
- "com.unity.modules.animation": "1.0.0",
"com.unity.nuget.mono-cecil": "1.10.1",
- "com.unity.collections": "1.0.0-pre.5"
+ "com.unity.transport": "1.1.0"
},
"url": "https://packages.unity.com"
},
"com.unity.nuget.mono-cecil": {
"version": "1.10.1",
- "depth": 2,
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.nuget.newtonsoft-json": {
+ "version": "3.0.2",
+ "depth": 3,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.profiling.core": {
+ "version": "1.0.2",
+ "depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
@@ -121,6 +167,82 @@
"dependencies": {},
"url": "https://packages.unity.com"
},
+ "com.unity.services.authentication": {
+ "version": "2.0.0",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.nuget.newtonsoft-json": "3.0.2",
+ "com.unity.services.core": "1.3.1",
+ "com.unity.modules.unitywebrequest": "1.0.0"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.services.core": {
+ "version": "1.4.0",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.nuget.newtonsoft-json": "3.0.2",
+ "com.unity.modules.androidjni": "1.0.0"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.services.lobby": {
+ "version": "1.0.0-pre.6",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.services.core": "1.1.0-pre.10",
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
+ "com.unity.modules.unitywebrequestaudio": "1.0.0",
+ "com.unity.modules.unitywebrequesttexture": "1.0.0",
+ "com.unity.modules.unitywebrequestwww": "1.0.0",
+ "com.unity.nuget.newtonsoft-json": "2.0.0",
+ "com.unity.services.authentication": "1.0.0-pre.6"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.services.qos": {
+ "version": "1.0.0",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.services.core": "1.3.2",
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.nuget.newtonsoft-json": "3.0.1",
+ "com.unity.services.authentication": "2.0.0",
+ "com.unity.collections": "1.2.3"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.services.relay": {
+ "version": "1.0.2",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.services.core": "1.4.0",
+ "com.unity.services.authentication": "2.0.0",
+ "com.unity.services.qos": "1.0.0",
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
+ "com.unity.modules.unitywebrequestaudio": "1.0.0",
+ "com.unity.modules.unitywebrequesttexture": "1.0.0",
+ "com.unity.modules.unitywebrequestwww": "1.0.0",
+ "com.unity.nuget.newtonsoft-json": "3.0.1",
+ "com.unity.transport": "1.0.0"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.settings-manager": {
+ "version": "1.0.3",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
"com.unity.shadergraph": {
"version": "12.1.6",
"depth": 1,
@@ -163,13 +285,13 @@
"url": "https://packages.unity.com"
},
"com.unity.transport": {
- "version": "1.0.0",
+ "version": "1.1.0",
"depth": 1,
"source": "registry",
"dependencies": {
- "com.unity.collections": "1.2.3",
- "com.unity.burst": "1.6.4",
- "com.unity.mathematics": "1.2.5"
+ "com.unity.collections": "1.2.4",
+ "com.unity.burst": "1.6.6",
+ "com.unity.mathematics": "1.2.6"
},
"url": "https://packages.unity.com"
},
@@ -188,12 +310,24 @@
"source": "builtin",
"dependencies": {}
},
+ "com.unity.modules.androidjni": {
+ "version": "1.0.0",
+ "depth": 3,
+ "source": "builtin",
+ "dependencies": {}
+ },
"com.unity.modules.animation": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
+ "com.unity.modules.assetbundle": {
+ "version": "1.0.0",
+ "depth": 3,
+ "source": "builtin",
+ "dependencies": {}
+ },
"com.unity.modules.audio": {
"version": "1.0.0",
"depth": 0,
@@ -308,6 +442,52 @@
"depth": 0,
"source": "builtin",
"dependencies": {}
+ },
+ "com.unity.modules.unitywebrequest": {
+ "version": "1.0.0",
+ "depth": 2,
+ "source": "builtin",
+ "dependencies": {}
+ },
+ "com.unity.modules.unitywebrequestassetbundle": {
+ "version": "1.0.0",
+ "depth": 2,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.assetbundle": "1.0.0",
+ "com.unity.modules.unitywebrequest": "1.0.0"
+ }
+ },
+ "com.unity.modules.unitywebrequestaudio": {
+ "version": "1.0.0",
+ "depth": 2,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.modules.audio": "1.0.0"
+ }
+ },
+ "com.unity.modules.unitywebrequesttexture": {
+ "version": "1.0.0",
+ "depth": 2,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.modules.imageconversion": "1.0.0"
+ }
+ },
+ "com.unity.modules.unitywebrequestwww": {
+ "version": "1.0.0",
+ "depth": 2,
+ "source": "builtin",
+ "dependencies": {
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
+ "com.unity.modules.unitywebrequestaudio": "1.0.0",
+ "com.unity.modules.audio": "1.0.0",
+ "com.unity.modules.assetbundle": "1.0.0",
+ "com.unity.modules.imageconversion": "1.0.0"
+ }
}
}
}