Skip to content

Commit cc5c3a6

Browse files
update
Added an experimental "NetworkObjectBridge" icon (programmer art alert). Added some additional script to handle moving the GhostAdapter and NetworkObject bridge to the top of the GameObject's components where GhostAdapter is first and then NetworkObjectBridge is 2nd. Removed silly code to get the root transform.
1 parent 187d6ea commit cc5c3a6

6 files changed

Lines changed: 196 additions & 17 deletions

File tree

com.unity.netcode.gameobjects/Editor/Icons.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
16.3 KB
Loading

com.unity.netcode.gameobjects/Editor/Icons/NOBridgeIcon.png.meta

Lines changed: 156 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

com.unity.netcode.gameobjects/Editor/NetworkBehaviourEditor.cs

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -321,20 +321,6 @@ private void OnEnable()
321321
CheckForNetworkObject((target as NetworkBehaviour).gameObject);
322322
}
323323

324-
/// <summary>
325-
/// Recursively finds the root parent of a <see cref="Transform"/>
326-
/// </summary>
327-
/// <param name="transform">The current <see cref="Transform"/> we are inspecting for a parent</param>
328-
/// <returns>the root parent for the first <see cref="Transform"/> passed into the method</returns>
329-
public static Transform GetRootParentTransform(Transform transform)
330-
{
331-
if (transform.parent == null || transform.parent == transform)
332-
{
333-
return transform;
334-
}
335-
return GetRootParentTransform(transform.parent);
336-
}
337-
338324
/// <summary>
339325
/// Used to determine if a GameObject has one or more NetworkBehaviours but
340326
/// does not already have a NetworkObject component. If not it will notify
@@ -358,7 +344,7 @@ public static void CheckForNetworkObject(GameObject gameObject, bool networkObje
358344
}
359345

360346
// Now get the root parent transform to the current GameObject (or itself)
361-
var rootTransform = GetRootParentTransform(gameObject.transform);
347+
var rootTransform = gameObject.transform.root;
362348
if (!rootTransform.TryGetComponent<NetworkManager>(out var networkManager))
363349
{
364350
networkManager = rootTransform.GetComponentInChildren<NetworkManager>();

com.unity.netcode.gameobjects/Runtime/Components/Helpers/NetworkObjectBridge.cs.meta

Lines changed: 10 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

com.unity.netcode.gameobjects/Runtime/Core/NetworkObject.cs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,8 @@ private void CheckForInScenePlaced()
355355
[SerializeField]
356356
internal bool HasGhost;
357357

358+
[HideInInspector]
359+
[SerializeField]
358360
internal bool HadBridge;
359361

360362
private void UnifiedValidation()
@@ -364,13 +366,31 @@ private void UnifiedValidation()
364366
HasGhost = GhostAdapter != null;
365367
if (HasGhost && NetworkObjectBridge == null)
366368
{
367-
if (!HadBridge)
368369
{
369370
NetworkObjectBridge = gameObject.AddComponent<NetworkObjectBridge>();
370371
HadBridge = true;
371372
// Transform synchronization is handled by unified netcode
372373
SynchronizeTransform = false;
373374
}
375+
376+
// Move the bridge to the top
377+
while (UnityEditorInternal.ComponentUtility.MoveComponentUp(NetworkObjectBridge))
378+
{
379+
// Keep moving until it can't go higher
380+
}
381+
382+
// Now move the GhostAdapter to the top so it is above NetworkObjectBridge
383+
while (UnityEditorInternal.ComponentUtility.MoveComponentUp(GhostAdapter))
384+
{
385+
// Keep moving until it can't go higher
386+
}
387+
388+
EditorUtility.SetDirty(gameObject);
389+
}
390+
else if (HadBridge && !HasGhost && !NetworkObjectBridge)
391+
{
392+
HadBridge = false;
393+
SynchronizeTransform = true;
374394
}
375395
}
376396
#endif

0 commit comments

Comments
 (0)