diff --git a/com.unity.netcode.gameobjects/CHANGELOG.md b/com.unity.netcode.gameobjects/CHANGELOG.md
index fd4ae80745..22bef68281 100644
--- a/com.unity.netcode.gameobjects/CHANGELOG.md
+++ b/com.unity.netcode.gameobjects/CHANGELOG.md
@@ -10,8 +10,11 @@ Additional documentation and release notes are available at [Multiplayer Documen
### Added
+- Added `NetworkTransport.OnEarlyUpdate` and `NetworkTransport.OnPostLateUpdate` methods to provide more control over handling transport related events at the start and end of each frame. (#3113)
+
### Fixed
+- Fixed issue where queued UnitTransport (NetworkTransport) message batches were being sent on the next frame. They are now sent at the end of the frame during `PostLateUpdate`. (#3113)
- Fixed issue where `NotOwnerRpcTarget` or `OwnerRpcTarget` were not using their replacements `NotAuthorityRpcTarget` and `AuthorityRpcTarget` which would invoke a warning. (#3111)
- Fixed issue where client is removed as an observer from spawned objects when their player instance is despawned. (#3110)
- Fixed issue where `NetworkAnimator` would statically allocate write buffer space for `Animator` parameters that could cause a write error if the number of parameters exceeded the space allocated. (#3108)
diff --git a/com.unity.netcode.gameobjects/Runtime/Core/NetworkManager.cs b/com.unity.netcode.gameobjects/Runtime/Core/NetworkManager.cs
index de08ae0ebf..56a82bc33f 100644
--- a/com.unity.netcode.gameobjects/Runtime/Core/NetworkManager.cs
+++ b/com.unity.netcode.gameobjects/Runtime/Core/NetworkManager.cs
@@ -291,6 +291,10 @@ public void NetworkUpdate(NetworkUpdateStage updateStage)
case NetworkUpdateStage.EarlyUpdate:
{
UpdateTopology();
+
+ // Handle processing any new connections or transport events
+ NetworkConfig.NetworkTransport.EarlyUpdate();
+
ConnectionManager.ProcessPendingApprovals();
ConnectionManager.PollAndHandleNetworkEvents();
@@ -298,6 +302,7 @@ public void NetworkUpdate(NetworkUpdateStage updateStage)
AnticipationSystem.SetupForUpdate();
MessageManager.ProcessIncomingMessageQueue();
+
MessageManager.CleanupDisconnectedClients();
AnticipationSystem.ProcessReanticipation();
}
@@ -379,6 +384,9 @@ public void NetworkUpdate(NetworkUpdateStage updateStage)
// Metrics update needs to be driven by NetworkConnectionManager's update to assure metrics are dispatched after the send queue is processed.
MetricsManager.UpdateMetrics();
+ // Handle sending any pending transport messages
+ NetworkConfig.NetworkTransport.PostLateUpdate();
+
// TODO: Determine a better way to handle this
NetworkObject.VerifyParentingStatus();
diff --git a/com.unity.netcode.gameobjects/Runtime/Transports/NetworkTransport.cs b/com.unity.netcode.gameobjects/Runtime/Transports/NetworkTransport.cs
index b624120269..d647aeab17 100644
--- a/com.unity.netcode.gameobjects/Runtime/Transports/NetworkTransport.cs
+++ b/com.unity.netcode.gameobjects/Runtime/Transports/NetworkTransport.cs
@@ -107,6 +107,45 @@ protected void InvokeOnTransportEvent(NetworkEvent eventType, ulong clientId, Ar
/// /// optionally pass in NetworkManager
public abstract void Initialize(NetworkManager networkManager = null);
+ ///
+ /// Invoked by NetworkManager at the beginning of its EarlyUpdate.
+ /// For order of operations see:
+ ///
+ /// Useful to handle processing any transport-layer events such as processing inbound messages or changes in connection state(s).
+ ///
+ protected virtual void OnEarlyUpdate()
+ {
+
+ }
+
+ ///
+ /// Invoked by NetworkManager at the beginning of its EarlyUpdate
+ ///
+ internal void EarlyUpdate()
+ {
+ OnEarlyUpdate();
+ }
+
+ ///
+ /// Invoked by NetworkManager towards the end of the PostLateUpdate.
+ /// For order of operations see:
+ ///
+ ///
+ /// Useful to handle any end of frame transport tasks such as sending queued transport messages.
+ ///
+ protected virtual void OnPostLateUpdate()
+ {
+
+ }
+
+ ///
+ /// Invoked by NetworkManager towards the end of the PostLateUpdate
+ ///
+ internal void PostLateUpdate()
+ {
+ OnPostLateUpdate();
+ }
+
protected virtual NetworkTopologyTypes OnCurrentTopology()
{
return NetworkTopologyTypes.ClientServer;
diff --git a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs
index 0237517f01..60e49d0479 100644
--- a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs
+++ b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs
@@ -944,17 +944,13 @@ private bool ProcessEvent()
return false;
}
- private void Update()
+ ///
+ /// Handles accepting new connections and processing transport events.
+ ///
+ protected override void OnEarlyUpdate()
{
if (m_Driver.IsCreated)
{
- foreach (var kvp in m_SendQueue)
- {
- SendBatchedMessages(kvp.Key, kvp.Value);
- }
-
- m_Driver.ScheduleUpdate().Complete();
-
if (m_ProtocolType == ProtocolType.RelayUnityTransport && m_Driver.GetRelayConnectionStatus() == RelayConnectionStatus.AllocationInvalid)
{
Debug.LogError("Transport failure! Relay allocation needs to be recreated, and NetworkManager restarted. " +
@@ -964,15 +960,38 @@ private void Update()
return;
}
+ m_Driver.ScheduleUpdate().Complete();
+
+ // Process any new connections
while (AcceptConnection() && m_Driver.IsCreated)
{
;
}
+ // Process any transport events (i.e. connect, disconnect, data, etc)
while (ProcessEvent() && m_Driver.IsCreated)
{
;
}
+ }
+ base.OnEarlyUpdate();
+ }
+
+ ///
+ /// Handles sending any queued batched messages.
+ ///
+ protected override void OnPostLateUpdate()
+ {
+ if (m_Driver.IsCreated)
+ {
+ foreach (var kvp in m_SendQueue)
+ {
+ SendBatchedMessages(kvp.Key, kvp.Value);
+ }
+
+ // Schedule a flush send as the last transport action for the
+ // current frame.
+ m_Driver.ScheduleFlushSend(default).Complete();
#if MULTIPLAYER_TOOLS_1_0_0_PRE_7
if (m_NetworkManager)
@@ -981,6 +1000,7 @@ private void Update()
}
#endif
}
+ base.OnPostLateUpdate();
}
private void OnDestroy()
@@ -1452,6 +1472,11 @@ public override void Shutdown()
{
if (m_Driver.IsCreated)
{
+ while (ProcessEvent() && m_Driver.IsCreated)
+ {
+ ;
+ }
+
// Flush all send queues to the network. NGO can be configured to flush its message
// queue on shutdown. But this only calls the Send() method, which doesn't actually
// get anything to the network.
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformOwnershipTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformOwnershipTests.cs
index 31105efadd..ca402c6095 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformOwnershipTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformOwnershipTests.cs
@@ -36,13 +36,25 @@ protected override void OnServerAndClientsCreated()
{
VerifyObjectIsSpawnedOnClient.ResetObjectTable();
m_ClientNetworkTransformPrefab = CreateNetworkObjectPrefab("OwnerAuthorityTest");
+ var clientNetworkObject = m_ClientNetworkTransformPrefab.GetComponent();
+ // When running in distributed authority mode, make the NetworkObject transferable
+ clientNetworkObject.SetOwnershipStatus(m_DistributedAuthority ? NetworkObject.OwnershipStatus.Transferable : NetworkObject.OwnershipStatus.None);
var clientNetworkTransform = m_ClientNetworkTransformPrefab.AddComponent();
+ clientNetworkTransform.AuthorityMode = NetworkTransform.AuthorityModes.Owner;
clientNetworkTransform.Interpolate = false;
clientNetworkTransform.UseHalfFloatPrecision = false;
var rigidBody = m_ClientNetworkTransformPrefab.AddComponent();
rigidBody.useGravity = false;
+ rigidBody.maxDepenetrationVelocity = 0;
+ rigidBody.mass = 100;
+ rigidBody.linearDamping = 100;
rigidBody.interpolation = RigidbodyInterpolation.None;
rigidBody.maxLinearVelocity = 0;
+ rigidBody.detectCollisions = false;
+ rigidBody.position = Vector3.zero;
+ rigidBody.rotation = Quaternion.identity;
+ rigidBody.transform.position = Vector3.zero;
+ rigidBody.transform.rotation = Quaternion.identity;
// NOTE: We don't use a sphere collider for this integration test because by the time we can
// assure they don't collide and skew the results the NetworkObjects are already synchronized
// with skewed results
@@ -51,11 +63,22 @@ protected override void OnServerAndClientsCreated()
m_ClientNetworkTransformPrefab.AddComponent();
m_NetworkTransformPrefab = CreateNetworkObjectPrefab("ServerAuthorityTest");
- var networkTransform = m_NetworkTransformPrefab.AddComponent();
+ var networkObject = m_ClientNetworkTransformPrefab.GetComponent();
+ // When running in distributed authority mode, make the NetworkObject transferable
+ networkObject.SetOwnershipStatus(m_DistributedAuthority ? NetworkObject.OwnershipStatus.Transferable : NetworkObject.OwnershipStatus.None);
+ var networkTransform = m_NetworkTransformPrefab.AddComponent();
rigidBody = m_NetworkTransformPrefab.AddComponent();
rigidBody.useGravity = false;
+ rigidBody.maxDepenetrationVelocity = 0;
+ rigidBody.linearDamping = 100;
+ rigidBody.mass = 100;
rigidBody.interpolation = RigidbodyInterpolation.None;
rigidBody.maxLinearVelocity = 0;
+ rigidBody.detectCollisions = false;
+ rigidBody.position = Vector3.zero;
+ rigidBody.rotation = Quaternion.identity;
+ rigidBody.transform.position = Vector3.zero;
+ rigidBody.transform.rotation = Quaternion.identity;
// NOTE: We don't use a sphere collider for this integration test because by the time we can
// assure they don't collide and skew the results the NetworkObjects are already synchronized
// with skewed results
@@ -276,10 +299,12 @@ void LogOwnerRigidBody(int stage)
};
if (m_MotionModel == MotionModels.UseRigidbody)
{
+ TestClientNetworkTransform.EnableLogState(m_EnableVerboseDebug);
var ownerRigidbody = ownerInstance.GetComponent();
ownerRigidbody.Move(valueSetByOwner, rotation);
+ yield return new WaitForFixedUpdate();
ownerRigidbody.linearVelocity = Vector3.zero;
- yield return s_DefaultWaitForTick;
+ yield return new WaitForFixedUpdate();
ownerInstance.transform.localScale = valueSetByOwner;
}
else
@@ -312,15 +337,22 @@ void LogOwnerRigidBody(int stage)
VerifyObjectIsSpawnedOnClient.ResetObjectTable();
if (m_DistributedAuthority)
{
- ownerInstance.NetworkObject.ChangeOwnership(networkManagerNonOwner.LocalClientId);
+ Assert.True(nonOwnerInstance.OwnerClientId != networkManagerNonOwner.LocalClientId, $"Non-Owner Client-{networkManagerNonOwner.LocalClientId} was already the owner prior to changing ownership!");
+ nonOwnerInstance.NetworkObject.ChangeOwnership(networkManagerNonOwner.LocalClientId);
+ nonOwnerInstance.GetComponent().linearVelocity = Vector3.zero;
+ Assert.True(nonOwnerInstance.OwnerClientId == networkManagerNonOwner.LocalClientId, $"Client-{networkManagerNonOwner.LocalClientId} failed to change ownership!");
+
+ LogNonOwnerRigidBody(3);
+ yield return WaitForConditionOrTimeOut(() => ownerInstance.GetComponent().OwnerClientId == networkManagerNonOwner.LocalClientId);
+ Assert.False(s_GlobalTimeoutHelper.TimedOut, $"Timed out waiting for original owner {networkManagerOwner.name}'s object instance {nonOwnerInstance.name} to change ownership!");
}
else
{
m_ServerNetworkManager.SpawnManager.ChangeOwnership(serverSideInstance.GetComponent(), networkManagerNonOwner.LocalClientId, true);
+ LogNonOwnerRigidBody(3);
+ yield return WaitForConditionOrTimeOut(() => nonOwnerInstance.GetComponent().OwnerClientId == networkManagerNonOwner.LocalClientId);
+ Assert.False(s_GlobalTimeoutHelper.TimedOut, $"Timed out waiting for {networkManagerNonOwner.name}'s object instance {nonOwnerInstance.name} to change ownership!");
}
- LogNonOwnerRigidBody(3);
- yield return WaitForConditionOrTimeOut(() => nonOwnerInstance.GetComponent().OwnerClientId == networkManagerNonOwner.LocalClientId);
- Assert.False(s_GlobalTimeoutHelper.TimedOut, $"Timed out waiting for {networkManagerNonOwner.name}'s object instance {nonOwnerInstance.name} to change ownership!");
LogNonOwnerRigidBody(4);
// Re-assign the ownership references and wait for the non-owner instance to be notified of ownership change
@@ -331,6 +363,7 @@ void LogOwnerRigidBody(int stage)
yield return WaitForConditionOrTimeOut(() => VerifyObjectIsSpawnedOnClient.GetClientInstance(networkManagerNonOwner.LocalClientId) != null);
nonOwnerInstance = VerifyObjectIsSpawnedOnClient.GetClientInstance(networkManagerNonOwner.LocalClientId);
Assert.NotNull(nonOwnerInstance);
+ Assert.True(!nonOwnerInstance.IsOwner, $"Ownership failed to change on Client-{networkManagerNonOwner.LocalClientId} side! Expected owner to be {networkManagerOwner.LocalClientId} but owner is still {networkManagerNonOwner.LocalClientId}!");
// Make sure the owner is not kinematic and the non-owner(s) are kinematic
Assert.False(ownerInstance.GetComponent().isKinematic, $"{networkManagerOwner.name}'s object instance {ownerInstance.name} is kinematic when it should not be!");
@@ -344,7 +377,7 @@ void LogOwnerRigidBody(int stage)
Assert.False(s_GlobalTimeoutHelper.TimedOut, $"Timed out waiting for {networkManagerNonOwner.name}'s object instance {nonOwnerInstance.name} to change its transform!\n" +
$"Expected Position: {valueSetByOwner} | Current Position: {transformToTest.position}\n" +
$"Expected Rotation: {valueSetByOwner} | Current Rotation: {transformToTest.rotation.eulerAngles}\n" +
- $"Expected Scale: {valueSetByOwner} | Current Scale: {transformToTest.localScale}");
+ $"Expected Scale: {valueSetByOwner} | Current Scale: {transformToTest.localScale}\n {nonOwnerInstance.GetComponent().LogInfoBuilder}");
LogNonOwnerRigidBody(5);
// Have the new owner change transform values and wait for those values to be applied on the non-owner side.
@@ -358,6 +391,7 @@ void LogOwnerRigidBody(int stage)
var ownerRigidbody = ownerInstance.GetComponent();
ownerRigidbody.Move(valueSetByOwner, rotation);
LogOwnerRigidBody(2);
+ yield return new WaitForFixedUpdate();
ownerInstance.GetComponent().LogMotion = m_EnableVerboseDebug;
nonOwnerInstance.GetComponent().LogMotion = m_EnableVerboseDebug;
ownerRigidbody.linearVelocity = Vector3.zero;
@@ -377,10 +411,11 @@ void LogOwnerRigidBody(int stage)
LogOwnerRigidBody(4);
LogNonOwnerRigidBody(7);
}
+
Assert.False(s_GlobalTimeoutHelper.TimedOut, $"Timed out waiting for {networkManagerNonOwner.name}'s object instance {nonOwnerInstance.name} to change its transform!\n" +
$"Expected Position: {valueSetByOwner} | Current Position: {transformToTest.position}\n" +
$"Expected Rotation: {valueSetByOwner} | Current Rotation: {transformToTest.rotation.eulerAngles}\n" +
- $"Expected Scale: {valueSetByOwner} | Current Scale: {transformToTest.localScale}");
+ $"Expected Scale: {valueSetByOwner} | Current Scale: {transformToTest.localScale}\n {nonOwnerInstance.GetComponent().LogInfoBuilder}");
// The last check is to verify non-owners cannot change transform values after ownership has changed
nonOwnerInstance.transform.position = Vector3.zero;
@@ -445,6 +480,12 @@ public IEnumerator ServerAuthoritativeTest()
Assert.True(nonOwnerInstance.transform.position == valueSetByOwner, $"{m_ClientNetworkManagers[0].name}'s object instance {nonOwnerInstance.name} was allowed to change its position! Expected: {Vector3.one} Is Currently:{nonOwnerInstance.transform.position}");
}
+ protected override IEnumerator OnTearDown()
+ {
+ TestClientNetworkTransform.EnableLogState(false);
+ return base.OnTearDown();
+ }
+
///
/// NetworkTransformOwnershipTests helper behaviour
///
@@ -457,6 +498,10 @@ public static void ResetObjectTable()
NetworkManagerRelativeSpawnedObjects.Clear();
}
+ ///
+ /// For testing, just before changing ownership the table is cleared to assure that
+ /// ownership tansfer occurs. This will add the new owner to the table.
+ ///
public override void OnGainedOwnership()
{
if (!NetworkManagerRelativeSpawnedObjects.ContainsKey(NetworkManager.LocalClientId))
@@ -466,6 +511,10 @@ public override void OnGainedOwnership()
base.OnGainedOwnership();
}
+ ///
+ /// For testing, just before changing ownership the table is cleared to assure that
+ /// ownership tansfer occurs. This will add the previous owner to the table.
+ ///
public override void OnLostOwnership()
{
if (!NetworkManagerRelativeSpawnedObjects.ContainsKey(NetworkManager.LocalClientId))
@@ -515,28 +564,57 @@ public override void OnNetworkDespawn()
[DisallowMultipleComponent]
internal class TestClientNetworkTransform : NetworkTransform
{
- //public override void OnNetworkSpawn()
- //{
- // base.OnNetworkSpawn();
- // CanCommitToTransform = IsOwner;
- //}
-
- //protected override void Update()
- //{
- // CanCommitToTransform = IsOwner;
- // base.Update();
- // if (NetworkManager.Singleton != null && (NetworkManager.Singleton.IsConnectedClient || NetworkManager.Singleton.IsListening))
- // {
- // if (CanCommitToTransform)
- // {
- // TryCommitTransformToServer(transform, NetworkManager.LocalTime.Time);
- // }
- // }
- //}
-
- protected override bool OnIsServerAuthoritative()
+ public static void EnableLogState(bool enable)
{
- return false;
+ s_LogStateEnabled = enable;
+ TrackByStateId = enable;
+ }
+
+ private static bool s_LogStateEnabled;
+
+ internal StringBuilder LogInfoBuilder = new StringBuilder();
+
+ private void LogInfo(NetworkTransformState state)
+ {
+ if (s_LogStateEnabled)
+ {
+ LogInfoBuilder.AppendLine($"N:{name} | CID:{NetworkManager.LocalClientId} | SID: {state.StateId} | NT:{NetworkManager.ServerTime.Tick} | Pos: {transform.position} | Sc: {transform.localScale}");
+ }
+ }
+
+ protected override void OnOwnershipChanged(ulong previous, ulong current)
+ {
+
+ if (s_LogStateEnabled)
+ {
+ LogInfoBuilder.AppendLine($"Ownership Changed: {previous} --> {current} | Position: {transform.position}");
+ }
+ LogInfo(LocalAuthoritativeNetworkState);
+ base.OnOwnershipChanged(previous, current);
+
+ // Assure no velocity is set on this object for this particular test
+ if (current == NetworkManager.LocalClientId)
+ {
+ GetComponent().linearVelocity = Vector3.zero;
+ }
+ }
+
+ protected override void OnAuthorityPushTransformState(ref NetworkTransformState networkTransformState)
+ {
+ LogInfo(networkTransformState);
+ base.OnAuthorityPushTransformState(ref networkTransformState);
+ }
+
+ protected override void OnBeforeUpdateTransformState()
+ {
+ LogInfo(LocalAuthoritativeNetworkState);
+ base.OnBeforeUpdateTransformState();
+ }
+
+ protected override void OnNetworkTransformStateUpdated(ref NetworkTransformState oldState, ref NetworkTransformState newState)
+ {
+ LogInfo(newState);
+ base.OnNetworkTransformStateUpdated(ref oldState, ref newState);
}
}
}
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportConnectionTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportConnectionTests.cs
index ac4c0891c2..3e2c746082 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportConnectionTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportConnectionTests.cs
@@ -33,7 +33,7 @@ public IEnumerator Cleanup()
if (transport)
{
transport.Shutdown();
- UnityEngine.Object.DestroyImmediate(transport);
+ UnityEngine.Object.DestroyImmediate(transport.gameObject);
}
}
@@ -42,6 +42,7 @@ public IEnumerator Cleanup()
transportEvents?.Clear();
}
+ UnityTransportTestComponent.CleanUp();
yield return null;
}
@@ -59,6 +60,7 @@ public void DetectInvalidEndpoint()
Assert.False(m_Clients[0].StartClient(), "Client failed to detect invalid endpoint!");
netcodeLogAssert.LogWasReceived(LogType.Error, $"Network listen address ({m_Server.ConnectionData.Address}) is Invalid!");
netcodeLogAssert.LogWasReceived(LogType.Error, $"Target server network address ({m_Clients[0].ConnectionData.Address}) is Invalid!");
+ UnityTransportTestComponent.CleanUp();
}
// Check connection with a single client.
@@ -161,8 +163,6 @@ public IEnumerator ServerDisconnectMultipleClients()
// Check that all clients got a Disconnect event.
Assert.True(m_ClientsEvents.All(evs => evs.Count == 2));
Assert.True(m_ClientsEvents.All(evs => evs[1].Type == NetworkEvent.Disconnect));
-
- yield return null;
}
// Check client disconnection from a single client.
@@ -188,13 +188,11 @@ public IEnumerator ClientDisconnectMultipleClients()
{
InitializeTransport(out m_Server, out m_ServerEvents);
m_Server.StartServer();
-
for (int i = 0; i < k_NumClients; i++)
{
InitializeTransport(out m_Clients[i], out m_ClientsEvents[i]);
m_Clients[i].StartClient();
}
-
yield return WaitForNetworkEvent(NetworkEvent.Connect, m_ClientsEvents[k_NumClients - 1]);
// Disconnect a single client.
@@ -207,14 +205,11 @@ public IEnumerator ClientDisconnectMultipleClients()
{
m_Clients[i].DisconnectLocalClient();
}
-
yield return WaitForNetworkEvent(NetworkEvent.Disconnect, m_ServerEvents, 5);
// Check that we got the correct number of Disconnect events on the server.
Assert.AreEqual(k_NumClients * 2, m_ServerEvents.Count);
Assert.AreEqual(k_NumClients, m_ServerEvents.Count(e => e.Type == NetworkEvent.Disconnect));
-
- yield return null;
}
// Check that server re-disconnects are no-ops.
@@ -244,8 +239,6 @@ public IEnumerator RepeatedServerDisconnectsNoop()
// Check we haven't received anything else on the client or server.
Assert.AreEqual(m_ServerEvents.Count, previousServerEventsCount);
Assert.AreEqual(m_ClientsEvents[0].Count, previousClientEventsCount);
-
- yield return null;
}
// Check that client re-disconnects are no-ops.
@@ -275,8 +268,6 @@ public IEnumerator RepeatedClientDisconnectsNoop()
// Check we haven't received anything else on the client or server.
Assert.AreEqual(m_ServerEvents.Count, previousServerEventsCount);
Assert.AreEqual(m_ClientsEvents[0].Count, previousClientEventsCount);
-
- yield return null;
}
// Check connection with different server/listen addresses.
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportTestHelpers.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportTestHelpers.cs
index 62ae2b561f..2523dd9257 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportTestHelpers.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportTestHelpers.cs
@@ -43,7 +43,7 @@ public static void InitializeTransport(out UnityTransport transport, out List();
+ transport = new GameObject().AddComponent();
transport.OnTransportEvent += logger.HandleEvent;
transport.MaxPayloadSize = maxPayloadSize;
@@ -91,5 +91,58 @@ public void HandleEvent(NetworkEvent type, ulong clientID, ArraySegment da
});
}
}
+
+ internal class UnityTransportTestComponent : UnityTransport, INetworkUpdateSystem
+ {
+ private static List s_Instances = new List();
+
+ public static void CleanUp()
+ {
+ for (int i = s_Instances.Count - 1; i >= 0; i--)
+ {
+ var instance = s_Instances[i];
+ instance.Shutdown();
+ DestroyImmediate(instance.gameObject);
+ }
+ s_Instances.Clear();
+ }
+
+ ///
+ /// Simulate the being invoked so
+ /// and are invoked.
+ ///
+ public void NetworkUpdate(NetworkUpdateStage updateStage)
+ {
+ switch (updateStage)
+ {
+ case NetworkUpdateStage.EarlyUpdate:
+ {
+ EarlyUpdate();
+ break;
+ }
+ case NetworkUpdateStage.PostLateUpdate:
+ {
+ PostLateUpdate();
+ break;
+ }
+ }
+ }
+
+ public override void Shutdown()
+ {
+ s_Instances.Remove(this);
+ base.Shutdown();
+ this.UnregisterAllNetworkUpdates();
+ }
+
+ public override void Initialize(NetworkManager networkManager = null)
+ {
+ base.Initialize(networkManager);
+ this.RegisterNetworkUpdate(NetworkUpdateStage.EarlyUpdate);
+ this.RegisterNetworkUpdate(NetworkUpdateStage.PreUpdate);
+ this.RegisterNetworkUpdate(NetworkUpdateStage.PostLateUpdate);
+ s_Instances.Add(this);
+ }
+ }
}
}
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportTests.cs
index 4a14206e02..d5b720dada 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportTests.cs
@@ -60,11 +60,11 @@ public IEnumerator Cleanup()
// Need to destroy the GameObject (all assigned components will get destroyed too)
UnityEngine.Object.DestroyImmediate(m_Client2.gameObject);
}
-
m_ServerEvents?.Clear();
m_Client1Events?.Clear();
m_Client2Events?.Clear();
+ UnityTransportTestComponent.CleanUp();
yield return null;
}
@@ -217,8 +217,6 @@ public IEnumerator MultipleSendsSingleFrame(
Assert.AreEqual(33, m_ServerEvents[3].Data.First());
Assert.AreEqual(10, m_ServerEvents[3].Data.Count);
-
- yield return null;
}
// Check sending data to multiple clients.
@@ -260,8 +258,6 @@ public IEnumerator SendMultipleClients(
byte c1Data = m_Client1Events[1].Data.First();
byte c2Data = m_Client2Events[1].Data.First();
Assert.That((c1Data == 11 && c2Data == 22) || (c1Data == 22 && c2Data == 11));
-
- yield return null;
}
// Check receiving data from multiple clients.
@@ -299,8 +295,6 @@ public IEnumerator ReceiveMultipleClients(
byte sData1 = m_ServerEvents[2].Data.First();
byte sData2 = m_ServerEvents[3].Data.First();
Assert.That((sData1 == 11 && sData2 == 22) || (sData1 == 22 && sData2 == 11));
-
- yield return null;
}
// Check that we get disconnected when overflowing the reliable send queue.
@@ -332,8 +326,6 @@ public IEnumerator DisconnectOnReliableSendQueueOverflow()
Assert.AreEqual(2, m_Client1Events.Count);
Assert.AreEqual(NetworkEvent.Disconnect, m_Client1Events[1].Type);
-
- yield return null;
}
// Check that it's fine to overflow the unreliable send queue (traffic is flushed on overflow).
@@ -373,8 +365,6 @@ public IEnumerator SendCompletesOnUnreliableSendQueueOverflow()
Assert.AreEqual(NetworkEvent.Data, m_ServerEvents[i].Type);
Assert.AreEqual(1024, m_ServerEvents[i].Data.Count);
}
-
- yield return null;
}
#if !UTP_TRANSPORT_2_0_ABOVE
@@ -451,8 +441,6 @@ public IEnumerator SendQueuesFlushedOnShutdown([ValueSource("k_DeliveryParameter
m_Client1.Shutdown();
yield return WaitForNetworkEvent(NetworkEvent.Data, m_ServerEvents);
-
- yield return null;
}
[UnityTest]
@@ -472,8 +460,6 @@ public IEnumerator SendQueuesFlushedOnLocalClientDisconnect([ValueSource("k_Deli
m_Client1.DisconnectLocalClient();
yield return WaitForNetworkEvent(NetworkEvent.Data, m_ServerEvents);
-
- yield return null;
}
[UnityTest]
@@ -493,8 +479,6 @@ public IEnumerator SendQueuesFlushedOnRemoteClientDisconnect([ValueSource("k_Del
m_Server.DisconnectRemoteClient(m_ServerEvents[0].ClientID);
yield return WaitForNetworkEvent(NetworkEvent.Data, m_Client1Events);
-
- yield return null;
}
[UnityTest]
@@ -514,8 +498,6 @@ public IEnumerator ReliablePayloadsCanBeLargerThanMaximum()
m_Server.Send(m_Client1.ServerClientId, data, NetworkDelivery.Reliable);
yield return WaitForNetworkEvent(NetworkEvent.Data, m_Client1Events);
-
- yield return null;
}
}
}
diff --git a/testproject/Assets/Tests/Manual/SceneTransitioningAdditive/SceneTransitioningBase1.unity b/testproject/Assets/Tests/Manual/SceneTransitioningAdditive/SceneTransitioningBase1.unity
index b9af226321..bab567858b 100644
--- a/testproject/Assets/Tests/Manual/SceneTransitioningAdditive/SceneTransitioningBase1.unity
+++ b/testproject/Assets/Tests/Manual/SceneTransitioningAdditive/SceneTransitioningBase1.unity
@@ -13,7 +13,7 @@ OcclusionCullingSettings:
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
- serializedVersion: 9
+ serializedVersion: 10
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
@@ -38,13 +38,12 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
- m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
- serializedVersion: 12
- m_GIWorkflowMode: 1
+ serializedVersion: 13
+ m_BakeOnSceneLoad: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
@@ -67,9 +66,6 @@ LightmapSettings:
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
- m_FinalGather: 0
- m_FinalGatherFiltering: 1
- m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
@@ -104,7 +100,7 @@ NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
- serializedVersion: 2
+ serializedVersion: 3
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
@@ -117,7 +113,7 @@ NavMeshSettings:
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
- accuratePlacement: 0
+ buildHeightMesh: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
@@ -154,7 +150,6 @@ RectTransform:
m_Children:
- {fileID: 1351730454}
m_Father: {fileID: 290861172}
- m_RootOrder: 11
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -173,6 +168,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 475de064003ff104fb88b1fbccd0f417, type: 3}
m_Name:
m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
m_ActivateOnLoad: 0
m_SceneToLoad: AdditiveSceneMultiInstance
m_SceneAsset: {fileID: 102900000, guid: 0ae94f636016d3b40bfbecad57d99553, type: 3}
@@ -208,7 +204,6 @@ RectTransform:
m_Children:
- {fileID: 1347823142}
m_Father: {fileID: 290861172}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 0}
@@ -227,6 +222,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 244f0414ea8419b41ac51adb305d64b0, type: 3}
m_Name:
m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
m_SwitchSceneButtonObject: {fileID: 1347823141}
m_SceneToSwitchTo: SceneTransitioningBase2
m_EnableAutoSwitch: 0
@@ -245,10 +241,18 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 412081913
+ InScenePlacedSourceGlobalObjectIdHash: 0
+ DeferredDespawnTick: 0
+ Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
+ ActiveSceneSynchronization: 0
+ SceneMigrationSynchronization: 1
+ SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
+ SyncOwnerTransformWhenParented: 1
+ AllowOwnerToParent: 0
--- !u!1 &37242881
GameObject:
m_ObjectHideFlags: 0
@@ -274,9 +278,8 @@ Light:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 37242881}
m_Enabled: 1
- serializedVersion: 10
+ serializedVersion: 11
m_Type: 1
- m_Shape: 0
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
m_Range: 10
@@ -326,8 +329,12 @@ Light:
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
+ m_ForceVisible: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
+ m_LightUnit: 1
+ m_LuxAtDistance: 1
+ m_EnableSpotReflector: 1
--- !u!4 &37242883
Transform:
m_ObjectHideFlags: 0
@@ -335,13 +342,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 37242881}
+ serializedVersion: 2
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!224 &42803802 stripped
RectTransform:
@@ -381,7 +388,6 @@ RectTransform:
m_Children:
- {fileID: 1429502879}
m_Father: {fileID: 362129048}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
@@ -457,7 +463,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 362129048}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@@ -537,7 +542,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 212638130}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -609,9 +613,17 @@ BoxCollider:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 57392470}
m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
m_IsTrigger: 0
+ m_ProvidesContacts: 0
m_Enabled: 1
- serializedVersion: 2
+ serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &57392472
@@ -631,6 +643,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -671,13 +686,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 57392470}
+ serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -30.5, y: 0.49999994, z: 0}
m_LocalScale: {x: 1, y: 3, z: 62}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1332123092}
- m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &59926368
GameObject:
@@ -710,7 +725,6 @@ RectTransform:
m_Children:
- {fileID: 1651938367}
m_Father: {fileID: 290861172}
- m_RootOrder: 8
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -729,6 +743,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 475de064003ff104fb88b1fbccd0f417, type: 3}
m_Name:
m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
m_ActivateOnLoad: 0
m_SceneToLoad: AdditiveSceneMultiInstance
m_SceneAsset: {fileID: 102900000, guid: 0ae94f636016d3b40bfbecad57d99553, type: 3}
@@ -764,7 +779,6 @@ RectTransform:
m_Children:
- {fileID: 615497064}
m_Father: {fileID: 1351730454}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
@@ -840,7 +854,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1640896166}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@@ -965,7 +978,9 @@ Canvas:
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
+ m_VertexColorAlwaysGammaSpace: 0
m_AdditionalShaderChannelsFlag: 0
+ m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
@@ -983,7 +998,6 @@ RectTransform:
m_Children:
- {fileID: 1865409449}
m_Father: {fileID: 0}
- m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -1022,7 +1036,6 @@ RectTransform:
m_Children:
- {fileID: 57138324}
m_Father: {fileID: 1783165220}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
@@ -1143,7 +1156,9 @@ Canvas:
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
+ m_VertexColorAlwaysGammaSpace: 0
m_AdditionalShaderChannelsFlag: 0
+ m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
@@ -1175,7 +1190,6 @@ RectTransform:
- {fileID: 1362072618}
- {fileID: 1783165220}
m_Father: {fileID: 0}
- m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -1213,7 +1227,6 @@ RectTransform:
m_Children:
- {fileID: 362129048}
m_Father: {fileID: 290861172}
- m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -1232,6 +1245,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 475de064003ff104fb88b1fbccd0f417, type: 3}
m_Name:
m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
m_ActivateOnLoad: 0
m_SceneToLoad: AdditiveScene2
m_SceneAsset: {fileID: 102900000, guid: c6a3d883c8253ee43bca4f2b03797d7b, type: 3}
@@ -1267,7 +1281,6 @@ RectTransform:
- {fileID: 1689223598}
- {fileID: 1638885888}
m_Father: {fileID: 884557066}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -1362,9 +1375,17 @@ BoxCollider:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 336568645}
m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
m_IsTrigger: 0
+ m_ProvidesContacts: 0
m_Enabled: 1
- serializedVersion: 2
+ serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &336568647
@@ -1384,6 +1405,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -1424,13 +1448,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 336568645}
+ serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: -0.50000006, z: 0}
m_LocalScale: {x: 60, y: 1, z: 60}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1332123092}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &348836178
GameObject:
@@ -1463,7 +1487,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2084811628}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -1540,7 +1563,6 @@ RectTransform:
- {fileID: 44393280}
- {fileID: 57065842}
m_Father: {fileID: 291820796}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -1640,7 +1662,6 @@ RectTransform:
m_Children:
- {fileID: 432733929}
m_Father: {fileID: 1651938367}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
@@ -1716,7 +1737,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 418148061}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -1792,7 +1812,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2079590080}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -1868,7 +1887,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2058276876}
- m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -1957,9 +1975,17 @@ Camera:
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
+ m_Iso: 200
+ m_ShutterSpeed: 0.005
+ m_Aperture: 16
+ m_FocusDistance: 10
+ m_FocalLength: 50
+ m_BladeCount: 5
+ m_Curvature: {x: 2, y: 11}
+ m_BarrelClipping: 0.25
+ m_Anamorphism: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
- m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
@@ -1993,13 +2019,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 575203307}
+ serializedVersion: 2
m_LocalRotation: {x: 0.41890106, y: -0, z: -0, w: 0.9080319}
m_LocalPosition: {x: 0, y: 42, z: -46}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 49.530003, y: 0, z: 0}
--- !u!1 &599972120
GameObject:
@@ -2032,7 +2058,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1588117328}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@@ -2112,7 +2137,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 125866603}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -2188,7 +2212,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1362072618}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@@ -2268,7 +2291,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1783165220}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@@ -2348,7 +2370,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1290928583}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -2424,7 +2445,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1398648428}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -2500,7 +2520,6 @@ RectTransform:
m_Children:
- {fileID: 300124662}
m_Father: {fileID: 290861172}
- m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -2519,6 +2538,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 475de064003ff104fb88b1fbccd0f417, type: 3}
m_Name:
m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
m_ActivateOnLoad: 0
m_SceneToLoad: AdditiveScene1
m_SceneAsset: {fileID: 102900000, guid: 41a0239b0c49e2047b7063c822f0df8a, type: 3}
@@ -2529,8 +2549,7 @@ LightingSettings:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
- serializedVersion: 4
- m_GIWorkflowMode: 1
+ serializedVersion: 9
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_RealtimeEnvironmentLighting: 1
@@ -2540,6 +2559,8 @@ LightingSettings:
m_UsingShadowmask: 1
m_BakeBackend: 1
m_LightmapMaxSize: 1024
+ m_LightmapSizeFixed: 0
+ m_UseMipmapLimits: 1
m_BakeResolution: 40
m_Padding: 2
m_LightmapCompression: 3
@@ -2553,13 +2574,11 @@ LightingSettings:
m_FilterMode: 1
m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
m_ExportTrainingData: 0
+ m_EnableWorkerProcessBaking: 1
m_TrainingDataDestination: TrainingData
m_RealtimeResolution: 2
m_ForceWhiteAlbedo: 0
m_ForceUpdates: 0
- m_FinalGather: 0
- m_FinalGatherRayCount: 256
- m_FinalGatherFiltering: 1
m_PVRCulling: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
@@ -2568,8 +2587,8 @@ LightingSettings:
m_PVREnvironmentReferencePointCount: 2048
m_LightProbeSampleCountMultiplier: 4
m_PVRBounces: 2
- m_PVRMinBounces: 1
- m_PVREnvironmentMIS: 1
+ m_PVRMinBounces: 2
+ m_PVREnvironmentImportanceSampling: 1
m_PVRFilteringMode: 1
m_PVRDenoiserTypeDirect: 1
m_PVRDenoiserTypeIndirect: 1
@@ -2583,7 +2602,7 @@ LightingSettings:
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
- m_PVRTiledBaking: 0
+ m_RespectSceneVisibilityWhenBakingGI: 0
--- !u!1 &906714043
GameObject:
m_ObjectHideFlags: 0
@@ -2615,7 +2634,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2019086800}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@@ -2669,6 +2687,7 @@ PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
+ serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4518755925279129984, guid: 3a854a190ab5b1b4fb00bec725fdda9e,
@@ -2731,6 +2750,11 @@ PrefabInstance:
propertyPath: GlobalObjectIdHash
value: 3537583461
objectReference: {fileID: 0}
+ - target: {fileID: 4518755925279129985, guid: 3a854a190ab5b1b4fb00bec725fdda9e,
+ type: 3}
+ propertyPath: InScenePlacedSourceGlobalObjectIdHash
+ value: 225455949
+ objectReference: {fileID: 0}
- target: {fileID: 4518755925279129986, guid: 3a854a190ab5b1b4fb00bec725fdda9e,
type: 3}
propertyPath: m_Name
@@ -2742,6 +2766,9 @@ PrefabInstance:
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 3a854a190ab5b1b4fb00bec725fdda9e, type: 3}
--- !u!1 &1008611498
GameObject:
@@ -2774,7 +2801,6 @@ RectTransform:
m_Children:
- {fileID: 1640896166}
m_Father: {fileID: 290861172}
- m_RootOrder: 9
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -2793,6 +2819,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 475de064003ff104fb88b1fbccd0f417, type: 3}
m_Name:
m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
m_ActivateOnLoad: 0
m_SceneToLoad: AdditiveSceneMultiInstance
m_SceneAsset: {fileID: 102900000, guid: 0ae94f636016d3b40bfbecad57d99553, type: 3}
@@ -2828,8 +2855,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3}
m_Name:
m_EditorClassIdentifier:
- RunInBackground: 1
- LogLevel: 1
+ NetworkManagerExpanded: 0
NetworkConfig:
ProtocolVersion: 0
NetworkTransport: {fileID: 1024114723}
@@ -2852,6 +2878,10 @@ MonoBehaviour:
LoadSceneTimeOut: 120
SpawnTimeout: 1
EnableNetworkLogs: 1
+ NetworkTopology: 0
+ UseCMBService: 0
+ AutoSpawnPlayerPrefabClientSide: 1
+ NetworkProfilingMetrics: 1
OldPrefabList:
- Override: 0
Prefab: {fileID: 771575417923360811, guid: c0a45bdb516f341498d933b7a7ed4fc1,
@@ -2903,6 +2933,8 @@ MonoBehaviour:
SourcePrefabToOverride: {fileID: 0}
SourceHashToOverride: 0
OverridingTargetPrefab: {fileID: 0}
+ RunInBackground: 1
+ LogLevel: 1
--- !u!4 &1024114720
Transform:
m_ObjectHideFlags: 0
@@ -2910,13 +2942,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1024114717}
+ serializedVersion: 2
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: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1024114721
MonoBehaviour:
@@ -2957,6 +2989,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_ProtocolType: 0
+ m_UseWebSockets: 0
+ m_UseEncryption: 0
m_MaxPacketQueueSize: 128
m_MaxPayloadSize: 512000
m_HeartbeatTimeoutMS: 500
@@ -3001,6 +3035,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 8c48ea35c67e64f7fac22a3f6831ca88, type: 3}
m_Name:
m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
AutoSpawnEnable: 1
InitialSpawnDelay: 0.2
SpawnsPerSecond: 1
@@ -3027,13 +3062,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1113539278}
+ serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.5, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1113539281
MonoBehaviour:
@@ -3048,10 +3083,18 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 1983031731
+ InScenePlacedSourceGlobalObjectIdHash: 0
+ DeferredDespawnTick: 0
+ Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
+ ActiveSceneSynchronization: 0
+ SceneMigrationSynchronization: 1
+ SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
+ SyncOwnerTransformWhenParented: 1
+ AllowOwnerToParent: 0
--- !u!1 &1187680249
GameObject:
m_ObjectHideFlags: 0
@@ -3083,7 +3126,6 @@ RectTransform:
m_Children:
- {fileID: 2019086800}
m_Father: {fileID: 290861172}
- m_RootOrder: 10
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -3102,6 +3144,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 475de064003ff104fb88b1fbccd0f417, type: 3}
m_Name:
m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
m_ActivateOnLoad: 0
m_SceneToLoad: AdditiveSceneMultiInstance
m_SceneAsset: {fileID: 102900000, guid: 0ae94f636016d3b40bfbecad57d99553, type: 3}
@@ -3136,7 +3179,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1651938367}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@@ -3217,7 +3259,6 @@ RectTransform:
m_Children:
- {fileID: 833301795}
m_Father: {fileID: 1640896166}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
@@ -3285,6 +3326,7 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1332123091}
+ serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.000000059604645, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
@@ -3296,7 +3338,6 @@ Transform:
- {fileID: 57392474}
- {fileID: 1336081255}
m_Father: {fileID: 0}
- m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1336081251
GameObject:
@@ -3325,9 +3366,17 @@ BoxCollider:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1336081251}
m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
m_IsTrigger: 0
+ m_ProvidesContacts: 0
m_Enabled: 1
- serializedVersion: 2
+ serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &1336081253
@@ -3347,6 +3396,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -3387,13 +3439,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1336081251}
+ serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 30.5, y: 0.49999994, z: 0}
m_LocalScale: {x: 1, y: 3, z: 62}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1332123092}
- m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1336892118
GameObject:
@@ -3426,7 +3478,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1351730454}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@@ -3508,7 +3559,6 @@ RectTransform:
m_Children:
- {fileID: 1846334315}
m_Father: {fileID: 34066665}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 0}
@@ -3641,7 +3691,6 @@ RectTransform:
- {fileID: 125866603}
- {fileID: 1336892119}
m_Father: {fileID: 19371290}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -3741,7 +3790,6 @@ RectTransform:
- {fileID: 2084811628}
- {fileID: 703861692}
m_Father: {fileID: 290861172}
- m_RootOrder: 13
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -3840,7 +3888,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 290861172}
- m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0}
m_AnchorMax: {x: 1, y: 0}
@@ -3919,7 +3966,6 @@ RectTransform:
m_Children:
- {fileID: 1523424137}
m_Father: {fileID: 2058276876}
- m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@@ -3958,7 +4004,6 @@ RectTransform:
m_Children:
- {fileID: 865202802}
m_Father: {fileID: 2019086800}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
@@ -4034,7 +4079,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 44393280}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -4111,7 +4155,6 @@ RectTransform:
- {fileID: 2079590080}
- {fileID: 1489972349}
m_Father: {fileID: 290861172}
- m_RootOrder: 12
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -4210,7 +4253,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1456950069}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@@ -4290,7 +4332,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1387688805}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -4366,7 +4407,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1889006547}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -4444,7 +4484,6 @@ RectTransform:
m_Children:
- {fileID: 599972121}
m_Father: {fileID: 290861172}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -4576,7 +4615,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 300124662}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@@ -4657,7 +4695,6 @@ RectTransform:
- {fileID: 1290928583}
- {fileID: 163541782}
m_Father: {fileID: 1008611499}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -4757,7 +4794,6 @@ RectTransform:
- {fileID: 418148061}
- {fileID: 1210784442}
m_Father: {fileID: 59926369}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -4857,7 +4893,6 @@ RectTransform:
m_Children:
- {fileID: 1691305196}
m_Father: {fileID: 300124662}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
@@ -4933,7 +4968,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1689223598}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -5010,7 +5044,6 @@ RectTransform:
- {fileID: 212638130}
- {fileID: 725420114}
m_Father: {fileID: 290861172}
- m_RootOrder: 14
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -5138,13 +5171,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1834318145}
+ serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -431, y: -242.5, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 290861172}
- m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1846334314
GameObject:
@@ -5177,7 +5210,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1347823142}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
@@ -5253,9 +5285,17 @@ BoxCollider:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1857685343}
m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
m_IsTrigger: 0
+ m_ProvidesContacts: 0
m_Enabled: 1
- serializedVersion: 2
+ serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &1857685345
@@ -5275,6 +5315,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -5315,19 +5358,20 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1857685343}
+ serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0.49999994, z: -30.5}
m_LocalScale: {x: 60, y: 3, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1332123092}
- m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1865409448
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
+ serializedVersion: 3
m_TransformParent: {fileID: 167044834}
m_Modifications:
- target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84,
@@ -5441,6 +5485,9 @@ PrefabInstance:
value: ConnectionModeButtons
objectReference: {fileID: 0}
m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d725b5588e1b956458798319e6541d84, type: 3}
--- !u!224 &1865409449 stripped
RectTransform:
@@ -5478,7 +5525,6 @@ RectTransform:
m_Children:
- {fileID: 1549858059}
m_Father: {fileID: 2058276876}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.25}
m_AnchorMax: {x: 1, y: 0.75}
@@ -5517,7 +5563,6 @@ RectTransform:
- {fileID: 1398648428}
- {fileID: 906714044}
m_Father: {fileID: 1187680250}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -5616,7 +5661,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2058276876}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.25}
m_AnchorMax: {x: 1, y: 0.75}
@@ -5688,9 +5732,17 @@ BoxCollider:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2028091268}
m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
m_IsTrigger: 0
+ m_ProvidesContacts: 0
m_Enabled: 1
- serializedVersion: 2
+ serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &2028091270
@@ -5710,6 +5762,9 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -5750,13 +5805,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2028091268}
+ serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0.49999994, z: 30.5}
m_LocalScale: {x: 60, y: 3, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1332123092}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2058276875
GameObject:
@@ -5792,7 +5847,6 @@ RectTransform:
- {fileID: 1387688805}
- {fileID: 562991979}
m_Father: {fileID: 290861172}
- m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
@@ -5894,7 +5948,6 @@ RectTransform:
m_Children:
- {fileID: 441263735}
m_Father: {fileID: 1456950069}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
@@ -5971,7 +6024,6 @@ RectTransform:
m_Children:
- {fileID: 348836179}
m_Father: {fileID: 1362072618}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
@@ -6041,13 +6093,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2107482020}
+ serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 318.45444, y: 110.697815, z: 216.79077}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2107482022
MonoBehaviour:
@@ -6061,6 +6113,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: cb5f3e55f5dd247129d8a4979b80ebbb, type: 3}
m_Name:
m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
m_ClientServerToggle: {fileID: 1588117327}
m_TrackSceneEvents: 1
--- !u!114 &2107482023
@@ -6076,15 +6129,24 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 3197939627
+ InScenePlacedSourceGlobalObjectIdHash: 0
+ DeferredDespawnTick: 0
+ Ownership: 1
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
+ ActiveSceneSynchronization: 0
+ SceneMigrationSynchronization: 1
+ SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
+ SyncOwnerTransformWhenParented: 1
+ AllowOwnerToParent: 0
--- !u!1001 &2848221156282925290
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
+ serializedVersion: 3
m_TransformParent: {fileID: 290861172}
m_Modifications:
- target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7,
@@ -6244,4 +6306,20 @@ PrefabInstance:
objectReference: {fileID: 11400000, guid: c10d995498e0c514a853c3506031d3fb,
type: 2}
m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3}
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 575203310}
+ - {fileID: 37242883}
+ - {fileID: 1024114720}
+ - {fileID: 167044834}
+ - {fileID: 290861172}
+ - {fileID: 1113539280}
+ - {fileID: 1332123092}
+ - {fileID: 2107482021}
+ - {fileID: 960545998}