Skip to content

feat: additive scene loading and networkscenemanager refactoring #955

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 149 commits into from
Aug 23, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
149 commits
Select commit Hold shift + click to select a range
039e4ab
feat
NoelStephensUnity Jul 1, 2021
8f7227b
refator
NoelStephensUnity Jul 3, 2021
000319b
refactor
NoelStephensUnity Jul 3, 2021
19bd9c3
refactor - wip
NoelStephensUnity Jul 3, 2021
7f228a3
feat
NoelStephensUnity Jul 6, 2021
728764a
refactor
NoelStephensUnity Jul 6, 2021
969123a
refactor
NoelStephensUnity Jul 6, 2021
c4138b0
style
NoelStephensUnity Jul 6, 2021
4c8a822
refactor and feat
NoelStephensUnity Jul 7, 2021
9f2c6f4
refactor
NoelStephensUnity Jul 7, 2021
cdc6a50
feat
NoelStephensUnity Jul 7, 2021
ec62ae5
wip
NoelStephensUnity Jul 9, 2021
69b43dc
refactor
NoelStephensUnity Jul 9, 2021
cafdc9d
Merge branch 'experimental/additivescenes' into experimental/late-joi…
NoelStephensUnity Jul 9, 2021
bda84f3
wip
NoelStephensUnity Jul 9, 2021
de0012e
feat
NoelStephensUnity Jul 10, 2021
d41b8d3
refactor
NoelStephensUnity Jul 10, 2021
88617d2
feat
NoelStephensUnity Jul 11, 2021
df9bc79
feat and refactor
NoelStephensUnity Jul 12, 2021
5d10e27
refactor
NoelStephensUnity Jul 12, 2021
ef77369
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Jul 12, 2021
729a2ce
fix
NoelStephensUnity Jul 12, 2021
35a46b7
fix
NoelStephensUnity Jul 12, 2021
a5c3bf8
fix
NoelStephensUnity Jul 12, 2021
d882819
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Jul 12, 2021
d7846f8
fix
NoelStephensUnity Jul 12, 2021
3a7a0e9
style
NoelStephensUnity Jul 12, 2021
d1670b7
refactor and fix
NoelStephensUnity Jul 14, 2021
4bcd931
Merge remote-tracking branch 'origin/develop' into feat/MTT-820-Addit…
NoelStephensUnity Jul 14, 2021
c686eee
fix
NoelStephensUnity Jul 14, 2021
e16628c
refactor and feat
NoelStephensUnity Jul 15, 2021
9ac6a86
Merge remote-tracking branch 'origin/develop' into feat/MTT-820-Addit…
NoelStephensUnity Jul 15, 2021
55ffbd3
style
NoelStephensUnity Jul 20, 2021
28d9df4
Merge remote-tracking branch 'origin/develop' into feat/MTT-820-Addit…
NoelStephensUnity Jul 20, 2021
c890f06
Refactor and Fix
NoelStephensUnity Jul 21, 2021
a1fdf5b
FIx and Style
NoelStephensUnity Jul 21, 2021
7b5fb89
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Jul 23, 2021
28545c3
refactor and fix
NoelStephensUnity Jul 27, 2021
217748a
fix
NoelStephensUnity Jul 27, 2021
b65203e
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Jul 27, 2021
28eb59e
refactor
NoelStephensUnity Jul 27, 2021
039ca2c
refactor
NoelStephensUnity Jul 27, 2021
0aacdfe
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Jul 27, 2021
b2157b9
refactor
NoelStephensUnity Jul 27, 2021
4436574
refactor
NoelStephensUnity Jul 28, 2021
3bb2dc6
test
NoelStephensUnity Jul 28, 2021
26e94bb
test
NoelStephensUnity Jul 28, 2021
d369c1c
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Jul 29, 2021
6705760
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Jul 29, 2021
f092e45
refactor
NoelStephensUnity Jul 29, 2021
c0da889
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 2, 2021
c67dc73
refactor
NoelStephensUnity Aug 2, 2021
ccd659e
fix
NoelStephensUnity Aug 2, 2021
4aa60b2
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 3, 2021
49a0b3d
fix
NoelStephensUnity Aug 3, 2021
c9fb565
fix
NoelStephensUnity Aug 3, 2021
77e9e07
fix
NoelStephensUnity Aug 3, 2021
2211298
refactor
NoelStephensUnity Aug 3, 2021
d708f5e
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 3, 2021
d7822d6
fix
NoelStephensUnity Aug 3, 2021
fd90a50
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 3, 2021
3274c56
refactor and fix
NoelStephensUnity Aug 3, 2021
5c4de91
style
NoelStephensUnity Aug 3, 2021
ea747d3
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 4, 2021
3f98c0a
refactor and style
NoelStephensUnity Aug 4, 2021
c31c119
refactor
NoelStephensUnity Aug 4, 2021
6a41cb8
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 4, 2021
69a4751
refactor
NoelStephensUnity Aug 4, 2021
5cffe56
feat
NoelStephensUnity Aug 4, 2021
c30251b
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 4, 2021
978e8de
style
NoelStephensUnity Aug 4, 2021
277292e
feat
NoelStephensUnity Aug 4, 2021
6d4d52f
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 4, 2021
af56bdd
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 4, 2021
8495d1f
fix, refactor, and style
NoelStephensUnity Aug 5, 2021
a608797
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 5, 2021
06e8a58
feat
NoelStephensUnity Aug 5, 2021
139edff
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 5, 2021
fa2aaaa
feat
NoelStephensUnity Aug 5, 2021
37be5bc
style
NoelStephensUnity Aug 5, 2021
831fd1d
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 5, 2021
cfa48e6
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 6, 2021
9835451
refactor
NoelStephensUnity Aug 6, 2021
c1d299a
refactor
NoelStephensUnity Aug 6, 2021
adc58d8
refactor
NoelStephensUnity Aug 6, 2021
bac7f41
style and refactor
NoelStephensUnity Aug 7, 2021
6b9b4c0
fix and style
NoelStephensUnity Aug 9, 2021
84b4d04
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 9, 2021
0db23c3
fix
NoelStephensUnity Aug 9, 2021
79fd5b2
refactor
NoelStephensUnity Aug 9, 2021
925e02e
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 10, 2021
b9be473
Merge remote-tracking branch 'origin/develop' into feat/MTT-820-Addit…
NoelStephensUnity Aug 10, 2021
9f1e05f
refactor
NoelStephensUnity Aug 10, 2021
d38145b
refactor
NoelStephensUnity Aug 10, 2021
1387b1f
Merge remote-tracking branch 'origin/develop' into feat/MTT-820-Addit…
NoelStephensUnity Aug 10, 2021
d3ff2e4
fix
NoelStephensUnity Aug 10, 2021
f477808
style
NoelStephensUnity Aug 11, 2021
3a7a0e4
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 11, 2021
68789d9
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 12, 2021
e5a9816
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 12, 2021
def2543
style
NoelStephensUnity Aug 12, 2021
36e89c2
style
NoelStephensUnity Aug 12, 2021
2a8ea86
refactor
NoelStephensUnity Aug 13, 2021
0d07468
style
NoelStephensUnity Aug 13, 2021
1c12d7c
refactor and feat
NoelStephensUnity Aug 15, 2021
7fd53e6
Fix
NoelStephensUnity Aug 15, 2021
20874b4
fix
NoelStephensUnity Aug 15, 2021
2485c89
fix and style
NoelStephensUnity Aug 15, 2021
2e1ce67
fix
NoelStephensUnity Aug 15, 2021
84c513a
fix
NoelStephensUnity Aug 15, 2021
1618a13
fix test
NoelStephensUnity Aug 15, 2021
1130fe1
Test
NoelStephensUnity Aug 16, 2021
51198d5
style
NoelStephensUnity Aug 16, 2021
d1902c8
test
NoelStephensUnity Aug 16, 2021
581adfa
Update com.unity.netcode.gameobjects/Runtime/Core/NetworkObject.cs
NoelStephensUnity Aug 17, 2021
670166b
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 17, 2021
1b42100
fix
NoelStephensUnity Aug 17, 2021
7f559f5
stle
NoelStephensUnity Aug 17, 2021
747f1f7
refactor
NoelStephensUnity Aug 17, 2021
831c3a3
style
NoelStephensUnity Aug 17, 2021
ecc1083
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 17, 2021
536a8e5
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 17, 2021
cc83d1c
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
0xFA11 Aug 18, 2021
a5f0a79
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 18, 2021
27d8f50
minor editor UI polish
0xFA11 Aug 18, 2021
39005dd
`./standards.py --fix`
0xFA11 Aug 18, 2021
75817ed
refactor and style
NoelStephensUnity Aug 18, 2021
8acb31c
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 18, 2021
db097ee
Update
NoelStephensUnity Aug 18, 2021
4f71b1c
test fix
NoelStephensUnity Aug 18, 2021
a1f5ae3
Merge branch 'feat/MTT-820-AdditiveSceneLoading' of https://github.co…
NoelStephensUnity Aug 18, 2021
6aaaa54
fix
NoelStephensUnity Aug 18, 2021
3f76dc1
fix unit test
NoelStephensUnity Aug 18, 2021
cf06cf0
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
0xFA11 Aug 18, 2021
d2dc321
fix: eliminate bad use-after-free(destroy) pattern
0xFA11 Aug 18, 2021
00a0e05
remove obsolete comment
0xFA11 Aug 18, 2021
f80e853
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
0xFA11 Aug 18, 2021
cf4d249
Merge remote-tracking branch 'origin/fix/bad-netobj-dest-fixes' into …
NoelStephensUnity Aug 18, 2021
b5afae7
refactor
NoelStephensUnity Aug 18, 2021
da9fff4
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
0xFA11 Aug 19, 2021
a1b8bba
refactor and fix
NoelStephensUnity Aug 20, 2021
32022df
refactor
NoelStephensUnity Aug 20, 2021
e31e6aa
Merge branch 'develop' into feat/MTT-820-AdditiveSceneLoading
NoelStephensUnity Aug 20, 2021
a2ffdf2
refactor unit test check
NoelStephensUnity Aug 21, 2021
093bb75
refactor
NoelStephensUnity Aug 21, 2021
7d75062
refactor
NoelStephensUnity Aug 21, 2021
3958f15
refactor minor
NoelStephensUnity Aug 21, 2021
4b558a8
style
NoelStephensUnity Aug 21, 2021
b8e9404
`./standards.py --fix`
0xFA11 Aug 23, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 23 additions & 12 deletions com.unity.netcode.gameobjects/Editor/NetworkManagerEditor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public class NetworkManagerEditor : UnityEditor.Editor
private SerializedProperty m_LoadSceneTimeOutProperty;

