Skip to content

Commit 1484d52

Browse files
committed
Updated editor scripts and added NetworkedInstanceId generation
1 parent 22804c1 commit 1484d52

File tree

3 files changed

+63
-1
lines changed

3 files changed

+63
-1
lines changed

MLAPI-Editor/MLAPI-Editor.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
<Compile Include="NetworkedBehaviourEditor.cs" />
5959
<Compile Include="NetworkedObjectEditor.cs" />
6060
<Compile Include="NetworkingManagerEditor.cs" />
61+
<Compile Include="PostProcessScene.cs" />
6162
<Compile Include="Properties\AssemblyInfo.cs" />
6263
<Compile Include="TrackedObjectEditor.cs" />
6364
</ItemGroup>

MLAPI-Editor/NetworkedObjectEditor.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public override void OnInspectorGUI()
3939
}
4040
else if (networkedObject.IsSpawned)
4141
{
42-
EditorGUILayout.LabelField("PrefabName: ", networkedObject.PrefabHashGenerator, EditorStyles.label);
42+
EditorGUILayout.LabelField("PrefabHashGenerator: ", networkedObject.PrefabHashGenerator, EditorStyles.label);
4343
EditorGUILayout.LabelField("PrefabHash: ", networkedObject.PrefabHash.ToString(), EditorStyles.label);
4444
EditorGUILayout.LabelField("InstanceId: ", networkedObject.NetworkedInstanceId.ToString(), EditorStyles.label);
4545
EditorGUILayout.LabelField("NetworkId: ", networkedObject.NetworkId.ToString(), EditorStyles.label);
@@ -49,6 +49,7 @@ public override void OnInspectorGUI()
4949
EditorGUILayout.LabelField("IsOwner: ", networkedObject.IsOwner.ToString(), EditorStyles.label);
5050
EditorGUILayout.LabelField("IsOwnedByServer: ", networkedObject.IsOwnedByServer.ToString(), EditorStyles.label);
5151
EditorGUILayout.LabelField("IsPlayerObject: ", networkedObject.IsPlayerObject.ToString(), EditorStyles.label);
52+
EditorGUILayout.LabelField("IsSceneObject: ", (networkedObject.IsSceneObject == null ? "Null" : networkedObject.IsSceneObject.Value.ToString()), EditorStyles.label);
5253

5354
if (NetworkingManager.Singleton != null && NetworkingManager.Singleton.IsServer)
5455
{

MLAPI-Editor/PostProcessScene.cs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
using System.Collections.Generic;
2+
using System.Linq;
3+
using MLAPI;
4+
using UnityEditor.Callbacks;
5+
using UnityEngine;
6+
7+
namespace UnityEditor
8+
{
9+
public class NetworkScenePostProcess : MonoBehaviour
10+
{
11+
[PostProcessScene(int.MaxValue)]
12+
public static void ProcessScene()
13+
{
14+
List<NetworkedObject> traverseSortedObjects = MonoBehaviour.FindObjectsOfType<NetworkedObject>().ToList();
15+
16+
traverseSortedObjects.Sort((x, y) =>
17+
{
18+
List<int> xSiblingIndex = x.TraversedSiblingIndex();
19+
List<int> ySiblingIndex = x.TraversedSiblingIndex();
20+
21+
while (xSiblingIndex.Count > 0 && ySiblingIndex.Count > 0)
22+
{
23+
if (xSiblingIndex[0] < ySiblingIndex[0])
24+
return -1;
25+
26+
if (xSiblingIndex[0] > ySiblingIndex[0])
27+
return 1;
28+
29+
xSiblingIndex.RemoveAt(0);
30+
ySiblingIndex.RemoveAt(0);
31+
}
32+
33+
return 0;
34+
});
35+
36+
for (ulong i = 0; i < (ulong)traverseSortedObjects.Count; i++)
37+
traverseSortedObjects[(int)i].NetworkedInstanceId = i;
38+
}
39+
}
40+
41+
internal static class PrefabHelpers
42+
{
43+
internal static List<int> TraversedSiblingIndex(this NetworkedObject networkedObject)
44+
{
45+
List<int> paths = new List<int>();
46+
47+
Transform transform = networkedObject.transform;
48+
49+
while (transform != null)
50+
{
51+
paths.Add(transform.GetSiblingIndex());
52+
transform = transform.parent;
53+
}
54+
55+
paths.Reverse();
56+
57+
return paths;
58+
}
59+
}
60+
}

0 commit comments

Comments
 (0)