Skip to content

Commit fc2baa4

Browse files
committed
Add XML doc
1 parent 7d76592 commit fc2baa4

5 files changed

Lines changed: 50 additions & 35 deletions

File tree

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

Lines changed: 0 additions & 32 deletions
This file was deleted.

com.unity.netcode.gameobjects/Editor/InScenePlacedPrefab.cs.meta

Lines changed: 0 additions & 3 deletions
This file was deleted.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using UnityEditor;
2+
using UnityEditor.Build;
3+
using UnityEditor.Build.Reporting;
4+
using UnityEngine;
5+
using UnityEngine.SceneManagement;
6+
7+
namespace Unity.Netcode.Editor
8+
{
9+
/// <summary>
10+
/// A <see cref="IProcessSceneWithReport"/> that sets the <see cref
11+
/// "NetworkObject.InScenePlaced"/> property to true for all <see cref="NetworkObject"/>s in the scene.
12+
/// Ensures that InScenePlaced is always true for all objects in the scene.
13+
/// </summary>
14+
/// <remarks>
15+
/// This will always run as the game enters the scene,
16+
/// </remarks>
17+
internal class SetInScenePlaced : IProcessSceneWithReport
18+
{
19+
public int callbackOrder => 0;
20+
public void OnProcessScene(Scene scene, BuildReport report)
21+
{
22+
foreach (var networkObject in FindObjects.FromSceneByType<NetworkObject>(scene, true))
23+
{
24+
networkObject.InScenePlaced = true;
25+
}
26+
}
27+
}
28+
29+
/// <summary>
30+
/// An <see cref="AssetPostprocessor"/> that sets the <see cref="NetworkObject.InScenePlaced"/> property to false for all <see cref="NetworkObject"/>s in prefabs.
31+
/// Ensures that InScenePlaced is always false for all prefab objects.
32+
/// This is important because when a prefab is instantiated in the scene, it should be treated as a dynamically spawned object.
33+
/// </summary>
34+
internal class InScenePlacedPrefabBuilder : AssetPostprocessor
35+
{
36+
public void OnPostprocessPrefab(GameObject root)
37+
{
38+
var networkObjects = root.GetComponentsInChildren<NetworkObject>(true);
39+
foreach (var networkObject in networkObjects)
40+
{
41+
networkObject.InScenePlaced = false;
42+
}
43+
}
44+
}
45+
}

com.unity.netcode.gameobjects/Editor/InScenePlacedProcessor.cs.meta

Lines changed: 2 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/Runtime/Core/NetworkObject.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1235,6 +1235,9 @@ private bool InternalHasAuthority()
12351235
[Obsolete("Use InScenePlaced instead")]
12361236
public bool? IsSceneObject { get; internal set; }
12371237

1238+
/// <summary>
1239+
/// True if this object is placed in a scene; false otherwise.
1240+
/// </summary>
12381241
[field: HideInInspector]
12391242
[field: SerializeField]
12401243
public bool InScenePlaced { get; internal set; }

0 commit comments

Comments
 (0)