private ReorderableList m_NetworkPrefabsList;
private ReorderableList m_RegisteredScenesList;
private ReorderableList m_RegisteredSceneAssetsList;

private NetworkManager m_NetworkManager;
private bool m_Initialized;
Expand Down Expand Up @@ -145,7 +145,7 @@ private void OnEnable()
var networkOverrideProp = networkPrefab.FindPropertyRelative(nameof(NetworkPrefab.Override));
var networkOverrideInt = networkOverrideProp.enumValueIndex;

return 10 + (networkOverrideInt == 0 ? EditorGUIUtility.singleLineHeight : (EditorGUIUtility.singleLineHeight * 2) + 5);
return 8 + (networkOverrideInt == 0 ? EditorGUIUtility.singleLineHeight : (EditorGUIUtility.singleLineHeight * 2) + 5);
};
m_NetworkPrefabsList.drawElementCallback = (rect, index, isActive, isFocused) =>
{
Expand Down Expand Up @@ -201,17 +201,29 @@ private void OnEnable()
};
m_NetworkPrefabsList.drawHeaderCallback = rect => EditorGUI.LabelField(rect, "NetworkPrefabs");

m_RegisteredScenesList = new ReorderableList(serializedObject, serializedObject.FindProperty(nameof(NetworkManager.NetworkConfig)).FindPropertyRelative(nameof(NetworkConfig.RegisteredScenes)), true, true, true, true);
m_RegisteredScenesList.drawElementCallback = (rect, index, isActive, isFocused) =>
m_RegisteredSceneAssetsList = new ReorderableList(serializedObject, serializedObject.FindProperty(nameof(NetworkManager.NetworkConfig)).FindPropertyRelative(nameof(NetworkConfig.RegisteredSceneAssets)), true, true, true, true);
m_RegisteredSceneAssetsList.elementHeightCallback = index =>
{
var element = m_RegisteredScenesList.serializedProperty.GetArrayElementAtIndex(index);
int firstLabelWidth = 50;
int padding = 20;
return EditorGUIUtility.singleLineHeight + 8;
};
m_RegisteredSceneAssetsList.drawElementCallback = (rect, index, isActive, isFocused) =>
{
rect.y += 5;

EditorGUI.LabelField(new Rect(rect.x, rect.y, firstLabelWidth, EditorGUIUtility.singleLineHeight), "Name");
EditorGUI.PropertyField(new Rect(rect.x + firstLabelWidth, rect.y, rect.width - firstLabelWidth - padding, EditorGUIUtility.singleLineHeight), element, GUIContent.none);
var sceneAsset = m_RegisteredSceneAssetsList.serializedProperty.GetArrayElementAtIndex(index);
int firstLabelWidth = 24;
int padding = 2;

EditorGUI.LabelField(new Rect(rect.x, rect.y, firstLabelWidth, EditorGUIUtility.singleLineHeight), index.ToString());
EditorGUI.PropertyField(new Rect(rect.x + firstLabelWidth, rect.y, rect.width - firstLabelWidth - padding, EditorGUIUtility.singleLineHeight), sceneAsset, GUIContent.none);
};

m_RegisteredSceneAssetsList.drawHeaderCallback = rect => EditorGUI.LabelField(rect, "NetworkScenes");

m_RegisteredSceneAssetsList.onAddCallback = (registeredList) =>
{
m_NetworkManager.NetworkConfig.RegisteredSceneAssets.Add(null);
};
m_RegisteredScenesList.drawHeaderCallback = rect => EditorGUI.LabelField(rect, "Registered Scene Names");
}

public override void OnInspectorGUI()
Expand All @@ -231,7 +243,6 @@ public override void OnInspectorGUI()
}
}


if (!m_NetworkManager.IsServer && !m_NetworkManager.IsClient)
{
serializedObject.Update();
Expand All @@ -248,7 +259,7 @@ public override void OnInspectorGUI()

using (new EditorGUI.DisabledScope(!m_NetworkManager.NetworkConfig.EnableSceneManagement))
{
m_RegisteredScenesList.DoLayoutList();
m_RegisteredSceneAssetsList.DoLayoutList();
EditorGUILayout.Space();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
using System;
using System.Collections.Generic;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
using System.Linq;

namespace Unity.Netcode
Expand All @@ -24,11 +27,16 @@ public class NetworkConfig
public NetworkTransport NetworkTransport = null;

/// <summary>
/// A list of SceneNames that can be used during networked games.
/// The list of SceneNames built from the RegisteredSceneAssets list
/// </summary>
[Tooltip("The Scenes that can be switched to by the server")]
[HideInInspector]
public List<string> RegisteredScenes = new List<string>();

#if UNITY_EDITOR
[Tooltip("The Scenes that can be switched to by the server")]
public List<SceneAsset> RegisteredSceneAssets = new List<SceneAsset>();
#endif

/// <summary>
/// Whether or not runtime scene changes should be allowed and expected.
/// If this is true, clients with different initial configurations will not work together.
Expand All @@ -44,7 +52,7 @@ public class NetworkConfig
public GameObject PlayerPrefab;

/// <summary>
/// A list of spawnable prefabs
/// A list of prefabs that can be dynamically spawned.
/// </summary>
[SerializeField]
[Tooltip("The prefabs that can be spawned across the network")]
Expand Down Expand Up @@ -142,9 +150,9 @@ public class NetworkConfig
public HashSize RpcHashSize = HashSize.VarIntFourBytes;

/// <summary>
/// The amount of seconds to wait on all clients to load requested scene before the SwitchSceneProgress onComplete callback, that waits for all clients to complete loading, is called anyway.
/// The amount of seconds to wait for all clients to load or unload a requested scene
/// </summary>
[Tooltip("The amount of seconds to wait for all clients to load a requested scene")]
[Tooltip("The amount of seconds to wait for all clients to load or unload a requested scene (only when EnableSceneManagement is enabled)")]
public int LoadSceneTimeOut = 120;

/// <summary>
Expand Down Expand Up @@ -315,3 +323,4 @@ public bool CompareConfig(ulong hash)
}
}
}

Loading