From 500f2be18805a16fead8ba9bcb96d8c333ca739f Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Fri, 24 Nov 2023 17:59:21 -0600 Subject: [PATCH 01/24] fix This resolves an issue with mixing reliable and unreliable messages that could impact teleporting if a state delta was sent prior to teleporting on the same NetworkTick within the same frame. --- .../Components/NetworkTransform.cs | 86 +++++++++++++------ 1 file changed, 58 insertions(+), 28 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index 3fd3436352..7535b5f18c 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -1506,12 +1506,14 @@ protected virtual void OnAuthorityPushTransformState(ref NetworkTransformState n // to assure the instance doesn't continue to send axial synchs when an object is at rest. private bool m_DeltaSynch; + private NetworkTransformState m_SetNetworkTransformState; + /// /// Authoritative side only /// If there are any transform delta states, this method will synchronize the /// state with all non-authority instances. /// - private void TryCommitTransform(ref Transform transformToCommit, bool synchronize = false) + private void TryCommitTransform(ref Transform transformToCommit, bool synchronize = false, bool settingState = false) { // Only the server or the owner is allowed to commit a transform if (!IsServer && !IsOwner) @@ -1520,14 +1522,33 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz return; } + // We only are concerned about deferred state updates when UseUnreliableDeltas is set. The scenario that can happen is if you send an unreliable state update + // on the same tick as a reliable teleport state update, then the teleport state (on the receiving side) can be processed before the unreliable delta state update. + // This can cause an undesirable out of synch period. To avoid this, we just defer teleport state updates to the next tick and do not check for deltas for that tick. + var setStateThisTick = UseUnreliableDeltas && (m_SetNetworkTransformState.NetworkTick == m_CachedNetworkManager.ServerTime.Tick) && !synchronize; + // If the transform has deltas (returns dirty) then... - if (ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToCommit, synchronize)) + if (setStateThisTick || ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToCommit, synchronize)) { + // If we are setting state, teleporting, and we arrived on a tick that we have already sent a delta state update for, then defer to next tick. + if (UseUnreliableDeltas && settingState && !setStateThisTick && m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame && m_LastTick == m_CachedNetworkManager.ServerTime.Tick) + { + m_SetNetworkTransformState = m_LocalAuthoritativeNetworkState; + m_SetNetworkTransformState.NetworkTick = m_CachedNetworkManager.ServerTime.Tick + 1; + return; + } + m_LocalAuthoritativeNetworkState.LastSerializedSize = m_OldState.LastSerializedSize; // Make sure our network tick is incremented if (m_LastTick == m_LocalAuthoritativeNetworkState.NetworkTick && !m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame) { + // If our last state was teleporting and we were not synchronizing, then ignore this update + if (m_OldState.IsTeleportingNextFrame && !m_OldState.IsSynchronizing) + { + m_OldState = m_LocalAuthoritativeNetworkState; + return; + } // When running in authority and a remote client is the owner, the client can hit a perfect window of time where // it is still on the previous network tick (as a count) but still have had the tick event triggered. // (This is cheaper than calculating the exact tick each time and only can occur on clients) @@ -1535,25 +1556,25 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz { m_LocalAuthoritativeNetworkState.NetworkTick = m_LocalAuthoritativeNetworkState.NetworkTick + 1; } - else // If we are sending unreliable deltas this could happen with (axial) frame synch - if (!UseUnreliableDeltas) - { - NetworkLog.LogError($"[NT TICK DUPLICATE] Server already sent an update on tick {m_LastTick} and is attempting to send again on the same network tick!"); - } } m_LastTick = m_LocalAuthoritativeNetworkState.NetworkTick; // Update the state UpdateTransformState(); - // When sending unreliable traffic, we send 1 full (axial) frame synch every nth tick - // which is based on tick rate and each instance's (axial) frame synch is distributed - // across the ticks per second span (excluding initial synchronization). + // This is where we assure that we will only send a frame synch if sending unreliable deltas and + // we have already sent at least one unreliable delta state update. At this point in the callstack + // we have just finished sending the delta state update in the above UpdateTransformState() call, + // and as long as we didn't send a synch and we are not synchronizing then we know at least one + // unreliable delta has been sent so we should start checking for this instance's alloted frame + // synch "tick slot". Upon sending a frame synch, if no other deltas occur after that (i.e. the + // object is at rest) we will stop sending frame synch's until the object beings moving again. if (UseUnreliableDeltas && !m_LocalAuthoritativeNetworkState.UnreliableFrameSync && !synchronize) { m_DeltaSynch = true; } OnAuthorityPushTransformState(ref m_LocalAuthoritativeNetworkState); + m_OldState = m_LocalAuthoritativeNetworkState; m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame = false; } } @@ -1619,13 +1640,16 @@ private bool ApplyTransformToNetworkStateWithInfo(ref NetworkTransformState netw // each NetworkTransform will stagger their axial synchronization over a 1 second period based on their // assigned tick synchronization (m_TickSync) value. var isAxisSync = false; - if (!networkState.IsTeleportingNextFrame && !isSynchronization && m_DeltaSynch && UseUnreliableDeltas) + if (UseUnreliableDeltas && !networkState.IsTeleportingNextFrame && !isSynchronization && m_DeltaSynch) { - var modTick = m_CachedNetworkManager.ServerTime.Tick % m_CachedNetworkManager.NetworkConfig.TickRate; - isAxisSync = modTick == m_TickSync; - - if (isAxisSync) + if ((m_TickSync + m_CachedNetworkManager.NetworkConfig.TickRate) <= m_CachedNetworkManager.ServerTime.Tick) { + // Increment to the the current frame synch tick position for this instance + m_TickSync += m_CachedNetworkManager.NetworkConfig.TickRate; + // If we are teleporting, we do not need to send a frame synch for this tick slot + isAxisSync = !networkState.IsTeleportingNextFrame; + // Reset our delta synch trigger so we don't send another frame synch until we + // send at least 1 unreliable state update m_DeltaSynch = false; } } @@ -2224,7 +2248,6 @@ private void ApplyTeleportingState(NetworkTransformState newState) { currentPosition.z = newState.PositionZ; } - UpdatePositionInterpolator(currentPosition, sentTime, true); } else { @@ -2255,12 +2278,6 @@ private void ApplyTeleportingState(NetworkTransformState newState) // set the current position to the state's current position currentPosition = newState.CurrentPosition; } - - if (Interpolate) - { - UpdatePositionInterpolator(currentPosition, sentTime, true); - } - } m_CurrentPosition = currentPosition; @@ -2275,6 +2292,11 @@ private void ApplyTeleportingState(NetworkTransformState newState) { transform.position = currentPosition; } + + if (Interpolate) + { + UpdatePositionInterpolator(currentPosition, sentTime, true); + } } if (newState.HasScaleChange) @@ -2317,10 +2339,14 @@ private void ApplyTeleportingState(NetworkTransformState newState) m_CurrentScale = currentScale; m_TargetScale = currentScale; - m_ScaleInterpolator.ResetTo(currentScale, sentTime); // Apply the adjusted scale transform.localScale = currentScale; + + if (Interpolate) + { + m_ScaleInterpolator.ResetTo(currentScale, sentTime); + } } if (newState.HasRotAngleChange) @@ -2351,7 +2377,6 @@ private void ApplyTeleportingState(NetworkTransformState newState) m_CurrentRotation = currentRotation; m_TargetRotation = currentRotation.eulerAngles; - m_RotationInterpolator.ResetTo(currentRotation, sentTime); if (InLocalSpace) { @@ -2361,6 +2386,11 @@ private void ApplyTeleportingState(NetworkTransformState newState) { transform.rotation = currentRotation; } + + if (Interpolate) + { + m_RotationInterpolator.ResetTo(currentRotation, sentTime); + } } // Add log after to applying the update if AddLogEntry is defined @@ -2949,7 +2979,7 @@ private void SetStateInternal(Vector3 pos, Quaternion rot, Vector3 scale, bool s transform.localScale = scale; m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame = shouldTeleport; var transformToCommit = transform; - TryCommitTransform(ref transformToCommit); + TryCommitTransform(ref transformToCommit, settingState: UseUnreliableDeltas); } /// @@ -3261,13 +3291,13 @@ public NetworkTransformTickRegistration(NetworkManager networkManager) } } } - private static int s_TickSynchPosition; - private int m_TickSync; + private static uint s_TickSynchPosition; + private uint m_TickSync; internal void RegisterForTickSynchronization() { s_TickSynchPosition++; - s_TickSynchPosition = s_TickSynchPosition % (int)NetworkManager.NetworkConfig.TickRate; + s_TickSynchPosition = s_TickSynchPosition % NetworkManager.NetworkConfig.TickRate; m_TickSync = s_TickSynchPosition; } From f33a749a5eb37428ee4b7e2bab58dcc3ec0fab58 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Fri, 24 Nov 2023 18:02:49 -0600 Subject: [PATCH 02/24] style adjusting comment for clarity --- com.unity.netcode.gameobjects/Components/NetworkTransform.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index 7535b5f18c..473aad4751 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -1540,10 +1540,10 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz m_LocalAuthoritativeNetworkState.LastSerializedSize = m_OldState.LastSerializedSize; - // Make sure our network tick is incremented + // Check if we are sending on the same network tick as the last NetworkTransformState update if (m_LastTick == m_LocalAuthoritativeNetworkState.NetworkTick && !m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame) { - // If our last state was teleporting and we were not synchronizing, then ignore this update + // If our last state update was a teleport and we were not synchronizing, then ignore this update if (m_OldState.IsTeleportingNextFrame && !m_OldState.IsSynchronizing) { m_OldState = m_LocalAuthoritativeNetworkState; From 7f900f4121ff14f7ebaf89eb2cf3f6b49320f8ba Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Fri, 24 Nov 2023 19:14:29 -0600 Subject: [PATCH 03/24] update increasing time out period --- .../NetworkTransform/NetworkTransformTests.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs index 6111581e14..1c8e563163 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs @@ -978,11 +978,11 @@ public void TestAuthoritativeTransformChangeOneAtATime([Values] TransformSpace t if (overideState != OverrideState.Update) { // Wait for the deltas to be pushed - success = WaitForConditionOrTimeOutWithTimeTravel(() => m_AuthoritativeTransform.StatePushed); + success = WaitForConditionOrTimeOutWithTimeTravel(() => m_AuthoritativeTransform.StatePushed, 600); Assert.True(success, $"[Position] Timed out waiting for state to be pushed ({m_AuthoritativeTransform.StatePushed})!"); } - success = WaitForConditionOrTimeOutWithTimeTravel(() => PositionsMatch()); + success = WaitForConditionOrTimeOutWithTimeTravel(() => PositionsMatch(), 600); Assert.True(success, $"Timed out waiting for positions to match {m_AuthoritativeTransform.transform.position} | {m_NonAuthoritativeTransform.transform.position}"); // test rotation @@ -1002,12 +1002,12 @@ public void TestAuthoritativeTransformChangeOneAtATime([Values] TransformSpace t if (overideState != OverrideState.Update) { // Wait for the deltas to be pushed - success = WaitForConditionOrTimeOutWithTimeTravel(() => m_AuthoritativeTransform.StatePushed); + success = WaitForConditionOrTimeOutWithTimeTravel(() => m_AuthoritativeTransform.StatePushed, 600); Assert.True(success, $"[Rotation] Timed out waiting for state to be pushed ({m_AuthoritativeTransform.StatePushed})!"); } // Make sure the values match - success = WaitForConditionOrTimeOutWithTimeTravel(() => RotationsMatch()); + success = WaitForConditionOrTimeOutWithTimeTravel(() => RotationsMatch(), 600); Assert.True(success, $"Timed out waiting for rotations to match"); m_AuthoritativeTransform.StatePushed = false; @@ -1024,12 +1024,12 @@ public void TestAuthoritativeTransformChangeOneAtATime([Values] TransformSpace t if (overideState != OverrideState.Update) { // Wait for the deltas to be pushed - success = WaitForConditionOrTimeOutWithTimeTravel(() => m_AuthoritativeTransform.StatePushed); + success = WaitForConditionOrTimeOutWithTimeTravel(() => m_AuthoritativeTransform.StatePushed, 600); Assert.True(success, $"[Rotation] Timed out waiting for state to be pushed ({m_AuthoritativeTransform.StatePushed})!"); } // Make sure the scale values match - success = WaitForConditionOrTimeOutWithTimeTravel(() => ScaleValuesMatch()); + success = WaitForConditionOrTimeOutWithTimeTravel(() => ScaleValuesMatch(), 600); Assert.True(success, $"Timed out waiting for scale values to match"); } From ea68a6cff0ad897695a2edab8058aad7f1ccebe9 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Sat, 25 Nov 2023 14:46:17 -0600 Subject: [PATCH 04/24] update Did some clean up and fixed some issues with the one at a time NetworkTransformTest. Renamed m_SetNetworkTransformState to TeleportingNetworkTransformState and made it internal for testing purposes. --- .../Components/NetworkTransform.cs | 8 +- .../NetworkTransform/NetworkTransformTests.cs | 88 +++++++++++++------ 2 files changed, 67 insertions(+), 29 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index 473aad4751..c63b2eef25 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -1506,7 +1506,7 @@ protected virtual void OnAuthorityPushTransformState(ref NetworkTransformState n // to assure the instance doesn't continue to send axial synchs when an object is at rest. private bool m_DeltaSynch; - private NetworkTransformState m_SetNetworkTransformState; + internal NetworkTransformState TeleportingNetworkTransformState; /// /// Authoritative side only @@ -1525,7 +1525,7 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz // We only are concerned about deferred state updates when UseUnreliableDeltas is set. The scenario that can happen is if you send an unreliable state update // on the same tick as a reliable teleport state update, then the teleport state (on the receiving side) can be processed before the unreliable delta state update. // This can cause an undesirable out of synch period. To avoid this, we just defer teleport state updates to the next tick and do not check for deltas for that tick. - var setStateThisTick = UseUnreliableDeltas && (m_SetNetworkTransformState.NetworkTick == m_CachedNetworkManager.ServerTime.Tick) && !synchronize; + var setStateThisTick = UseUnreliableDeltas && (TeleportingNetworkTransformState.NetworkTick == m_CachedNetworkManager.ServerTime.Tick) && !synchronize; // If the transform has deltas (returns dirty) then... if (setStateThisTick || ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToCommit, synchronize)) @@ -1533,8 +1533,8 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz // If we are setting state, teleporting, and we arrived on a tick that we have already sent a delta state update for, then defer to next tick. if (UseUnreliableDeltas && settingState && !setStateThisTick && m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame && m_LastTick == m_CachedNetworkManager.ServerTime.Tick) { - m_SetNetworkTransformState = m_LocalAuthoritativeNetworkState; - m_SetNetworkTransformState.NetworkTick = m_CachedNetworkManager.ServerTime.Tick + 1; + TeleportingNetworkTransformState = m_LocalAuthoritativeNetworkState; + TeleportingNetworkTransformState.NetworkTick = m_CachedNetworkManager.ServerTime.Tick + 1; return; } diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs index 1c8e563163..29db8ca526 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs @@ -18,10 +18,15 @@ public class NetworkTransformTestComponent : NetworkTransform public NetworkTransformState AuthorityLastSentState; public bool StatePushed { get; internal set; } + public delegate void AuthorityPushedTransformStateDelegateHandler(ref NetworkTransformState networkTransformState); + + public event AuthorityPushedTransformStateDelegateHandler AuthorityPushedTransformState; + protected override void OnAuthorityPushTransformState(ref NetworkTransformState networkTransformState) { StatePushed = true; AuthorityLastSentState = networkTransformState; + AuthorityPushedTransformState?.Invoke(ref networkTransformState); base.OnAuthorityPushTransformState(ref networkTransformState); } @@ -963,19 +968,29 @@ public void TestAuthoritativeTransformChangeOneAtATime([Values] TransformSpace t m_AuthoritativeTransform.StatePushed = false; var nextPosition = GetRandomVector3(2f, 30f); - m_AuthoritativeTransform.transform.position = nextPosition; - if (overideState != OverrideState.SetState) - { - authPlayerTransform.position = nextPosition; - m_OwnerTransform.CommitToTransform(); - } - else + + switch (overideState) { - m_OwnerTransform.SetState(nextPosition, null, null, m_AuthoritativeTransform.Interpolate); + case OverrideState.Update: + { + m_AuthoritativeTransform.transform.position = nextPosition; + break; + } + case OverrideState.SetState: + { + m_OwnerTransform.SetState(nextPosition, null, null); + break; + } + case OverrideState.CommitToTransform: + { + m_OwnerTransform.transform.position = nextPosition; + m_OwnerTransform.CommitToTransform(); + break; + } } bool success; - if (overideState != OverrideState.Update) + if (overideState == OverrideState.CommitToTransform) { // Wait for the deltas to be pushed success = WaitForConditionOrTimeOutWithTimeTravel(() => m_AuthoritativeTransform.StatePushed, 600); @@ -990,16 +1005,27 @@ public void TestAuthoritativeTransformChangeOneAtATime([Values] TransformSpace t m_AuthoritativeTransform.StatePushed = false; var nextRotation = Quaternion.Euler(GetRandomVector3(5, 60)); // using euler angles instead of quaternions directly to really see issues users might encounter - if (overideState != OverrideState.SetState) - { - authPlayerTransform.rotation = nextRotation; - m_OwnerTransform.CommitToTransform(); - } - else + switch (overideState) { - m_OwnerTransform.SetState(null, nextRotation, null, m_AuthoritativeTransform.Interpolate); + case OverrideState.Update: + { + m_AuthoritativeTransform.transform.rotation = nextRotation; + break; + } + case OverrideState.SetState: + { + m_OwnerTransform.SetState(null, nextRotation, null); + break; + } + case OverrideState.CommitToTransform: + { + m_OwnerTransform.transform.rotation = nextRotation; + m_OwnerTransform.CommitToTransform(); + break; + } } - if (overideState != OverrideState.Update) + + if (overideState == OverrideState.CommitToTransform) { // Wait for the deltas to be pushed success = WaitForConditionOrTimeOutWithTimeTravel(() => m_AuthoritativeTransform.StatePushed, 600); @@ -1012,16 +1038,28 @@ public void TestAuthoritativeTransformChangeOneAtATime([Values] TransformSpace t m_AuthoritativeTransform.StatePushed = false; var nextScale = GetRandomVector3(1, 6); - if (overrideUpdate) - { - authPlayerTransform.localScale = nextScale; - m_OwnerTransform.CommitToTransform(); - } - else + + switch (overideState) { - m_OwnerTransform.SetState(null, null, nextScale, m_AuthoritativeTransform.Interpolate); + case OverrideState.Update: + { + m_AuthoritativeTransform.transform.localScale = nextScale; + break; + } + case OverrideState.SetState: + { + m_OwnerTransform.SetState(null, null, nextScale); + break; + } + case OverrideState.CommitToTransform: + { + m_OwnerTransform.transform.localScale = nextScale; + m_OwnerTransform.CommitToTransform(); + break; + } } - if (overideState != OverrideState.Update) + + if (overideState == OverrideState.CommitToTransform) { // Wait for the deltas to be pushed success = WaitForConditionOrTimeOutWithTimeTravel(() => m_AuthoritativeTransform.StatePushed, 600); From 67665549f6cd64f7a40f312e5818f53c704452ca Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Sat, 25 Nov 2023 14:48:13 -0600 Subject: [PATCH 05/24] test Cleaned up the packet loss test and running it at the default tick rate. Added a test to validate that when teleporting on the same tick and frame that an unreliable delta state update was sent that the teleport state update is deferred to the next tick. --- .../NetworkTransformPacketLossTests.cs | 139 +++++++----------- 1 file changed, 57 insertions(+), 82 deletions(-) diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs index 824546084a..43be914675 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs @@ -1,6 +1,7 @@ using System.Collections; using System.Text; using NUnit.Framework; +using Unity.Netcode.Components; using Unity.Netcode.TestHelpers.Runtime; using UnityEngine; using UnityEngine.TestTools; @@ -18,6 +19,9 @@ namespace Unity.Netcode.RuntimeTests public class NetworkTransformPacketLossTests : IntegrationTestWithApproximation { + private const int k_Latency = 50; + private const int k_PacketLoss = 2; + private NetworkObject m_AuthoritativePlayer; private NetworkObject m_NonAuthoritativePlayer; private NetworkObject m_ChildObject; @@ -106,21 +110,6 @@ public NetworkTransformPacketLossTests(HostOrServer testWithHost, Authority auth protected override bool m_SetupIsACoroutine => false; protected override bool m_TearDownIsACoroutine => false; - private const int k_TickRate = 60; - private int m_OriginalTargetFrameRate; - protected override void OnOneTimeSetup() - { - m_OriginalTargetFrameRate = Application.targetFrameRate; - Application.targetFrameRate = 120; - base.OnOneTimeSetup(); - } - - protected override void OnOneTimeTearDown() - { - Application.targetFrameRate = m_OriginalTargetFrameRate; - base.OnOneTimeTearDown(); - } - protected override void OnInlineSetup() { NetworkTransformTestComponent.AuthorityInstance = null; @@ -140,8 +129,6 @@ protected override void OnCreatePlayerPrefab() networkTransformTestComponent.ServerAuthority = m_Authority == Authority.ServerAuthority; } - private const int k_Latency = 50; - private const int k_PacketLoss = 2; protected override void OnServerAndClientsCreated() { var subChildObject = CreateNetworkObjectPrefab("SubChildObject"); @@ -181,14 +168,8 @@ protected override void OnServerAndClientsCreated() } } - m_ServerNetworkManager.NetworkConfig.TickRate = k_TickRate; - var unityTransport = m_ServerNetworkManager.NetworkConfig.NetworkTransport as Transports.UTP.UnityTransport; unityTransport.SetDebugSimulatorParameters(k_Latency, 0, k_PacketLoss); - foreach (var clientNetworkManager in m_ClientNetworkManagers) - { - clientNetworkManager.NetworkConfig.TickRate = k_TickRate; - } } protected override IEnumerator OnServerAndClientsConnected() @@ -557,7 +538,6 @@ private void MoveRotateAndScaleAuthority(Vector3 position, Vector3 rotation, Vec protected override void OnNewClientCreated(NetworkManager networkManager) { networkManager.NetworkConfig.Prefabs = m_ServerNetworkManager.NetworkConfig.Prefabs; - networkManager.NetworkConfig.TickRate = k_TickRate; base.OnNewClientCreated(networkManager); } @@ -818,48 +798,26 @@ public IEnumerator NetworkTransformMultipleChangesOverTime([Values] TransformSpa } /// - /// Tests changing all axial values one at a time. + /// Tests changing all axial values one at a time with packet loss /// These tests are performed: /// - While in local space and world space /// - While interpolation is enabled and disabled - /// - Using the TryCommitTransformToServer "override" that can be used - /// from a child derived or external class. /// [UnityTest] public IEnumerator TestAuthoritativeTransformChangeOneAtATime([Values] TransformSpace testLocalTransform, [Values] Interpolation interpolation) { // Just test for OverrideState.Update (they are already being tested for functionality in normal NetworkTransformTests) - var overideState = OverrideState.Update; - var overrideUpdate = false; m_AuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; m_NonAuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; m_AuthoritativeTransform.InLocalSpace = testLocalTransform == TransformSpace.Local; // test position - var authPlayerTransform = overrideUpdate ? m_OwnerTransform.transform : m_AuthoritativeTransform.transform; + var authPlayerTransform = m_AuthoritativeTransform.transform; Assert.AreEqual(Vector3.zero, m_NonAuthoritativeTransform.transform.position, "server side pos should be zero at first"); // sanity check - m_AuthoritativeTransform.StatePushed = false; - var nextPosition = GetRandomVector3(2f, 30f); - m_AuthoritativeTransform.transform.position = nextPosition; - if (overideState != OverrideState.SetState) - { - authPlayerTransform.position = nextPosition; - m_OwnerTransform.CommitToTransform(); - } - else - { - m_OwnerTransform.SetState(nextPosition, null, null, m_AuthoritativeTransform.Interpolate); - } - - if (overideState != OverrideState.Update) - { - // Wait for the deltas to be pushed - yield return WaitForConditionOrTimeOut(() => m_AuthoritativeTransform.StatePushed); - AssertOnTimeout($"[Position] Timed out waiting for state to be pushed ({m_AuthoritativeTransform.StatePushed})!"); - } + m_AuthoritativeTransform.transform.position = GetRandomVector3(2f, 30f); yield return WaitForConditionOrTimeOut(() => PositionsMatch()); AssertOnTimeout($"Timed out waiting for positions to match {m_AuthoritativeTransform.transform.position} | {m_NonAuthoritativeTransform.transform.position}"); @@ -867,51 +825,68 @@ public IEnumerator TestAuthoritativeTransformChangeOneAtATime([Values] Transform // test rotation Assert.AreEqual(Quaternion.identity, m_NonAuthoritativeTransform.transform.rotation, "wrong initial value for rotation"); // sanity check - m_AuthoritativeTransform.StatePushed = false; - var nextRotation = Quaternion.Euler(GetRandomVector3(5, 60)); // using euler angles instead of quaternions directly to really see issues users might encounter - if (overideState != OverrideState.SetState) - { - authPlayerTransform.rotation = nextRotation; - m_OwnerTransform.CommitToTransform(); - } - else - { - m_OwnerTransform.SetState(null, nextRotation, null, m_AuthoritativeTransform.Interpolate); - } - if (overideState != OverrideState.Update) - { - // Wait for the deltas to be pushed - yield return WaitForConditionOrTimeOut(() => m_AuthoritativeTransform.StatePushed); - AssertOnTimeout($"[Rotation] Timed out waiting for state to be pushed ({m_AuthoritativeTransform.StatePushed})!"); - } + m_AuthoritativeTransform.transform.rotation = Quaternion.Euler(GetRandomVector3(5, 60)); // using euler angles instead of quaternions directly to really see issues users might encounter // Make sure the values match yield return WaitForConditionOrTimeOut(() => RotationsMatch()); AssertOnTimeout($"Timed out waiting for rotations to match"); m_AuthoritativeTransform.StatePushed = false; - var nextScale = GetRandomVector3(1, 6); - if (overrideUpdate) - { - authPlayerTransform.localScale = nextScale; - m_OwnerTransform.CommitToTransform(); - } - else - { - m_OwnerTransform.SetState(null, null, nextScale, m_AuthoritativeTransform.Interpolate); - } - if (overideState != OverrideState.Update) - { - // Wait for the deltas to be pushed - yield return WaitForConditionOrTimeOut(() => m_AuthoritativeTransform.StatePushed); - AssertOnTimeout($"[Rotation] Timed out waiting for state to be pushed ({m_AuthoritativeTransform.StatePushed})!"); - } + m_AuthoritativeTransform.transform.localScale = GetRandomVector3(1, 6); // Make sure the scale values match yield return WaitForConditionOrTimeOut(() => ScaleValuesMatch()); AssertOnTimeout($"Timed out waiting for scale values to match"); } + + [UnityTest] + public IEnumerator TestSameFrameDeltaStateAndTeleport([Values] TransformSpace testLocalTransform, [Values] Interpolation interpolation) + { + m_AuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; + + m_NonAuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; + + m_AuthoritativeTransform.InLocalSpace = testLocalTransform == TransformSpace.Local; + + // test position + var authPlayerTransform = m_AuthoritativeTransform.transform; + + Assert.AreEqual(Vector3.zero, m_NonAuthoritativeTransform.transform.position, "server side pos should be zero at first"); // sanity check + + m_AuthoritativeTransform.AuthorityPushedTransformState += OnAuthorityPushedTransformState; + m_AuthoritativeTransform.transform.position = GetRandomVector3(2f, 30f); + + yield return WaitForConditionOrTimeOut(() => PositionsMatch()); + AssertOnTimeout($"Timed out waiting for positions to match {m_AuthoritativeTransform.transform.position} | {m_NonAuthoritativeTransform.transform.position}"); + + Assert.IsTrue((m_TeleportStateUpdate.NetworkTick - m_DeltaStateUpdate.NetworkTick) == 1, $"Teleport next tick failed! Teleporting state tick: {m_TeleportStateUpdate.NetworkTick}" + + $" | Current delta state update tick: {m_DeltaStateUpdate.NetworkTick}"); + + var authPosition = m_AuthoritativeTransform.GetSpaceRelativePosition(); + var nonAuthPosition = m_NonAuthoritativeTransform.GetSpaceRelativePosition(); + Assert.True(Approximately(authPosition, m_TeleportPosition), $"Authority did not set its position ({authPosition}) to the teleport position ({m_TeleportPosition})!"); + Assert.True(Approximately(nonAuthPosition, m_TeleportPosition), $"NonAuthority did not set its position ({nonAuthPosition}) to the teleport position ({m_TeleportPosition})!"); + } + + private NetworkTransform.NetworkTransformState m_DeltaStateUpdate; + private NetworkTransform.NetworkTransformState m_TeleportStateUpdate; + private Vector3 m_TeleportPosition = new Vector3(-1024f, 0f, 0f); + + /// + /// For the TestSameFrameDeltaStateAndTeleport test, we want to teleport on the same frame that we had a delta state update when + /// using unreliable delta state updates (i.e. we want the unreliable packet to be sent first and then the teleport to be sent on + /// the next tick. Store off both states when invoked + /// + /// + private void OnAuthorityPushedTransformState(ref NetworkTransform.NetworkTransformState networkTransformState) + { + m_DeltaStateUpdate = networkTransformState; + m_AuthoritativeTransform.SetState(m_TeleportPosition, null, null, false); + m_TeleportStateUpdate = m_AuthoritativeTransform.TeleportingNetworkTransformState; + m_AuthoritativeTransform.AuthorityPushedTransformState -= OnAuthorityPushedTransformState; + } + private bool PositionRotationScaleMatches() { return RotationsMatch() && PositionsMatch() && ScaleValuesMatch(); From 2b86619e0067a8b3ec03a5822e44354fe25818f2 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Sat, 25 Nov 2023 17:24:34 -0600 Subject: [PATCH 06/24] update and test Deferring anything that occurs on the same tick after we already sent a delta state update, exiting early if we had already sent a deferred state on the same tick, and not attempting to forward a state update message if there are no additional remote clients to forward it to. Adding a single tick wait at the start of the change one at a time test as it seemed to be running too fast where time had yet to be synchronized proir to setting state. --- .../Components/NetworkTransform.cs | 64 ++++++++++--------- .../NetworkTransformPacketLossTests.cs | 2 +- .../NetworkTransform/NetworkTransformTests.cs | 2 + 3 files changed, 38 insertions(+), 30 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index c63b2eef25..6159d7bcbe 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -115,6 +115,9 @@ internal uint BitSet set { m_Bitset = value; } } + // Used to determine if the last state sent was deferred + internal bool WasDeferrred; + // Used to store the tick calculated sent time internal double SentTime; @@ -1506,7 +1509,7 @@ protected virtual void OnAuthorityPushTransformState(ref NetworkTransformState n // to assure the instance doesn't continue to send axial synchs when an object is at rest. private bool m_DeltaSynch; - internal NetworkTransformState TeleportingNetworkTransformState; + internal NetworkTransformState DeferredNetworkTransformState; /// /// Authoritative side only @@ -1522,42 +1525,41 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz return; } - // We only are concerned about deferred state updates when UseUnreliableDeltas is set. The scenario that can happen is if you send an unreliable state update - // on the same tick as a reliable teleport state update, then the teleport state (on the receiving side) can be processed before the unreliable delta state update. - // This can cause an undesirable out of synch period. To avoid this, we just defer teleport state updates to the next tick and do not check for deltas for that tick. - var setStateThisTick = UseUnreliableDeltas && (TeleportingNetworkTransformState.NetworkTick == m_CachedNetworkManager.ServerTime.Tick) && !synchronize; + // If we are not synchronizing, not setting state, our last state sent was deferred, and we are still on the same tick, then ignore this tick update check + if (!synchronize && !settingState && m_LastTick == m_CachedNetworkManager.ServerTime.Tick && m_OldState.WasDeferrred) + { + return; + } + + // The following check is most noticable when sending unreliable deferred state updates. If we had just sent an unreliable state update on the same tick that + // we send a reliable teleport state update, then the teleport state (on the receiving side) can be processed before the unreliable delta state update. + // We can also set the state explicity using SetState before or after sending a state update which can cause two state updates with the same tick which both + // scenarios can cause can cause an undesirable out of synch period. To avoid this, we just defer teleport state updates to the next tick and do not check for + // deltas for that tick. + var applyDeferredState = (DeferredNetworkTransformState.NetworkTick == m_CachedNetworkManager.ServerTime.Tick) && !synchronize; // If the transform has deltas (returns dirty) then... - if (setStateThisTick || ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToCommit, synchronize)) + if (applyDeferredState || ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToCommit, synchronize)) { - // If we are setting state, teleporting, and we arrived on a tick that we have already sent a delta state update for, then defer to next tick. - if (UseUnreliableDeltas && settingState && !setStateThisTick && m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame && m_LastTick == m_CachedNetworkManager.ServerTime.Tick) + // If we are setting state or teleporting,not applying the deferred state, and we arrived on a tick that we have already sent a delta state update for, then defer this state update to next tick. + if ((settingState || m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame) && !applyDeferredState && m_LastTick == m_CachedNetworkManager.ServerTime.Tick) { - TeleportingNetworkTransformState = m_LocalAuthoritativeNetworkState; - TeleportingNetworkTransformState.NetworkTick = m_CachedNetworkManager.ServerTime.Tick + 1; + DeferredNetworkTransformState = m_LocalAuthoritativeNetworkState; + DeferredNetworkTransformState.NetworkTick = m_CachedNetworkManager.ServerTime.Tick + 1; + DeferredNetworkTransformState.WasDeferrred = true; return; } - m_LocalAuthoritativeNetworkState.LastSerializedSize = m_OldState.LastSerializedSize; - - // Check if we are sending on the same network tick as the last NetworkTransformState update - if (m_LastTick == m_LocalAuthoritativeNetworkState.NetworkTick && !m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame) + // If we are processing a deferred state update, then apply it to the local authoritative state + if (applyDeferredState) { - // If our last state update was a teleport and we were not synchronizing, then ignore this update - if (m_OldState.IsTeleportingNextFrame && !m_OldState.IsSynchronizing) - { - m_OldState = m_LocalAuthoritativeNetworkState; - return; - } - // When running in authority and a remote client is the owner, the client can hit a perfect window of time where - // it is still on the previous network tick (as a count) but still have had the tick event triggered. - // (This is cheaper than calculating the exact tick each time and only can occur on clients) - if (!IsServer) - { - m_LocalAuthoritativeNetworkState.NetworkTick = m_LocalAuthoritativeNetworkState.NetworkTick + 1; - } + m_LocalAuthoritativeNetworkState = DeferredNetworkTransformState; } + + m_LocalAuthoritativeNetworkState.LastSerializedSize = m_OldState.LastSerializedSize; + m_LastTick = m_LocalAuthoritativeNetworkState.NetworkTick; + // Update the state UpdateTransformState(); @@ -2979,7 +2981,7 @@ private void SetStateInternal(Vector3 pos, Quaternion rot, Vector3 scale, bool s transform.localScale = scale; m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame = shouldTeleport; var transformToCommit = transform; - TryCommitTransform(ref transformToCommit, settingState: UseUnreliableDeltas); + TryCommitTransform(ref transformToCommit, settingState: true); } /// @@ -3142,7 +3144,11 @@ private void TransformStateUpdate(ulong senderId, FastBufferReader messagePayloa // Forward owner authoritative messages before doing anything else if (ownerAuthoritativeServerSide) { - ForwardStateUpdateMessage(messagePayload, networkDelivery); + // Forward the state update if there are any remote clients to foward it to + if (m_CachedNetworkManager.ConnectionManager.ConnectedClientsList.Count > (IsHost ? 2 : 1)) + { + ForwardStateUpdateMessage(messagePayload, networkDelivery); + } } // Apply the message diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs index 43be914675..fb60f4ccd5 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs @@ -883,7 +883,7 @@ private void OnAuthorityPushedTransformState(ref NetworkTransform.NetworkTransfo { m_DeltaStateUpdate = networkTransformState; m_AuthoritativeTransform.SetState(m_TeleportPosition, null, null, false); - m_TeleportStateUpdate = m_AuthoritativeTransform.TeleportingNetworkTransformState; + m_TeleportStateUpdate = m_AuthoritativeTransform.DeferredNetworkTransformState; m_AuthoritativeTransform.AuthorityPushedTransformState -= OnAuthorityPushedTransformState; } diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs index 29db8ca526..e252d1ada6 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs @@ -966,6 +966,8 @@ public void TestAuthoritativeTransformChangeOneAtATime([Values] TransformSpace t Assert.AreEqual(Vector3.zero, m_NonAuthoritativeTransform.transform.position, "server side pos should be zero at first"); // sanity check + TimeTravelToNextTick(); + m_AuthoritativeTransform.StatePushed = false; var nextPosition = GetRandomVector3(2f, 30f); From f0ec2041fe34cfb166bfe8b94ea8ec1c5fcdd7d3 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Sun, 26 Nov 2023 12:35:01 -0600 Subject: [PATCH 07/24] update and style Removing a teleport check that didn't need to be there. Updating comments for clarity and grammar/spelling. --- .../Components/NetworkTransform.cs | 49 ++++++++++++------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index 6159d7bcbe..8bdd2a17fa 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -115,7 +115,7 @@ internal uint BitSet set { m_Bitset = value; } } - // Used to determine if the last state sent was deferred + // Used to determine if this state was deferred internal bool WasDeferrred; // Used to store the tick calculated sent time @@ -1509,6 +1509,9 @@ protected virtual void OnAuthorityPushTransformState(ref NetworkTransformState n // to assure the instance doesn't continue to send axial synchs when an object is at rest. private bool m_DeltaSynch; + /// + /// Used to defer state updates to the next network tick + /// internal NetworkTransformState DeferredNetworkTransformState; /// @@ -1534,14 +1537,15 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz // The following check is most noticable when sending unreliable deferred state updates. If we had just sent an unreliable state update on the same tick that // we send a reliable teleport state update, then the teleport state (on the receiving side) can be processed before the unreliable delta state update. // We can also set the state explicity using SetState before or after sending a state update which can cause two state updates with the same tick which both - // scenarios can cause can cause an undesirable out of synch period. To avoid this, we just defer teleport state updates to the next tick and do not check for - // deltas for that tick. + // scenarios can cause an undesirable out of synch period. To avoid this, we just defer the state update to the next tick and upon applying the state update + // on the next tick we do not check for deltas but do apply the state update. var applyDeferredState = (DeferredNetworkTransformState.NetworkTick == m_CachedNetworkManager.ServerTime.Tick) && !synchronize; - // If the transform has deltas (returns dirty) then... + // If the transform has deltas (returns dirty) or we are applying a deferred state update then... if (applyDeferredState || ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToCommit, synchronize)) { - // If we are setting state or teleporting,not applying the deferred state, and we arrived on a tick that we have already sent a delta state update for, then defer this state update to next tick. + // If we are setting state or teleporting, not applying the deferred state, and arrived on a tick that we have already sent a delta state update for, then + // we defer this state update to next tick. if ((settingState || m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame) && !applyDeferredState && m_LastTick == m_CachedNetworkManager.ServerTime.Tick) { DeferredNetworkTransformState = m_LocalAuthoritativeNetworkState; @@ -1563,13 +1567,14 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz // Update the state UpdateTransformState(); - // This is where we assure that we will only send a frame synch if sending unreliable deltas and - // we have already sent at least one unreliable delta state update. At this point in the callstack - // we have just finished sending the delta state update in the above UpdateTransformState() call, - // and as long as we didn't send a synch and we are not synchronizing then we know at least one - // unreliable delta has been sent so we should start checking for this instance's alloted frame - // synch "tick slot". Upon sending a frame synch, if no other deltas occur after that (i.e. the - // object is at rest) we will stop sending frame synch's until the object beings moving again. + // The below is part of assuring we only send a frame synch, when sending unreliable deltas, if + // we have already sent at least one unreliable delta state update. At this point in the callstack, + // a delta state update has just been sent in the above UpdateTransformState() call and as long as + // we didn't send a frame synch and we are not synchronizing then we know at least one unreliable + // delta has been sent. Under this scenario, we should start checking for this instance's alloted + // frame synch "tick slot". Once we send a frame synch, if no other deltas occur after that + // (i.e. the object is at rest) then we will stop sending frame synch's until the object begins + // moving, rotating, or scaling again. if (UseUnreliableDeltas && !m_LocalAuthoritativeNetworkState.UnreliableFrameSync && !synchronize) { m_DeltaSynch = true; @@ -1638,20 +1643,26 @@ internal bool ApplyTransformToNetworkState(ref NetworkTransformState networkStat [MethodImpl(MethodImplOptions.AggressiveInlining)] private bool ApplyTransformToNetworkStateWithInfo(ref NetworkTransformState networkState, ref Transform transformToUse, bool isSynchronization = false, ulong targetClientId = 0) { - // As long as we are not teleporting or doing our first synchronization and we are sending unreliable deltas, - // each NetworkTransform will stagger their axial synchronization over a 1 second period based on their + // As long as we are not doing our first synchronization and we are sending unreliable deltas, each + // NetworkTransform will stagger their axial synchronization over a 1 second period based on their // assigned tick synchronization (m_TickSync) value. + // More about m_DeltaSynch: + // If we have not sent any deltas since our last frame synch, then this will prevent us from sending + // frame synch's when the object is at rest. If this is false and a state update is detected and sent, + // then it will be set to true and each subsequent tick will do this check to determine if it should + // send a frame synch. var isAxisSync = false; - if (UseUnreliableDeltas && !networkState.IsTeleportingNextFrame && !isSynchronization && m_DeltaSynch) + if (UseUnreliableDeltas && !isSynchronization && m_DeltaSynch) { if ((m_TickSync + m_CachedNetworkManager.NetworkConfig.TickRate) <= m_CachedNetworkManager.ServerTime.Tick) { // Increment to the the current frame synch tick position for this instance m_TickSync += m_CachedNetworkManager.NetworkConfig.TickRate; // If we are teleporting, we do not need to send a frame synch for this tick slot + // as a "frame synch" really is effectively just a teleport. isAxisSync = !networkState.IsTeleportingNextFrame; // Reset our delta synch trigger so we don't send another frame synch until we - // send at least 1 unreliable state update + // send at least 1 unreliable state update after this fame synch or teleport m_DeltaSynch = false; } } @@ -1673,8 +1684,9 @@ private bool ApplyTransformToNetworkStateWithInfo(ref NetworkTransformState netw if (isSynchronization || networkState.IsTeleportingNextFrame) { // This all has to do with complex nested hierarchies and how it impacts scale - // when set for the first time and depending upon whether the NetworkObject is parented - // (or not parented) at the time the scale values are applied. + // when set for the first time or teleporting and depends upon whether the + // NetworkObject is parented (or "de-parented") at the same time any scale + // values are applied. var hasParentNetworkObject = false; // If the NetworkObject belonging to this NetworkTransform instance has a parent @@ -2981,6 +2993,7 @@ private void SetStateInternal(Vector3 pos, Quaternion rot, Vector3 scale, bool s transform.localScale = scale; m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame = shouldTeleport; var transformToCommit = transform; + // Always set settingState to true so we know an explicit state update is being applied TryCommitTransform(ref transformToCommit, settingState: true); } From 6c5cbb00c6202bb5d9a3f78b2bce1dccd98c88a5 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Sun, 26 Nov 2023 16:22:26 -0600 Subject: [PATCH 08/24] fix The staggered tick for axis sync was not including the current server tick as part of its initial value causing a frame synch every other tick. Ignoring any new state update that has a tick value lower than the last/old state update when using unreliable deltas. --- .../Components/NetworkTransform.cs | 56 +++++++++++++------ 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index 8bdd2a17fa..b59358eb55 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -459,6 +459,26 @@ internal set } } + /// + /// Returns whether this state update was an axial frame synchronization + /// (only applies when UseUnreliableDeltas is enabled) + /// + public bool IsAxisFrameSync() + { + return UnreliableFrameSync; + } + + /// + /// Returns whether this state update was sent with unreliable delivery. + /// If false, then it was sent with reliable delivery. + /// (only applies when UseUnreliableDeltas is enabled) + /// + /// + public bool IsUnreliableStateUpdate() + { + return !ReliableFragmentedSequenced; + } + internal bool IsParented { get => GetFlag(k_IsParented); @@ -1652,19 +1672,16 @@ private bool ApplyTransformToNetworkStateWithInfo(ref NetworkTransformState netw // then it will be set to true and each subsequent tick will do this check to determine if it should // send a frame synch. var isAxisSync = false; - if (UseUnreliableDeltas && !isSynchronization && m_DeltaSynch) + if (UseUnreliableDeltas && !isSynchronization && m_DeltaSynch && m_NextTickSync <= m_CachedNetworkManager.ServerTime.Tick) { - if ((m_TickSync + m_CachedNetworkManager.NetworkConfig.TickRate) <= m_CachedNetworkManager.ServerTime.Tick) - { - // Increment to the the current frame synch tick position for this instance - m_TickSync += m_CachedNetworkManager.NetworkConfig.TickRate; - // If we are teleporting, we do not need to send a frame synch for this tick slot - // as a "frame synch" really is effectively just a teleport. - isAxisSync = !networkState.IsTeleportingNextFrame; - // Reset our delta synch trigger so we don't send another frame synch until we - // send at least 1 unreliable state update after this fame synch or teleport - m_DeltaSynch = false; - } + // Increment to the next frame synch tick position for this instance + m_NextTickSync += (int)m_CachedNetworkManager.NetworkConfig.TickRate; + // If we are teleporting, we do not need to send a frame synch for this tick slot + // as a "frame synch" really is effectively just a teleport. + isAxisSync = !networkState.IsTeleportingNextFrame; + // Reset our delta synch trigger so we don't send another frame synch until we + // send at least 1 unreliable state update after this fame synch or teleport + m_DeltaSynch = false; } // This is used to determine if we need to send the state update reliably (if we are doing an axial sync) networkState.UnreliableFrameSync = isAxisSync; @@ -2592,6 +2609,14 @@ private void OnNetworkStateChanged(NetworkTransformState oldState, NetworkTransf return; } + // If we are using UseUnreliableDeltas and our old state tick is greater than the new state tick, + // then just ignore the newstate. This avoids any scenario where the new state is out of order + // from the old state (with unreliable traffic and/or mixed unreliable and reliable) + if (UseUnreliableDeltas && oldState.NetworkTick > newState.NetworkTick) + { + return; + } + // Get the time when this new state was sent newState.SentTime = new NetworkTime(m_CachedNetworkManager.NetworkConfig.TickRate, newState.NetworkTick).Time; @@ -3310,14 +3335,13 @@ public NetworkTransformTickRegistration(NetworkManager networkManager) } } } - private static uint s_TickSynchPosition; - private uint m_TickSync; + private static int s_TickSynchPosition; + private int m_NextTickSync; internal void RegisterForTickSynchronization() { s_TickSynchPosition++; - s_TickSynchPosition = s_TickSynchPosition % NetworkManager.NetworkConfig.TickRate; - m_TickSync = s_TickSynchPosition; + m_NextTickSync = NetworkManager.ServerTime.Tick + (s_TickSynchPosition % (int)NetworkManager.NetworkConfig.TickRate); } /// From 5066a5037d6651ba58f9aaa39fd3cd4ceb0533da Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Mon, 27 Nov 2023 14:42:41 -0600 Subject: [PATCH 09/24] update Don't drop teleports --- com.unity.netcode.gameobjects/Components/NetworkTransform.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index b59358eb55..6d449f01c2 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -2612,7 +2612,7 @@ private void OnNetworkStateChanged(NetworkTransformState oldState, NetworkTransf // If we are using UseUnreliableDeltas and our old state tick is greater than the new state tick, // then just ignore the newstate. This avoids any scenario where the new state is out of order // from the old state (with unreliable traffic and/or mixed unreliable and reliable) - if (UseUnreliableDeltas && oldState.NetworkTick > newState.NetworkTick) + if (UseUnreliableDeltas && oldState.NetworkTick > newState.NetworkTick && !newState.IsTeleportingNextFrame) { return; } From cfaf9408b73f6c5a8aae3f5a78bc86ee20d3a1f9 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Mon, 27 Nov 2023 14:44:35 -0600 Subject: [PATCH 10/24] update don't enable UseUnreliableDeltas by default. --- com.unity.netcode.gameobjects/Components/NetworkTransform.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index 6d449f01c2..e1c4e000e1 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -73,10 +73,10 @@ public class NetworkTransform : NetworkBehaviour /// second (only for the axis marked to synchronize are sent as reliable fragmented sequenced) as long as a delta state /// update had been previously sent. When a NetworkObject is at rest, axial frame synchronization updates are not sent. /// - [Tooltip("When set (enabled by default), NetworkTransform will send common state updates using unreliable network delivery " + + [Tooltip("When set, NetworkTransform will send common state updates using unreliable network delivery " + "to provide a higher tolerance to poor network conditions (especially packet loss). When disabled, all state updates are " + "sent using reliable fragmented sequenced network delivery.")] - public bool UseUnreliableDeltas = true; + public bool UseUnreliableDeltas = false; /// /// Data structure used to synchronize the From 2aad303c050e19476ef6736f62346ced7c703722 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Mon, 27 Nov 2023 15:16:30 -0600 Subject: [PATCH 11/24] style spelling correction --- .../Components/NetworkTransform.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index e1c4e000e1..c7e614ec26 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -116,7 +116,7 @@ internal uint BitSet } // Used to determine if this state was deferred - internal bool WasDeferrred; + internal bool WasDeferred; // Used to store the tick calculated sent time internal double SentTime; @@ -1549,7 +1549,7 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz } // If we are not synchronizing, not setting state, our last state sent was deferred, and we are still on the same tick, then ignore this tick update check - if (!synchronize && !settingState && m_LastTick == m_CachedNetworkManager.ServerTime.Tick && m_OldState.WasDeferrred) + if (!synchronize && !settingState && m_LastTick == m_CachedNetworkManager.ServerTime.Tick && m_OldState.WasDeferred) { return; } @@ -1570,7 +1570,7 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz { DeferredNetworkTransformState = m_LocalAuthoritativeNetworkState; DeferredNetworkTransformState.NetworkTick = m_CachedNetworkManager.ServerTime.Tick + 1; - DeferredNetworkTransformState.WasDeferrred = true; + DeferredNetworkTransformState.WasDeferred = true; return; } From 3fee9ba99d5d3a4e91ce9a63342e29fd8414c46a Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Mon, 27 Nov 2023 16:26:44 -0600 Subject: [PATCH 12/24] style Updating the accessor method to check if a state update was an unreliable frame synchronization or not. Updated comments for better clarity. --- .../Components/NetworkTransform.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index c7e614ec26..d9022a2326 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -460,10 +460,11 @@ internal set } /// - /// Returns whether this state update was an axial frame synchronization - /// (only applies when UseUnreliableDeltas is enabled) - /// - public bool IsAxisFrameSync() + /// Returns whether this state update was a frame synchronization when + /// UseUnreliableDeltas is enabled. When set, the entire transform has + /// been synchronized. + /// + public bool IsUnreliableFrameSync() { return UnreliableFrameSync; } @@ -471,9 +472,7 @@ public bool IsAxisFrameSync() /// /// Returns whether this state update was sent with unreliable delivery. /// If false, then it was sent with reliable delivery. - /// (only applies when UseUnreliableDeltas is enabled) - /// - /// + /// public bool IsUnreliableStateUpdate() { return !ReliableFragmentedSequenced; From 078bd9d4ba81d2cd7fb1b437cefe56dcfd52cc77 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Fri, 1 Dec 2023 16:03:00 -0600 Subject: [PATCH 13/24] fix & update This update fixes several issues with tests and with the initial unreliable delta state update changes. When explicitly setting state, it now is additive regarding flag states (i.e. it does not send outside of the tick event generated window). Condensed the packet loss and standard network transform commonly shared code into a single NetworkTransformBase class. Since state is not immediately pushed, had to update NestedNetworkTransforms test. Updated several test projects that still had references to the UNet component which no longer exists in 2021. --- .../Components/NetworkTransform.cs | 101 +- .../RpcTargets/BaseRpcTarget.cs.meta | 11 +- .../NetworkTransform/NetworkTransformBase.cs | 1025 +++++ .../NetworkTransformBase.cs.meta | 11 + .../NetworkTransformGeneral.cs | 220 + .../NetworkTransformGeneral.cs.meta | 11 + .../NetworkTransformPacketLossTests.cs | 602 +-- .../NetworkTransform/NetworkTransformTests.cs | 1046 +---- .../Assets/Scenes/MultiprocessTestScene.unity | 176 +- testproject/Assets/Scenes/SampleScene.unity | 417 +- testproject/Assets/Scenes/ZooSam.unity | 4080 ++++++++++++++--- .../DontDestroyOnLoadTest.unity | 189 +- .../AutomatedPlayer-OA.prefab | 93 +- .../NestedNetworkTransforms.unity | 251 +- .../SceneWeAreSwitchingFrom.unity | 168 +- .../PreserveNetworkObjects.unity | 399 +- .../Tests/Manual/RpcTesting/RpcTesting.unity | 189 +- .../NestedNetworkTransformTests.cs | 12 +- 18 files changed, 6159 insertions(+), 2842 deletions(-) create mode 100644 com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs create mode 100644 com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs.meta create mode 100644 com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs create mode 100644 com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs.meta diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index d9022a2326..8cf729cf30 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -115,9 +115,6 @@ internal uint BitSet set { m_Bitset = value; } } - // Used to determine if this state was deferred - internal bool WasDeferred; - // Used to store the tick calculated sent time internal double SentTime; @@ -473,9 +470,9 @@ public bool IsUnreliableFrameSync() /// Returns whether this state update was sent with unreliable delivery. /// If false, then it was sent with reliable delivery. /// - public bool IsUnreliableStateUpdate() + public bool IsReliableStateUpdate() { - return !ReliableFragmentedSequenced; + return ReliableFragmentedSequenced; } internal bool IsParented @@ -1409,6 +1406,9 @@ private bool ShouldSynchronizeHalfFloat(ulong targetClientId) return true; } + // For test logging purposes + internal NetworkTransformState SynchronizeState; + /// /// This is invoked when a new client joins (server and client sides) /// Server Side: Serializes as if we were teleporting (everything is sent via NetworkTransformState) @@ -1439,6 +1439,7 @@ protected override void OnSynchronize(ref BufferSerializer serializer) // for the non-authority side to be able to properly synchronize delta position updates. ApplyTransformToNetworkStateWithInfo(ref synchronizationState, ref transformToCommit, true, targetClientId); synchronizationState.NetworkSerialize(serializer); + SynchronizeState = synchronizationState; } else { @@ -1454,7 +1455,7 @@ protected override void OnSynchronize(ref BufferSerializer serializer) // Teleport/Fully Initialize based on the state ApplyTeleportingState(synchronizationState); - + SynchronizeState = synchronizationState; m_LocalAuthoritativeNetworkState = synchronizationState; m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame = false; m_LocalAuthoritativeNetworkState.IsSynchronizing = false; @@ -1521,18 +1522,10 @@ protected virtual void OnAuthorityPushTransformState(ref NetworkTransformState n { } - // Tracks the last tick a state update was sent (see further below) - private int m_LastTick; - // Only set if a delta has been sent, this is reset after an axial synch has been sent // to assure the instance doesn't continue to send axial synchs when an object is at rest. private bool m_DeltaSynch; - /// - /// Used to defer state updates to the next network tick - /// - internal NetworkTransformState DeferredNetworkTransformState; - /// /// Authoritative side only /// If there are any transform delta states, this method will synchronize the @@ -1547,44 +1540,23 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz return; } - // If we are not synchronizing, not setting state, our last state sent was deferred, and we are still on the same tick, then ignore this tick update check - if (!synchronize && !settingState && m_LastTick == m_CachedNetworkManager.ServerTime.Tick && m_OldState.WasDeferred) - { - return; - } - - // The following check is most noticable when sending unreliable deferred state updates. If we had just sent an unreliable state update on the same tick that - // we send a reliable teleport state update, then the teleport state (on the receiving side) can be processed before the unreliable delta state update. - // We can also set the state explicity using SetState before or after sending a state update which can cause two state updates with the same tick which both - // scenarios can cause an undesirable out of synch period. To avoid this, we just defer the state update to the next tick and upon applying the state update - // on the next tick we do not check for deltas but do apply the state update. - var applyDeferredState = (DeferredNetworkTransformState.NetworkTick == m_CachedNetworkManager.ServerTime.Tick) && !synchronize; - // If the transform has deltas (returns dirty) or we are applying a deferred state update then... - if (applyDeferredState || ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToCommit, synchronize)) + if (ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToCommit, synchronize)) { - // If we are setting state or teleporting, not applying the deferred state, and arrived on a tick that we have already sent a delta state update for, then - // we defer this state update to next tick. - if ((settingState || m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame) && !applyDeferredState && m_LastTick == m_CachedNetworkManager.ServerTime.Tick) - { - DeferredNetworkTransformState = m_LocalAuthoritativeNetworkState; - DeferredNetworkTransformState.NetworkTick = m_CachedNetworkManager.ServerTime.Tick + 1; - DeferredNetworkTransformState.WasDeferred = true; - return; - } + m_LocalAuthoritativeNetworkState.LastSerializedSize = m_OldState.LastSerializedSize; - // If we are processing a deferred state update, then apply it to the local authoritative state - if (applyDeferredState) - { - m_LocalAuthoritativeNetworkState = DeferredNetworkTransformState; - } + // Send the state update + UpdateTransformState(); - m_LocalAuthoritativeNetworkState.LastSerializedSize = m_OldState.LastSerializedSize; + // Mark the last tick and the old state (for next ticks) + m_OldState = m_LocalAuthoritativeNetworkState; - m_LastTick = m_LocalAuthoritativeNetworkState.NetworkTick; + // Reset the teleport flag after we have sent the state update. + // We could set this again in the below OnAuthorityPushTransformState virtual method + m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame = false; - // Update the state - UpdateTransformState(); + // Notify of the pushed state update + OnAuthorityPushTransformState(ref m_LocalAuthoritativeNetworkState); // The below is part of assuring we only send a frame synch, when sending unreliable deltas, if // we have already sent at least one unreliable delta state update. At this point in the callstack, @@ -1598,10 +1570,6 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz { m_DeltaSynch = true; } - - OnAuthorityPushTransformState(ref m_LocalAuthoritativeNetworkState); - m_OldState = m_LocalAuthoritativeNetworkState; - m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame = false; } } @@ -1671,7 +1639,8 @@ private bool ApplyTransformToNetworkStateWithInfo(ref NetworkTransformState netw // then it will be set to true and each subsequent tick will do this check to determine if it should // send a frame synch. var isAxisSync = false; - if (UseUnreliableDeltas && !isSynchronization && m_DeltaSynch && m_NextTickSync <= m_CachedNetworkManager.ServerTime.Tick) + // We compare against the NetworkTickSystem version since ServerTime is set when updating ticks + if (UseUnreliableDeltas && !isSynchronization && m_DeltaSynch && m_NextTickSync <= m_CachedNetworkManager.NetworkTickSystem.ServerTime.Tick) { // Increment to the next frame synch tick position for this instance m_NextTickSync += (int)m_CachedNetworkManager.NetworkConfig.TickRate; @@ -2048,7 +2017,8 @@ private bool ApplyTransformToNetworkStateWithInfo(ref NetworkTransformState netw // NetworkManager if (enabled) { - networkState.NetworkTick = m_CachedNetworkManager.ServerTime.Tick; + // We use the NetworkTickSystem version since ServerTime is set when updating ticks + networkState.NetworkTick = m_CachedNetworkManager.NetworkTickSystem.ServerTime.Tick; } } @@ -2611,7 +2581,7 @@ private void OnNetworkStateChanged(NetworkTransformState oldState, NetworkTransf // If we are using UseUnreliableDeltas and our old state tick is greater than the new state tick, // then just ignore the newstate. This avoids any scenario where the new state is out of order // from the old state (with unreliable traffic and/or mixed unreliable and reliable) - if (UseUnreliableDeltas && oldState.NetworkTick > newState.NetworkTick && !newState.IsTeleportingNextFrame) + if (UseUnreliableDeltas && oldState.NetworkTick > newState.NetworkTick && !newState.IsTeleportingNextFrame && !newState.UnreliableFrameSync) { return; } @@ -2860,7 +2830,7 @@ private void InternalInitialization(bool isOwnershipChange = false) { if (UseHalfFloatPrecision) { - m_HalfPositionState = new NetworkDeltaPosition(currentPosition, m_CachedNetworkManager.NetworkTickSystem.ServerTime.Tick, math.bool3(SyncPositionX, SyncPositionY, SyncPositionZ)); + m_HalfPositionState = new NetworkDeltaPosition(currentPosition, m_CachedNetworkManager.ServerTime.Tick, math.bool3(SyncPositionX, SyncPositionY, SyncPositionZ)); } m_CurrentPosition = currentPosition; m_TargetPosition = currentPosition; @@ -2870,12 +2840,7 @@ private void InternalInitialization(bool isOwnershipChange = false) m_LocalAuthoritativeNetworkState.SynchronizeBaseHalfFloat = false; if (UseHalfFloatPrecision && isOwnershipChange && !IsServerAuthoritative() && Interpolate) { - m_HalfFloatTargetTickOwnership = m_CachedNetworkManager.ServerTime.Tick + 3; - } - else - { - // Teleport to current position - SetStateInternal(currentPosition, currentRotation, transform.localScale, true); + m_HalfFloatTargetTickOwnership = m_CachedNetworkManager.ServerTime.Tick; } } else @@ -3016,9 +2981,6 @@ private void SetStateInternal(Vector3 pos, Quaternion rot, Vector3 scale, bool s } transform.localScale = scale; m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame = shouldTeleport; - var transformToCommit = transform; - // Always set settingState to true so we know an explicit state update is being applied - TryCommitTransform(ref transformToCommit, settingState: true); } /// @@ -3294,6 +3256,8 @@ private class NetworkTransformTickRegistration private Action m_NetworkTickUpdate; private NetworkManager m_NetworkManager; public HashSet NetworkTransforms = new HashSet(); + + private int m_LastTick; private void OnNetworkManagerStopped(bool value) { Remove(); @@ -3313,10 +3277,19 @@ public void Remove() /// private void TickUpdate() { + // TODO FIX: The local NetworkTickSystem can invoke with the same network tick as before + if (m_NetworkManager.ServerTime.Tick <= m_LastTick) + { + return; + } foreach (var networkTransform in NetworkTransforms) { - networkTransform.NetworkTickSystem_Tick(); + if (networkTransform.IsSpawned) + { + networkTransform.NetworkTickSystem_Tick(); + } } + m_LastTick = m_NetworkManager.ServerTime.Tick; } public NetworkTransformTickRegistration(NetworkManager networkManager) diff --git a/com.unity.netcode.gameobjects/Runtime/Messaging/RpcTargets/BaseRpcTarget.cs.meta b/com.unity.netcode.gameobjects/Runtime/Messaging/RpcTargets/BaseRpcTarget.cs.meta index 420764f6d8..f9d7d4f1ff 100644 --- a/com.unity.netcode.gameobjects/Runtime/Messaging/RpcTargets/BaseRpcTarget.cs.meta +++ b/com.unity.netcode.gameobjects/Runtime/Messaging/RpcTargets/BaseRpcTarget.cs.meta @@ -1,2 +1,11 @@ fileFormatVersion: 2 -guid: 07c2620262e24eb5a426b521c09b3091 \ No newline at end of file +guid: 07c2620262e24eb5a426b521c09b3091 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs new file mode 100644 index 0000000000..dff714d8bc --- /dev/null +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs @@ -0,0 +1,1025 @@ +using System.Collections; +using System.Collections.Generic; +using System.Text; +using NUnit.Framework; +using Unity.Netcode.Components; +using Unity.Netcode.TestHelpers.Runtime; +using UnityEngine; + + +namespace Unity.Netcode.RuntimeTests +{ + public class NetworkTransformBase : IntegrationTestWithApproximation + { + protected const int k_TickRate = 60; + // The number of iterations to change position, rotation, and scale for NetworkTransformMultipleChangesOverTime + protected const int k_PositionRotationScaleIterations = 3; + protected const int k_PositionRotationScaleIterations3Axis = 8; + + protected float m_CurrentHalfPrecision = 0.0f; + protected const float k_HalfPrecisionPosScale = 0.115f; + protected const float k_HalfPrecisionRot = 0.725f; + + + protected NetworkObject m_AuthoritativePlayer; + protected NetworkObject m_NonAuthoritativePlayer; + protected NetworkObject m_ChildObject; + protected NetworkObject m_SubChildObject; + protected NetworkObject m_ParentObject; + + protected NetworkTransformTestComponent m_AuthoritativeTransform; + protected NetworkTransformTestComponent m_NonAuthoritativeTransform; + protected NetworkTransformTestComponent m_OwnerTransform; + + + protected int m_OriginalTargetFrameRate; + protected Axis m_CurrentAxis; + protected bool m_AxisExcluded; + protected float m_DetectedPotentialInterpolatedTeleport; + + protected StringBuilder m_InfoMessage = new StringBuilder(); + + protected Rotation m_Rotation = Rotation.Euler; + protected Precision m_Precision = Precision.Full; + protected RotationCompression m_RotationCompression = RotationCompression.None; + protected Authority m_Authority; + + // To test that local position, rotation, and scale remain the same when parented. + protected Vector3 m_ChildObjectLocalPosition = new Vector3(5.0f, 0.0f, -5.0f); + protected Vector3 m_ChildObjectLocalRotation = new Vector3(-35.0f, 90.0f, 270.0f); + protected Vector3 m_ChildObjectLocalScale = new Vector3(0.1f, 0.5f, 0.4f); + protected Vector3 m_SubChildObjectLocalPosition = new Vector3(2.0f, 1.0f, -1.0f); + protected Vector3 m_SubChildObjectLocalRotation = new Vector3(5.0f, 15.0f, 124.0f); + protected Vector3 m_SubChildObjectLocalScale = new Vector3(1.0f, 0.15f, 0.75f); + protected NetworkObject m_AuthorityParentObject; + protected NetworkTransformTestComponent m_AuthorityParentNetworkTransform; + protected NetworkObject m_AuthorityChildObject; + protected NetworkObject m_AuthoritySubChildObject; + protected ChildObjectComponent m_AuthorityChildNetworkTransform; + protected ChildObjectComponent m_AuthoritySubChildNetworkTransform; + + public enum Authority + { + ServerAuthority, + OwnerAuthority + } + + public enum Interpolation + { + DisableInterpolate, + EnableInterpolate + } + + public enum Precision + { + Half, + Full + } + + public enum Rotation + { + Euler, + Quaternion + } + + public enum RotationCompression + { + None, + QuaternionCompress + } + + public enum TransformSpace + { + World, + Local + } + + public enum OverrideState + { + Update, + CommitToTransform, + SetState + } + + public enum Axis + { + X, + Y, + Z, + XY, + XZ, + YZ, + XYZ + } + + protected enum ChildrenTransformCheckType + { + Connected_Clients, + Late_Join_Client + } + + protected override int NumberOfClients => OnNumberOfClients(); + + protected override float GetDeltaVarianceThreshold() + { + if (m_Precision == Precision.Half || m_RotationCompression == RotationCompression.QuaternionCompress) + { + return m_CurrentHalfPrecision; + } + return 0.045f; + } + + /// + /// Override to provide the number of clients + /// + /// + protected virtual int OnNumberOfClients() + { + return 1; + } + + protected virtual uint GetTestTickRate() + { + return k_DefaultTickRate; + } + + /// + /// Determines whether the test will use unreliable delivery for implicit state updates or not + /// + protected virtual bool UseUnreliableDeltas() + { + return false; + } + + protected virtual void Setup() + { + NetworkTransformTestComponent.AuthorityInstance = null; + m_Precision = Precision.Full; + ChildObjectComponent.Reset(); + } + + protected virtual void Teardown() + { + m_EnableVerboseDebug = false; + Object.DestroyImmediate(m_PlayerPrefab); + } + + /// + /// Handles the Setup for time travel enabled child derived tests + /// + protected override void OnInlineSetup() + { + Setup(); + } + + /// + /// Handles the Teardown for time travel enabled child derived tests + /// + protected override void OnInlineTearDown() + { + Teardown(); + } + + /// + /// Handles the Setup for coroutine based derived tests + /// + protected override IEnumerator OnSetup() + { + Setup(); + return base.OnSetup(); + } + + /// + /// Handles the Teardown for coroutine based derived tests + /// + protected override IEnumerator OnTearDown() + { + Teardown(); + return base.OnTearDown(); + } + + /// + /// Constructor + /// + /// Determines if we are running as a server or host + /// Determines if we are using server or owner authority + public NetworkTransformBase(HostOrServer testWithHost, Authority authority, RotationCompression rotationCompression, Rotation rotation, Precision precision) + { + m_UseHost = testWithHost == HostOrServer.Host; + m_Authority = authority; + m_Precision = precision; + m_RotationCompression = rotationCompression; + m_Rotation = rotation; + } + + protected virtual int TargetFrameRate() + { + return 120; + } + + protected override void OnOneTimeSetup() + { + m_OriginalTargetFrameRate = Application.targetFrameRate; + Application.targetFrameRate = TargetFrameRate(); + base.OnOneTimeSetup(); + } + + protected override void OnOneTimeTearDown() + { + Application.targetFrameRate = m_OriginalTargetFrameRate; + base.OnOneTimeTearDown(); + } + + protected override void OnCreatePlayerPrefab() + { + var networkTransformTestComponent = m_PlayerPrefab.AddComponent(); + networkTransformTestComponent.ServerAuthority = m_Authority == Authority.ServerAuthority; + } + + protected override void OnServerAndClientsCreated() + { + var subChildObject = CreateNetworkObjectPrefab("SubChildObject"); + var subChildNetworkTransform = subChildObject.AddComponent(); + subChildNetworkTransform.ServerAuthority = m_Authority == Authority.ServerAuthority; + m_SubChildObject = subChildObject.GetComponent(); + + var childObject = CreateNetworkObjectPrefab("ChildObject"); + var childNetworkTransform = childObject.AddComponent(); + childNetworkTransform.ServerAuthority = m_Authority == Authority.ServerAuthority; + m_ChildObject = childObject.GetComponent(); + + var parentObject = CreateNetworkObjectPrefab("ParentObject"); + var parentNetworkTransform = parentObject.AddComponent(); + parentNetworkTransform.ServerAuthority = m_Authority == Authority.ServerAuthority; + m_ParentObject = parentObject.GetComponent(); + + // Now apply local transform values + m_ChildObject.transform.position = m_ChildObjectLocalPosition; + var childRotation = m_ChildObject.transform.rotation; + childRotation.eulerAngles = m_ChildObjectLocalRotation; + m_ChildObject.transform.rotation = childRotation; + m_ChildObject.transform.localScale = m_ChildObjectLocalScale; + + m_SubChildObject.transform.position = m_SubChildObjectLocalPosition; + var subChildRotation = m_SubChildObject.transform.rotation; + subChildRotation.eulerAngles = m_SubChildObjectLocalRotation; + m_SubChildObject.transform.rotation = childRotation; + m_SubChildObject.transform.localScale = m_SubChildObjectLocalScale; + + if (m_EnableVerboseDebug) + { + m_ServerNetworkManager.LogLevel = LogLevel.Developer; + foreach (var clientNetworkManager in m_ClientNetworkManagers) + { + clientNetworkManager.LogLevel = LogLevel.Developer; + } + } + + m_ServerNetworkManager.NetworkConfig.TickRate = k_TickRate; + foreach (var clientNetworkManager in m_ClientNetworkManagers) + { + clientNetworkManager.NetworkConfig.TickRate = k_TickRate; + } + } + + + protected virtual void OnClientsAndServerConnectedSetup() + { + // Get the client player representation on both the server and the client side + var serverSideClientPlayer = m_PlayerNetworkObjects[0][m_ClientNetworkManagers[0].LocalClientId]; + var clientSideClientPlayer = m_PlayerNetworkObjects[m_ClientNetworkManagers[0].LocalClientId][m_ClientNetworkManagers[0].LocalClientId]; + + m_AuthoritativePlayer = m_Authority == Authority.ServerAuthority ? serverSideClientPlayer : clientSideClientPlayer; + m_NonAuthoritativePlayer = m_Authority == Authority.ServerAuthority ? clientSideClientPlayer : serverSideClientPlayer; + + // Get the NetworkTransformTestComponent to make sure the client side is ready before starting test + m_AuthoritativeTransform = m_AuthoritativePlayer.GetComponent(); + m_NonAuthoritativeTransform = m_NonAuthoritativePlayer.GetComponent(); + + // Setup whether we are or are not using unreliable deltas + m_AuthoritativeTransform.UseUnreliableDeltas = UseUnreliableDeltas(); + m_NonAuthoritativeTransform.UseUnreliableDeltas = UseUnreliableDeltas(); + + m_AuthoritativeTransform.UseHalfFloatPrecision = m_Precision == Precision.Half; + m_AuthoritativeTransform.UseQuaternionSynchronization = m_Rotation == Rotation.Quaternion; + m_AuthoritativeTransform.UseQuaternionCompression = m_RotationCompression == RotationCompression.QuaternionCompress; + m_NonAuthoritativeTransform.UseHalfFloatPrecision = m_Precision == Precision.Half; + m_NonAuthoritativeTransform.UseQuaternionSynchronization = m_Rotation == Rotation.Quaternion; + m_NonAuthoritativeTransform.UseQuaternionCompression = m_RotationCompression == RotationCompression.QuaternionCompress; + + + m_OwnerTransform = m_AuthoritativeTransform.IsOwner ? m_AuthoritativeTransform : m_NonAuthoritativeTransform; + } + + protected override void OnTimeTravelServerAndClientsConnected() + { + OnClientsAndServerConnectedSetup(); + + // Wait for the client-side to notify it is finished initializing and spawning. + var success = WaitForConditionOrTimeOutWithTimeTravel(() => m_NonAuthoritativeTransform.ReadyToReceivePositionUpdate == true); + Assert.True(success, "Timed out waiting for client-side to notify it is ready!"); + + Assert.True(m_AuthoritativeTransform.CanCommitToTransform); + Assert.False(m_NonAuthoritativeTransform.CanCommitToTransform); + // Just wait for at least one tick for NetworkTransforms to finish synchronization + WaitForNextTick(); + } + + /// + /// Handles the OnServerAndClientsConnected for coroutine based derived tests + /// + protected override IEnumerator OnServerAndClientsConnected() + { + // Wait for the client-side to notify it is finished initializing and spawning. + yield return WaitForClientsConnectedOrTimeOut(); + AssertOnTimeout("Timed out waiting for client-side to notify it is ready!"); + OnClientsAndServerConnectedSetup(); + yield return base.OnServerAndClientsConnected(); + } + + /// + /// Handles setting a new client being connected + /// + protected override void OnNewClientCreated(NetworkManager networkManager) + { + networkManager.NetworkConfig.Prefabs = m_ServerNetworkManager.NetworkConfig.Prefabs; + networkManager.NetworkConfig.TickRate = k_TickRate; + if (m_EnableVerboseDebug) + { + networkManager.LogLevel = LogLevel.Developer; + } + base.OnNewClientCreated(networkManager); + } + + + /// + /// Returns true when the server-host and all clients have + /// instantiated the child object to be used in + /// + /// + protected bool AllChildObjectInstancesAreSpawned() + { + if (ChildObjectComponent.AuthorityInstance == null) + { + return false; + } + + if (ChildObjectComponent.HasSubChild && ChildObjectComponent.AuthoritySubInstance == null) + { + return false; + } + + foreach (var clientNetworkManager in m_ClientNetworkManagers) + { + if (!ChildObjectComponent.ClientInstances.ContainsKey(clientNetworkManager.LocalClientId)) + { + return false; + } + } + return true; + } + + protected bool AllChildObjectInstancesHaveChild() + { + foreach (var instance in ChildObjectComponent.ClientInstances.Values) + { + if (instance.transform.parent == null) + { + return false; + } + } + if (ChildObjectComponent.HasSubChild) + { + foreach (var instance in ChildObjectComponent.ClientSubChildInstances.Values) + { + if (instance.transform.parent == null) + { + return false; + } + } + } + return true; + } + + /// + /// A wait condition specific method that assures the local space coordinates + /// are not impacted by NetworkTransform when parented. + /// + protected bool AllInstancesKeptLocalTransformValues(bool useSubChild) + { + var authorityObjectLocalPosition = useSubChild ? m_AuthoritySubChildObject.transform.localPosition : m_AuthorityChildObject.transform.localPosition; + var authorityObjectLocalRotation = useSubChild ? m_AuthoritySubChildObject.transform.localRotation.eulerAngles : m_AuthorityChildObject.transform.localRotation.eulerAngles; + var authorityObjectLocalScale = useSubChild ? m_AuthoritySubChildObject.transform.localScale : m_AuthorityChildObject.transform.localScale; + var instances = useSubChild ? ChildObjectComponent.SubInstances : ChildObjectComponent.Instances; + foreach (var childInstance in instances) + { + var childLocalPosition = childInstance.transform.localPosition; + var childLocalRotation = childInstance.transform.localRotation.eulerAngles; + var childLocalScale = childInstance.transform.localScale; + // Adjust approximation based on precision + if (m_Precision == Precision.Half) + { + m_CurrentHalfPrecision = k_HalfPrecisionPosScale; + } + if (!Approximately(childLocalPosition, authorityObjectLocalPosition)) + { + return false; + } + if (!Approximately(childLocalScale, authorityObjectLocalScale)) + { + return false; + } + // Adjust approximation based on precision + if (m_Precision == Precision.Half || m_RotationCompression == RotationCompression.QuaternionCompress) + { + m_CurrentHalfPrecision = k_HalfPrecisionRot; + } + if (!ApproximatelyEuler(childLocalRotation, authorityObjectLocalRotation)) + { + return false; + } + } + return true; + } + + protected bool PostAllChildrenLocalTransformValuesMatch(bool useSubChild) + { + var success = !s_GlobalTimeoutHelper.TimedOut; + var authorityObjectLocalPosition = useSubChild ? m_AuthoritySubChildObject.transform.localPosition : m_AuthorityChildObject.transform.localPosition; + var authorityObjectLocalRotation = useSubChild ? m_AuthoritySubChildObject.transform.localRotation.eulerAngles : m_AuthorityChildObject.transform.localRotation.eulerAngles; + var authorityObjectLocalScale = useSubChild ? m_AuthoritySubChildObject.transform.localScale : m_AuthorityChildObject.transform.localScale; + + if (s_GlobalTimeoutHelper.TimedOut) + { + // If we timed out, then wait for a full range of ticks (plus 1) to assure it sent synchronization data. + for (int j = 0; j < m_ServerNetworkManager.NetworkConfig.TickRate; j++) + { + var instances = useSubChild ? ChildObjectComponent.SubInstances : ChildObjectComponent.Instances; + foreach (var childInstance in instances) + { + var childParentName = "invalid"; + try + { + childParentName = useSubChild ? childInstance.transform.parent.parent.name : childInstance.transform.name; + } + catch (System.Exception ex) + { + Debug.Log(ex.Message); + } + var childLocalPosition = childInstance.transform.localPosition; + var childLocalRotation = childInstance.transform.localRotation.eulerAngles; + var childLocalScale = childInstance.transform.localScale; + // Adjust approximation based on precision + if (m_Precision == Precision.Half || m_RotationCompression == RotationCompression.QuaternionCompress) + { + m_CurrentHalfPrecision = k_HalfPrecisionPosScale; + } + if (!Approximately(childLocalPosition, authorityObjectLocalPosition)) + { + m_InfoMessage.AppendLine($"[{childParentName}][{childInstance.name}] Child's Local Position ({childLocalPosition}) | Authority Local Position ({authorityObjectLocalPosition})"); + success = false; + } + if (!Approximately(childLocalScale, authorityObjectLocalScale)) + { + m_InfoMessage.AppendLine($"[{childParentName}][{childInstance.name}] Child's Local Scale ({childLocalScale}) | Authority Local Scale ({authorityObjectLocalScale})"); + success = false; + } + + // Adjust approximation based on precision + if (m_Precision == Precision.Half || m_RotationCompression == RotationCompression.QuaternionCompress) + { + m_CurrentHalfPrecision = k_HalfPrecisionRot; + } + if (!ApproximatelyEuler(childLocalRotation, authorityObjectLocalRotation)) + { + m_InfoMessage.AppendLine($"[{childParentName}][{childInstance.name}] Child's Local Rotation ({childLocalRotation}) | Authority Local Rotation ({authorityObjectLocalRotation})"); + success = false; + } + } + } + } + return success; + } + + + + /// + /// Validates that moving, rotating, and scaling the authority side with a single + /// tick will properly synchronize the non-authoritative side with the same values. + /// + protected void MoveRotateAndScaleAuthority(Vector3 position, Vector3 rotation, Vector3 scale, OverrideState overrideState) + { + switch (overrideState) + { + case OverrideState.SetState: + { + var authoritativeRotation = m_AuthoritativeTransform.GetSpaceRelativeRotation(); + authoritativeRotation.eulerAngles = rotation; + if (m_Authority == Authority.OwnerAuthority) + { + // Under the scenario where the owner is not the server, and non-auth is the server we set the state from the server + // to be updated to the owner. + if (m_AuthoritativeTransform.IsOwner && !m_AuthoritativeTransform.IsServer && m_NonAuthoritativeTransform.IsServer) + { + m_NonAuthoritativeTransform.SetState(position, authoritativeRotation, scale); + } + else + { + m_AuthoritativeTransform.SetState(position, authoritativeRotation, scale); + } + } + else + { + m_AuthoritativeTransform.SetState(position, authoritativeRotation, scale); + } + + break; + } + case OverrideState.Update: + default: + { + m_AuthoritativeTransform.transform.position = position; + + var authoritativeRotation = m_AuthoritativeTransform.GetSpaceRelativeRotation(); + authoritativeRotation.eulerAngles = rotation; + m_AuthoritativeTransform.transform.rotation = authoritativeRotation; + m_AuthoritativeTransform.transform.localScale = scale; + break; + } + } + } + + /// + /// Randomly determine if an axis should be excluded. + /// If so, then randomly pick one of the axis to be excluded. + /// + protected Vector3 RandomlyExcludeAxis(Vector3 delta) + { + if (Random.Range(0.0f, 1.0f) >= 0.5f) + { + m_AxisExcluded = true; + var axisToIgnore = Random.Range(0, 2); + switch (axisToIgnore) + { + case 0: + { + delta.x = 0; + break; + } + case 1: + { + delta.y = 0; + break; + } + case 2: + { + delta.z = 0; + break; + } + } + } + return delta; + } + + protected bool PositionRotationScaleMatches() + { + return RotationsMatch() && PositionsMatch() && ScaleValuesMatch(); + } + + protected bool PositionRotationScaleMatches(Vector3 position, Vector3 eulerRotation, Vector3 scale) + { + return PositionsMatchesValue(position) && RotationMatchesValue(eulerRotation) && ScaleMatchesValue(scale); + } + + protected bool PositionsMatchesValue(Vector3 positionToMatch) + { + var authorityPosition = m_AuthoritativeTransform.transform.position; + var nonAuthorityPosition = m_NonAuthoritativeTransform.transform.position; + var auhtorityIsEqual = Approximately(authorityPosition, positionToMatch); + var nonauthorityIsEqual = Approximately(nonAuthorityPosition, positionToMatch); + + if (!auhtorityIsEqual) + { + VerboseDebug($"Authority position {authorityPosition} != position to match: {positionToMatch}!"); + } + if (!nonauthorityIsEqual) + { + VerboseDebug($"NonAuthority position {nonAuthorityPosition} != position to match: {positionToMatch}!"); + } + return auhtorityIsEqual && nonauthorityIsEqual; + } + + protected bool RotationMatchesValue(Vector3 rotationEulerToMatch) + { + var authorityRotationEuler = m_AuthoritativeTransform.transform.rotation.eulerAngles; + var nonAuthorityRotationEuler = m_NonAuthoritativeTransform.transform.rotation.eulerAngles; + var auhtorityIsEqual = Approximately(authorityRotationEuler, rotationEulerToMatch); + var nonauthorityIsEqual = Approximately(nonAuthorityRotationEuler, rotationEulerToMatch); + + if (!auhtorityIsEqual) + { + VerboseDebug($"Authority rotation {authorityRotationEuler} != rotation to match: {rotationEulerToMatch}!"); + } + if (!nonauthorityIsEqual) + { + VerboseDebug($"NonAuthority rotation {nonAuthorityRotationEuler} != rotation to match: {rotationEulerToMatch}!"); + } + return auhtorityIsEqual && nonauthorityIsEqual; + } + + protected bool ScaleMatchesValue(Vector3 scaleToMatch) + { + var authorityScale = m_AuthoritativeTransform.transform.localScale; + var nonAuthorityScale = m_NonAuthoritativeTransform.transform.localScale; + var auhtorityIsEqual = Approximately(authorityScale, scaleToMatch); + var nonauthorityIsEqual = Approximately(nonAuthorityScale, scaleToMatch); + + if (!auhtorityIsEqual) + { + VerboseDebug($"Authority scale {authorityScale} != scale to match: {scaleToMatch}!"); + } + if (!nonauthorityIsEqual) + { + VerboseDebug($"NonAuthority scale {nonAuthorityScale} != scale to match: {scaleToMatch}!"); + } + return auhtorityIsEqual && nonauthorityIsEqual; + } + + protected bool TeleportPositionMatches(Vector3 nonAuthorityOriginalPosition) + { + var nonAuthorityPosition = m_NonAuthoritativeTransform.transform.position; + var authorityPosition = m_AuthoritativeTransform.transform.position; + var targetDistance = Mathf.Abs(Vector3.Distance(nonAuthorityOriginalPosition, authorityPosition)); + var nonAuthorityCurrentDistance = Mathf.Abs(Vector3.Distance(nonAuthorityPosition, nonAuthorityOriginalPosition)); + // If we are not within our target distance range + if (!Approximately(targetDistance, nonAuthorityCurrentDistance)) + { + // Apply the non-authority's distance that is checked at the end of the teleport test + m_DetectedPotentialInterpolatedTeleport = nonAuthorityCurrentDistance; + return false; + } + else + { + // Otherwise, if we are within our target distance range then reset any already set value + m_DetectedPotentialInterpolatedTeleport = 0.0f; + } + var xIsEqual = Approximately(authorityPosition.x, nonAuthorityPosition.x); + var yIsEqual = Approximately(authorityPosition.y, nonAuthorityPosition.y); + var zIsEqual = Approximately(authorityPosition.z, nonAuthorityPosition.z); + if (!xIsEqual || !yIsEqual || !zIsEqual) + { + VerboseDebug($"[{m_AuthoritativeTransform.gameObject.name}] Authority position {authorityPosition} != [{m_NonAuthoritativeTransform.gameObject.name}] NonAuthority position {nonAuthorityPosition}"); + } + return xIsEqual && yIsEqual && zIsEqual; + } + + protected bool RotationsMatch(bool printDeltas = false) + { + m_CurrentHalfPrecision = k_HalfPrecisionRot; + var authorityEulerRotation = m_AuthoritativeTransform.GetSpaceRelativeRotation().eulerAngles; + var nonAuthorityEulerRotation = m_NonAuthoritativeTransform.GetSpaceRelativeRotation().eulerAngles; + var xIsEqual = ApproximatelyEuler(authorityEulerRotation.x, nonAuthorityEulerRotation.x) || !m_AuthoritativeTransform.SyncRotAngleX; + var yIsEqual = ApproximatelyEuler(authorityEulerRotation.y, nonAuthorityEulerRotation.y) || !m_AuthoritativeTransform.SyncRotAngleY; + var zIsEqual = ApproximatelyEuler(authorityEulerRotation.z, nonAuthorityEulerRotation.z) || !m_AuthoritativeTransform.SyncRotAngleZ; + if (!xIsEqual || !yIsEqual || !zIsEqual) + { + VerboseDebug($"[{m_AuthoritativeTransform.gameObject.name}][X-{xIsEqual} | Y-{yIsEqual} | Z-{zIsEqual}][{m_CurrentAxis}]" + + $"[Sync: X-{m_AuthoritativeTransform.SyncRotAngleX} | Y-{m_AuthoritativeTransform.SyncRotAngleY} | Z-{m_AuthoritativeTransform.SyncRotAngleZ}] Authority rotation {authorityEulerRotation} != [{m_NonAuthoritativeTransform.gameObject.name}] NonAuthority rotation {nonAuthorityEulerRotation}"); + } + if (printDeltas) + { + Debug.Log($"[Rotation Match] Euler Delta {EulerDelta(authorityEulerRotation, nonAuthorityEulerRotation)}"); + } + return xIsEqual && yIsEqual && zIsEqual; + } + + protected bool PositionsMatch(bool printDeltas = false) + { + m_CurrentHalfPrecision = k_HalfPrecisionPosScale; + var authorityPosition = m_AuthoritativeTransform.GetSpaceRelativePosition(); + var nonAuthorityPosition = m_NonAuthoritativeTransform.GetSpaceRelativePosition(); + var xIsEqual = Approximately(authorityPosition.x, nonAuthorityPosition.x) || !m_AuthoritativeTransform.SyncPositionX; + var yIsEqual = Approximately(authorityPosition.y, nonAuthorityPosition.y) || !m_AuthoritativeTransform.SyncPositionY; + var zIsEqual = Approximately(authorityPosition.z, nonAuthorityPosition.z) || !m_AuthoritativeTransform.SyncPositionZ; + if (!xIsEqual || !yIsEqual || !zIsEqual) + { + VerboseDebug($"[{m_AuthoritativeTransform.gameObject.name}] Authority position {authorityPosition} != [{m_NonAuthoritativeTransform.gameObject.name}] NonAuthority position {nonAuthorityPosition}"); + } + return xIsEqual && yIsEqual && zIsEqual; + } + + protected bool ScaleValuesMatch(bool printDeltas = false) + { + m_CurrentHalfPrecision = k_HalfPrecisionPosScale; + var authorityScale = m_AuthoritativeTransform.transform.localScale; + var nonAuthorityScale = m_NonAuthoritativeTransform.transform.localScale; + var xIsEqual = Approximately(authorityScale.x, nonAuthorityScale.x) || !m_AuthoritativeTransform.SyncScaleX; + var yIsEqual = Approximately(authorityScale.y, nonAuthorityScale.y) || !m_AuthoritativeTransform.SyncScaleY; + var zIsEqual = Approximately(authorityScale.z, nonAuthorityScale.z) || !m_AuthoritativeTransform.SyncScaleZ; + if (!xIsEqual || !yIsEqual || !zIsEqual) + { + VerboseDebug($"[{m_AuthoritativeTransform.gameObject.name}] Authority scale {authorityScale} != [{m_NonAuthoritativeTransform.gameObject.name}] NonAuthority scale {nonAuthorityScale}"); + } + return xIsEqual && yIsEqual && zIsEqual; + } + + private void PrintPositionRotationScaleDeltas() + { + RotationsMatch(true); + PositionsMatch(true); + ScaleValuesMatch(true); + } + + /// + /// Waits until the next tick + /// + protected void WaitForNextTick() + { + var currentTick = m_AuthoritativeTransform.NetworkManager.LocalTime.Tick; + while (m_AuthoritativeTransform.NetworkManager.LocalTime.Tick == currentTick) + { + var frameRate = Application.targetFrameRate; + if (frameRate <= 0) + { + frameRate = 60; + } + var frameDuration = 1f / frameRate; + TimeTravel(frameDuration, 1); + } + } + } + + /// + /// Helper component for all NetworkTransformTests + /// + public class NetworkTransformTestComponent : NetworkTransform + { + public bool ServerAuthority; + public bool ReadyToReceivePositionUpdate = false; + + public NetworkTransformState AuthorityLastSentState; + public bool StatePushed { get; internal set; } + + public delegate void AuthorityPushedTransformStateDelegateHandler(ref NetworkTransformState networkTransformState); + + public event AuthorityPushedTransformStateDelegateHandler AuthorityPushedTransformState; + + protected override void OnAuthorityPushTransformState(ref NetworkTransformState networkTransformState) + { + StatePushed = true; + AuthorityLastSentState = networkTransformState; + AuthorityPushedTransformState?.Invoke(ref networkTransformState); + base.OnAuthorityPushTransformState(ref networkTransformState); + } + + + public bool StateUpdated { get; internal set; } + protected override void OnNetworkTransformStateUpdated(ref NetworkTransformState oldState, ref NetworkTransformState newState) + { + StateUpdated = true; + base.OnNetworkTransformStateUpdated(ref oldState, ref newState); + } + + protected override bool OnIsServerAuthoritative() + { + return ServerAuthority; + } + + public static NetworkTransformTestComponent AuthorityInstance; + + public override void OnNetworkSpawn() + { + base.OnNetworkSpawn(); + + if (CanCommitToTransform) + { + AuthorityInstance = this; + } + + ReadyToReceivePositionUpdate = true; + } + + public void CommitToTransform() + { + TryCommitTransformToServer(transform, NetworkManager.LocalTime.Time); + } + + public (bool isDirty, bool isPositionDirty, bool isRotationDirty, bool isScaleDirty) ApplyState() + { + var transformState = ApplyLocalNetworkState(transform); + return (transformState.IsDirty, transformState.HasPositionChange, transformState.HasRotAngleChange, transformState.HasScaleChange); + } + } + + /// + /// Helper component for NetworkTransform parenting tests when + /// a child is a parent of another child (i.e. "sub child") + /// + public class SubChildObjectComponent : ChildObjectComponent + { + protected override bool IsSubChild() + { + return true; + } + } + + /// + /// Helper component for NetworkTransform parenting tests + /// + public class ChildObjectComponent : NetworkTransform + { + public static int TestCount; + public static bool EnableChildLog; + public static readonly List Instances = new List(); + public static readonly List SubInstances = new List(); + public static ChildObjectComponent AuthorityInstance { get; internal set; } + public static ChildObjectComponent AuthoritySubInstance { get; internal set; } + public static readonly Dictionary ClientInstances = new Dictionary(); + public static readonly Dictionary ClientSubChildInstances = new Dictionary(); + + public static readonly List InstancesWithLogging = new List(); + + public static bool HasSubChild; + + private StringBuilder m_ChildTransformLog = new StringBuilder(); + private StringBuilder m_ChildStateLog = new StringBuilder(); + + public static void Reset() + { + AuthorityInstance = null; + AuthoritySubInstance = null; + HasSubChild = false; + ClientInstances.Clear(); + ClientSubChildInstances.Clear(); + Instances.Clear(); + SubInstances.Clear(); + } + + public bool ServerAuthority; + + protected virtual bool IsSubChild() + { + return false; + } + + protected override bool OnIsServerAuthoritative() + { + return ServerAuthority; + } + + public override void OnNetworkSpawn() + { + LogTransform(); + + base.OnNetworkSpawn(); + + LogTransform(); + if (CanCommitToTransform) + { + if (!IsSubChild()) + { + AuthorityInstance = this; + } + else + { + AuthoritySubInstance = this; + } + } + else + { + if (!IsSubChild()) + { + Instances.Add(this); + } + else + { + SubInstances.Add(this); + } + } + if (HasSubChild && IsSubChild()) + { + ClientSubChildInstances.Add(NetworkManager.LocalClientId, NetworkObject); + } + else + { + ClientInstances.Add(NetworkManager.LocalClientId, NetworkObject); + } + } + + public override void OnNetworkDespawn() + { + LogToConsole(); + base.OnNetworkDespawn(); + } + + public override void OnNetworkObjectParentChanged(NetworkObject parentNetworkObject) + { + base.OnNetworkObjectParentChanged(parentNetworkObject); + + LogTransform(); + } + + protected override void OnAuthorityPushTransformState(ref NetworkTransformState networkTransformState) + { + base.OnAuthorityPushTransformState(ref networkTransformState); + + LogState(ref networkTransformState, true); + } + + protected override void OnNetworkTransformStateUpdated(ref NetworkTransformState oldState, ref NetworkTransformState newState) + { + base.OnNetworkTransformStateUpdated(ref oldState, ref newState); + LogState(ref newState, false); + } + + protected override void OnSynchronize(ref BufferSerializer serializer) + { + base.OnSynchronize(ref serializer); + var localState = SynchronizeState; + LogState(ref localState, serializer.IsWriter); + } + + private void LogTransform() + { + if (!EnableChildLog) + { + return; + } + if (m_ChildTransformLog.Length == 0) + { + m_ChildTransformLog.AppendLine($"[{TestCount}][{name}] Begin Child Transform Log (Authority: {CanCommitToTransform})-------------->"); + } + m_ChildTransformLog.AppendLine($"POS-SR:{GetSpaceRelativePosition()} POS-W: {transform.position} POS-L: {transform.position}"); + m_ChildTransformLog.AppendLine($"SCA-SR:{GetScale()} SCA-LS: {transform.lossyScale} SCA-L: {transform.localScale}"); + } + + private void LogState(ref NetworkTransformState state, bool isPush) + { + if (!EnableChildLog) + { + return; + } + if (m_ChildStateLog.Length == 0) + { + m_ChildStateLog.AppendLine($"[{TestCount}][{name}] Begin Child State Log (Authority: {CanCommitToTransform})-------------->"); + } + var tick = 0; + if (NetworkManager != null && !NetworkManager.ShutdownInProgress) + { + tick = NetworkManager.ServerTime.Tick; + } + + m_ChildStateLog.AppendLine($"[{state.NetworkTick}][{tick}] Tele:{state.IsTeleportingNextFrame} Sync: {state.IsSynchronizing} Reliable: {state.IsReliableStateUpdate()} IsParented: {state.IsParented} HasPos: {state.HasPositionChange} Pos: {state.GetPosition()}"); + m_ChildStateLog.AppendLine($"Lossy:{state.LossyScale} Scale: {state.GetScale()} Rotation: {state.GetRotation()}"); + } + + private void LogToConsole() + { + if (!EnableChildLog) + { + return; + } + LogBuilder(m_ChildTransformLog); + LogBuilder(m_ChildStateLog); + } + + private void LogBuilder(StringBuilder builder) + { + if (builder.Length == 0) + { + return; + } + var contents = builder.ToString(); + var lines = contents.Split('\n'); + if (lines.Length > 45) + { + var count = 0; + var tempBuilder = new StringBuilder(); + + for (int i = 0; i < lines.Length; i++) + { + if ((i % 45) == 0) + { + if (count > 0) + { + Debug.Log(tempBuilder.ToString()); + tempBuilder.Clear(); + } + tempBuilder.AppendLine($"{count}{lines[i]}"); + count++; + } + else + { + tempBuilder.AppendLine($"{lines[i]}"); + } + } + } + else + { + Debug.Log(builder.ToString()); + } + } + } + + +} // Unity.Netcode.RuntimeTests diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs.meta new file mode 100644 index 0000000000..2ffb79989f --- /dev/null +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ccdf46d0c73f8ac47921ec1be2772fac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs new file mode 100644 index 0000000000..dd61e81750 --- /dev/null +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs @@ -0,0 +1,220 @@ +using NUnit.Framework; +using Unity.Netcode.Components; +using UnityEngine; + +namespace Unity.Netcode.RuntimeTests +{ + [TestFixture(HostOrServer.Host, Authority.OwnerAuthority)] + [TestFixture(HostOrServer.Host, Authority.ServerAuthority)] + public class NetworkTransformGeneral : NetworkTransformBase + { + public NetworkTransformGeneral(HostOrServer testWithHost, Authority authority) : + base(testWithHost, authority, RotationCompression.None, Rotation.Euler, Precision.Full) + { } + + protected override bool m_EnableTimeTravel => true; + protected override bool m_SetupIsACoroutine => false; + protected override bool m_TearDownIsACoroutine => false; + + /// + /// Test to verify nonAuthority cannot change the transform directly + /// + [Test] + public void VerifyNonAuthorityCantChangeTransform([Values] Interpolation interpolation) + { + m_AuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; + m_NonAuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; + + Assert.AreEqual(Vector3.zero, m_NonAuthoritativeTransform.transform.position, "other side pos should be zero at first"); // sanity check + + m_NonAuthoritativeTransform.transform.position = new Vector3(4, 5, 6); + + WaitForNextTick(); + WaitForNextTick(); + + Assert.AreEqual(Vector3.zero, m_NonAuthoritativeTransform.transform.position, "[Position] NonAuthority was able to change the position!"); + + var nonAuthorityRotation = m_NonAuthoritativeTransform.transform.rotation; + var originalNonAuthorityEulerRotation = nonAuthorityRotation.eulerAngles; + var nonAuthorityEulerRotation = originalNonAuthorityEulerRotation; + // Verify rotation is not marked dirty when rotated by half of the threshold + nonAuthorityEulerRotation.y += 20.0f; + nonAuthorityRotation.eulerAngles = nonAuthorityEulerRotation; + m_NonAuthoritativeTransform.transform.rotation = nonAuthorityRotation; + WaitForNextTick(); + var nonAuthorityCurrentEuler = m_NonAuthoritativeTransform.transform.rotation.eulerAngles; + Assert.True(originalNonAuthorityEulerRotation.Equals(nonAuthorityCurrentEuler), "[Rotation] NonAuthority was able to change the rotation!"); + + var nonAuthorityScale = m_NonAuthoritativeTransform.transform.localScale; + m_NonAuthoritativeTransform.transform.localScale = nonAuthorityScale * 100; + + WaitForNextTick(); + + Assert.True(nonAuthorityScale.Equals(m_NonAuthoritativeTransform.transform.localScale), "[Scale] NonAuthority was able to change the scale!"); + } + + /// + /// Validates that rotation checks don't produce false positive + /// results when rolling over between 0 and 360 degrees + /// + [Test] + public void TestRotationThresholdDeltaCheck([Values] Interpolation interpolation) + { + m_AuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; + m_NonAuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; + m_NonAuthoritativeTransform.RotAngleThreshold = m_AuthoritativeTransform.RotAngleThreshold = 5.0f; + + var halfThreshold = m_AuthoritativeTransform.RotAngleThreshold * 0.5001f; + var authorityRotation = m_AuthoritativeTransform.transform.rotation; + var authorityEulerRotation = authorityRotation.eulerAngles; + + // Apply the current state which assures all bitset flags are updated + var results = m_AuthoritativeTransform.ApplyState(); + + // Verify rotation is not marked dirty when rotated by half of the threshold + authorityEulerRotation.y += halfThreshold; + authorityRotation.eulerAngles = authorityEulerRotation; + m_AuthoritativeTransform.transform.rotation = authorityRotation; + results = m_AuthoritativeTransform.ApplyState(); + WaitForNextTick(); + Assert.IsFalse(results.isRotationDirty, $"Rotation is dirty when rotation threshold is {m_AuthoritativeTransform.RotAngleThreshold} degrees and only adjusted by {halfThreshold} degrees!"); + WaitForNextTick(); + + // Verify rotation is marked dirty when rotated by another half threshold value + authorityEulerRotation.y += halfThreshold; + authorityRotation.eulerAngles = authorityEulerRotation; + m_AuthoritativeTransform.transform.rotation = authorityRotation; + results = m_AuthoritativeTransform.ApplyState(); + + WaitForNextTick(); + Assert.IsTrue(results.isRotationDirty, $"Rotation was not dirty when rotated by the threshold value: {m_AuthoritativeTransform.RotAngleThreshold} degrees!"); + WaitForNextTick(); + + //Reset rotation back to zero on all axis + authorityRotation.eulerAngles = authorityEulerRotation = Vector3.zero; + m_AuthoritativeTransform.transform.rotation = authorityRotation; + WaitForNextTick(); + + // Rotate by 360 minus halfThreshold (which is really just negative halfThreshold) and verify rotation is not marked dirty + authorityEulerRotation.y = 360 - halfThreshold; + authorityRotation.eulerAngles = authorityEulerRotation; + m_AuthoritativeTransform.transform.rotation = authorityRotation; + results = m_AuthoritativeTransform.ApplyState(); + WaitForNextTick(); + Assert.IsFalse(results.isRotationDirty, $"Rotation is dirty when rotation threshold is {m_AuthoritativeTransform.RotAngleThreshold} degrees and only adjusted by " + + $"{Mathf.DeltaAngle(0, authorityEulerRotation.y)} degrees!"); + + authorityEulerRotation.y -= halfThreshold; + authorityRotation.eulerAngles = authorityEulerRotation; + m_AuthoritativeTransform.transform.rotation = authorityRotation; + results = m_AuthoritativeTransform.ApplyState(); + WaitForNextTick(); + Assert.IsTrue(results.isRotationDirty, $"Rotation was not dirty when rotated by {Mathf.DeltaAngle(0, authorityEulerRotation.y)} degrees!"); + + //Reset rotation back to zero on all axis + authorityRotation.eulerAngles = authorityEulerRotation = Vector3.zero; + m_AuthoritativeTransform.transform.rotation = authorityRotation; + WaitForNextTick(); + + authorityEulerRotation.y -= halfThreshold; + authorityRotation.eulerAngles = authorityEulerRotation; + m_AuthoritativeTransform.transform.rotation = authorityRotation; + results = m_AuthoritativeTransform.ApplyState(); + WaitForNextTick(); + Assert.IsFalse(results.isRotationDirty, $"Rotation is dirty when rotation threshold is {m_AuthoritativeTransform.RotAngleThreshold} degrees and only adjusted by " + + $"{Mathf.DeltaAngle(0, authorityEulerRotation.y)} degrees!"); + + authorityEulerRotation.y -= halfThreshold; + authorityRotation.eulerAngles = authorityEulerRotation; + m_AuthoritativeTransform.transform.rotation = authorityRotation; + results = m_AuthoritativeTransform.ApplyState(); + WaitForNextTick(); + Assert.IsTrue(results.isRotationDirty, $"Rotation was not dirty when rotated by {Mathf.DeltaAngle(0, authorityEulerRotation.y)} degrees!"); + } + + private bool ValidateBitSetValues() + { + var serverState = m_AuthoritativeTransform.AuthorityLastSentState; + var clientState = m_NonAuthoritativeTransform.LocalAuthoritativeNetworkState; + if (serverState.HasPositionX == clientState.HasPositionX && serverState.HasPositionY == clientState.HasPositionY && serverState.HasPositionZ == clientState.HasPositionZ && + serverState.HasRotAngleX == clientState.HasRotAngleX && serverState.HasRotAngleY == clientState.HasRotAngleY && serverState.HasRotAngleZ == clientState.HasRotAngleZ && + serverState.HasScaleX == clientState.HasScaleX && serverState.HasScaleY == clientState.HasScaleY && serverState.HasScaleZ == clientState.HasScaleZ) + { + return true; + } + return false; + } + + /// + /// Test to make sure that the bitset value is updated properly + /// + [Test] + public void TestBitsetValue([Values] Interpolation interpolation) + { + m_AuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; + m_NonAuthoritativeTransform.RotAngleThreshold = m_AuthoritativeTransform.RotAngleThreshold = 0.1f; + m_AuthoritativeTransform.transform.rotation = Quaternion.Euler(1, 2, 3); + WaitForNextTick(); + var success = WaitForConditionOrTimeOutWithTimeTravel(ValidateBitSetValues); + Assert.True(success, $"Timed out waiting for Authoritative Bitset state to equal NonAuthoritative replicated Bitset state!"); + success = WaitForConditionOrTimeOutWithTimeTravel(() => RotationsMatch()); + Assert.True(success, $"[Timed-Out] Authoritative rotation {m_AuthoritativeTransform.transform.rotation.eulerAngles} != Non-Authoritative rotation {m_NonAuthoritativeTransform.transform.rotation.eulerAngles}"); + } + + /// + /// This test validates the method + /// usage for the non-authoritative side. It will either be the owner or the server making/requesting state changes. + /// This validates that: + /// - The owner authoritative mode can still be controlled by the server (i.e. owner authoritative with server authority override capabilities) + /// - The server authoritative mode can still be directed by the client owner. + /// + /// + /// This also tests that the original server authoritative model with client-owner driven NetworkTransforms is preserved. + /// + [Test] + public void NonAuthorityOwnerSettingStateTest([Values] Interpolation interpolation) + { + var interpolate = interpolation != Interpolation.EnableInterpolate; + m_AuthoritativeTransform.Interpolate = interpolate; + m_NonAuthoritativeTransform.Interpolate = interpolate; + m_NonAuthoritativeTransform.RotAngleThreshold = m_AuthoritativeTransform.RotAngleThreshold = 0.1f; + + // Test one parameter at a time first + var newPosition = new Vector3(125f, 35f, 65f); + var newRotation = Quaternion.Euler(1, 2, 3); + var newScale = new Vector3(2.0f, 2.0f, 2.0f); + m_NonAuthoritativeTransform.SetState(newPosition, null, null, interpolate); + var success = WaitForConditionOrTimeOutWithTimeTravel(() => PositionsMatchesValue(newPosition)); + Assert.True(success, $"Timed out waiting for non-authoritative position state request to be applied!"); + Assert.True(Approximately(newPosition, m_AuthoritativeTransform.transform.position), "Authoritative position does not match!"); + Assert.True(Approximately(newPosition, m_NonAuthoritativeTransform.transform.position), "Non-Authoritative position does not match!"); + + m_NonAuthoritativeTransform.SetState(null, newRotation, null, interpolate); + success = WaitForConditionOrTimeOutWithTimeTravel(() => RotationMatchesValue(newRotation.eulerAngles)); + Assert.True(success, $"Timed out waiting for non-authoritative rotation state request to be applied!"); + Assert.True(Approximately(newRotation.eulerAngles, m_AuthoritativeTransform.transform.rotation.eulerAngles), "Authoritative rotation does not match!"); + Assert.True(Approximately(newRotation.eulerAngles, m_NonAuthoritativeTransform.transform.rotation.eulerAngles), "Non-Authoritative rotation does not match!"); + + m_NonAuthoritativeTransform.SetState(null, null, newScale, interpolate); + success = WaitForConditionOrTimeOutWithTimeTravel(() => ScaleMatchesValue(newScale)); + Assert.True(success, $"Timed out waiting for non-authoritative scale state request to be applied!"); + Assert.True(Approximately(newScale, m_AuthoritativeTransform.transform.localScale), "Authoritative scale does not match!"); + Assert.True(Approximately(newScale, m_NonAuthoritativeTransform.transform.localScale), "Non-Authoritative scale does not match!"); + + // Test all parameters at once + newPosition = new Vector3(55f, 95f, -25f); + newRotation = Quaternion.Euler(20, 5, 322); + newScale = new Vector3(0.5f, 0.5f, 0.5f); + + m_NonAuthoritativeTransform.SetState(newPosition, newRotation, newScale, interpolate); + success = WaitForConditionOrTimeOutWithTimeTravel(() => PositionRotationScaleMatches(newPosition, newRotation.eulerAngles, newScale)); + Assert.True(success, $"Timed out waiting for non-authoritative position, rotation, and scale state request to be applied!"); + Assert.True(Approximately(newPosition, m_AuthoritativeTransform.transform.position), "Authoritative position does not match!"); + Assert.True(Approximately(newPosition, m_NonAuthoritativeTransform.transform.position), "Non-Authoritative position does not match!"); + Assert.True(Approximately(newRotation.eulerAngles, m_AuthoritativeTransform.transform.rotation.eulerAngles), "Authoritative rotation does not match!"); + Assert.True(Approximately(newRotation.eulerAngles, m_NonAuthoritativeTransform.transform.rotation.eulerAngles), "Non-Authoritative rotation does not match!"); + Assert.True(Approximately(newScale, m_AuthoritativeTransform.transform.localScale), "Authoritative scale does not match!"); + Assert.True(Approximately(newScale, m_NonAuthoritativeTransform.transform.localScale), "Non-Authoritative scale does not match!"); + } + } +} diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs.meta new file mode 100644 index 0000000000..88f78f4a44 --- /dev/null +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7a69eaaf3c4b8464a93520a3514bf5e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs index fb60f4ccd5..4354e85811 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs @@ -1,8 +1,6 @@ using System.Collections; -using System.Text; using NUnit.Framework; using Unity.Netcode.Components; -using Unity.Netcode.TestHelpers.Runtime; using UnityEngine; using UnityEngine.TestTools; @@ -14,380 +12,78 @@ namespace Unity.Netcode.RuntimeTests /// models for each operating mode when packet loss and latency is /// present. /// - [TestFixture(HostOrServer.Host, Authority.ServerAuthority)] - [TestFixture(HostOrServer.Host, Authority.OwnerAuthority)] - - public class NetworkTransformPacketLossTests : IntegrationTestWithApproximation + [TestFixture(HostOrServer.Host, Authority.ServerAuthority, RotationCompression.None, Rotation.Euler, Precision.Full)] + [TestFixture(HostOrServer.Host, Authority.ServerAuthority, RotationCompression.None, Rotation.Euler, Precision.Half)] + [TestFixture(HostOrServer.Host, Authority.ServerAuthority, RotationCompression.None, Rotation.Quaternion, Precision.Full)] + [TestFixture(HostOrServer.Host, Authority.ServerAuthority, RotationCompression.None, Rotation.Quaternion, Precision.Half)] + [TestFixture(HostOrServer.Host, Authority.ServerAuthority, RotationCompression.QuaternionCompress, Rotation.Quaternion, Precision.Full)] + [TestFixture(HostOrServer.Host, Authority.ServerAuthority, RotationCompression.QuaternionCompress, Rotation.Quaternion, Precision.Half)] + public class NetworkTransformPacketLossTests : NetworkTransformBase { private const int k_Latency = 50; private const int k_PacketLoss = 2; - private NetworkObject m_AuthoritativePlayer; - private NetworkObject m_NonAuthoritativePlayer; - private NetworkObject m_ChildObject; - private NetworkObject m_SubChildObject; - private NetworkObject m_ParentObject; - - private NetworkTransformTestComponent m_AuthoritativeTransform; - private NetworkTransformTestComponent m_NonAuthoritativeTransform; - private NetworkTransformTestComponent m_OwnerTransform; - - private readonly Authority m_Authority; - - public enum Authority - { - ServerAuthority, - OwnerAuthority - } - - public enum Interpolation - { - DisableInterpolate, - EnableInterpolate - } - - public enum Precision - { - Half, - Full - } - - public enum Rotation - { - Euler, - Quaternion - } - - public enum RotationCompression - { - None, - QuaternionCompress - } - - - public enum TransformSpace - { - World, - Local - } - - public enum OverrideState - { - Update, - CommitToTransform, - SetState - } - - public enum Axis - { - X, - Y, - Z, - XY, - XZ, - YZ, - XYZ - } - - public enum NetworkConditions - { - PacketLoss, - LatencyAndPacketLoss - } + private Vector3 m_RandomPosition; + private Vector3 m_TeleportOffset = new Vector3(-1024f, 0f, 0f); + private bool m_Teleported; /// /// Constructor /// /// Determines if we are running as a server or host /// Determines if we are using server or owner authority - public NetworkTransformPacketLossTests(HostOrServer testWithHost, Authority authority) - { - m_UseHost = testWithHost == HostOrServer.Host; - m_Authority = authority; - } - - protected override int NumberOfClients => 1; - protected override bool m_SetupIsACoroutine => false; - protected override bool m_TearDownIsACoroutine => false; - - protected override void OnInlineSetup() - { - NetworkTransformTestComponent.AuthorityInstance = null; - m_Precision = Precision.Full; - ChildObjectComponent.Reset(); - } - - protected override void OnInlineTearDown() - { - m_EnableVerboseDebug = false; - Object.DestroyImmediate(m_PlayerPrefab); - } - - protected override void OnCreatePlayerPrefab() - { - var networkTransformTestComponent = m_PlayerPrefab.AddComponent(); - networkTransformTestComponent.ServerAuthority = m_Authority == Authority.ServerAuthority; - } + public NetworkTransformPacketLossTests(HostOrServer testWithHost, Authority authority, RotationCompression rotationCompression, Rotation rotation, Precision precision) : + base(testWithHost, authority, rotationCompression, rotation, precision) + { } protected override void OnServerAndClientsCreated() { - var subChildObject = CreateNetworkObjectPrefab("SubChildObject"); - var subChildNetworkTransform = subChildObject.AddComponent(); - subChildNetworkTransform.ServerAuthority = m_Authority == Authority.ServerAuthority; - m_SubChildObject = subChildObject.GetComponent(); - - var childObject = CreateNetworkObjectPrefab("ChildObject"); - var childNetworkTransform = childObject.AddComponent(); - childNetworkTransform.ServerAuthority = m_Authority == Authority.ServerAuthority; - m_ChildObject = childObject.GetComponent(); - - var parentObject = CreateNetworkObjectPrefab("ParentObject"); - var parentNetworkTransform = parentObject.AddComponent(); - parentNetworkTransform.ServerAuthority = m_Authority == Authority.ServerAuthority; - m_ParentObject = parentObject.GetComponent(); - - // Now apply local transform values - m_ChildObject.transform.position = m_ChildObjectLocalPosition; - var childRotation = m_ChildObject.transform.rotation; - childRotation.eulerAngles = m_ChildObjectLocalRotation; - m_ChildObject.transform.rotation = childRotation; - m_ChildObject.transform.localScale = m_ChildObjectLocalScale; - - m_SubChildObject.transform.position = m_SubChildObjectLocalPosition; - var subChildRotation = m_SubChildObject.transform.rotation; - subChildRotation.eulerAngles = m_SubChildObjectLocalRotation; - m_SubChildObject.transform.rotation = childRotation; - m_SubChildObject.transform.localScale = m_SubChildObjectLocalScale; - - if (m_EnableVerboseDebug) - { - m_ServerNetworkManager.LogLevel = LogLevel.Developer; - foreach (var clientNetworkManager in m_ClientNetworkManagers) - { - clientNetworkManager.LogLevel = LogLevel.Developer; - } - } + base.OnServerAndClientsCreated(); var unityTransport = m_ServerNetworkManager.NetworkConfig.NetworkTransport as Transports.UTP.UnityTransport; unityTransport.SetDebugSimulatorParameters(k_Latency, 0, k_PacketLoss); } - protected override IEnumerator OnServerAndClientsConnected() - { - - // Wait for the client-side to notify it is finished initializing and spawning. - yield return WaitForClientsConnectedOrTimeOut(); - AssertOnTimeout("Timed out waiting for client-side to notify it is ready!"); - - // Get the client player representation on both the server and the client side - var serverSideClientPlayer = m_PlayerNetworkObjects[0][m_ClientNetworkManagers[0].LocalClientId]; - var clientSideClientPlayer = m_PlayerNetworkObjects[m_ClientNetworkManagers[0].LocalClientId][m_ClientNetworkManagers[0].LocalClientId]; - - m_AuthoritativePlayer = m_Authority == Authority.ServerAuthority ? serverSideClientPlayer : clientSideClientPlayer; - m_NonAuthoritativePlayer = m_Authority == Authority.ServerAuthority ? clientSideClientPlayer : serverSideClientPlayer; - - // Get the NetworkTransformTestComponent to make sure the client side is ready before starting test - m_AuthoritativeTransform = m_AuthoritativePlayer.GetComponent(); - m_NonAuthoritativeTransform = m_NonAuthoritativePlayer.GetComponent(); - - m_OwnerTransform = m_AuthoritativeTransform.IsOwner ? m_AuthoritativeTransform : m_NonAuthoritativeTransform; - - Assert.True(m_AuthoritativeTransform.CanCommitToTransform); - Assert.False(m_NonAuthoritativeTransform.CanCommitToTransform); - - yield return s_DefaultWaitForTick; - } - - /// - /// Returns true when the server-host and all clients have - /// instantiated the child object to be used in - /// - /// - private bool AllChildObjectInstancesAreSpawned() - { - if (ChildObjectComponent.AuthorityInstance == null) - { - return false; - } - - if (ChildObjectComponent.HasSubChild && ChildObjectComponent.AuthoritySubInstance == null) - { - return false; - } - - foreach (var clientNetworkManager in m_ClientNetworkManagers) - { - if (!ChildObjectComponent.ClientInstances.ContainsKey(clientNetworkManager.LocalClientId)) - { - return false; - } - } - return true; - } - - private bool AllChildObjectInstancesHaveChild() - { - foreach (var instance in ChildObjectComponent.ClientInstances.Values) - { - if (instance.transform.parent == null) - { - return false; - } - } - if (ChildObjectComponent.HasSubChild) - { - foreach (var instance in ChildObjectComponent.ClientSubChildInstances.Values) - { - if (instance.transform.parent == null) - { - return false; - } - } - } - return true; - } - - // To test that local position, rotation, and scale remain the same when parented. - private Vector3 m_ChildObjectLocalPosition = new Vector3(5.0f, 0.0f, -5.0f); - private Vector3 m_ChildObjectLocalRotation = new Vector3(-35.0f, 90.0f, 270.0f); - private Vector3 m_ChildObjectLocalScale = new Vector3(0.1f, 0.5f, 0.4f); - private Vector3 m_SubChildObjectLocalPosition = new Vector3(2.0f, 1.0f, -1.0f); - private Vector3 m_SubChildObjectLocalRotation = new Vector3(5.0f, 15.0f, 124.0f); - private Vector3 m_SubChildObjectLocalScale = new Vector3(1.0f, 0.15f, 0.75f); - - - /// - /// A wait condition specific method that assures the local space coordinates - /// are not impacted by NetworkTransform when parented. - /// - private bool AllInstancesKeptLocalTransformValues() - { - var authorityObjectLocalPosition = m_AuthorityChildObject.transform.localPosition; - var authorityObjectLocalRotation = m_AuthorityChildObject.transform.localRotation.eulerAngles; - var authorityObjectLocalScale = m_AuthorityChildObject.transform.localScale; - - foreach (var childInstance in ChildObjectComponent.Instances) - { - var childLocalPosition = childInstance.transform.localPosition; - var childLocalRotation = childInstance.transform.localRotation.eulerAngles; - var childLocalScale = childInstance.transform.localScale; - // Adjust approximation based on precision - if (m_Precision == Precision.Half) - { - m_CurrentHalfPrecision = k_HalfPrecisionPosScale; - } - if (!Approximately(childLocalPosition, authorityObjectLocalPosition)) - { - return false; - } - if (!Approximately(childLocalScale, authorityObjectLocalScale)) - { - return false; - } - // Adjust approximation based on precision - if (m_Precision == Precision.Half || m_RotationCompression == RotationCompression.QuaternionCompress) - { - m_CurrentHalfPrecision = k_HalfPrecisionRot; - } - if (!ApproximatelyEuler(childLocalRotation, authorityObjectLocalRotation)) - { - return false; - } - } - return true; - } - - private enum ChildrenTransformCheckType - { - Connected_Clients, - Late_Join_Client - } - /// - /// Handles validating the local space values match the original local space values. - /// If not, it generates a message containing the axial values that did not match - /// the target/start local space values. + /// Handles validating all children of the test objects have matching local and global space vaues. /// private IEnumerator AllChildrenLocalTransformValuesMatch(bool useSubChild, ChildrenTransformCheckType checkType) { - var infoMessage = new StringBuilder($"[{checkType}][{useSubChild}] Timed out waiting for all children to have the correct local space values:\n"); - yield return WaitForConditionOrTimeOut(AllInstancesKeptLocalTransformValues); - AssertOnTimeout(infoMessage.ToString()); - - var authorityObjectLocalPosition = useSubChild ? m_AuthoritySubChildObject.transform.localPosition : m_AuthorityChildObject.transform.localPosition; - var authorityObjectLocalRotation = useSubChild ? m_AuthoritySubChildObject.transform.localRotation.eulerAngles : m_AuthorityChildObject.transform.localRotation.eulerAngles; - var authorityObjectLocalScale = useSubChild ? m_AuthoritySubChildObject.transform.localScale : m_AuthorityChildObject.transform.localScale; - var success = !s_GlobalTimeoutHelper.TimedOut; + // We don't assert on timeout here because we want to log this information during PostAllChildrenLocalTransformValuesMatch + yield return WaitForConditionOrTimeOut(() => AllInstancesKeptLocalTransformValues(useSubChild)); + var success = true; + m_InfoMessage.AppendLine($"[{checkType}][{useSubChild}] Timed out waiting for all children to have the correct local space values:\n"); if (s_GlobalTimeoutHelper.TimedOut) { - // If we timed out, then wait for a full range of ticks (plus 1) to assure it sent synchronization data. + var waitForMs = new WaitForSeconds(0.001f); + // If we timed out, then wait for a full range of ticks to assure all data has been synchronized before declaring this a failed test. for (int j = 0; j < m_ServerNetworkManager.NetworkConfig.TickRate; j++) { var instances = useSubChild ? ChildObjectComponent.SubInstances : ChildObjectComponent.Instances; - foreach (var childInstance in ChildObjectComponent.Instances) - { - var childLocalPosition = childInstance.transform.localPosition; - var childLocalRotation = childInstance.transform.localRotation.eulerAngles; - var childLocalScale = childInstance.transform.localScale; - // Adjust approximation based on precision - if (m_Precision == Precision.Half || m_RotationCompression == RotationCompression.QuaternionCompress) - { - m_CurrentHalfPrecision = k_HalfPrecisionPosScale; - } - if (!Approximately(childLocalPosition, authorityObjectLocalPosition)) - { - infoMessage.AppendLine($"[{childInstance.name}] Child's Local Position ({childLocalPosition}) | Authority Local Position ({authorityObjectLocalPosition})"); - success = false; - } - if (!Approximately(childLocalScale, authorityObjectLocalScale)) - { - infoMessage.AppendLine($"[{childInstance.name}] Child's Local Scale ({childLocalScale}) | Authority Local Scale ({authorityObjectLocalScale})"); - success = false; - } - - // Adjust approximation based on precision - if (m_Precision == Precision.Half || m_RotationCompression == RotationCompression.QuaternionCompress) - { - m_CurrentHalfPrecision = k_HalfPrecisionRot; - } - if (!ApproximatelyEuler(childLocalRotation, authorityObjectLocalRotation)) - { - infoMessage.AppendLine($"[{childInstance.name}] Child's Local Rotation ({childLocalRotation}) | Authority Local Rotation ({authorityObjectLocalRotation})"); - success = false; - } - } - yield return s_DefaultWaitForTick; + success = PostAllChildrenLocalTransformValuesMatch(useSubChild); + yield return waitForMs; } + } - if (!success) - { - Assert.True(success, infoMessage.ToString()); - } + if (!success) + { + Assert.True(success, m_InfoMessage.ToString()); } } - private NetworkObject m_AuthorityParentObject; - private NetworkTransformTestComponent m_AuthorityParentNetworkTransform; - private NetworkObject m_AuthorityChildObject; - private NetworkObject m_AuthoritySubChildObject; - private ChildObjectComponent m_AuthorityChildNetworkTransform; - - private ChildObjectComponent m_AuthoritySubChildNetworkTransform; - /// /// Validates that transform values remain the same when a NetworkTransform is /// parented under another NetworkTransform under all of the possible axial conditions /// as well as when the parent has a varying scale. /// [UnityTest] - public IEnumerator ParentedNetworkTransformTest([Values] Precision precision, [Values] Rotation rotation, - [Values] RotationCompression rotationCompression, [Values] Interpolation interpolation, [Values] bool worldPositionStays, - [Values(0.5f, 1.0f, 5.0f)] float scale) + public IEnumerator ParentedNetworkTransformTest([Values] Interpolation interpolation, [Values] bool worldPositionStays, [Values(0.5f, 1.0f, 5.0f)] float scale) { - // Set the precision being used for threshold adjustments - m_Precision = precision; - m_RotationCompression = rotationCompression; - + ChildObjectComponent.EnableChildLog = m_EnableVerboseDebug; + if (m_EnableVerboseDebug) + { + ChildObjectComponent.TestCount++; + } // Get the NetworkManager that will have authority in order to spawn with the correct authority var isServerAuthority = m_Authority == Authority.ServerAuthority; var authorityNetworkManager = m_ServerNetworkManager; @@ -414,14 +110,14 @@ public IEnumerator ParentedNetworkTransformTest([Values] Precision precision, [V // The child NetworkTransform will use world space when world position stays and // local space when world position does not stay when parenting. ChildObjectComponent.AuthorityInstance.InLocalSpace = !worldPositionStays; - ChildObjectComponent.AuthorityInstance.UseHalfFloatPrecision = precision == Precision.Half; - ChildObjectComponent.AuthorityInstance.UseQuaternionSynchronization = rotation == Rotation.Quaternion; - ChildObjectComponent.AuthorityInstance.UseQuaternionCompression = rotationCompression == RotationCompression.QuaternionCompress; + ChildObjectComponent.AuthorityInstance.UseHalfFloatPrecision = m_Precision == Precision.Half; + ChildObjectComponent.AuthorityInstance.UseQuaternionSynchronization = m_Rotation == Rotation.Quaternion; + ChildObjectComponent.AuthorityInstance.UseQuaternionCompression = m_RotationCompression == RotationCompression.QuaternionCompress; ChildObjectComponent.AuthoritySubInstance.InLocalSpace = !worldPositionStays; - ChildObjectComponent.AuthoritySubInstance.UseHalfFloatPrecision = precision == Precision.Half; - ChildObjectComponent.AuthoritySubInstance.UseQuaternionSynchronization = rotation == Rotation.Quaternion; - ChildObjectComponent.AuthoritySubInstance.UseQuaternionCompression = rotationCompression == RotationCompression.QuaternionCompress; + ChildObjectComponent.AuthoritySubInstance.UseHalfFloatPrecision = m_Precision == Precision.Half; + ChildObjectComponent.AuthoritySubInstance.UseQuaternionSynchronization = m_Rotation == Rotation.Quaternion; + ChildObjectComponent.AuthoritySubInstance.UseQuaternionCompression = m_RotationCompression == RotationCompression.QuaternionCompress; // Set whether we are interpolating or not m_AuthorityParentNetworkTransform = m_AuthorityParentObject.GetComponent(); @@ -454,8 +150,8 @@ public IEnumerator ParentedNetworkTransformTest([Values] Precision precision, [V // This waits for all child instances to be parented yield return WaitForConditionOrTimeOut(AllChildObjectInstancesHaveChild); AssertOnTimeout("Timed out waiting for all instances to have parented a child!"); - var latencyWait = new WaitForSeconds(k_Latency * 0.001f); - // Wait for at least the designated latency period + var latencyWait = new WaitForSeconds(k_Latency * 0.003f); + // Wait for at least 3x designated latency period yield return latencyWait; // This validates each child instance has preserved their local space values @@ -475,7 +171,7 @@ public IEnumerator ParentedNetworkTransformTest([Values] Precision precision, [V yield return WaitForConditionOrTimeOut(AllChildObjectInstancesHaveChild); AssertOnTimeout("Timed out waiting for all instances to have parented a child!"); - // Wait for at least the designated latency period + // Wait for at least 3x designated latency period yield return latencyWait; // This validates each child instance has preserved their local space values @@ -485,114 +181,6 @@ public IEnumerator ParentedNetworkTransformTest([Values] Precision precision, [V yield return AllChildrenLocalTransformValuesMatch(true, ChildrenTransformCheckType.Late_Join_Client); } - /// - /// Validates that moving, rotating, and scaling the authority side with a single - /// tick will properly synchronize the non-authoritative side with the same values. - /// - private void MoveRotateAndScaleAuthority(Vector3 position, Vector3 rotation, Vector3 scale, OverrideState overrideState) - { - switch (overrideState) - { - case OverrideState.SetState: - { - var authoritativeRotation = m_AuthoritativeTransform.GetSpaceRelativeRotation(); - authoritativeRotation.eulerAngles = rotation; - if (m_Authority == Authority.OwnerAuthority) - { - // Under the scenario where the owner is not the server, and non-auth is the server we set the state from the server - // to be updated to the owner. - if (m_AuthoritativeTransform.IsOwner && !m_AuthoritativeTransform.IsServer && m_NonAuthoritativeTransform.IsServer) - { - m_NonAuthoritativeTransform.SetState(position, authoritativeRotation, scale); - } - else - { - m_AuthoritativeTransform.SetState(position, authoritativeRotation, scale); - } - } - else - { - m_AuthoritativeTransform.SetState(position, authoritativeRotation, scale); - } - - break; - } - case OverrideState.Update: - default: - { - m_AuthoritativeTransform.transform.position = position; - - var authoritativeRotation = m_AuthoritativeTransform.GetSpaceRelativeRotation(); - authoritativeRotation.eulerAngles = rotation; - m_AuthoritativeTransform.transform.rotation = authoritativeRotation; - m_AuthoritativeTransform.transform.localScale = scale; - break; - } - } - } - - // The number of iterations to change position, rotation, and scale for NetworkTransformMultipleChangesOverTime - private const int k_PositionRotationScaleIterations = 3; - private const int k_PositionRotationScaleIterations3Axis = 8; - - protected override void OnNewClientCreated(NetworkManager networkManager) - { - networkManager.NetworkConfig.Prefabs = m_ServerNetworkManager.NetworkConfig.Prefabs; - base.OnNewClientCreated(networkManager); - } - - private Precision m_Precision = Precision.Full; - private RotationCompression m_RotationCompression = RotationCompression.None; - private float m_CurrentHalfPrecision = 0.0f; - private const float k_HalfPrecisionPosScale = 0.041f; - private const float k_HalfPrecisionRot = 0.725f; - - protected override float GetDeltaVarianceThreshold() - { - if (m_Precision == Precision.Half || m_RotationCompression == RotationCompression.QuaternionCompress) - { - return m_CurrentHalfPrecision; - } - return base.GetDeltaVarianceThreshold(); - } - - - private Axis m_CurrentAxis; - - private bool m_AxisExcluded; - - /// - /// Randomly determine if an axis should be excluded. - /// If so, then randomly pick one of the axis to be excluded. - /// - private Vector3 RandomlyExcludeAxis(Vector3 delta) - { - if (Random.Range(0.0f, 1.0f) >= 0.5f) - { - m_AxisExcluded = true; - var axisToIgnore = Random.Range(0, 2); - switch (axisToIgnore) - { - case 0: - { - delta.x = 0; - break; - } - case 1: - { - delta.y = 0; - break; - } - case 2: - { - delta.z = 0; - break; - } - } - } - return delta; - } - /// /// This validates that multiple changes can occur within the same tick or over /// several ticks while still keeping non-authoritative instances synchronized. @@ -603,8 +191,7 @@ private Vector3 RandomlyExcludeAxis(Vector3 delta) /// delta update, and it runs through 8 delta updates per unique test. /// [UnityTest] - public IEnumerator NetworkTransformMultipleChangesOverTime([Values] TransformSpace testLocalTransform, - [Values] Precision precision, [Values] Rotation rotationSynch, [Values] Axis axis) + public IEnumerator NetworkTransformMultipleChangesOverTime([Values] TransformSpace testLocalTransform, [Values] Axis axis) { yield return s_DefaultWaitForTick; // Just test for OverrideState.Update (they are already being tested for functionality in normal NetworkTransformTests) @@ -628,9 +215,9 @@ public IEnumerator NetworkTransformMultipleChangesOverTime([Values] TransformSpa // Authority dictates what is synchronized and what the precision is going to be // so we only need to set this on the authoritative side. - m_AuthoritativeTransform.UseHalfFloatPrecision = precision == Precision.Half; - m_AuthoritativeTransform.UseQuaternionSynchronization = rotationSynch == Rotation.Quaternion; - m_Precision = precision; + m_AuthoritativeTransform.UseHalfFloatPrecision = m_Precision == Precision.Half; + m_AuthoritativeTransform.UseQuaternionSynchronization = m_Rotation == Rotation.Quaternion; + m_AuthoritativeTransform.UseQuaternionCompression = m_RotationCompression == RotationCompression.QuaternionCompress; m_AuthoritativeTransform.SyncPositionX = axisX; m_AuthoritativeTransform.SyncPositionY = axisY; @@ -808,9 +395,12 @@ public IEnumerator TestAuthoritativeTransformChangeOneAtATime([Values] Transform { // Just test for OverrideState.Update (they are already being tested for functionality in normal NetworkTransformTests) m_AuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; + m_AuthoritativeTransform.InLocalSpace = testLocalTransform == TransformSpace.Local; + m_AuthoritativeTransform.UseQuaternionCompression = m_RotationCompression == RotationCompression.QuaternionCompress; + m_AuthoritativeTransform.UseHalfFloatPrecision = m_Precision == Precision.Half; + m_AuthoritativeTransform.UseQuaternionSynchronization = m_Rotation == Rotation.Quaternion; m_NonAuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; - m_AuthoritativeTransform.InLocalSpace = testLocalTransform == TransformSpace.Local; // test position var authPlayerTransform = m_AuthoritativeTransform.transform; @@ -839,7 +429,6 @@ public IEnumerator TestAuthoritativeTransformChangeOneAtATime([Values] Transform AssertOnTimeout($"Timed out waiting for scale values to match"); } - [UnityTest] public IEnumerator TestSameFrameDeltaStateAndTeleport([Values] TransformSpace testLocalTransform, [Values] Interpolation interpolation) { @@ -855,23 +444,22 @@ public IEnumerator TestSameFrameDeltaStateAndTeleport([Values] TransformSpace te Assert.AreEqual(Vector3.zero, m_NonAuthoritativeTransform.transform.position, "server side pos should be zero at first"); // sanity check m_AuthoritativeTransform.AuthorityPushedTransformState += OnAuthorityPushedTransformState; - m_AuthoritativeTransform.transform.position = GetRandomVector3(2f, 30f); + m_RandomPosition = GetRandomVector3(2f, 30f); + m_AuthoritativeTransform.transform.position = m_RandomPosition; + m_Teleported = false; + yield return WaitForConditionOrTimeOut(() => m_Teleported); + AssertOnTimeout($"Timed out waiting for random position to be pushed!"); yield return WaitForConditionOrTimeOut(() => PositionsMatch()); AssertOnTimeout($"Timed out waiting for positions to match {m_AuthoritativeTransform.transform.position} | {m_NonAuthoritativeTransform.transform.position}"); - Assert.IsTrue((m_TeleportStateUpdate.NetworkTick - m_DeltaStateUpdate.NetworkTick) == 1, $"Teleport next tick failed! Teleporting state tick: {m_TeleportStateUpdate.NetworkTick}" + - $" | Current delta state update tick: {m_DeltaStateUpdate.NetworkTick}"); - var authPosition = m_AuthoritativeTransform.GetSpaceRelativePosition(); var nonAuthPosition = m_NonAuthoritativeTransform.GetSpaceRelativePosition(); - Assert.True(Approximately(authPosition, m_TeleportPosition), $"Authority did not set its position ({authPosition}) to the teleport position ({m_TeleportPosition})!"); - Assert.True(Approximately(nonAuthPosition, m_TeleportPosition), $"NonAuthority did not set its position ({nonAuthPosition}) to the teleport position ({m_TeleportPosition})!"); - } - private NetworkTransform.NetworkTransformState m_DeltaStateUpdate; - private NetworkTransform.NetworkTransformState m_TeleportStateUpdate; - private Vector3 m_TeleportPosition = new Vector3(-1024f, 0f, 0f); + var finalPosition = m_TeleportOffset + m_RandomPosition; + Assert.True(Approximately(authPosition, finalPosition), $"Authority did not set its position ({authPosition}) to the teleport position ({finalPosition})!"); + Assert.True(Approximately(nonAuthPosition, finalPosition), $"NonAuthority did not set its position ({nonAuthPosition}) to the teleport position ({finalPosition})!"); + } /// /// For the TestSameFrameDeltaStateAndTeleport test, we want to teleport on the same frame that we had a delta state update when @@ -881,65 +469,25 @@ public IEnumerator TestSameFrameDeltaStateAndTeleport([Values] TransformSpace te /// private void OnAuthorityPushedTransformState(ref NetworkTransform.NetworkTransformState networkTransformState) { - m_DeltaStateUpdate = networkTransformState; - m_AuthoritativeTransform.SetState(m_TeleportPosition, null, null, false); - m_TeleportStateUpdate = m_AuthoritativeTransform.DeferredNetworkTransformState; - m_AuthoritativeTransform.AuthorityPushedTransformState -= OnAuthorityPushedTransformState; - } - - private bool PositionRotationScaleMatches() - { - return RotationsMatch() && PositionsMatch() && ScaleValuesMatch(); - } - - private bool RotationsMatch(bool printDeltas = false) - { - m_CurrentHalfPrecision = k_HalfPrecisionRot; - var authorityEulerRotation = m_AuthoritativeTransform.GetSpaceRelativeRotation().eulerAngles; - var nonAuthorityEulerRotation = m_NonAuthoritativeTransform.GetSpaceRelativeRotation().eulerAngles; - var xIsEqual = ApproximatelyEuler(authorityEulerRotation.x, nonAuthorityEulerRotation.x) || !m_AuthoritativeTransform.SyncRotAngleX; - var yIsEqual = ApproximatelyEuler(authorityEulerRotation.y, nonAuthorityEulerRotation.y) || !m_AuthoritativeTransform.SyncRotAngleY; - var zIsEqual = ApproximatelyEuler(authorityEulerRotation.z, nonAuthorityEulerRotation.z) || !m_AuthoritativeTransform.SyncRotAngleZ; - if (!xIsEqual || !yIsEqual || !zIsEqual) - { - VerboseDebug($"[{m_AuthoritativeTransform.gameObject.name}][X-{xIsEqual} | Y-{yIsEqual} | Z-{zIsEqual}][{m_CurrentAxis}]" + - $"[Sync: X-{m_AuthoritativeTransform.SyncRotAngleX} | Y-{m_AuthoritativeTransform.SyncRotAngleY} | Z-{m_AuthoritativeTransform.SyncRotAngleZ}] Authority rotation {authorityEulerRotation} != [{m_NonAuthoritativeTransform.gameObject.name}] NonAuthority rotation {nonAuthorityEulerRotation}"); - } - if (printDeltas) + // Match the first position update + if (Approximately(m_RandomPosition, networkTransformState.GetPosition())) { - Debug.Log($"[Rotation Match] Euler Delta {EulerDelta(authorityEulerRotation, nonAuthorityEulerRotation)}"); + // Teleport to the m_RandomPosition plus the + m_AuthoritativeTransform.SetState(m_TeleportOffset + m_RandomPosition, null, null, false); + m_AuthoritativeTransform.AuthorityPushedTransformState -= OnAuthorityPushedTransformState; + m_Teleported = true; } - return xIsEqual && yIsEqual && zIsEqual; } - private bool PositionsMatch(bool printDeltas = false) - { - m_CurrentHalfPrecision = k_HalfPrecisionPosScale; - var authorityPosition = m_AuthoritativeTransform.GetSpaceRelativePosition(); - var nonAuthorityPosition = m_NonAuthoritativeTransform.GetSpaceRelativePosition(); - var xIsEqual = Approximately(authorityPosition.x, nonAuthorityPosition.x) || !m_AuthoritativeTransform.SyncPositionX; - var yIsEqual = Approximately(authorityPosition.y, nonAuthorityPosition.y) || !m_AuthoritativeTransform.SyncPositionY; - var zIsEqual = Approximately(authorityPosition.z, nonAuthorityPosition.z) || !m_AuthoritativeTransform.SyncPositionZ; - if (!xIsEqual || !yIsEqual || !zIsEqual) - { - VerboseDebug($"[{m_AuthoritativeTransform.gameObject.name}] Authority position {authorityPosition} != [{m_NonAuthoritativeTransform.gameObject.name}] NonAuthority position {nonAuthorityPosition}"); - } - return xIsEqual && yIsEqual && zIsEqual; - } - - private bool ScaleValuesMatch(bool printDeltas = false) - { - m_CurrentHalfPrecision = k_HalfPrecisionPosScale; - var authorityScale = m_AuthoritativeTransform.transform.localScale; - var nonAuthorityScale = m_NonAuthoritativeTransform.transform.localScale; - var xIsEqual = Approximately(authorityScale.x, nonAuthorityScale.x) || !m_AuthoritativeTransform.SyncScaleX; - var yIsEqual = Approximately(authorityScale.y, nonAuthorityScale.y) || !m_AuthoritativeTransform.SyncScaleY; - var zIsEqual = Approximately(authorityScale.z, nonAuthorityScale.z) || !m_AuthoritativeTransform.SyncScaleZ; - if (!xIsEqual || !yIsEqual || !zIsEqual) - { - VerboseDebug($"[{m_AuthoritativeTransform.gameObject.name}] Authority scale {authorityScale} != [{m_NonAuthoritativeTransform.gameObject.name}] NonAuthority scale {nonAuthorityScale}"); - } - return xIsEqual && yIsEqual && zIsEqual; - } + //public IEnumerator MultipleTeleportsBackToBack([Values] TransformSpace testLocalTransform, [Values] Interpolation interpolation) + //{ + // // Register with NetworkUpdateLoop EarlyUpdate + // // Mock receiving message that teleports + // // Determine each frame if it is a new tick + // // If so, teleport to a position + // // Check the receiving side for the teleport + // // repeat steps several times + // yield return null; + //} } } diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs index 3a1b47e466..b351b7f99a 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs @@ -1,468 +1,40 @@ -using System.Collections.Generic; -using System.Text; using NUnit.Framework; -using Unity.Netcode.Components; -using Unity.Netcode.TestHelpers.Runtime; using UnityEngine; namespace Unity.Netcode.RuntimeTests { - /// - /// Helper component for all NetworkTransformTests - /// - public class NetworkTransformTestComponent : NetworkTransform - { - public bool ServerAuthority; - public bool ReadyToReceivePositionUpdate = false; - - public NetworkTransformState AuthorityLastSentState; - public bool StatePushed { get; internal set; } - - public delegate void AuthorityPushedTransformStateDelegateHandler(ref NetworkTransformState networkTransformState); - - public event AuthorityPushedTransformStateDelegateHandler AuthorityPushedTransformState; - - protected override void OnAuthorityPushTransformState(ref NetworkTransformState networkTransformState) - { - StatePushed = true; - AuthorityLastSentState = networkTransformState; - AuthorityPushedTransformState?.Invoke(ref networkTransformState); - base.OnAuthorityPushTransformState(ref networkTransformState); - } - - - public bool StateUpdated { get; internal set; } - protected override void OnNetworkTransformStateUpdated(ref NetworkTransformState oldState, ref NetworkTransformState newState) - { - StateUpdated = true; - base.OnNetworkTransformStateUpdated(ref oldState, ref newState); - } - - protected override bool OnIsServerAuthoritative() - { - return ServerAuthority; - } - - public static NetworkTransformTestComponent AuthorityInstance; - - public override void OnNetworkSpawn() - { - base.OnNetworkSpawn(); - - if (CanCommitToTransform) - { - AuthorityInstance = this; - } - - ReadyToReceivePositionUpdate = true; - } - - public void CommitToTransform() - { - TryCommitTransformToServer(transform, NetworkManager.LocalTime.Time); - } - - public (bool isDirty, bool isPositionDirty, bool isRotationDirty, bool isScaleDirty) ApplyState() - { - var transformState = ApplyLocalNetworkState(transform); - return (transformState.IsDirty, transformState.HasPositionChange, transformState.HasRotAngleChange, transformState.HasScaleChange); - } - } - - /// - /// Helper component for NetworkTransform parenting tests when - /// a child is a parent of another child (i.e. "sub child") - /// - public class SubChildObjectComponent : ChildObjectComponent - { - protected override bool IsSubChild() - { - return true; - } - } - - /// - /// Helper component for NetworkTransform parenting tests - /// - public class ChildObjectComponent : NetworkTransform - { - public static readonly List Instances = new List(); - public static readonly List SubInstances = new List(); - public static ChildObjectComponent AuthorityInstance { get; internal set; } - public static ChildObjectComponent AuthoritySubInstance { get; internal set; } - public static readonly Dictionary ClientInstances = new Dictionary(); - public static readonly Dictionary ClientSubChildInstances = new Dictionary(); - - public static bool HasSubChild; - - public static void Reset() - { - AuthorityInstance = null; - AuthoritySubInstance = null; - HasSubChild = false; - ClientInstances.Clear(); - ClientSubChildInstances.Clear(); - Instances.Clear(); - SubInstances.Clear(); - } - - public bool ServerAuthority; - - protected virtual bool IsSubChild() - { - return false; - } - - protected override bool OnIsServerAuthoritative() - { - return ServerAuthority; - } - - public override void OnNetworkSpawn() - { - base.OnNetworkSpawn(); - if (CanCommitToTransform) - { - if (!IsSubChild()) - { - AuthorityInstance = this; - } - else - { - AuthoritySubInstance = this; - } - } - else - { - if (!IsSubChild()) - { - Instances.Add(this); - } - else - { - SubInstances.Add(this); - } - } - if (HasSubChild && IsSubChild()) - { - ClientSubChildInstances.Add(NetworkManager.LocalClientId, NetworkObject); - } - else - { - ClientInstances.Add(NetworkManager.LocalClientId, NetworkObject); - } - } - } - /// /// Integration tests for NetworkTransform that will test both /// server and host operating modes and will test both authoritative /// models for each operating mode. /// - [TestFixture(HostOrServer.Host, Authority.ServerAuthority)] - [TestFixture(HostOrServer.Host, Authority.OwnerAuthority)] - [TestFixture(HostOrServer.Server, Authority.ServerAuthority)] - [TestFixture(HostOrServer.Server, Authority.OwnerAuthority)] - - public class NetworkTransformTests : IntegrationTestWithApproximation + [TestFixture(HostOrServer.Host, Authority.ServerAuthority, RotationCompression.None, Rotation.Euler, Precision.Full)] + [TestFixture(HostOrServer.Host, Authority.ServerAuthority, RotationCompression.None, Rotation.Euler, Precision.Half)] + [TestFixture(HostOrServer.Host, Authority.ServerAuthority, RotationCompression.None, Rotation.Quaternion, Precision.Full)] + [TestFixture(HostOrServer.Host, Authority.ServerAuthority, RotationCompression.None, Rotation.Quaternion, Precision.Half)] + [TestFixture(HostOrServer.Host, Authority.ServerAuthority, RotationCompression.QuaternionCompress, Rotation.Quaternion, Precision.Full)] + [TestFixture(HostOrServer.Host, Authority.ServerAuthority, RotationCompression.QuaternionCompress, Rotation.Quaternion, Precision.Half)] + [TestFixture(HostOrServer.Host, Authority.OwnerAuthority, RotationCompression.None, Rotation.Euler, Precision.Full)] + [TestFixture(HostOrServer.Host, Authority.OwnerAuthority, RotationCompression.None, Rotation.Euler, Precision.Half)] + [TestFixture(HostOrServer.Host, Authority.OwnerAuthority, RotationCompression.None, Rotation.Quaternion, Precision.Full)] + [TestFixture(HostOrServer.Host, Authority.OwnerAuthority, RotationCompression.None, Rotation.Quaternion, Precision.Half)] + [TestFixture(HostOrServer.Host, Authority.OwnerAuthority, RotationCompression.QuaternionCompress, Rotation.Quaternion, Precision.Full)] + [TestFixture(HostOrServer.Host, Authority.OwnerAuthority, RotationCompression.QuaternionCompress, Rotation.Quaternion, Precision.Half)] + public class NetworkTransformTests : NetworkTransformBase { - private NetworkObject m_AuthoritativePlayer; - private NetworkObject m_NonAuthoritativePlayer; - private NetworkObject m_ChildObject; - private NetworkObject m_SubChildObject; - private NetworkObject m_ParentObject; - - private NetworkTransformTestComponent m_AuthoritativeTransform; - private NetworkTransformTestComponent m_NonAuthoritativeTransform; - private NetworkTransformTestComponent m_OwnerTransform; - - private readonly Authority m_Authority; - - public enum Authority - { - ServerAuthority, - OwnerAuthority - } - - public enum Interpolation - { - DisableInterpolate, - EnableInterpolate - } - - public enum Precision - { - Half, - Full - } - - public enum Rotation - { - Euler, - Quaternion - } - - public enum RotationCompression - { - None, - QuaternionCompress - } - - - public enum TransformSpace - { - World, - Local - } - - public enum OverrideState - { - Update, - CommitToTransform, - SetState - } - - public enum Axis - { - X, - Y, - Z, - XY, - XZ, - YZ, - XYZ - } - /// /// Constructor /// /// Determines if we are running as a server or host /// Determines if we are using server or owner authority - public NetworkTransformTests(HostOrServer testWithHost, Authority authority) - { - m_UseHost = testWithHost == HostOrServer.Host ? true : false; - m_Authority = authority; - } + public NetworkTransformTests(HostOrServer testWithHost, Authority authority, RotationCompression rotationCompression, Rotation rotation, Precision precision) : + base(testWithHost, authority, rotationCompression, rotation, precision) + { } - protected override int NumberOfClients => 1; protected override bool m_EnableTimeTravel => true; protected override bool m_SetupIsACoroutine => false; protected override bool m_TearDownIsACoroutine => false; - private const int k_TickRate = 60; - private int m_OriginalTargetFrameRate; - protected override void OnOneTimeSetup() - { - m_OriginalTargetFrameRate = Application.targetFrameRate; - Application.targetFrameRate = 120; - base.OnOneTimeSetup(); - } - - protected override void OnOneTimeTearDown() - { - Application.targetFrameRate = m_OriginalTargetFrameRate; - base.OnOneTimeTearDown(); - } - - protected override void OnInlineSetup() - { - NetworkTransformTestComponent.AuthorityInstance = null; - m_Precision = Precision.Full; - ChildObjectComponent.Reset(); - } - - protected override void OnInlineTearDown() - { - m_EnableVerboseDebug = false; - Object.DestroyImmediate(m_PlayerPrefab); - } - - protected override void OnCreatePlayerPrefab() - { - var networkTransformTestComponent = m_PlayerPrefab.AddComponent(); - networkTransformTestComponent.ServerAuthority = m_Authority == Authority.ServerAuthority; - } - - protected override void OnServerAndClientsCreated() - { - var subChildObject = CreateNetworkObjectPrefab("SubChildObject"); - var subChildNetworkTransform = subChildObject.AddComponent(); - subChildNetworkTransform.ServerAuthority = m_Authority == Authority.ServerAuthority; - m_SubChildObject = subChildObject.GetComponent(); - - var childObject = CreateNetworkObjectPrefab("ChildObject"); - var childNetworkTransform = childObject.AddComponent(); - childNetworkTransform.ServerAuthority = m_Authority == Authority.ServerAuthority; - m_ChildObject = childObject.GetComponent(); - - var parentObject = CreateNetworkObjectPrefab("ParentObject"); - var parentNetworkTransform = parentObject.AddComponent(); - parentNetworkTransform.ServerAuthority = m_Authority == Authority.ServerAuthority; - m_ParentObject = parentObject.GetComponent(); - - // Now apply local transform values - m_ChildObject.transform.position = m_ChildObjectLocalPosition; - var childRotation = m_ChildObject.transform.rotation; - childRotation.eulerAngles = m_ChildObjectLocalRotation; - m_ChildObject.transform.rotation = childRotation; - m_ChildObject.transform.localScale = m_ChildObjectLocalScale; - - m_SubChildObject.transform.position = m_SubChildObjectLocalPosition; - var subChildRotation = m_SubChildObject.transform.rotation; - subChildRotation.eulerAngles = m_SubChildObjectLocalRotation; - m_SubChildObject.transform.rotation = childRotation; - m_SubChildObject.transform.localScale = m_SubChildObjectLocalScale; - - if (m_EnableVerboseDebug) - { - m_ServerNetworkManager.LogLevel = LogLevel.Developer; - foreach (var clientNetworkManager in m_ClientNetworkManagers) - { - clientNetworkManager.LogLevel = LogLevel.Developer; - } - } - - m_ServerNetworkManager.NetworkConfig.TickRate = k_TickRate; - foreach (var clientNetworkManager in m_ClientNetworkManagers) - { - clientNetworkManager.NetworkConfig.TickRate = k_TickRate; - } - } - - protected override void OnTimeTravelServerAndClientsConnected() - { - // Get the client player representation on both the server and the client side - var serverSideClientPlayer = m_ServerNetworkManager.ConnectedClients[m_ClientNetworkManagers[0].LocalClientId].PlayerObject; - var clientSideClientPlayer = m_ClientNetworkManagers[0].LocalClient.PlayerObject; - - m_AuthoritativePlayer = m_Authority == Authority.ServerAuthority ? serverSideClientPlayer : clientSideClientPlayer; - m_NonAuthoritativePlayer = m_Authority == Authority.ServerAuthority ? clientSideClientPlayer : serverSideClientPlayer; - - // Get the NetworkTransformTestComponent to make sure the client side is ready before starting test - m_AuthoritativeTransform = m_AuthoritativePlayer.GetComponent(); - m_NonAuthoritativeTransform = m_NonAuthoritativePlayer.GetComponent(); - - // All of these tests will validate not using unreliable network delivery - m_AuthoritativeTransform.UseUnreliableDeltas = false; - m_NonAuthoritativeTransform.UseUnreliableDeltas = false; - - m_OwnerTransform = m_AuthoritativeTransform.IsOwner ? m_AuthoritativeTransform : m_NonAuthoritativeTransform; - - // Wait for the client-side to notify it is finished initializing and spawning. - var success = WaitForConditionOrTimeOutWithTimeTravel(() => m_NonAuthoritativeTransform.ReadyToReceivePositionUpdate == true); - Assert.True(success, "Timed out waiting for client-side to notify it is ready!"); - - Assert.True(m_AuthoritativeTransform.CanCommitToTransform); - Assert.False(m_NonAuthoritativeTransform.CanCommitToTransform); - // Just wait for at least one tick for NetworkTransforms to finish synchronization - WaitForNextTick(); - } - - /// - /// Returns true when the server-host and all clients have - /// instantiated the child object to be used in - /// - /// - private bool AllChildObjectInstancesAreSpawned() - { - if (ChildObjectComponent.AuthorityInstance == null) - { - return false; - } - - if (ChildObjectComponent.HasSubChild && ChildObjectComponent.AuthoritySubInstance == null) - { - return false; - } - - foreach (var clientNetworkManager in m_ClientNetworkManagers) - { - if (!ChildObjectComponent.ClientInstances.ContainsKey(clientNetworkManager.LocalClientId)) - { - return false; - } - } - return true; - } - - private bool AllChildObjectInstancesHaveChild() - { - foreach (var instance in ChildObjectComponent.ClientInstances.Values) - { - if (instance.transform.parent == null) - { - return false; - } - } - if (ChildObjectComponent.HasSubChild) - { - foreach (var instance in ChildObjectComponent.ClientSubChildInstances.Values) - { - if (instance.transform.parent == null) - { - return false; - } - } - } - return true; - } - - // To test that local position, rotation, and scale remain the same when parented. - private Vector3 m_ChildObjectLocalPosition = new Vector3(5.0f, 0.0f, -5.0f); - private Vector3 m_ChildObjectLocalRotation = new Vector3(-35.0f, 90.0f, 270.0f); - private Vector3 m_ChildObjectLocalScale = new Vector3(0.1f, 0.5f, 0.4f); - private Vector3 m_SubChildObjectLocalPosition = new Vector3(2.0f, 1.0f, -1.0f); - private Vector3 m_SubChildObjectLocalRotation = new Vector3(5.0f, 15.0f, 124.0f); - private Vector3 m_SubChildObjectLocalScale = new Vector3(1.0f, 0.15f, 0.75f); - - - /// - /// A wait condition specific method that assures the local space coordinates - /// are not impacted by NetworkTransform when parented. - /// - private bool AllInstancesKeptLocalTransformValues() - { - var authorityObjectLocalPosition = m_AuthorityChildObject.transform.localPosition; - var authorityObjectLocalRotation = m_AuthorityChildObject.transform.localRotation.eulerAngles; - var authorityObjectLocalScale = m_AuthorityChildObject.transform.localScale; - - foreach (var childInstance in ChildObjectComponent.Instances) - { - var childLocalPosition = childInstance.transform.localPosition; - var childLocalRotation = childInstance.transform.localRotation.eulerAngles; - var childLocalScale = childInstance.transform.localScale; - // Adjust approximation based on precision - if (m_Precision == Precision.Half) - { - m_CurrentHalfPrecision = k_HalfPrecisionPosScale; - } - if (!Approximately(childLocalPosition, authorityObjectLocalPosition)) - { - return false; - } - if (!Approximately(childLocalScale, authorityObjectLocalScale)) - { - return false; - } - // Adjust approximation based on precision - if (m_Precision == Precision.Half || m_RotationCompression == RotationCompression.QuaternionCompress) - { - m_CurrentHalfPrecision = k_HalfPrecisionRot; - } - if (!ApproximatelyEuler(childLocalRotation, authorityObjectLocalRotation)) - { - return false; - } - } - return true; - } - - private enum ChildrenTransformCheckType - { - Connected_Clients, - Late_Join_Client - } - /// /// Handles validating the local space values match the original local space values. /// If not, it generates a message containing the axial values that did not match @@ -470,61 +42,26 @@ private enum ChildrenTransformCheckType /// private void AllChildrenLocalTransformValuesMatch(bool useSubChild, ChildrenTransformCheckType checkType) { - var success = WaitForConditionOrTimeOutWithTimeTravel(AllInstancesKeptLocalTransformValues, k_TickRate * 2); - var infoMessage = new StringBuilder($"[{checkType}][{useSubChild}] Timed out waiting for all children to have the correct local space values:\n"); - var authorityObjectLocalPosition = useSubChild ? m_AuthoritySubChildObject.transform.localPosition : m_AuthorityChildObject.transform.localPosition; - var authorityObjectLocalRotation = useSubChild ? m_AuthoritySubChildObject.transform.localRotation.eulerAngles : m_AuthorityChildObject.transform.localRotation.eulerAngles; - var authorityObjectLocalScale = useSubChild ? m_AuthoritySubChildObject.transform.localScale : m_AuthorityChildObject.transform.localScale; - - if (s_GlobalTimeoutHelper.TimedOut || !success) + // We don't assert on timeout here because we want to log this information during PostAllChildrenLocalTransformValuesMatch + var success = WaitForConditionOrTimeOutWithTimeTravel(() => AllInstancesKeptLocalTransformValues(useSubChild), k_TickRate * 2); + m_InfoMessage.Clear(); + m_InfoMessage.AppendLine($"[{checkType}][{useSubChild}] Timed out waiting for all children to have the correct local space values:\n"); + if (!success) { - var instances = useSubChild ? ChildObjectComponent.SubInstances : ChildObjectComponent.Instances; - foreach (var childInstance in ChildObjectComponent.Instances) + // If we timed out, then wait for 4 ticks to assure all data has been synchronized before declaring this a failed test. + for (int j = 0; j < 4; j++) { - var childLocalPosition = childInstance.transform.localPosition; - var childLocalRotation = childInstance.transform.localRotation.eulerAngles; - var childLocalScale = childInstance.transform.localScale; - // Adjust approximation based on precision - if (m_Precision == Precision.Half || m_RotationCompression == RotationCompression.QuaternionCompress) - { - m_CurrentHalfPrecision = k_HalfPrecisionPosScale; - } - if (!Approximately(childLocalPosition, authorityObjectLocalPosition)) - { - infoMessage.AppendLine($"[{childInstance.name}] Child's Local Position ({childLocalPosition}) | Authority Local Position ({authorityObjectLocalPosition})"); - success = false; - } - if (!Approximately(childLocalScale, authorityObjectLocalScale)) - { - infoMessage.AppendLine($"[{childInstance.name}] Child's Local Scale ({childLocalScale}) | Authority Local Scale ({authorityObjectLocalScale})"); - success = false; - } - - // Adjust approximation based on precision - if (m_Precision == Precision.Half || m_RotationCompression == RotationCompression.QuaternionCompress) - { - m_CurrentHalfPrecision = k_HalfPrecisionRot; - } - if (!ApproximatelyEuler(childLocalRotation, authorityObjectLocalRotation)) - { - infoMessage.AppendLine($"[{childInstance.name}] Child's Local Rotation ({childLocalRotation}) | Authority Local Rotation ({authorityObjectLocalRotation})"); - success = false; - } - } - if (!success) - { - Assert.True(success, infoMessage.ToString()); + var instances = useSubChild ? ChildObjectComponent.SubInstances : ChildObjectComponent.Instances; + success = PostAllChildrenLocalTransformValuesMatch(useSubChild); + WaitForNextTick(); } } - } - - private NetworkObject m_AuthorityParentObject; - private NetworkTransformTestComponent m_AuthorityParentNetworkTransform; - private NetworkObject m_AuthorityChildObject; - private NetworkObject m_AuthoritySubChildObject; - private ChildObjectComponent m_AuthorityChildNetworkTransform; - private ChildObjectComponent m_AuthoritySubChildNetworkTransform; + if (!success) + { + Assert.True(success, m_InfoMessage.ToString()); + } + } /// /// Validates that transform values remain the same when a NetworkTransform is @@ -532,14 +69,8 @@ private void AllChildrenLocalTransformValuesMatch(bool useSubChild, ChildrenTran /// as well as when the parent has a varying scale. /// [Test] - public void ParentedNetworkTransformTest([Values] Precision precision, [Values] Rotation rotation, - [Values] RotationCompression rotationCompression, [Values] Interpolation interpolation, [Values] bool worldPositionStays, - [Values(0.5f, 1.0f, 5.0f)] float scale) + public void ParentedNetworkTransformTest([Values] Interpolation interpolation, [Values] bool worldPositionStays, [Values(0.5f, 1.0f, 5.0f)] float scale) { - // Set the precision being used for threshold adjustments - m_Precision = precision; - m_RotationCompression = rotationCompression; - // Get the NetworkManager that will have authority in order to spawn with the correct authority var isServerAuthority = m_Authority == Authority.ServerAuthority; var authorityNetworkManager = m_ServerNetworkManager; @@ -566,14 +97,14 @@ public void ParentedNetworkTransformTest([Values] Precision precision, [Values] // The child NetworkTransform will use world space when world position stays and // local space when world position does not stay when parenting. ChildObjectComponent.AuthorityInstance.InLocalSpace = !worldPositionStays; - ChildObjectComponent.AuthorityInstance.UseHalfFloatPrecision = precision == Precision.Half; - ChildObjectComponent.AuthorityInstance.UseQuaternionSynchronization = rotation == Rotation.Quaternion; - ChildObjectComponent.AuthorityInstance.UseQuaternionCompression = rotationCompression == RotationCompression.QuaternionCompress; + ChildObjectComponent.AuthorityInstance.UseHalfFloatPrecision = m_Precision == Precision.Half; + ChildObjectComponent.AuthorityInstance.UseQuaternionSynchronization = m_Rotation == Rotation.Quaternion; + ChildObjectComponent.AuthorityInstance.UseQuaternionCompression = m_RotationCompression == RotationCompression.QuaternionCompress; ChildObjectComponent.AuthoritySubInstance.InLocalSpace = !worldPositionStays; - ChildObjectComponent.AuthoritySubInstance.UseHalfFloatPrecision = precision == Precision.Half; - ChildObjectComponent.AuthoritySubInstance.UseQuaternionSynchronization = rotation == Rotation.Quaternion; - ChildObjectComponent.AuthoritySubInstance.UseQuaternionCompression = rotationCompression == RotationCompression.QuaternionCompress; + ChildObjectComponent.AuthoritySubInstance.UseHalfFloatPrecision = m_Precision == Precision.Half; + ChildObjectComponent.AuthoritySubInstance.UseQuaternionSynchronization = m_Rotation == Rotation.Quaternion; + ChildObjectComponent.AuthoritySubInstance.UseQuaternionCompression = m_RotationCompression == RotationCompression.QuaternionCompress; // Set whether we are interpolating or not m_AuthorityParentNetworkTransform = m_AuthorityParentObject.GetComponent(); @@ -635,133 +166,6 @@ public void ParentedNetworkTransformTest([Values] Precision precision, [Values] AllChildrenLocalTransformValuesMatch(true, ChildrenTransformCheckType.Late_Join_Client); } - /// - /// Validates that moving, rotating, and scaling the authority side with a single - /// tick will properly synchronize the non-authoritative side with the same values. - /// - private void MoveRotateAndScaleAuthority(Vector3 position, Vector3 rotation, Vector3 scale, OverrideState overrideState) - { - switch (overrideState) - { - case OverrideState.SetState: - { - var authoritativeRotation = m_AuthoritativeTransform.GetSpaceRelativeRotation(); - authoritativeRotation.eulerAngles = rotation; - if (m_Authority == Authority.OwnerAuthority) - { - // Under the scenario where the owner is not the server, and non-auth is the server we set the state from the server - // to be updated to the owner. - if (m_AuthoritativeTransform.IsOwner && !m_AuthoritativeTransform.IsServer && m_NonAuthoritativeTransform.IsServer) - { - m_NonAuthoritativeTransform.SetState(position, authoritativeRotation, scale); - } - else - { - m_AuthoritativeTransform.SetState(position, authoritativeRotation, scale); - } - } - else - { - m_AuthoritativeTransform.SetState(position, authoritativeRotation, scale); - } - - break; - } - case OverrideState.Update: - default: - { - m_AuthoritativeTransform.transform.position = position; - - var authoritativeRotation = m_AuthoritativeTransform.GetSpaceRelativeRotation(); - authoritativeRotation.eulerAngles = rotation; - m_AuthoritativeTransform.transform.rotation = authoritativeRotation; - m_AuthoritativeTransform.transform.localScale = scale; - break; - } - } - } - - /// - /// Waits until the next tick - /// - private void WaitForNextTick() - { - var currentTick = m_AuthoritativeTransform.NetworkManager.LocalTime.Tick; - while (m_AuthoritativeTransform.NetworkManager.LocalTime.Tick == currentTick) - { - var frameRate = Application.targetFrameRate; - if (frameRate <= 0) - { - frameRate = 60; - } - var frameDuration = 1f / frameRate; - TimeTravel(frameDuration, 1); - } - } - - // The number of iterations to change position, rotation, and scale for NetworkTransformMultipleChangesOverTime - private const int k_PositionRotationScaleIterations = 3; - private const int k_PositionRotationScaleIterations3Axis = 8; - - protected override void OnNewClientCreated(NetworkManager networkManager) - { - networkManager.NetworkConfig.Prefabs = m_ServerNetworkManager.NetworkConfig.Prefabs; - networkManager.NetworkConfig.TickRate = k_TickRate; - base.OnNewClientCreated(networkManager); - } - - private Precision m_Precision = Precision.Full; - private RotationCompression m_RotationCompression = RotationCompression.None; - private float m_CurrentHalfPrecision = 0.0f; - private const float k_HalfPrecisionPosScale = 0.041f; - private const float k_HalfPrecisionRot = 0.725f; - - protected override float GetDeltaVarianceThreshold() - { - if (m_Precision == Precision.Half || m_RotationCompression == RotationCompression.QuaternionCompress) - { - return m_CurrentHalfPrecision; - } - return base.GetDeltaVarianceThreshold(); - } - - - private Axis m_CurrentAxis; - - private bool m_AxisExcluded; - - /// - /// Randomly determine if an axis should be excluded. - /// If so, then randomly pick one of the axis to be excluded. - /// - private Vector3 RandomlyExcludeAxis(Vector3 delta) - { - if (Random.Range(0.0f, 1.0f) >= 0.5f) - { - m_AxisExcluded = true; - var axisToIgnore = Random.Range(0, 2); - switch (axisToIgnore) - { - case 0: - { - delta.x = 0; - break; - } - case 1: - { - delta.y = 0; - break; - } - case 2: - { - delta.z = 0; - break; - } - } - } - return delta; - } - /// /// This validates that multiple changes can occur within the same tick or over /// several ticks while still keeping non-authoritative instances synchronized. @@ -772,8 +176,7 @@ private Vector3 RandomlyExcludeAxis(Vector3 delta) /// delta update, and it runs through 8 delta updates per unique test. /// [Test] - public void NetworkTransformMultipleChangesOverTime([Values] TransformSpace testLocalTransform, [Values] OverrideState overideState, - [Values] Precision precision, [Values] Rotation rotationSynch, [Values] Axis axis) + public void NetworkTransformMultipleChangesOverTime([Values] TransformSpace testLocalTransform, [Values] OverrideState overideState, [Values] Axis axis) { m_AuthoritativeTransform.InLocalSpace = testLocalTransform == TransformSpace.Local; bool axisX = axis == Axis.X || axis == Axis.XY || axis == Axis.XZ || axis == Axis.XYZ; @@ -790,12 +193,6 @@ public void NetworkTransformMultipleChangesOverTime([Values] TransformSpace test m_CurrentAxis = axis; - // Authority dictates what is synchronized and what the precision is going to be - // so we only need to set this on the authoritative side. - m_AuthoritativeTransform.UseHalfFloatPrecision = precision == Precision.Half; - m_AuthoritativeTransform.UseQuaternionSynchronization = rotationSynch == Rotation.Quaternion; - m_Precision = precision; - m_AuthoritativeTransform.SyncPositionX = axisX; m_AuthoritativeTransform.SyncPositionY = axisY; m_AuthoritativeTransform.SyncPositionZ = axisZ; @@ -961,7 +358,6 @@ public void TestAuthoritativeTransformChangeOneAtATime([Values] TransformSpace t var overrideUpdate = overideState == OverrideState.CommitToTransform; m_AuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; m_NonAuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; - m_AuthoritativeTransform.InLocalSpace = testLocalTransform == TransformSpace.Local; // test position @@ -1076,171 +472,14 @@ public void TestAuthoritativeTransformChangeOneAtATime([Values] TransformSpace t Assert.True(success, $"Timed out waiting for scale values to match"); } - /// - /// Test to verify nonAuthority cannot change the transform directly - /// - [Test] - public void VerifyNonAuthorityCantChangeTransform([Values] Interpolation interpolation, [Values] Precision precision) - { - m_AuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; - m_AuthoritativeTransform.UseHalfFloatPrecision = precision == Precision.Half; - m_AuthoritativeTransform.UseQuaternionSynchronization = true; - m_NonAuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; - m_NonAuthoritativeTransform.UseHalfFloatPrecision = precision == Precision.Half; - m_NonAuthoritativeTransform.UseQuaternionSynchronization = true; - - - Assert.AreEqual(Vector3.zero, m_NonAuthoritativeTransform.transform.position, "other side pos should be zero at first"); // sanity check - - m_NonAuthoritativeTransform.transform.position = new Vector3(4, 5, 6); - - WaitForNextTick(); - WaitForNextTick(); - - Assert.AreEqual(Vector3.zero, m_NonAuthoritativeTransform.transform.position, "[Position] NonAuthority was able to change the position!"); - - var nonAuthorityRotation = m_NonAuthoritativeTransform.transform.rotation; - var originalNonAuthorityEulerRotation = nonAuthorityRotation.eulerAngles; - var nonAuthorityEulerRotation = originalNonAuthorityEulerRotation; - // Verify rotation is not marked dirty when rotated by half of the threshold - nonAuthorityEulerRotation.y += 20.0f; - nonAuthorityRotation.eulerAngles = nonAuthorityEulerRotation; - m_NonAuthoritativeTransform.transform.rotation = nonAuthorityRotation; - WaitForNextTick(); - var nonAuthorityCurrentEuler = m_NonAuthoritativeTransform.transform.rotation.eulerAngles; - Assert.True(originalNonAuthorityEulerRotation.Equals(nonAuthorityCurrentEuler), "[Rotation] NonAuthority was able to change the rotation!"); - - var nonAuthorityScale = m_NonAuthoritativeTransform.transform.localScale; - m_NonAuthoritativeTransform.transform.localScale = nonAuthorityScale * 100; - - WaitForNextTick(); - - Assert.True(nonAuthorityScale.Equals(m_NonAuthoritativeTransform.transform.localScale), "[Scale] NonAuthority was able to change the scale!"); - } - - /// - /// Validates that rotation checks don't produce false positive - /// results when rolling over between 0 and 360 degrees - /// - [Test] - public void TestRotationThresholdDeltaCheck([Values] Interpolation interpolation, [Values] Precision precision) - { - m_AuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; - m_AuthoritativeTransform.UseHalfFloatPrecision = precision == Precision.Half; - m_AuthoritativeTransform.UseQuaternionSynchronization = true; - m_NonAuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; - m_NonAuthoritativeTransform.UseHalfFloatPrecision = precision == Precision.Half; - m_NonAuthoritativeTransform.UseQuaternionSynchronization = true; - m_NonAuthoritativeTransform.RotAngleThreshold = m_AuthoritativeTransform.RotAngleThreshold = 5.0f; - - var halfThreshold = m_AuthoritativeTransform.RotAngleThreshold * 0.5001f; - var authorityRotation = m_AuthoritativeTransform.transform.rotation; - var authorityEulerRotation = authorityRotation.eulerAngles; - - // Apply the current state which assures all bitset flags are updated - var results = m_AuthoritativeTransform.ApplyState(); - - // Verify rotation is not marked dirty when rotated by half of the threshold - authorityEulerRotation.y += halfThreshold; - authorityRotation.eulerAngles = authorityEulerRotation; - m_AuthoritativeTransform.transform.rotation = authorityRotation; - results = m_AuthoritativeTransform.ApplyState(); - Assert.IsFalse(results.isRotationDirty, $"Rotation is dirty when rotation threshold is {m_AuthoritativeTransform.RotAngleThreshold} degrees and only adjusted by {halfThreshold} degrees!"); - WaitForNextTick(); - - // Verify rotation is marked dirty when rotated by another half threshold value - authorityEulerRotation.y += halfThreshold; - authorityRotation.eulerAngles = authorityEulerRotation; - m_AuthoritativeTransform.transform.rotation = authorityRotation; - results = m_AuthoritativeTransform.ApplyState(); - Assert.IsTrue(results.isRotationDirty, $"Rotation was not dirty when rotated by the threshold value: {m_AuthoritativeTransform.RotAngleThreshold} degrees!"); - WaitForNextTick(); - - //Reset rotation back to zero on all axis - authorityRotation.eulerAngles = authorityEulerRotation = Vector3.zero; - m_AuthoritativeTransform.transform.rotation = authorityRotation; - WaitForNextTick(); - - // Rotate by 360 minus halfThreshold (which is really just negative halfThreshold) and verify rotation is not marked dirty - authorityEulerRotation.y = 360 - halfThreshold; - authorityRotation.eulerAngles = authorityEulerRotation; - m_AuthoritativeTransform.transform.rotation = authorityRotation; - results = m_AuthoritativeTransform.ApplyState(); - - Assert.IsFalse(results.isRotationDirty, $"Rotation is dirty when rotation threshold is {m_AuthoritativeTransform.RotAngleThreshold} degrees and only adjusted by " + - $"{Mathf.DeltaAngle(0, authorityEulerRotation.y)} degrees!"); - - authorityEulerRotation.y -= halfThreshold; - authorityRotation.eulerAngles = authorityEulerRotation; - m_AuthoritativeTransform.transform.rotation = authorityRotation; - results = m_AuthoritativeTransform.ApplyState(); - - Assert.IsTrue(results.isRotationDirty, $"Rotation was not dirty when rotated by {Mathf.DeltaAngle(0, authorityEulerRotation.y)} degrees!"); - - //Reset rotation back to zero on all axis - authorityRotation.eulerAngles = authorityEulerRotation = Vector3.zero; - m_AuthoritativeTransform.transform.rotation = authorityRotation; - WaitForNextTick(); - - authorityEulerRotation.y -= halfThreshold; - authorityRotation.eulerAngles = authorityEulerRotation; - m_AuthoritativeTransform.transform.rotation = authorityRotation; - results = m_AuthoritativeTransform.ApplyState(); - Assert.IsFalse(results.isRotationDirty, $"Rotation is dirty when rotation threshold is {m_AuthoritativeTransform.RotAngleThreshold} degrees and only adjusted by " + - $"{Mathf.DeltaAngle(0, authorityEulerRotation.y)} degrees!"); - - authorityEulerRotation.y -= halfThreshold; - authorityRotation.eulerAngles = authorityEulerRotation; - m_AuthoritativeTransform.transform.rotation = authorityRotation; - results = m_AuthoritativeTransform.ApplyState(); - - Assert.IsTrue(results.isRotationDirty, $"Rotation was not dirty when rotated by {Mathf.DeltaAngle(0, authorityEulerRotation.y)} degrees!"); - } - - private bool ValidateBitSetValues(NetworkTransform.NetworkTransformState serverState, NetworkTransform.NetworkTransformState clientState) - { - if (serverState.HasPositionX == clientState.HasPositionX && serverState.HasPositionY == clientState.HasPositionY && serverState.HasPositionZ == clientState.HasPositionZ && - serverState.HasRotAngleX == clientState.HasRotAngleX && serverState.HasRotAngleY == clientState.HasRotAngleY && serverState.HasRotAngleZ == clientState.HasRotAngleZ && - serverState.HasScaleX == clientState.HasScaleX && serverState.HasScaleY == clientState.HasScaleY && serverState.HasScaleZ == clientState.HasScaleZ) - { - return true; - } - return false; - } - - /// - /// Test to make sure that the bitset value is updated properly - /// - [Test] - public void TestBitsetValue([Values] Interpolation interpolation) - { - m_AuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; - m_NonAuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; - m_NonAuthoritativeTransform.RotAngleThreshold = m_AuthoritativeTransform.RotAngleThreshold = 0.1f; - WaitForNextTick(); - - m_AuthoritativeTransform.transform.rotation = Quaternion.Euler(1, 2, 3); - var serverLastSentState = m_AuthoritativeTransform.AuthorityLastSentState; - var clientReplicatedState = m_NonAuthoritativeTransform.LocalAuthoritativeNetworkState; - var success = WaitForConditionOrTimeOutWithTimeTravel(() => ValidateBitSetValues(serverLastSentState, clientReplicatedState)); - Assert.True(success, $"Timed out waiting for Authoritative Bitset state to equal NonAuthoritative replicated Bitset state!"); - - success = WaitForConditionOrTimeOutWithTimeTravel(() => RotationsMatch()); - Assert.True(success, $"[Timed-Out] Authoritative rotation {m_AuthoritativeTransform.transform.rotation.eulerAngles} != Non-Authoritative rotation {m_NonAuthoritativeTransform.transform.rotation.eulerAngles}"); - } - - private float m_DetectedPotentialInterpolatedTeleport; - /// /// The tests teleporting with and without interpolation /// [Test] - public void TeleportTest([Values] Interpolation interpolation, [Values] Precision precision) + public void TeleportTest([Values] Interpolation interpolation) { m_AuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; m_NonAuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; - m_AuthoritativeTransform.UseHalfFloatPrecision = precision == Precision.Half; - m_Precision = precision; var authTransform = m_AuthoritativeTransform.transform; var nonAuthPosition = m_NonAuthoritativeTransform.transform.position; var currentTick = m_AuthoritativeTransform.NetworkManager.ServerTime.Tick; @@ -1265,210 +504,5 @@ public void TeleportTest([Values] Interpolation interpolation, [Values] Precisio Assert.IsTrue(Approximately(m_DetectedPotentialInterpolatedTeleport, 0.0f), $"Detected possible interpolation on non-authority side! NonAuthority distance: {m_DetectedPotentialInterpolatedTeleport} | Target distance: {targetDistance}"); } - /// - /// This test validates the method - /// usage for the non-authoritative side. It will either be the owner or the server making/requesting state changes. - /// This validates that: - /// - The owner authoritative mode can still be controlled by the server (i.e. owner authoritative with server authority override capabilities) - /// - The server authoritative mode can still be directed by the client owner. - /// - /// - /// This also tests that the original server authoritative model with client-owner driven NetworkTransforms is preserved. - /// - [Test] - public void NonAuthorityOwnerSettingStateTest([Values] Interpolation interpolation) - { - var interpolate = interpolation == Interpolation.EnableInterpolate; - m_AuthoritativeTransform.Interpolate = interpolate; - m_NonAuthoritativeTransform.Interpolate = interpolate; - m_NonAuthoritativeTransform.RotAngleThreshold = m_AuthoritativeTransform.RotAngleThreshold = 0.1f; - - // Test one parameter at a time first - var newPosition = new Vector3(125f, 35f, 65f); - var newRotation = Quaternion.Euler(1, 2, 3); - var newScale = new Vector3(2.0f, 2.0f, 2.0f); - m_NonAuthoritativeTransform.SetState(newPosition, null, null, interpolate); - var success = WaitForConditionOrTimeOutWithTimeTravel(() => PositionsMatchesValue(newPosition)); - Assert.True(success, $"Timed out waiting for non-authoritative position state request to be applied!"); - Assert.True(Approximately(newPosition, m_AuthoritativeTransform.transform.position), "Authoritative position does not match!"); - Assert.True(Approximately(newPosition, m_NonAuthoritativeTransform.transform.position), "Non-Authoritative position does not match!"); - - m_NonAuthoritativeTransform.SetState(null, newRotation, null, interpolate); - success = WaitForConditionOrTimeOutWithTimeTravel(() => RotationMatchesValue(newRotation.eulerAngles)); - Assert.True(success, $"Timed out waiting for non-authoritative rotation state request to be applied!"); - Assert.True(Approximately(newRotation.eulerAngles, m_AuthoritativeTransform.transform.rotation.eulerAngles), "Authoritative rotation does not match!"); - Assert.True(Approximately(newRotation.eulerAngles, m_NonAuthoritativeTransform.transform.rotation.eulerAngles), "Non-Authoritative rotation does not match!"); - - m_NonAuthoritativeTransform.SetState(null, null, newScale, interpolate); - success = WaitForConditionOrTimeOutWithTimeTravel(() => ScaleMatchesValue(newScale)); - Assert.True(success, $"Timed out waiting for non-authoritative scale state request to be applied!"); - Assert.True(Approximately(newScale, m_AuthoritativeTransform.transform.localScale), "Authoritative scale does not match!"); - Assert.True(Approximately(newScale, m_NonAuthoritativeTransform.transform.localScale), "Non-Authoritative scale does not match!"); - - // Test all parameters at once - newPosition = new Vector3(55f, 95f, -25f); - newRotation = Quaternion.Euler(20, 5, 322); - newScale = new Vector3(0.5f, 0.5f, 0.5f); - - m_NonAuthoritativeTransform.SetState(newPosition, newRotation, newScale, interpolate); - success = WaitForConditionOrTimeOutWithTimeTravel(() => PositionRotationScaleMatches(newPosition, newRotation.eulerAngles, newScale)); - Assert.True(success, $"Timed out waiting for non-authoritative position, rotation, and scale state request to be applied!"); - Assert.True(Approximately(newPosition, m_AuthoritativeTransform.transform.position), "Authoritative position does not match!"); - Assert.True(Approximately(newPosition, m_NonAuthoritativeTransform.transform.position), "Non-Authoritative position does not match!"); - Assert.True(Approximately(newRotation.eulerAngles, m_AuthoritativeTransform.transform.rotation.eulerAngles), "Authoritative rotation does not match!"); - Assert.True(Approximately(newRotation.eulerAngles, m_NonAuthoritativeTransform.transform.rotation.eulerAngles), "Non-Authoritative rotation does not match!"); - Assert.True(Approximately(newScale, m_AuthoritativeTransform.transform.localScale), "Authoritative scale does not match!"); - Assert.True(Approximately(newScale, m_NonAuthoritativeTransform.transform.localScale), "Non-Authoritative scale does not match!"); - } - - private const float k_AproximateDeltaVariance = 0.025f; - private bool PositionsMatchesValue(Vector3 positionToMatch) - { - var authorityPosition = m_AuthoritativeTransform.transform.position; - var nonAuthorityPosition = m_NonAuthoritativeTransform.transform.position; - var auhtorityIsEqual = Approximately(authorityPosition, positionToMatch); - var nonauthorityIsEqual = Approximately(nonAuthorityPosition, positionToMatch); - - if (!auhtorityIsEqual) - { - VerboseDebug($"Authority position {authorityPosition} != position to match: {positionToMatch}!"); - } - if (!nonauthorityIsEqual) - { - VerboseDebug($"NonAuthority position {nonAuthorityPosition} != position to match: {positionToMatch}!"); - } - return auhtorityIsEqual && nonauthorityIsEqual; - } - - private bool RotationMatchesValue(Vector3 rotationEulerToMatch) - { - var authorityRotationEuler = m_AuthoritativeTransform.transform.rotation.eulerAngles; - var nonAuthorityRotationEuler = m_NonAuthoritativeTransform.transform.rotation.eulerAngles; - var auhtorityIsEqual = Approximately(authorityRotationEuler, rotationEulerToMatch); - var nonauthorityIsEqual = Approximately(nonAuthorityRotationEuler, rotationEulerToMatch); - - if (!auhtorityIsEqual) - { - VerboseDebug($"Authority rotation {authorityRotationEuler} != rotation to match: {rotationEulerToMatch}!"); - } - if (!nonauthorityIsEqual) - { - VerboseDebug($"NonAuthority rotation {nonAuthorityRotationEuler} != rotation to match: {rotationEulerToMatch}!"); - } - return auhtorityIsEqual && nonauthorityIsEqual; - } - - private bool ScaleMatchesValue(Vector3 scaleToMatch) - { - var authorityScale = m_AuthoritativeTransform.transform.localScale; - var nonAuthorityScale = m_NonAuthoritativeTransform.transform.localScale; - var auhtorityIsEqual = Approximately(authorityScale, scaleToMatch); - var nonauthorityIsEqual = Approximately(nonAuthorityScale, scaleToMatch); - - if (!auhtorityIsEqual) - { - VerboseDebug($"Authority scale {authorityScale} != scale to match: {scaleToMatch}!"); - } - if (!nonauthorityIsEqual) - { - VerboseDebug($"NonAuthority scale {nonAuthorityScale} != scale to match: {scaleToMatch}!"); - } - return auhtorityIsEqual && nonauthorityIsEqual; - } - - private bool TeleportPositionMatches(Vector3 nonAuthorityOriginalPosition) - { - var nonAuthorityPosition = m_NonAuthoritativeTransform.transform.position; - var authorityPosition = m_AuthoritativeTransform.transform.position; - var targetDistance = Mathf.Abs(Vector3.Distance(nonAuthorityOriginalPosition, authorityPosition)); - var nonAuthorityCurrentDistance = Mathf.Abs(Vector3.Distance(nonAuthorityPosition, nonAuthorityOriginalPosition)); - // If we are not within our target distance range - if (!Approximately(targetDistance, nonAuthorityCurrentDistance)) - { - // Apply the non-authority's distance that is checked at the end of the teleport test - m_DetectedPotentialInterpolatedTeleport = nonAuthorityCurrentDistance; - return false; - } - else - { - // Otherwise, if we are within our target distance range then reset any already set value - m_DetectedPotentialInterpolatedTeleport = 0.0f; - } - var xIsEqual = Approximately(authorityPosition.x, nonAuthorityPosition.x); - var yIsEqual = Approximately(authorityPosition.y, nonAuthorityPosition.y); - var zIsEqual = Approximately(authorityPosition.z, nonAuthorityPosition.z); - if (!xIsEqual || !yIsEqual || !zIsEqual) - { - VerboseDebug($"[{m_AuthoritativeTransform.gameObject.name}] Authority position {authorityPosition} != [{m_NonAuthoritativeTransform.gameObject.name}] NonAuthority position {nonAuthorityPosition}"); - } - return xIsEqual && yIsEqual && zIsEqual; - } - - private bool PositionRotationScaleMatches(Vector3 position, Vector3 eulerRotation, Vector3 scale) - { - return PositionsMatchesValue(position) && RotationMatchesValue(eulerRotation) && ScaleMatchesValue(scale); - } - - private bool PositionRotationScaleMatches() - { - return RotationsMatch() && PositionsMatch() && ScaleValuesMatch(); - } - - private void PrintPositionRotationScaleDeltas() - { - RotationsMatch(true); - PositionsMatch(true); - ScaleValuesMatch(true); - } - - private bool RotationsMatch(bool printDeltas = false) - { - m_CurrentHalfPrecision = k_HalfPrecisionRot; - var authorityEulerRotation = m_AuthoritativeTransform.GetSpaceRelativeRotation().eulerAngles; - var nonAuthorityEulerRotation = m_NonAuthoritativeTransform.GetSpaceRelativeRotation().eulerAngles; - var xIsEqual = ApproximatelyEuler(authorityEulerRotation.x, nonAuthorityEulerRotation.x) || !m_AuthoritativeTransform.SyncRotAngleX; - var yIsEqual = ApproximatelyEuler(authorityEulerRotation.y, nonAuthorityEulerRotation.y) || !m_AuthoritativeTransform.SyncRotAngleY; - var zIsEqual = ApproximatelyEuler(authorityEulerRotation.z, nonAuthorityEulerRotation.z) || !m_AuthoritativeTransform.SyncRotAngleZ; - if (!xIsEqual || !yIsEqual || !zIsEqual) - { - VerboseDebug($"[{m_AuthoritativeTransform.gameObject.name}][X-{xIsEqual} | Y-{yIsEqual} | Z-{zIsEqual}][{m_CurrentAxis}]" + - $"[Sync: X-{m_AuthoritativeTransform.SyncRotAngleX} | X-{m_AuthoritativeTransform.SyncRotAngleY} | X-{m_AuthoritativeTransform.SyncRotAngleZ}] Authority rotation {authorityEulerRotation} != [{m_NonAuthoritativeTransform.gameObject.name}] NonAuthority rotation {nonAuthorityEulerRotation}"); - } - if (printDeltas) - { - Debug.Log($"[Rotation Match] Euler Delta {EulerDelta(authorityEulerRotation, nonAuthorityEulerRotation)}"); - } - return xIsEqual && yIsEqual && zIsEqual; - } - - private bool PositionsMatch(bool printDeltas = false) - { - m_CurrentHalfPrecision = k_HalfPrecisionPosScale; - var authorityPosition = m_AuthoritativeTransform.GetSpaceRelativePosition(); - var nonAuthorityPosition = m_NonAuthoritativeTransform.GetSpaceRelativePosition(); - var xIsEqual = Approximately(authorityPosition.x, nonAuthorityPosition.x) || !m_AuthoritativeTransform.SyncPositionX; - var yIsEqual = Approximately(authorityPosition.y, nonAuthorityPosition.y) || !m_AuthoritativeTransform.SyncPositionY; - var zIsEqual = Approximately(authorityPosition.z, nonAuthorityPosition.z) || !m_AuthoritativeTransform.SyncPositionZ; - if (!xIsEqual || !yIsEqual || !zIsEqual) - { - VerboseDebug($"[{m_AuthoritativeTransform.gameObject.name}] Authority position {authorityPosition} != [{m_NonAuthoritativeTransform.gameObject.name}] NonAuthority position {nonAuthorityPosition}"); - } - return xIsEqual && yIsEqual && zIsEqual; - } - - private bool ScaleValuesMatch(bool printDeltas = false) - { - m_CurrentHalfPrecision = k_HalfPrecisionPosScale; - var authorityScale = m_AuthoritativeTransform.transform.localScale; - var nonAuthorityScale = m_NonAuthoritativeTransform.transform.localScale; - var xIsEqual = Approximately(authorityScale.x, nonAuthorityScale.x) || !m_AuthoritativeTransform.SyncScaleX; - var yIsEqual = Approximately(authorityScale.y, nonAuthorityScale.y) || !m_AuthoritativeTransform.SyncScaleY; - var zIsEqual = Approximately(authorityScale.z, nonAuthorityScale.z) || !m_AuthoritativeTransform.SyncScaleZ; - if (!xIsEqual || !yIsEqual || !zIsEqual) - { - VerboseDebug($"[{m_AuthoritativeTransform.gameObject.name}] Authority scale {authorityScale} != [{m_NonAuthoritativeTransform.gameObject.name}] NonAuthority scale {nonAuthorityScale}"); - } - return xIsEqual && yIsEqual && zIsEqual; - } } } diff --git a/testproject/Assets/Scenes/MultiprocessTestScene.unity b/testproject/Assets/Scenes/MultiprocessTestScene.unity index 4751ea7612..8750959c97 100644 --- a/testproject/Assets/Scenes/MultiprocessTestScene.unity +++ b/testproject/Assets/Scenes/MultiprocessTestScene.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.44657838, g: 0.49641234, b: 0.57481676, a: 1} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -104,7 +104,7 @@ NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -117,7 +117,7 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - accuratePlacement: 0 + buildHeightMesh: 0 maxJobWorkers: 0 preserveTilesOutsideBounds: 0 debug: @@ -209,12 +209,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 127222500} + 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!850595691 &130932425 LightingSettings: @@ -223,7 +224,7 @@ LightingSettings: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: - serializedVersion: 3 + serializedVersion: 6 m_GIWorkflowMode: 1 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 0 @@ -236,7 +237,7 @@ LightingSettings: m_LightmapMaxSize: 1024 m_BakeResolution: 40 m_Padding: 2 - m_TextureCompression: 1 + m_LightmapCompression: 3 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 @@ -263,7 +264,7 @@ LightingSettings: m_LightProbeSampleCountMultiplier: 4 m_PVRBounces: 2 m_PVRMinBounces: 2 - m_PVREnvironmentMIS: 1 + m_PVREnvironmentImportanceSampling: 1 m_PVRFilteringMode: 1 m_PVRDenoiserTypeDirect: 1 m_PVRDenoiserTypeIndirect: 1 @@ -277,6 +278,9 @@ LightingSettings: m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 + m_NumRaysToShootPerTexel: -1 + m_RespectSceneVisibilityWhenBakingGI: 0 --- !u!1 &160940364 GameObject: m_ObjectHideFlags: 0 @@ -304,9 +308,17 @@ SphereCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 160940364} 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_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} --- !u!23 &160940366 @@ -320,6 +332,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -365,12 +378,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 160940364} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -10, y: -10, z: -10} 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!1 &430011403 GameObject: @@ -438,6 +452,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -475,12 +490,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 430011403} + serializedVersion: 2 m_LocalRotation: {x: 0.2164396, y: 0, z: 0, w: 0.97629607} m_LocalPosition: {x: -45, y: 10, z: 10} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 25, y: 0, z: 0} --- !u!1 &941021721 GameObject: @@ -522,9 +538,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 @@ -558,12 +582,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 941021721} + serializedVersion: 2 m_LocalRotation: {x: 0.21736304, y: -0, z: -0, w: 0.97609085} m_LocalPosition: {x: 0, y: 9.15, z: -27.5} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 25.108, y: 0, z: 0} --- !u!1 &996484657 GameObject: @@ -592,9 +617,17 @@ SphereCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 996484657} 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_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} --- !u!23 &996484659 @@ -608,6 +641,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -653,12 +687,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 996484657} + 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: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1206022453 GameObject: @@ -687,9 +722,17 @@ SphereCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1206022453} 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_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} --- !u!23 &1206022455 @@ -703,6 +746,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -748,12 +792,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1206022453} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 10, y: 10, z: 10} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1211923374 GameObject: @@ -786,20 +831,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3} m_Name: m_EditorClassIdentifier: - RunInBackground: 1 - LogLevel: 1 NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 2027640073} PlayerPrefab: {fileID: 4700706668509470175, guid: 7eeaaf9e50c0afc4dab93584a54fb0d6, type: 3} - NetworkPrefabs: - - Override: 0 - Prefab: {fileID: 9115731988109684252, guid: c2851feb7276442cc86a6f2d1d69ea11, - type: 3} - SourcePrefabToOverride: {fileID: 0} - SourceHashToOverride: 0 - OverridingTargetPrefab: {fileID: 0} + Prefabs: + NetworkPrefabsLists: [] TickRate: 30 ClientConnectionBufferTimeout: 10 ConnectionApproval: 0 @@ -815,6 +853,15 @@ MonoBehaviour: LoadSceneTimeOut: 120 SpawnTimeout: 1 EnableNetworkLogs: 1 + OldPrefabList: + - Override: 0 + Prefab: {fileID: 9115731988109684252, guid: c2851feb7276442cc86a6f2d1d69ea11, + type: 3} + SourcePrefabToOverride: {fileID: 0} + SourceHashToOverride: 0 + OverridingTargetPrefab: {fileID: 0} + RunInBackground: 1 + LogLevel: 1 --- !u!4 &1211923376 Transform: m_ObjectHideFlags: 0 @@ -822,14 +869,14 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1211923374} + 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: - - {fileID: 1674777072} - {fileID: 2027640072} m_Father: {fileID: 0} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1211923377 MonoBehaviour: @@ -889,6 +936,10 @@ MonoBehaviour: m_EditorClassIdentifier: GlobalObjectIdHash: 2217825759 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!4 &1274245425 @@ -898,12 +949,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1274245423} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 10, y: 10, z: 10} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1274245426 MonoBehaviour: @@ -917,56 +969,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ef1240e0784f84eadb77fe822e2e03c7, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1 &1674777071 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1674777072} - - component: {fileID: 1674777073} - m_Layer: 0 - m_Name: UNET - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1674777072 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1674777071} - 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_Children: [] - m_Father: {fileID: 1211923376} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1674777073 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1674777071} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b84c2d8dfe509a34fb59e2b81f8e1319, type: 3} - m_Name: - m_EditorClassIdentifier: - MessageBufferSize: 50000 - MaxConnections: 100 - MaxSentMessageQueueSize: 50000 - ConnectAddress: 127.0.0.1 - ConnectPort: 7777 - ServerListenPort: 7777 - MessageSendMode: 0 --- !u!1 &2027640071 GameObject: m_ObjectHideFlags: 0 @@ -991,12 +993,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2027640071} + 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: 1211923376} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &2027640073 MonoBehaviour: @@ -1013,7 +1016,6 @@ MonoBehaviour: m_ProtocolType: 0 m_MaxPacketQueueSize: 128 m_MaxPayloadSize: 4096 - m_MaxSendQueueSize: 98304 m_HeartbeatTimeoutMS: 500 m_ConnectTimeoutMS: 1000 m_MaxConnectAttempts: 60 @@ -1021,8 +1023,20 @@ MonoBehaviour: ConnectionData: Address: 127.0.0.1 Port: 7777 - ServerListenAddress: + ServerListenAddress: 127.0.0.1 DebugSimulator: PacketDelayMS: 0 PacketJitterMS: 0 PacketDropRate: 0 +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 941021724} + - {fileID: 127222502} + - {fileID: 1211923376} + - {fileID: 1206022457} + - {fileID: 996484661} + - {fileID: 160940368} + - {fileID: 1274245425} + - {fileID: 430011407} diff --git a/testproject/Assets/Scenes/SampleScene.unity b/testproject/Assets/Scenes/SampleScene.unity index 5a51eaedcc..f5e5a89789 100644 --- a/testproject/Assets/Scenes/SampleScene.unity +++ b/testproject/Assets/Scenes/SampleScene.unity @@ -104,7 +104,7 @@ NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -117,7 +117,7 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - accuratePlacement: 0 + buildHeightMesh: 0 maxJobWorkers: 0 preserveTilesOutsideBounds: 0 debug: @@ -149,13 +149,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 19899154} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 830204877} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &19899156 MeshCollider: @@ -165,9 +165,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 19899154} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -245,13 +253,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 225870858} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 3, z: -10} m_LocalScale: {x: 30, y: 12, z: 10} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 367170261} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &225870860 BoxCollider: @@ -261,9 +269,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 225870858} 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!1 &354062834 @@ -297,7 +313,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 772203958} - 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} @@ -369,6 +384,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 367170260} + 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} @@ -379,7 +395,6 @@ Transform: - {fileID: 225870859} - {fileID: 403665143} m_Father: {fileID: 1815329520} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &402668297 GameObject: @@ -411,10 +426,21 @@ Rigidbody: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 402668297} - serializedVersion: 2 + serializedVersion: 4 m_Mass: 1 m_Drag: 0 m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 m_UseGravity: 1 m_IsKinematic: 0 m_Interpolate: 0 @@ -428,9 +454,17 @@ SphereCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 402668297} 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_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} --- !u!23 &402668300 @@ -490,6 +524,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 402668297} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 10, y: 0.5, z: 10} m_LocalScale: {x: 1, y: 1, z: 1} @@ -497,7 +532,6 @@ Transform: m_Children: - {fileID: 789733233} m_Father: {fileID: 0} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &402668303 MonoBehaviour: @@ -513,6 +547,10 @@ MonoBehaviour: m_EditorClassIdentifier: GlobalObjectIdHash: 3604669530 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!114 &402668304 @@ -540,6 +578,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} m_Name: m_EditorClassIdentifier: + UseUnreliableDeltas: 0 SyncPositionX: 1 SyncPositionY: 1 SyncPositionZ: 1 @@ -552,8 +591,12 @@ MonoBehaviour: PositionThreshold: 0 RotAngleThreshold: 0 ScaleThreshold: 0 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 InLocalSpace: 0 Interpolate: 1 + SlerpPosition: 0 --- !u!1 &403665142 GameObject: m_ObjectHideFlags: 0 @@ -578,13 +621,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 403665142} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 3, z: 10} m_LocalScale: {x: 30, y: 12, z: 10} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 367170261} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &403665144 BoxCollider: @@ -594,9 +637,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 403665142} 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!1 &457860556 @@ -625,13 +676,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 457860556} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -10, y: 0, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 830204877} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &457860558 MeshCollider: @@ -641,9 +692,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 457860556} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -723,13 +782,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 535968794} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -10, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 830204877} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &535968796 MeshCollider: @@ -739,9 +798,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 535968794} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -819,13 +886,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 573144464} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -10, y: 3, z: 0} m_LocalScale: {x: 10, y: 12, z: 10} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 367170261} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &573144466 BoxCollider: @@ -835,9 +902,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 573144464} 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!1 &620561609 @@ -850,7 +925,6 @@ GameObject: m_Component: - component: {fileID: 620561612} - component: {fileID: 620561611} - - component: {fileID: 620561610} - component: {fileID: 620561613} m_Layer: 0 m_Name: '[NetworkManager]' @@ -859,25 +933,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &620561610 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 620561609} - m_Enabled: 0 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b84c2d8dfe509a34fb59e2b81f8e1319, type: 3} - m_Name: - m_EditorClassIdentifier: - MessageBufferSize: 5120 - MaxConnections: 100 - MaxSentMessageQueueSize: 128 - ConnectAddress: 127.0.0.1 - ConnectPort: 7777 - ServerListenPort: 7777 - MessageSendMode: 0 --- !u!114 &620561611 MonoBehaviour: m_ObjectHideFlags: 0 @@ -890,20 +945,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3} m_Name: m_EditorClassIdentifier: - RunInBackground: 1 - LogLevel: 1 NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 620561613} PlayerPrefab: {fileID: 8685790303553767886, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, type: 3} - NetworkPrefabs: - - Override: 0 - Prefab: {fileID: 8133991607019124060, guid: 421bcf732fe69486d8abecfa5eee63bb, - type: 3} - SourcePrefabToOverride: {fileID: 0} - SourceHashToOverride: 0 - OverridingTargetPrefab: {fileID: 0} + Prefabs: + NetworkPrefabsLists: [] TickRate: 30 ClientConnectionBufferTimeout: 10 ConnectionApproval: 0 @@ -919,6 +967,15 @@ MonoBehaviour: LoadSceneTimeOut: 120 SpawnTimeout: 1 EnableNetworkLogs: 1 + OldPrefabList: + - Override: 0 + Prefab: {fileID: 8133991607019124060, guid: 421bcf732fe69486d8abecfa5eee63bb, + type: 3} + SourcePrefabToOverride: {fileID: 0} + SourceHashToOverride: 0 + OverridingTargetPrefab: {fileID: 0} + RunInBackground: 1 + LogLevel: 1 --- !u!4 &620561612 Transform: m_ObjectHideFlags: 0 @@ -926,13 +983,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 620561609} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 1} 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 &620561613 MonoBehaviour: @@ -949,7 +1006,6 @@ MonoBehaviour: m_ProtocolType: 0 m_MaxPacketQueueSize: 128 m_MaxPayloadSize: 6144 - m_MaxSendQueueSize: 98304 m_HeartbeatTimeoutMS: 500 m_ConnectTimeoutMS: 1000 m_MaxConnectAttempts: 60 @@ -957,7 +1013,7 @@ MonoBehaviour: ConnectionData: Address: 127.0.0.1 Port: 7777 - ServerListenAddress: + ServerListenAddress: 127.0.0.1 DebugSimulator: PacketDelayMS: 0 PacketJitterMS: 0 @@ -967,6 +1023,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1333567166} m_Modifications: - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, @@ -1091,6 +1148,9 @@ 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!224 &627808639 stripped RectTransform: @@ -1105,7 +1165,7 @@ LightingSettings: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Settings.lighting - serializedVersion: 4 + serializedVersion: 6 m_GIWorkflowMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 0 @@ -1139,13 +1199,13 @@ LightingSettings: m_PVRCulling: 1 m_PVRSampling: 1 m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVREnvironmentSampleCount: 500 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 m_PVREnvironmentReferencePointCount: 2048 m_LightProbeSampleCountMultiplier: 4 m_PVRBounces: 2 m_PVRMinBounces: 2 - m_PVREnvironmentMIS: 0 + m_PVREnvironmentImportanceSampling: 0 m_PVRFilteringMode: 2 m_PVRDenoiserTypeDirect: 0 m_PVRDenoiserTypeIndirect: 0 @@ -1160,6 +1220,8 @@ LightingSettings: m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 m_PVRTiledBaking: 0 + m_NumRaysToShootPerTexel: -1 + m_RespectSceneVisibilityWhenBakingGI: 0 --- !u!1 &702051983 GameObject: m_ObjectHideFlags: 0 @@ -1200,9 +1262,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 @@ -1236,13 +1306,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 702051983} + serializedVersion: 2 m_LocalRotation: {x: 0.5, y: 0, z: 0, w: 0.8660254} m_LocalPosition: {x: 0, y: 20, z: -16} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 60, y: 0, z: 0} --- !u!1 &705507993 GameObject: @@ -1330,13 +1400,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 705507993} + 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: 0 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} --- !u!1 &772203957 GameObject: @@ -1371,7 +1441,6 @@ RectTransform: m_Children: - {fileID: 354062835} m_Father: {fileID: 1397037324} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1435,7 +1504,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 @@ -1472,7 +1543,6 @@ RectTransform: m_Children: - {fileID: 1278360217} m_Father: {fileID: 402668302} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1536,7 +1606,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 @@ -1563,6 +1635,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 830204876} + 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} @@ -1577,7 +1650,6 @@ Transform: - {fileID: 2036456028} - {fileID: 1636734283} m_Father: {fileID: 1815329520} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &841610170 GameObject: @@ -1603,13 +1675,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 841610170} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 10, y: 3, z: 0} m_LocalScale: {x: 10, y: 12, z: 10} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 367170261} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &841610172 BoxCollider: @@ -1619,9 +1691,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 841610170} 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!1 &849106629 @@ -1654,6 +1734,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} m_Name: m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 m_HorizontalAxis: Horizontal m_VerticalAxis: Vertical m_SubmitButton: Submit @@ -1683,13 +1764,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 849106629} + 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: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &878759701 GameObject: @@ -1717,13 +1798,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 878759701} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 10, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 830204877} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &878759703 MeshCollider: @@ -1733,9 +1814,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 878759701} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -1824,13 +1913,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 963826002} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} m_LocalPosition: {x: 12.06, y: 0.68515396, z: -8.870045} m_LocalScale: {x: 0.42366, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} --- !u!114 &963826004 MonoBehaviour: @@ -1856,6 +1945,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} m_Name: m_EditorClassIdentifier: + UseUnreliableDeltas: 0 SyncPositionX: 1 SyncPositionY: 1 SyncPositionZ: 1 @@ -1868,8 +1958,12 @@ MonoBehaviour: PositionThreshold: 0 RotAngleThreshold: 0 ScaleThreshold: 0 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 InLocalSpace: 0 Interpolate: 1 + SlerpPosition: 0 --- !u!114 &963826006 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1884,6 +1978,10 @@ MonoBehaviour: m_EditorClassIdentifier: GlobalObjectIdHash: 3972363333 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!65 &963826007 @@ -1894,9 +1992,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 963826002} 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 &963826008 @@ -1982,7 +2088,6 @@ RectTransform: m_Children: - {fileID: 1572276077} m_Father: {fileID: 1402467451} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -2046,7 +2151,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 @@ -2081,7 +2188,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 789733233} - 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} @@ -2206,7 +2312,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 @@ -2225,7 +2333,6 @@ RectTransform: - {fileID: 627808639} - {fileID: 1536251758} 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} @@ -2255,6 +2362,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1345111612} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 6.8895, y: 0.68515396, z: -4.0977} m_LocalScale: {x: 0.42366, y: 0.42366, z: 0.42366} @@ -2262,7 +2370,6 @@ Transform: m_Children: - {fileID: 1475593094} m_Father: {fileID: 0} - m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1397037315 GameObject: @@ -2312,6 +2419,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} m_Name: m_EditorClassIdentifier: + UseUnreliableDeltas: 0 SyncPositionX: 1 SyncPositionY: 1 SyncPositionZ: 1 @@ -2324,8 +2432,12 @@ MonoBehaviour: PositionThreshold: 0 RotAngleThreshold: 0 ScaleThreshold: 0 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 InLocalSpace: 0 Interpolate: 1 + SlerpPosition: 0 --- !u!114 &1397037319 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2340,6 +2452,10 @@ MonoBehaviour: m_EditorClassIdentifier: GlobalObjectIdHash: 1445980162 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!54 &1397037320 @@ -2349,10 +2465,21 @@ Rigidbody: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1397037315} - serializedVersion: 2 + serializedVersion: 4 m_Mass: 1 m_Drag: 0 m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 m_UseGravity: 1 m_IsKinematic: 0 m_Interpolate: 0 @@ -2366,9 +2493,17 @@ SphereCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1397037315} 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_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} --- !u!23 &1397037322 @@ -2428,6 +2563,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1397037315} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -6.53, y: 0.5, z: 10.33} m_LocalScale: {x: 1, y: 1, z: 1} @@ -2435,7 +2571,6 @@ Transform: m_Children: - {fileID: 772203958} m_Father: {fileID: 0} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1398767341 GameObject: @@ -2463,13 +2598,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1398767341} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 10} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 830204877} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1398767343 MeshCollider: @@ -2479,9 +2614,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1398767341} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -2597,6 +2740,10 @@ MonoBehaviour: m_EditorClassIdentifier: GlobalObjectIdHash: 1148320762 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!54 &1402467447 @@ -2606,10 +2753,21 @@ Rigidbody: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1402467443} - serializedVersion: 2 + serializedVersion: 4 m_Mass: 1 m_Drag: 0 m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 m_UseGravity: 1 m_IsKinematic: 0 m_Interpolate: 0 @@ -2623,9 +2781,17 @@ SphereCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1402467443} 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_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} --- !u!23 &1402467449 @@ -2685,6 +2851,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1402467443} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.77, y: 0.5, z: 8.64} m_LocalScale: {x: 1, y: 1, z: 1} @@ -2692,7 +2859,6 @@ Transform: m_Children: - {fileID: 1237561006} m_Father: {fileID: 0} - m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1463459130 GameObject: @@ -2721,9 +2887,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1463459130} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -2784,13 +2958,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1463459130} + 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: 1815329520} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1469649185 GameObject: @@ -2818,13 +2992,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1469649185} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 10, y: 0, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 830204877} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1469649187 MeshCollider: @@ -2834,9 +3008,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1469649185} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -2932,9 +3114,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1475593089} 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 &1475593092 @@ -2994,13 +3184,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1475593089} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 5.2176, y: 0, z: -11.264561} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1345111613} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1475593095 MonoBehaviour: @@ -3016,6 +3206,10 @@ MonoBehaviour: m_EditorClassIdentifier: GlobalObjectIdHash: 2710131580 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!114 &1475593096 @@ -3030,6 +3224,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} m_Name: m_EditorClassIdentifier: + UseUnreliableDeltas: 0 SyncPositionX: 1 SyncPositionY: 1 SyncPositionZ: 1 @@ -3042,8 +3237,12 @@ MonoBehaviour: PositionThreshold: 0 RotAngleThreshold: 0 ScaleThreshold: 0 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 InLocalSpace: 0 Interpolate: 1 + SlerpPosition: 0 --- !u!224 &1536251758 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, @@ -3081,7 +3280,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1237561006} - 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} @@ -3156,13 +3354,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1636734282} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 10, y: 0, z: 10} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 830204877} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1636734284 MeshCollider: @@ -3172,9 +3370,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1636734282} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -3251,6 +3457,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1815329519} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.1, z: 0} m_LocalScale: {x: 3, y: 1, z: 3} @@ -3260,13 +3467,13 @@ Transform: - {fileID: 830204877} - {fileID: 367170261} m_Father: {fileID: 0} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1928839749 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1333567166} m_Modifications: - target: {fileID: 2956145122089128464, guid: d725b5588e1b956458798319e6541d84, @@ -3420,6 +3627,9 @@ PrefabInstance: value: ConnectionModeButtons objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: d725b5588e1b956458798319e6541d84, type: 3} --- !u!1 &2036456027 GameObject: @@ -3447,13 +3657,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2036456027} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -10, y: 0, z: 10} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 830204877} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2036456029 MeshCollider: @@ -3463,9 +3673,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2036456027} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -3519,3 +3737,18 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2036456027} m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 705507995} + - {fileID: 1815329520} + - {fileID: 620561612} + - {fileID: 1333567166} + - {fileID: 849106632} + - {fileID: 702051986} + - {fileID: 402668302} + - {fileID: 1397037324} + - {fileID: 1402467451} + - {fileID: 1345111613} + - {fileID: 963826003} diff --git a/testproject/Assets/Scenes/ZooSam.unity b/testproject/Assets/Scenes/ZooSam.unity index fcbebe9581..fa6089ebef 100644 --- a/testproject/Assets/Scenes/ZooSam.unity +++ b/testproject/Assets/Scenes/ZooSam.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 705507994} - m_IndirectSpecularColor: {r: 0.22070551, g: 0.22116166, b: 0.45032424, a: 1} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -104,7 +104,7 @@ NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -117,7 +117,7 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - accuratePlacement: 0 + buildHeightMesh: 0 maxJobWorkers: 0 preserveTilesOutsideBounds: 0 debug: @@ -149,12 +149,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 33522693} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 146 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &33522695 MeshCollider: @@ -164,9 +165,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 33522693} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -181,6 +190,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -245,12 +255,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 36747676} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.455, y: 0.296, z: 0.312} m_LocalScale: {x: 0.55787, y: 0.55787, z: 0.55787} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 678326399} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &36747678 BoxCollider: @@ -260,9 +271,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 36747676} 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 &36747679 @@ -276,6 +295,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -340,12 +360,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 37826286} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -0.731} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 93 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &37826288 MeshCollider: @@ -355,9 +376,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 37826286} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -372,6 +401,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -436,12 +466,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 49482614} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -0.23800087} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 85 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &49482616 MeshCollider: @@ -451,9 +482,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 49482614} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -468,6 +507,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -532,12 +572,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 53667804} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -2.2180023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 197 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &53667806 MeshCollider: @@ -547,9 +588,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 53667804} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -564,6 +613,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -628,12 +678,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 71608578} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 25 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &71608580 MeshCollider: @@ -643,9 +694,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 71608578} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -660,6 +719,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -724,12 +784,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 79838171} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 192 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &79838173 MeshCollider: @@ -739,9 +800,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 79838171} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -756,6 +825,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -820,12 +890,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 80528582} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 105 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &80528584 MeshCollider: @@ -835,9 +906,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 80528582} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -852,6 +931,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -916,12 +996,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 100213237} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -3.1950016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 228 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &100213239 MeshCollider: @@ -931,9 +1012,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 100213237} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -948,6 +1037,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -1012,12 +1102,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 106240636} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -3.6880016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 238 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &106240638 MeshCollider: @@ -1027,9 +1118,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 106240636} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -1044,6 +1143,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -1108,12 +1208,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 106591948} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 250 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &106591950 MeshCollider: @@ -1123,9 +1224,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 106591948} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -1140,6 +1249,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -1211,8 +1321,9 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: + UseUnreliableDeltas: 0 SyncPositionX: 1 SyncPositionY: 1 SyncPositionZ: 1 @@ -1225,8 +1336,12 @@ MonoBehaviour: PositionThreshold: 0 RotAngleThreshold: 0 ScaleThreshold: 0 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 InLocalSpace: 0 Interpolate: 1 + SlerpPosition: 0 --- !u!114 &108150026 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1237,8 +1352,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 307c40a41954948e7a36bb6b64b4b9cb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_MoveSpeed: 5 m_RotationSpeed: 30 m_RunServerOnly: 1 @@ -1253,10 +1368,14 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: GlobalObjectIdHash: 3052257193 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!65 &108150028 @@ -1267,9 +1386,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 108150024} 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 &108150029 @@ -1283,6 +1410,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -1328,13 +1456,14 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 108150024} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -8.25, y: 1.55, z: 0} m_LocalScale: {x: 5, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 153211162} m_Father: {fileID: 0} - m_RootOrder: 11 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &108150033 MonoBehaviour: @@ -1346,8 +1475,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e6aa2a85582344e32ac05a32f869a764, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: --- !u!1 &110121429 GameObject: m_ObjectHideFlags: 0 @@ -1374,12 +1503,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 110121429} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -2.7110014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 141 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &110121431 MeshCollider: @@ -1389,9 +1519,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 110121429} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -1406,6 +1544,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -1470,12 +1609,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 125350741} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 235 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &125350743 MeshCollider: @@ -1485,9 +1625,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 125350741} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -1502,6 +1650,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -1566,12 +1715,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 145865922} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -0.238} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 23 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &145865924 MeshCollider: @@ -1581,9 +1731,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 145865922} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -1598,6 +1756,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -1662,12 +1821,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 149862984} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -2.7110023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 140 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &149862986 MeshCollider: @@ -1677,9 +1837,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 149862984} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -1694,6 +1862,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -1758,12 +1927,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 150536644} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -2.7110014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 143 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &150536646 MeshCollider: @@ -1773,9 +1943,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 150536644} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -1790,6 +1968,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -1854,12 +2033,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 153211161} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.455, y: 0.296, z: 0.312} m_LocalScale: {x: 0.55787, y: 0.55787, z: 0.55787} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 108150031} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &153211163 BoxCollider: @@ -1869,9 +2049,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 153211161} 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 &153211164 @@ -1885,6 +2073,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -1949,12 +2138,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 169380227} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -3.1950016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 164 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &169380229 MeshCollider: @@ -1964,9 +2154,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 169380227} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -1981,6 +2179,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2045,12 +2244,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 181816470} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 24 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &181816472 MeshCollider: @@ -2060,9 +2260,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 181816470} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -2077,6 +2285,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2141,12 +2350,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 186281139} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -3.6880007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 189 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &186281141 MeshCollider: @@ -2156,9 +2366,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 186281139} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -2173,6 +2391,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2237,12 +2456,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 188404883} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -3.6880007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 253 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &188404885 MeshCollider: @@ -2252,9 +2472,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 188404883} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -2269,6 +2497,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2333,12 +2562,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 191799453} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -1.7079992} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 125 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &191799455 MeshCollider: @@ -2348,9 +2578,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 191799453} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -2365,6 +2603,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2429,12 +2668,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 193655140} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -1.7079993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 63 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &193655142 MeshCollider: @@ -2444,9 +2684,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 193655140} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -2461,6 +2709,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2525,12 +2774,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 193992118} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -1.7079993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 127 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &193992120 MeshCollider: @@ -2540,9 +2790,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 193992118} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -2557,6 +2815,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2621,12 +2880,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 206214829} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 169 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &206214831 MeshCollider: @@ -2636,9 +2896,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 206214829} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -2653,6 +2921,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2717,12 +2986,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 210309823} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -2.7110014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 157 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &210309825 MeshCollider: @@ -2732,9 +3002,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 210309823} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -2749,6 +3027,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2813,12 +3092,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 213478266} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 104 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &213478268 MeshCollider: @@ -2828,9 +3108,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 213478266} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -2845,6 +3133,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2909,12 +3198,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 218116997} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -1.7080002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 108 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &218116999 MeshCollider: @@ -2924,9 +3214,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 218116997} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -2941,6 +3239,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -3005,12 +3304,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 224195388} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 83 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &224195390 MeshCollider: @@ -3020,9 +3320,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 224195388} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -3037,6 +3345,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -3101,12 +3410,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 233906887} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -1.2149993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 39 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &233906889 MeshCollider: @@ -3116,9 +3426,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 233906887} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -3133,6 +3451,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -3197,12 +3516,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 235112665} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -3.1950016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 166 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &235112667 MeshCollider: @@ -3212,9 +3532,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 235112665} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -3229,6 +3557,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -3293,12 +3622,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 237078269} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -2.2180014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 135 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &237078271 MeshCollider: @@ -3308,9 +3638,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 237078269} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -3325,6 +3663,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -3379,7 +3718,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &238880910 MonoBehaviour: m_ObjectHideFlags: 0 @@ -3390,8 +3729,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 828ac0cd1571646948774b82316d2493, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_ToSpawn: {fileID: 0} --- !u!4 &238880911 Transform: @@ -3400,12 +3739,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 238880909} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -8.25, y: 1.55, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 13 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &240282449 GameObject: @@ -3439,8 +3779,9 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: + UseUnreliableDeltas: 0 SyncPositionX: 1 SyncPositionY: 0 SyncPositionZ: 1 @@ -3453,8 +3794,12 @@ MonoBehaviour: PositionThreshold: 0 RotAngleThreshold: 0 ScaleThreshold: 0 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 InLocalSpace: 0 Interpolate: 1 + SlerpPosition: 0 --- !u!114 &240282451 MonoBehaviour: m_ObjectHideFlags: 0 @@ -3465,8 +3810,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 307c40a41954948e7a36bb6b64b4b9cb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_MoveSpeed: -5 m_RotationSpeed: 30 m_RunServerOnly: 1 @@ -3481,10 +3826,14 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: GlobalObjectIdHash: 2979526890 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!65 &240282453 @@ -3495,9 +3844,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 240282449} 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 &240282454 @@ -3511,6 +3868,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -3556,13 +3914,14 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 240282449} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -8.25, y: 1.55, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1551181949} m_Father: {fileID: 0} - m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &250510712 GameObject: @@ -3590,12 +3949,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 250510712} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -0.23800087} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &250510714 MeshCollider: @@ -3605,9 +3965,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 250510712} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -3622,6 +3990,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -3686,12 +4055,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 256564933} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 131 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &256564935 MeshCollider: @@ -3701,9 +4071,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 256564933} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -3718,6 +4096,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -3782,12 +4161,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 261586002} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 123 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &261586004 MeshCollider: @@ -3797,9 +4177,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 261586002} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -3814,6 +4202,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -3878,12 +4267,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 286306874} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 242 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &286306876 MeshCollider: @@ -3893,9 +4283,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 286306874} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -3910,6 +4308,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -3974,12 +4373,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 292590885} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -3.6880007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 175 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &292590887 MeshCollider: @@ -3989,9 +4389,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 292590885} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -4006,6 +4414,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -4070,12 +4479,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 324852034} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 97 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &324852036 MeshCollider: @@ -4085,9 +4495,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 324852034} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -4102,6 +4520,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -4167,9 +4586,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 346676326} 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 &346676328 @@ -4183,6 +4610,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -4228,12 +4656,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 346676326} + 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: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &351881178 GameObject: @@ -4261,12 +4690,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 351881178} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 75 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &351881180 MeshCollider: @@ -4276,9 +4706,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 351881178} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -4293,6 +4731,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -4357,12 +4796,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 364557581} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 58 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &364557583 MeshCollider: @@ -4372,9 +4812,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 364557581} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -4389,6 +4837,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -4453,12 +4902,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 379641072} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 241 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &379641074 MeshCollider: @@ -4468,9 +4918,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 379641072} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -4485,6 +4943,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -4549,12 +5008,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 379921466} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 168 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &379921468 MeshCollider: @@ -4564,9 +5024,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 379921466} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -4581,6 +5049,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -4645,12 +5114,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 385354836} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -2.7110023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 204 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &385354838 MeshCollider: @@ -4660,9 +5130,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 385354836} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -4677,6 +5155,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -4741,12 +5220,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 389923200} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 122 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &389923202 MeshCollider: @@ -4756,9 +5236,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 389923200} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -4773,6 +5261,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -4837,12 +5326,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 398540132} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -3.6880016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 254 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &398540134 MeshCollider: @@ -4852,9 +5342,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 398540132} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -4869,6 +5367,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -4933,12 +5432,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 405946599} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 171 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &405946601 MeshCollider: @@ -4948,9 +5448,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 405946599} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -4965,6 +5473,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5029,12 +5538,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 407199355} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 57 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &407199357 MeshCollider: @@ -5044,9 +5554,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 407199355} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -5061,6 +5579,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5125,12 +5644,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 482542012} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 17 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &482542014 MeshCollider: @@ -5140,9 +5660,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 482542012} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -5157,6 +5685,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5221,12 +5750,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 482761098} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 98 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &482761100 MeshCollider: @@ -5236,9 +5766,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 482761098} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -5253,6 +5791,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5317,12 +5856,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 488989116} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 136 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &488989118 MeshCollider: @@ -5332,9 +5872,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 488989116} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -5349,6 +5897,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5413,12 +5962,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 489960630} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 114 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &489960632 MeshCollider: @@ -5428,9 +5978,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 489960630} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -5445,6 +6003,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5509,12 +6068,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 491088866} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.01, y: 0.47, z: 0} m_LocalScale: {x: 0.55787, y: 0.55787, z: 0.55787} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1934616770} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &491088868 BoxCollider: @@ -5524,9 +6084,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 491088866} 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 &491088869 @@ -5540,6 +6108,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5604,12 +6173,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 506377921} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -1.7080002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 62 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &506377923 MeshCollider: @@ -5619,9 +6189,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 506377921} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -5636,6 +6214,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5700,12 +6279,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 518010392} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -2.2180014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 215 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &518010394 MeshCollider: @@ -5715,9 +6295,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 518010392} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -5732,6 +6320,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5796,12 +6385,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 529345318} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 163 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &529345320 MeshCollider: @@ -5811,9 +6401,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 529345318} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -5828,6 +6426,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5892,12 +6491,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 555000401} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 66 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &555000403 MeshCollider: @@ -5907,9 +6507,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 555000401} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -5924,6 +6532,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -5987,12 +6596,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 557794667} + serializedVersion: 2 m_LocalRotation: {x: 0.5, y: -0, z: -0, w: 0.8660254} m_LocalPosition: {x: 8.25, y: 18.45, z: -16} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1934616770} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 60, y: 0, z: 0} --- !u!81 &557794669 AudioListener: @@ -6016,9 +6626,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 @@ -6071,12 +6689,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 561629645} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -2.2180023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 150 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &561629647 MeshCollider: @@ -6086,9 +6705,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 561629645} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -6103,6 +6730,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6167,12 +6795,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 565740968} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -2.2180023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 214 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &565740970 MeshCollider: @@ -6182,9 +6811,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 565740968} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -6199,6 +6836,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6263,12 +6901,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 585236792} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -1.2150002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 37 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &585236794 MeshCollider: @@ -6278,9 +6917,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 585236792} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -6295,6 +6942,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6359,12 +7007,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 586781683} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 129 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &586781685 MeshCollider: @@ -6374,9 +7023,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 586781683} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -6391,6 +7048,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6455,12 +7113,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 590172462} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -0.23800087} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 68 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &590172464 MeshCollider: @@ -6470,9 +7129,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 590172462} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -6487,6 +7154,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6551,12 +7219,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 596272298} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -2.2180023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 212 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &596272300 MeshCollider: @@ -6566,9 +7235,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 596272298} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -6583,6 +7260,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6647,12 +7325,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 601557655} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 179 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &601557657 MeshCollider: @@ -6662,9 +7341,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 601557655} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -6679,6 +7366,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6743,12 +7431,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 604298090} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 203 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &604298092 MeshCollider: @@ -6758,9 +7447,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 604298090} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -6775,6 +7472,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -6823,7 +7521,7 @@ GameObject: m_Component: - component: {fileID: 620561612} - component: {fileID: 620561611} - - component: {fileID: 620561610} + - component: {fileID: 620561613} m_Layer: 0 m_Name: NetworkManager m_TagString: Untagged @@ -6831,25 +7529,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &620561610 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 620561609} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b84c2d8dfe509a34fb59e2b81f8e1319, type: 3} - m_Name: - m_EditorClassIdentifier: - MessageBufferSize: 5120 - MaxConnections: 100 - MaxSentMessageQueueSize: 128 - ConnectAddress: 127.0.0.1 - ConnectPort: 7777 - ServerListenPort: 7777 - MessageSendMode: 0 --- !u!114 &620561611 MonoBehaviour: m_ObjectHideFlags: 0 @@ -6860,21 +7539,19 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3} - m_Name: - m_EditorClassIdentifier: - DontDestroy: 1 - RunInBackground: 1 - LogLevel: 1 + m_Name: + m_EditorClassIdentifier: NetworkConfig: ProtocolVersion: 0 - NetworkTransport: {fileID: 620561610} + NetworkTransport: {fileID: 620561613} PlayerPrefab: {fileID: 8685790303553767886, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, type: 3} - NetworkPrefabs: [] + Prefabs: + NetworkPrefabsLists: [] TickRate: 30 ClientConnectionBufferTimeout: 10 ConnectionApproval: 0 - ConnectionData: + ConnectionData: EnableTimeResync: 0 TimeResyncInterval: 30 EnsureNetworkVariableLengthSafety: 0 @@ -6886,6 +7563,9 @@ MonoBehaviour: LoadSceneTimeOut: 120 SpawnTimeout: 20 EnableNetworkLogs: 1 + OldPrefabList: [] + RunInBackground: 1 + LogLevel: 1 --- !u!4 &620561612 Transform: m_ObjectHideFlags: 0 @@ -6893,18 +7573,47 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 620561609} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &620561613 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 620561609} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6960e84d07fb87f47956e7a81d71c4e6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ProtocolType: 0 + m_MaxPacketQueueSize: 128 + m_MaxPayloadSize: 6144 + m_HeartbeatTimeoutMS: 500 + m_ConnectTimeoutMS: 1000 + m_MaxConnectAttempts: 60 + m_DisconnectTimeoutMS: 30000 + ConnectionData: + Address: 127.0.0.1 + Port: 7777 + ServerListenAddress: 127.0.0.1 + DebugSimulator: + PacketDelayMS: 0 + PacketJitterMS: 0 + PacketDropRate: 0 --- !u!1001 &627808638 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1333567166} m_Modifications: - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, @@ -7020,10 +7729,13 @@ PrefabInstance: - target: {fileID: 5266522511616468950, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} propertyPath: m_SceneMenuToLoad - value: + value: objectReference: {fileID: 11400000, guid: c10d995498e0c514a853c3506031d3fb, type: 2} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} --- !u!224 &627808639 stripped RectTransform: @@ -7057,12 +7769,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 630511901} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 80 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &630511903 MeshCollider: @@ -7072,9 +7785,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 630511901} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -7089,6 +7810,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7134,7 +7856,7 @@ LightingSettings: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Settings.lighting - serializedVersion: 3 + serializedVersion: 6 m_GIWorkflowMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 0 @@ -7147,7 +7869,7 @@ LightingSettings: m_LightmapMaxSize: 1024 m_BakeResolution: 40 m_Padding: 2 - m_TextureCompression: 1 + m_LightmapCompression: 3 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 @@ -7168,13 +7890,13 @@ LightingSettings: m_PVRCulling: 1 m_PVRSampling: 1 m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVREnvironmentSampleCount: 500 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 512 m_PVREnvironmentReferencePointCount: 2048 m_LightProbeSampleCountMultiplier: 4 m_PVRBounces: 2 m_PVRMinBounces: 2 - m_PVREnvironmentMIS: 0 + m_PVREnvironmentImportanceSampling: 0 m_PVRFilteringMode: 2 m_PVRDenoiserTypeDirect: 0 m_PVRDenoiserTypeIndirect: 0 @@ -7188,6 +7910,9 @@ LightingSettings: m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 + m_NumRaysToShootPerTexel: -1 + m_RespectSceneVisibilityWhenBakingGI: 0 --- !u!1 &644252816 GameObject: m_ObjectHideFlags: 0 @@ -7214,12 +7939,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 644252816} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 210 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &644252818 MeshCollider: @@ -7229,9 +7955,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 644252816} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -7246,6 +7980,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7310,12 +8045,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 646268286} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -0.23800087} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 84 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &646268288 MeshCollider: @@ -7325,9 +8061,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 646268286} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -7342,6 +8086,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7406,12 +8151,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 647288638} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 170 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &647288640 MeshCollider: @@ -7421,9 +8167,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 647288638} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -7438,6 +8192,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7502,12 +8257,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 648827426} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -1.7080002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 44 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &648827428 MeshCollider: @@ -7517,9 +8273,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 648827426} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -7534,6 +8298,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7598,12 +8363,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 650186540} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -1.7080002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 126 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &650186542 MeshCollider: @@ -7613,9 +8379,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 650186540} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -7630,6 +8404,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7694,12 +8469,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 657213826} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 26 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &657213828 MeshCollider: @@ -7709,9 +8485,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 657213826} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -7726,6 +8510,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7790,12 +8575,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 672979497} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -0.23800087} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 21 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &672979499 MeshCollider: @@ -7805,9 +8591,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 672979497} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -7822,6 +8616,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7890,8 +8685,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 307c40a41954948e7a36bb6b64b4b9cb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_MoveSpeed: 5 m_RotationSpeed: 30 m_RunServerOnly: 0 @@ -7904,9 +8699,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 674930886} 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 &674930891 @@ -7920,6 +8723,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -7965,12 +8769,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 674930886} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -6.2, y: 1.55, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &674940303 GameObject: @@ -7998,12 +8803,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 674940303} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 155 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &674940305 MeshCollider: @@ -8013,9 +8819,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 674940303} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -8030,6 +8844,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8100,8 +8915,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 307c40a41954948e7a36bb6b64b4b9cb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_MoveSpeed: 5 m_RotationSpeed: 30 m_RunServerOnly: 1 @@ -8116,10 +8931,14 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: GlobalObjectIdHash: 3301752843 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!114 &678326395 @@ -8132,8 +8951,9 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: + UseUnreliableDeltas: 0 SyncPositionX: 1 SyncPositionY: 1 SyncPositionZ: 1 @@ -8146,8 +8966,12 @@ MonoBehaviour: PositionThreshold: 0 RotAngleThreshold: 0 ScaleThreshold: 0 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 InLocalSpace: 1 Interpolate: 1 + SlerpPosition: 0 --- !u!65 &678326396 BoxCollider: m_ObjectHideFlags: 0 @@ -8156,9 +8980,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 678326392} 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 &678326397 @@ -8172,6 +9004,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8217,14 +9050,15 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 678326392} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -8.25, y: 1.55, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 702051986} - {fileID: 36747677} m_Father: {fileID: 0} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &680150732 GameObject: @@ -8252,12 +9086,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 680150732} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -1.2150002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 54 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &680150734 MeshCollider: @@ -8267,9 +9102,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 680150732} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -8284,6 +9127,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8348,12 +9192,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 687753481} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 218 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &687753483 MeshCollider: @@ -8363,9 +9208,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 687753481} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -8380,6 +9233,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8458,9 +9312,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 @@ -8494,12 +9356,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 693991909} + serializedVersion: 2 m_LocalRotation: {x: 0.5, y: -0, z: -0, w: 0.8660254} m_LocalPosition: {x: 0, y: 20, z: -16} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 60, y: 0, z: 0} --- !u!1 &695189437 GameObject: @@ -8527,12 +9390,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 695189437} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -2.7110023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 222 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &695189439 MeshCollider: @@ -8542,9 +9406,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 695189437} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -8559,6 +9431,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8637,9 +9510,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 @@ -8673,12 +9554,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 702051983} + serializedVersion: 2 m_LocalRotation: {x: 0.5, y: -0, z: -0, w: 0.8660254} m_LocalPosition: {x: 8.25, y: 18.45, z: -16} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 678326399} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 60, y: 0, z: 0} --- !u!1 &705507993 GameObject: @@ -8766,12 +9648,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 705507993} + 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: 0 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} --- !u!1 &707341896 GameObject: @@ -8799,12 +9682,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 707341896} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 147 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &707341898 MeshCollider: @@ -8814,9 +9698,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 707341896} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -8831,6 +9723,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8895,12 +9788,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 709695180} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 144 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &709695182 MeshCollider: @@ -8910,9 +9804,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 709695180} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -8927,6 +9829,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -8991,12 +9894,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 725194418} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 90 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &725194420 MeshCollider: @@ -9006,9 +9910,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 725194418} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -9023,6 +9935,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -9087,12 +10000,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 726973988} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -1.2150002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 100 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &726973990 MeshCollider: @@ -9102,9 +10016,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 726973988} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -9119,6 +10041,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -9180,9 +10103,11 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 727811949} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -16.3, y: 0, z: 14.7} m_LocalScale: {x: 8.708106, y: 8.708106, z: 8.708106} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 965264336} - {fileID: 2078151580} @@ -9441,7 +10366,6 @@ Transform: - {fileID: 398540133} - {fileID: 1399839515} m_Father: {fileID: 0} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &731245575 GameObject: @@ -9469,12 +10393,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 731245575} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 51 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &731245577 MeshCollider: @@ -9484,9 +10409,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 731245575} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -9501,6 +10434,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -9565,12 +10499,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 734717412} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 184 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &734717414 MeshCollider: @@ -9580,9 +10515,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 734717412} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -9597,6 +10540,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -9661,12 +10605,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 737390302} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -0.731} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 77 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &737390304 MeshCollider: @@ -9676,9 +10621,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 737390302} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -9693,6 +10646,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -9757,12 +10711,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 744554806} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -1.7079993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 111 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &744554808 MeshCollider: @@ -9772,9 +10727,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 744554806} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -9789,6 +10752,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -9853,12 +10817,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 771846003} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -3.1950016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 244 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &771846005 MeshCollider: @@ -9868,9 +10833,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 771846003} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -9885,6 +10858,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -9949,12 +10923,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 774843097} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.7310009} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 12 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &774843099 MeshCollider: @@ -9964,9 +10939,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 774843097} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -9981,6 +10964,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -10045,12 +11029,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 777257498} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -2.2180023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 132 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &777257500 MeshCollider: @@ -10060,9 +11045,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 777257498} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -10077,6 +11070,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -10141,12 +11135,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 777692126} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -3.6880007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 237 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &777692128 MeshCollider: @@ -10156,9 +11151,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 777692126} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -10173,6 +11176,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -10237,12 +11241,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 779681317} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -3.6880016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 190 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &779681319 MeshCollider: @@ -10252,9 +11257,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 779681317} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -10269,6 +11282,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -10333,12 +11347,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 788050734} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -3.6880016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 174 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &788050736 MeshCollider: @@ -10348,9 +11363,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 788050734} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -10365,6 +11388,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -10429,12 +11453,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 801747460} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -3.1950006} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 231 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &801747462 MeshCollider: @@ -10444,9 +11469,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 801747460} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -10461,6 +11494,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -10525,12 +11559,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 817113580} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 16 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &817113582 MeshCollider: @@ -10540,9 +11575,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 817113580} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -10557,6 +11600,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -10621,12 +11665,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 819907129} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -1.7080002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 124 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &819907131 MeshCollider: @@ -10636,9 +11681,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 819907129} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -10653,6 +11706,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -10717,12 +11771,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 827154093} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -0.73100007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 79 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &827154095 MeshCollider: @@ -10732,9 +11787,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 827154093} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -10749,6 +11812,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -10813,12 +11877,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 835641753} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 41 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &835641755 MeshCollider: @@ -10828,9 +11893,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 835641753} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -10845,6 +11918,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -10909,12 +11983,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 839241138} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -2.7110023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 156 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &839241140 MeshCollider: @@ -10924,9 +11999,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 839241138} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -10941,6 +12024,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -11007,8 +12091,9 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 m_HorizontalAxis: Horizontal m_VerticalAxis: Vertical m_SubmitButton: Submit @@ -11026,8 +12111,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_FirstSelected: {fileID: 0} m_sendNavigationEvents: 1 m_DragThreshold: 10 @@ -11038,12 +12123,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 849106629} + 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: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &863682372 GameObject: @@ -11071,12 +12157,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 863682372} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 82 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &863682374 MeshCollider: @@ -11086,9 +12173,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 863682372} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -11103,6 +12198,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -11167,12 +12263,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 865488582} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -1.7079992} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 61 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &865488584 MeshCollider: @@ -11182,9 +12279,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 865488582} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -11199,6 +12304,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -11263,12 +12369,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 884228699} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 194 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &884228701 MeshCollider: @@ -11278,9 +12385,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 884228699} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -11295,6 +12410,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -11359,12 +12475,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 896146541} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 27 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &896146543 MeshCollider: @@ -11374,9 +12491,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 896146541} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -11391,6 +12516,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -11455,12 +12581,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 897885834} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -0.7310009} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 30 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &897885836 MeshCollider: @@ -11470,9 +12597,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 897885834} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -11487,6 +12622,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -11551,12 +12687,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 902054442} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 162 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &902054444 MeshCollider: @@ -11566,9 +12703,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 902054442} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -11583,6 +12728,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -11647,12 +12793,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 916313678} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -2.2180023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 196 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &916313680 MeshCollider: @@ -11662,9 +12809,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 916313678} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -11679,6 +12834,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -11743,12 +12899,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 917869277} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -0.238} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &917869279 MeshCollider: @@ -11758,9 +12915,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 917869277} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -11775,6 +12940,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -11839,12 +13005,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 942872871} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -2.7110023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 158 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &942872873 MeshCollider: @@ -11854,9 +13021,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 942872871} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -11871,6 +13046,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -11935,12 +13111,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 953666713} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 186 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &953666715 MeshCollider: @@ -11950,9 +13127,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 953666713} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -11967,6 +13152,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12031,12 +13217,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 956406375} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 227 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &956406377 MeshCollider: @@ -12046,9 +13233,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 956406375} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -12063,6 +13258,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12127,12 +13323,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 956820038} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -2.7110014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 159 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &956820040 MeshCollider: @@ -12142,9 +13339,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 956820038} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -12159,6 +13364,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12223,12 +13429,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 959147175} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -3.6880007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 191 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &959147177 MeshCollider: @@ -12238,9 +13445,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 959147175} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -12255,6 +13470,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12319,12 +13535,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 959806567} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 251 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &959806569 MeshCollider: @@ -12334,9 +13551,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 959806567} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -12351,6 +13576,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12415,12 +13641,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 961255782} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 81 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &961255784 MeshCollider: @@ -12430,9 +13657,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 961255782} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -12447,6 +13682,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12511,12 +13747,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 965264335} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &965264337 MeshCollider: @@ -12526,9 +13763,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 965264335} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -12543,6 +13788,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12607,12 +13853,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 983885395} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.23800087} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &983885397 MeshCollider: @@ -12622,9 +13869,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 983885395} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -12639,6 +13894,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12703,12 +13959,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 995765805} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -2.2180023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 213 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &995765807 MeshCollider: @@ -12718,9 +13975,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 995765805} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -12735,6 +14000,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12799,12 +14065,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1003925988} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -1.2150002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 53 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1003925990 MeshCollider: @@ -12814,9 +14081,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1003925988} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -12831,6 +14106,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12895,12 +14171,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1005765827} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -2.2180023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 149 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1005765829 MeshCollider: @@ -12910,9 +14187,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1005765827} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -12927,6 +14212,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -12991,12 +14277,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1027215037} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -3.6880007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 239 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1027215039 MeshCollider: @@ -13006,9 +14293,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1027215037} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -13023,6 +14318,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13087,12 +14383,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1029714100} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 138 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1029714102 MeshCollider: @@ -13102,9 +14399,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1029714100} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -13119,6 +14424,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13183,12 +14489,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1047784308} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 40 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1047784310 MeshCollider: @@ -13198,9 +14505,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1047784308} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -13215,6 +14530,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13279,12 +14595,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1048788818} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 34 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1048788820 MeshCollider: @@ -13294,9 +14611,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1048788818} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -13311,6 +14636,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13375,12 +14701,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1049975819} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 113 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1049975821 MeshCollider: @@ -13390,9 +14717,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1049975819} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -13407,6 +14742,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13471,12 +14807,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1056515547} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -2.2180014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 199 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1056515549 MeshCollider: @@ -13486,9 +14823,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1056515547} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -13503,6 +14848,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13567,12 +14913,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1060401002} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -1.2150002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 52 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1060401004 MeshCollider: @@ -13582,9 +14929,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1060401002} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -13599,6 +14954,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13663,12 +15019,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1067422387} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -0.7310009} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 14 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1067422389 MeshCollider: @@ -13678,9 +15035,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1067422387} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -13695,6 +15060,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13759,12 +15125,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1074598068} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -0.23800087} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1074598070 MeshCollider: @@ -13774,9 +15141,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1074598068} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -13791,6 +15166,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13855,12 +15231,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1089358755} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 195 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1089358757 MeshCollider: @@ -13870,9 +15247,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1089358755} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -13887,6 +15272,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -13951,12 +15337,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1091646622} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -3.6880016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 252 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1091646624 MeshCollider: @@ -13966,9 +15353,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1091646622} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -13983,6 +15378,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -14047,12 +15443,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1093954315} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 211 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1093954317 MeshCollider: @@ -14062,9 +15459,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1093954315} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -14079,6 +15484,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -14143,12 +15549,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1093974177} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -0.23800087} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 70 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1093974179 MeshCollider: @@ -14158,9 +15565,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1093974177} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -14175,6 +15590,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -14239,12 +15655,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1103049816} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -3.1950016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 229 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1103049818 MeshCollider: @@ -14254,9 +15671,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1103049816} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -14271,6 +15696,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -14335,12 +15761,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1104813047} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 161 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1104813049 MeshCollider: @@ -14350,9 +15777,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1104813047} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -14367,6 +15802,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -14431,12 +15867,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1112769137} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -0.23800087} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 20 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1112769139 MeshCollider: @@ -14446,9 +15883,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1112769137} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -14463,6 +15908,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -14527,12 +15973,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1114307392} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 120 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1114307394 MeshCollider: @@ -14542,9 +15989,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1114307392} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -14559,6 +16014,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -14623,12 +16079,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1131956203} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 43 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1131956205 MeshCollider: @@ -14638,9 +16095,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1131956203} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -14655,6 +16120,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -14719,12 +16185,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1133583830} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -1.2150002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 38 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1133583832 MeshCollider: @@ -14734,9 +16201,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1133583830} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -14751,6 +16226,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -14815,12 +16291,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1137692336} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1137692338 MeshCollider: @@ -14830,9 +16307,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1137692336} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -14847,6 +16332,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -14911,12 +16397,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1147996525} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -1.2150002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 118 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1147996527 MeshCollider: @@ -14926,9 +16413,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1147996525} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -14943,6 +16438,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -15007,12 +16503,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1156253990} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -0.73100007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 15 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1156253992 MeshCollider: @@ -15022,9 +16519,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1156253990} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -15039,6 +16544,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -15103,12 +16609,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1156559622} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 96 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1156559624 MeshCollider: @@ -15118,9 +16625,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1156559622} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -15135,6 +16650,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -15199,12 +16715,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1159180715} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 33 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1159180717 MeshCollider: @@ -15214,9 +16731,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1159180715} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -15231,6 +16756,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -15295,12 +16821,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1162454165} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -1.2150002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 117 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1162454167 MeshCollider: @@ -15310,9 +16837,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1162454165} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -15327,6 +16862,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -15391,12 +16927,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1165208747} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -2.7110023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 220 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1165208749 MeshCollider: @@ -15406,9 +16943,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1165208747} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -15423,6 +16968,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -15487,12 +17033,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1168640877} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 249 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1168640879 MeshCollider: @@ -15502,9 +17049,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1168640877} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -15519,6 +17074,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -15583,12 +17139,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1180163488} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 11 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1180163490 MeshCollider: @@ -15598,9 +17155,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1180163488} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -15615,6 +17180,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -15679,12 +17245,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1180366240} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 74 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1180366242 MeshCollider: @@ -15694,9 +17261,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1180366240} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -15711,6 +17286,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -15775,12 +17351,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1180486512} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 217 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1180486514 MeshCollider: @@ -15790,9 +17367,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1180486512} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -15807,6 +17392,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -15871,12 +17457,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1190201086} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -1.2150002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 101 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1190201088 MeshCollider: @@ -15886,9 +17473,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1190201086} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -15903,6 +17498,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -15967,12 +17563,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1191496717} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -3.1950016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 182 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1191496719 MeshCollider: @@ -15982,9 +17579,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1191496717} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -15999,6 +17604,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -16063,12 +17669,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1191630248} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 209 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1191630250 MeshCollider: @@ -16078,9 +17685,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1191630248} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -16095,6 +17710,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -16159,12 +17775,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1209088796} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 121 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1209088798 MeshCollider: @@ -16174,9 +17791,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1209088796} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -16191,6 +17816,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -16255,12 +17881,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1215758529} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 18 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1215758531 MeshCollider: @@ -16270,9 +17897,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1215758529} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -16287,6 +17922,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -16351,12 +17987,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1218492680} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 202 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1218492682 MeshCollider: @@ -16366,9 +18003,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1218492680} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -16383,6 +18028,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -16447,12 +18093,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1224370286} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -1.2150002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 36 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1224370288 MeshCollider: @@ -16462,9 +18109,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1224370286} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -16479,6 +18134,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -16543,12 +18199,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1248100664} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 219 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1248100666 MeshCollider: @@ -16558,9 +18215,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1248100664} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -16575,6 +18240,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -16639,12 +18305,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1254141402} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -3.1950016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 246 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1254141404 MeshCollider: @@ -16654,9 +18321,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1254141402} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -16671,6 +18346,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -16735,12 +18411,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1258424359} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 176 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1258424361 MeshCollider: @@ -16750,9 +18427,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1258424359} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -16767,6 +18452,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -16831,12 +18517,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1262347582} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 88 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1262347584 MeshCollider: @@ -16846,9 +18533,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1262347582} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -16863,6 +18558,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -16927,12 +18623,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1268059511} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 32 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1268059513 MeshCollider: @@ -16942,9 +18639,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1268059511} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -16959,6 +18664,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -17023,12 +18729,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1269849010} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -2.7110023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 206 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1269849012 MeshCollider: @@ -17038,9 +18745,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1269849010} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -17055,6 +18770,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -17119,12 +18835,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1271441865} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 89 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1271441867 MeshCollider: @@ -17134,9 +18851,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1271441865} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -17151,6 +18876,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -17215,12 +18941,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1272924905} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 208 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1272924907 MeshCollider: @@ -17230,9 +18957,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1272924905} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -17247,6 +18982,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -17311,12 +19047,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1278291352} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -0.7310009} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 92 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1278291354 MeshCollider: @@ -17326,9 +19063,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1278291352} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -17343,6 +19088,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -17407,12 +19153,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1300058640} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1300058642 MeshCollider: @@ -17422,9 +19169,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1300058640} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -17439,6 +19194,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -17503,12 +19259,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1323055547} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 177 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1323055549 MeshCollider: @@ -17518,9 +19275,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1323055547} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -17535,6 +19300,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -17599,12 +19365,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1325528650} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 107 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1325528652 MeshCollider: @@ -17614,9 +19381,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1325528650} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -17631,6 +19406,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -17699,8 +19475,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_IgnoreReversedGraphics: 1 m_BlockingObjects: 0 m_BlockingMask: @@ -17716,8 +19492,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_UiScaleMode: 1 m_ReferencePixelsPerUnit: 100 m_ScaleFactor: 1 @@ -17746,7 +19522,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 @@ -17760,11 +19538,11 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 627808639} - {fileID: 1536251758} m_Father: {fileID: 0} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -17781,8 +19559,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4390d966eb8724ba2907f775b34e94ea, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: NetworkManager: {fileID: 620561611} ButtonsRoot: {fileID: 0} AuthButton: {fileID: 0} @@ -17814,12 +19592,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1333670311} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 240 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1333670313 MeshCollider: @@ -17829,9 +19608,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1333670311} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -17846,6 +19633,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -17910,12 +19698,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1341498264} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -0.23800087} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 86 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1341498266 MeshCollider: @@ -17925,9 +19714,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1341498264} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -17942,6 +19739,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -18006,12 +19804,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1347200038} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 243 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1347200040 MeshCollider: @@ -18021,9 +19820,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1347200038} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -18038,6 +19845,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -18102,12 +19910,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1350981873} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -3.1950016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 247 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1350981875 MeshCollider: @@ -18117,9 +19926,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1350981873} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -18134,6 +19951,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -18198,12 +20016,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1357212646} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 19 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1357212648 MeshCollider: @@ -18213,9 +20032,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1357212646} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -18230,6 +20057,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -18294,12 +20122,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1368127827} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -3.6880016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 188 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1368127829 MeshCollider: @@ -18309,9 +20138,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1368127827} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -18326,6 +20163,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -18390,12 +20228,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1377941353} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 48 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1377941355 MeshCollider: @@ -18405,9 +20244,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1377941353} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -18422,6 +20269,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -18486,12 +20334,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1385336451} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -1.7079992} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 45 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1385336453 MeshCollider: @@ -18501,9 +20350,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1385336451} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -18518,6 +20375,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -18582,12 +20440,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1399839514} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -3.6880007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 255 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1399839516 MeshCollider: @@ -18597,9 +20456,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1399839514} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -18614,6 +20481,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -18678,12 +20546,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1402687343} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 187 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1402687345 MeshCollider: @@ -18693,9 +20562,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1402687343} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -18710,6 +20587,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -18774,12 +20652,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1405769695} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 35 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1405769697 MeshCollider: @@ -18789,9 +20668,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1405769695} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -18806,6 +20693,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -18870,12 +20758,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1406760489} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -0.7310009} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 76 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1406760491 MeshCollider: @@ -18885,9 +20774,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1406760489} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -18902,6 +20799,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -18966,12 +20864,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1409119960} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 99 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1409119962 MeshCollider: @@ -18981,9 +20880,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1409119960} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -18998,6 +20905,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -19062,12 +20970,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1409818198} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 64 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1409818200 MeshCollider: @@ -19077,9 +20986,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1409818198} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -19094,6 +21011,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -19158,12 +21076,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1421330463} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 56 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1421330465 MeshCollider: @@ -19173,9 +21092,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1421330463} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -19190,6 +21117,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -19254,12 +21182,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1425645965} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -1.2149993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 103 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1425645967 MeshCollider: @@ -19269,9 +21198,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1425645965} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -19286,6 +21223,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -19350,12 +21288,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1426769439} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -3.1950016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 230 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1426769441 MeshCollider: @@ -19365,9 +21304,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1426769439} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -19382,6 +21329,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -19446,12 +21394,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1426981711} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 49 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1426981713 MeshCollider: @@ -19461,9 +21410,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1426981711} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -19478,6 +21435,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -19542,12 +21500,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1429461273} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -1.7080002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 60 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1429461275 MeshCollider: @@ -19557,9 +21516,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1429461273} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -19574,6 +21541,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -19638,12 +21606,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1433282150} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -2.7110014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 221 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1433282152 MeshCollider: @@ -19653,9 +21622,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1433282150} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -19670,6 +21647,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -19734,12 +21712,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1439769664} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -3.1950016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 181 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1439769666 MeshCollider: @@ -19749,9 +21728,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1439769664} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -19766,6 +21753,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -19830,12 +21818,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1451779897} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 200 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1451779899 MeshCollider: @@ -19845,9 +21834,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1451779897} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -19862,6 +21859,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -19926,12 +21924,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1461177416} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -0.7310009} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 28 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1461177418 MeshCollider: @@ -19941,9 +21940,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1461177416} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -19958,6 +21965,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -20022,12 +22030,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1493942654} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 160 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1493942656 MeshCollider: @@ -20037,9 +22046,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1493942654} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -20054,6 +22071,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -20104,9 +22122,9 @@ GameObject: - component: {fileID: 1495712165} - component: {fileID: 1495712164} - component: {fileID: 1495712163} - - component: {fileID: 1495712167} - component: {fileID: 1495712168} - component: {fileID: 1495712169} + - component: {fileID: 1495712170} m_Layer: 0 m_Name: inputNT m_TagString: Untagged @@ -20122,9 +22140,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1495712162} 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 &1495712164 @@ -20138,6 +22164,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -20183,25 +22210,14 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1495712162} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -1.2077786, y: -4.1862803, z: -2.3402812} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 12 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1495712167 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1495712162} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6b84a5cd57f84258b2e5cf687e674429, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!114 &1495712168 MonoBehaviour: m_ObjectHideFlags: 0 @@ -20212,10 +22228,14 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: GlobalObjectIdHash: 795516571 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!114 &1495712169 @@ -20228,8 +22248,39 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e6aa2a85582344e32ac05a32f869a764, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1495712170 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1495712162} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} + m_Name: + m_EditorClassIdentifier: + UseUnreliableDeltas: 0 + SyncPositionX: 1 + SyncPositionY: 1 + SyncPositionZ: 1 + SyncRotAngleX: 1 + SyncRotAngleY: 1 + SyncRotAngleZ: 1 + SyncScaleX: 1 + SyncScaleY: 1 + SyncScaleZ: 1 + PositionThreshold: 0.001 + RotAngleThreshold: 0.01 + ScaleThreshold: 0.01 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 + InLocalSpace: 0 + Interpolate: 1 + SlerpPosition: 0 --- !u!1 &1518464148 GameObject: m_ObjectHideFlags: 0 @@ -20256,12 +22307,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1518464148} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -0.23800087} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 69 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1518464150 MeshCollider: @@ -20271,9 +22323,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1518464148} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -20288,6 +22348,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -20352,12 +22413,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1532247924} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -2.2180014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 151 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1532247926 MeshCollider: @@ -20367,9 +22429,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1532247924} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -20384,6 +22454,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -20454,12 +22525,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1537050448} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -2.7110014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 207 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1537050450 MeshCollider: @@ -20469,9 +22541,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1537050448} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -20486,6 +22566,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -20550,12 +22631,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1551181948} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.455, y: 0.296, z: 0.312} m_LocalScale: {x: 0.55787, y: 0.55787, z: 0.55787} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 240282456} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &1551181950 BoxCollider: @@ -20565,9 +22647,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1551181948} 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 &1551181951 @@ -20581,6 +22671,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -20645,12 +22736,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1556458764} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 185 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1556458766 MeshCollider: @@ -20660,9 +22752,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1556458764} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -20677,6 +22777,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -20741,12 +22842,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1566163830} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 153 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1566163832 MeshCollider: @@ -20756,9 +22858,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1566163830} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -20773,6 +22883,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -20837,12 +22948,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1570850647} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1570850649 MeshCollider: @@ -20852,9 +22964,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1570850647} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -20869,6 +22989,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -20933,12 +23054,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1571650943} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 106 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1571650945 MeshCollider: @@ -20948,9 +23070,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1571650943} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -20965,6 +23095,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -21029,12 +23160,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1583118625} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 154 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1583118627 MeshCollider: @@ -21044,9 +23176,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1583118625} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -21061,6 +23201,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -21125,12 +23266,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1586201511} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -0.731} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 29 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1586201513 MeshCollider: @@ -21140,9 +23282,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1586201511} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -21157,6 +23307,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -21221,12 +23372,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1602406364} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -1.7079993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 47 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1602406366 MeshCollider: @@ -21236,9 +23388,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1602406364} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -21253,6 +23413,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -21317,12 +23478,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1604954355} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -2.2180023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 198 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1604954357 MeshCollider: @@ -21332,9 +23494,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1604954355} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -21349,6 +23519,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -21413,12 +23584,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1615309367} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -3.1950016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 180 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1615309369 MeshCollider: @@ -21428,9 +23600,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1615309367} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -21445,6 +23625,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -21509,12 +23690,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1618109823} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 193 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1618109825 MeshCollider: @@ -21524,9 +23706,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1618109823} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -21541,6 +23731,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -21605,12 +23796,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1618818992} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 152 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1618818994 MeshCollider: @@ -21620,9 +23812,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1618818992} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -21637,6 +23837,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -21701,12 +23902,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1619314278} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: -0.238} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 71 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1619314280 MeshCollider: @@ -21716,9 +23918,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1619314278} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -21733,6 +23943,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -21797,12 +24008,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1633292495} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 201 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1633292497 MeshCollider: @@ -21812,9 +24024,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1633292495} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -21829,6 +24049,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -21893,12 +24114,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1659076779} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 91 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1659076781 MeshCollider: @@ -21908,9 +24130,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1659076779} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -21925,6 +24155,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -21989,12 +24220,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1663972043} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 115 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1663972045 MeshCollider: @@ -22004,9 +24236,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1663972043} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -22021,6 +24261,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -22085,12 +24326,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1669016179} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -0.73100007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 95 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1669016181 MeshCollider: @@ -22100,9 +24342,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1669016179} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -22117,6 +24367,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -22181,12 +24432,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1680116252} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.178, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 145 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1680116254 MeshCollider: @@ -22196,9 +24448,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1680116252} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -22213,6 +24473,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -22277,12 +24538,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1687987866} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -1.2150002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 102 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1687987868 MeshCollider: @@ -22292,9 +24554,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1687987866} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -22309,6 +24579,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -22373,12 +24644,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1691410012} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -0.73100007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 31 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1691410014 MeshCollider: @@ -22388,9 +24660,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1691410012} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -22405,6 +24685,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -22469,12 +24750,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1694079735} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -0.23800087} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 22 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1694079737 MeshCollider: @@ -22484,9 +24766,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1694079735} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -22501,6 +24791,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -22565,12 +24856,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1697254605} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 225 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1697254607 MeshCollider: @@ -22580,9 +24872,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1697254605} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -22597,6 +24897,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -22661,12 +24962,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1703907384} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 50 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1703907386 MeshCollider: @@ -22676,9 +24978,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1703907384} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -22693,6 +25003,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -22757,12 +25068,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1711317422} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -3.1950006} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 167 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1711317424 MeshCollider: @@ -22772,9 +25084,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1711317422} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -22789,6 +25109,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -22853,12 +25174,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1722987695} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 248 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1722987697 MeshCollider: @@ -22868,9 +25190,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1722987695} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -22885,6 +25215,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -22949,12 +25280,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1728034270} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -2.7110023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 142 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1728034272 MeshCollider: @@ -22964,9 +25296,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1728034270} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -22981,6 +25321,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -23045,12 +25386,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1730875155} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -1.7079992} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 109 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1730875157 MeshCollider: @@ -23060,9 +25402,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1730875155} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -23077,6 +25427,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -23141,12 +25492,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1732288669} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -0.7310009} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 78 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1732288671 MeshCollider: @@ -23156,9 +25508,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1732288669} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -23173,6 +25533,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -23237,12 +25598,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1740002708} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 59 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1740002710 MeshCollider: @@ -23252,9 +25614,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1740002708} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -23269,6 +25639,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -23333,12 +25704,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1748430817} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -0.9769993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 112 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1748430819 MeshCollider: @@ -23348,9 +25720,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1748430817} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -23365,6 +25745,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -23429,12 +25810,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1769252477} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 233 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1769252479 MeshCollider: @@ -23444,9 +25826,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1769252477} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -23461,6 +25851,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -23525,12 +25916,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1776278816} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 216 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1776278818 MeshCollider: @@ -23540,9 +25932,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1776278816} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -23557,6 +25957,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -23621,12 +26022,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1778934115} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -3.45} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 234 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1778934117 MeshCollider: @@ -23636,9 +26038,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1778934115} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -23653,6 +26063,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -23717,12 +26128,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1783447245} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -3.4500008} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 232 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1783447247 MeshCollider: @@ -23732,9 +26144,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1783447245} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -23749,6 +26169,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -23813,12 +26234,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1788125428} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1788125430 MeshCollider: @@ -23828,9 +26250,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1788125428} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -23845,6 +26275,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -23909,12 +26340,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1790575670} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -0.731} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 13 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1790575672 MeshCollider: @@ -23924,9 +26356,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1790575670} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -23941,6 +26381,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -24005,12 +26446,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1796328354} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -2.7110014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 205 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1796328356 MeshCollider: @@ -24020,9 +26462,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1796328354} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -24037,6 +26487,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -24101,12 +26552,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1812680815} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -3.1950016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 183 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1812680817 MeshCollider: @@ -24116,9 +26568,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1812680815} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -24133,6 +26593,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -24197,12 +26658,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1821753630} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.4059999, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 178 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1821753632 MeshCollider: @@ -24212,9 +26674,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1821753630} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -24229,6 +26699,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -24293,12 +26764,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1838111265} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -2.2180023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 133 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1838111267 MeshCollider: @@ -24308,9 +26780,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1838111265} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -24325,6 +26805,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -24389,12 +26870,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1839669253} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.3, y: 0, z: -0.7310009} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 94 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1839669255 MeshCollider: @@ -24404,9 +26886,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1839669253} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -24421,6 +26911,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -24485,12 +26976,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1852876035} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -3.1950016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 165 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1852876037 MeshCollider: @@ -24500,9 +26992,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1852876035} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -24517,6 +27017,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -24581,12 +27082,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1858019617} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 73 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1858019619 MeshCollider: @@ -24596,9 +27098,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1858019617} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -24613,6 +27123,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -24677,12 +27188,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1859094914} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -3.6880016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 172 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1859094916 MeshCollider: @@ -24692,9 +27204,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1859094914} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -24709,6 +27229,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -24773,12 +27294,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1860346519} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 137 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1860346521 MeshCollider: @@ -24788,9 +27310,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1860346519} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -24805,6 +27335,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -24869,12 +27400,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1870696865} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.588, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 67 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1870696867 MeshCollider: @@ -24884,9 +27416,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1870696865} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -24901,6 +27441,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -24965,12 +27506,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1895837567} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.127, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 65 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1895837569 MeshCollider: @@ -24980,9 +27522,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1895837567} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -24997,6 +27547,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -25061,12 +27612,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1918158911} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 226 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1918158913 MeshCollider: @@ -25076,9 +27628,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1918158911} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -25093,6 +27653,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -25136,6 +27697,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1333567166} m_Modifications: - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, @@ -25249,6 +27811,9 @@ PrefabInstance: value: ConnectionModeButtons objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: d725b5588e1b956458798319e6541d84, type: 3} --- !u!1 &1934616763 GameObject: @@ -25281,8 +27846,9 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: + UseUnreliableDeltas: 0 SyncPositionX: 1 SyncPositionY: 1 SyncPositionZ: 1 @@ -25295,8 +27861,12 @@ MonoBehaviour: PositionThreshold: 0 RotAngleThreshold: 0 ScaleThreshold: 0 + UseQuaternionSynchronization: 0 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 0 InLocalSpace: 0 Interpolate: 1 + SlerpPosition: 0 --- !u!114 &1934616766 MonoBehaviour: m_ObjectHideFlags: 0 @@ -25307,10 +27877,14 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: GlobalObjectIdHash: 3146719950 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!65 &1934616767 @@ -25321,9 +27895,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1934616763} 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 &1934616768 @@ -25337,6 +27919,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -25382,14 +27965,15 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1934616763} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 6.26, y: 1.55, z: 5.87} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 557794668} - {fileID: 491088867} m_Father: {fileID: 0} - m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1949195315 GameObject: @@ -25417,12 +28001,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1949195315} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -1.4699993} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 42 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1949195317 MeshCollider: @@ -25432,9 +28017,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1949195315} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -25449,6 +28042,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -25513,12 +28107,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1952242986} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -0.238} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 87 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1952242988 MeshCollider: @@ -25528,9 +28123,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1952242986} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -25545,6 +28148,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -25609,12 +28213,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1953834566} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -2.7110014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 223 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1953834568 MeshCollider: @@ -25624,9 +28229,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1953834566} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -25641,6 +28254,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -25705,12 +28319,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1958441938} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 72 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1958441940 MeshCollider: @@ -25720,9 +28335,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1958441938} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -25737,6 +28360,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -25801,12 +28425,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1981994848} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -3.6880007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 173 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1981994850 MeshCollider: @@ -25816,9 +28441,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1981994848} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -25833,6 +28466,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -25897,12 +28531,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1985357179} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.69399995, y: 0, z: -2.4730015} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 139 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1985357181 MeshCollider: @@ -25912,9 +28547,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1985357179} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -25929,6 +28572,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -25993,12 +28637,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2019907570} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.355, y: 0, z: -1.7080002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 110 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2019907572 MeshCollider: @@ -26008,9 +28653,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2019907570} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -26025,6 +28678,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -26089,12 +28743,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2024574101} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 128 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2024574103 MeshCollider: @@ -26104,9 +28759,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2024574101} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -26121,6 +28784,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -26185,12 +28849,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2030561000} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -2.2180023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 134 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2030561002 MeshCollider: @@ -26200,9 +28865,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2030561000} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -26217,6 +28890,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -26281,12 +28955,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2036986368} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.94499993, y: 0, z: -2.2180023} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 148 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2036986370 MeshCollider: @@ -26296,9 +28971,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2036986368} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -26313,6 +28996,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -26377,12 +29061,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2049090154} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.533, y: 0, z: -1.215} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 119 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2049090156 MeshCollider: @@ -26392,9 +29077,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2049090154} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -26409,6 +29102,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -26473,12 +29167,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2053103141} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.839, y: 0, z: -1.2150002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 116 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2053103143 MeshCollider: @@ -26488,9 +29183,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2053103141} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -26505,6 +29208,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -26569,12 +29273,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2060061432} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -2.9570007} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 224 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2060061434 MeshCollider: @@ -26584,9 +29289,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2060061432} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -26601,6 +29314,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -26665,12 +29379,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2068975254} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.072, y: 0, z: -3.1950016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 245 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2068975256 MeshCollider: @@ -26680,9 +29395,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2068975254} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -26697,6 +29420,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -26761,12 +29485,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2078151579} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: 0} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2078151581 MeshCollider: @@ -26776,9 +29501,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2078151579} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -26793,6 +29526,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -26857,12 +29591,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2089701612} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -1.7080002} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 46 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2089701614 MeshCollider: @@ -26872,9 +29607,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2089701612} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -26889,6 +29632,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -26953,12 +29697,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2106865350} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.461, y: 0, z: -1.9800014} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 130 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2106865352 MeshCollider: @@ -26968,9 +29713,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2106865350} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -26985,6 +29738,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -27049,12 +29803,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2128892963} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.6389999, y: 0, z: -1.215} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 55 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2128892965 MeshCollider: @@ -27064,9 +29819,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2128892963} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -27081,6 +29844,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -27145,12 +29909,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2129603126} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.233, y: 0, z: -0.49300003} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2129603128 MeshCollider: @@ -27160,9 +29925,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2129603126} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -27177,6 +29950,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -27241,12 +30015,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2133559709} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.894, y: 0, z: -3.6880016} m_LocalScale: {x: 0.018942, y: 0.018942, z: 0.018942} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 727811950} - m_RootOrder: 236 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2133559711 MeshCollider: @@ -27256,9 +30031,17 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2133559709} 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: 4 + serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} @@ -27273,6 +30056,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -27311,3 +30095,21 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2133559709} m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 705507995} + - {fileID: 620561612} + - {fileID: 1333567166} + - {fileID: 849106632} + - {fileID: 693991912} + - {fileID: 678326399} + - {fileID: 346676330} + - {fileID: 727811950} + - {fileID: 674930893} + - {fileID: 240282456} + - {fileID: 1934616770} + - {fileID: 108150031} + - {fileID: 1495712166} + - {fileID: 238880911} diff --git a/testproject/Assets/Tests/Manual/DontDestroyOnLoad/DontDestroyOnLoadTest.unity b/testproject/Assets/Tests/Manual/DontDestroyOnLoad/DontDestroyOnLoadTest.unity index f43e5175ee..7029098377 100644 --- a/testproject/Assets/Tests/Manual/DontDestroyOnLoad/DontDestroyOnLoadTest.unity +++ b/testproject/Assets/Tests/Manual/DontDestroyOnLoad/DontDestroyOnLoadTest.unity @@ -104,7 +104,7 @@ NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -117,7 +117,7 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - accuratePlacement: 0 + buildHeightMesh: 0 maxJobWorkers: 0 preserveTilesOutsideBounds: 0 debug: @@ -128,6 +128,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 4012615692778511849, guid: fe5fd652408224242a6fea8a6f8e6d05, @@ -191,6 +192,9 @@ PrefabInstance: value: SceneLevelGeometry objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: fe5fd652408224242a6fea8a6f8e6d05, type: 3} --- !u!1 &121980477 GameObject: @@ -221,8 +225,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_IgnoreReversedGraphics: 1 m_BlockingObjects: 0 m_BlockingMask: @@ -238,8 +242,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_UiScaleMode: 1 m_ReferencePixelsPerUnit: 100 m_ScaleFactor: 1 @@ -268,7 +272,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 @@ -282,12 +288,12 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1638657613} - {fileID: 555935007} - {fileID: 2009036956} m_Father: {fileID: 0} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -334,9 +340,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 @@ -370,12 +384,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 412073683} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 16.5, z: -59.6} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &555935006 GameObject: @@ -405,9 +420,9 @@ RectTransform: 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: 121980481} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 0} @@ -424,8 +439,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.990566, g: 0.990566, b: 0.990566, a: 1} m_RaycastTarget: 1 @@ -468,7 +483,7 @@ GameObject: m_Component: - component: {fileID: 677472850} - component: {fileID: 677472849} - - component: {fileID: 677472848} + - component: {fileID: 677472851} m_Layer: 0 m_Name: NetworkManager m_TagString: Untagged @@ -476,26 +491,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &677472848 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 677472847} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b84c2d8dfe509a34fb59e2b81f8e1319, type: 3} - m_Name: - m_EditorClassIdentifier: - MessageBufferSize: 5120 - MaxConnections: 100 - MaxSentMessageQueueSize: 128 - ConnectAddress: 127.0.0.1 - ConnectPort: 7777 - ServerListenPort: 7777 - Channels: [] - MessageSendMode: 0 --- !u!114 &677472849 MonoBehaviour: m_ObjectHideFlags: 0 @@ -506,35 +501,21 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3} - m_Name: - m_EditorClassIdentifier: - DontDestroy: 1 - RunInBackground: 1 - LogLevel: 1 + m_Name: + m_EditorClassIdentifier: NetworkConfig: ProtocolVersion: 0 - NetworkTransport: {fileID: 677472848} - RegisteredScenes: - - DontDestroyOnLoadTest - RegisteredSceneAssets: - - {fileID: 102900000, guid: ff98b91da4ee7ff44bc3aa8a57ad5c12, type: 3} - AllowRuntimeSceneChanges: 0 + NetworkTransport: {fileID: 677472851} PlayerPrefab: {fileID: 4079352819444256614, guid: c16f03336b6104576a565ef79ad643c0, type: 3} - NetworkPrefabs: - - Override: 0 - Prefab: {fileID: 7407724687236213415, guid: 34d19b37edcb93543a205fbed288d013, - type: 3} - SourcePrefabToOverride: {fileID: 0} - SourceHashToOverride: 0 - OverridingTargetPrefab: {fileID: 0} + Prefabs: + NetworkPrefabsLists: [] TickRate: 30 ClientConnectionBufferTimeout: 10 ConnectionApproval: 0 - ConnectionData: + ConnectionData: EnableTimeResync: 0 TimeResyncInterval: 30 - EnableNetworkVariable: 1 EnsureNetworkVariableLengthSafety: 0 EnableSceneManagement: 1 ForceSamePrefabs: 1 @@ -544,6 +525,15 @@ MonoBehaviour: LoadSceneTimeOut: 120 SpawnTimeout: 1 EnableNetworkLogs: 1 + OldPrefabList: + - Override: 0 + Prefab: {fileID: 7407724687236213415, guid: 34d19b37edcb93543a205fbed288d013, + type: 3} + SourcePrefabToOverride: {fileID: 0} + SourceHashToOverride: 0 + OverridingTargetPrefab: {fileID: 0} + RunInBackground: 1 + LogLevel: 1 --- !u!4 &677472850 Transform: m_ObjectHideFlags: 0 @@ -551,13 +541,41 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 677472847} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -3.8, y: 2.1317189, 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 &677472851 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 677472847} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6960e84d07fb87f47956e7a81d71c4e6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ProtocolType: 0 + m_MaxPacketQueueSize: 128 + m_MaxPayloadSize: 6144 + m_HeartbeatTimeoutMS: 500 + m_ConnectTimeoutMS: 1000 + m_MaxConnectAttempts: 60 + m_DisconnectTimeoutMS: 30000 + ConnectionData: + Address: 127.0.0.1 + Port: 7777 + ServerListenAddress: 127.0.0.1 + DebugSimulator: + PacketDelayMS: 0 + PacketJitterMS: 0 + PacketDropRate: 0 --- !u!1 &740249724 GameObject: m_ObjectHideFlags: 0 @@ -587,8 +605,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_IgnoreReversedGraphics: 1 m_BlockingObjects: 0 m_BlockingMask: @@ -604,8 +622,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_UiScaleMode: 0 m_ReferencePixelsPerUnit: 100 m_ScaleFactor: 1 @@ -634,7 +652,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 @@ -648,10 +668,10 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 742972845} m_Father: {fileID: 0} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -663,6 +683,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 740249728} m_Modifications: - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, @@ -776,6 +797,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 &742972845 stripped RectTransform: @@ -811,10 +835,14 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: GlobalObjectIdHash: 1431839396 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!114 &1230519282 @@ -827,8 +855,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b3dc8672a04c03b4fa86b0481437d674, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: NetworkPrefabToCreate: {fileID: 7407724687236213415, guid: 34d19b37edcb93543a205fbed288d013, type: 3} --- !u!4 &1230519283 @@ -838,12 +866,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1230519280} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -3.8, y: 2.1317189, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1638657612 GameObject: @@ -870,12 +899,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1638657612} + 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: 121980481} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1638657614 MonoBehaviour: @@ -887,8 +917,9 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 m_HorizontalAxis: Horizontal m_VerticalAxis: Vertical m_SubmitButton: Submit @@ -906,8 +937,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_FirstSelected: {fileID: 0} m_sendNavigationEvents: 1 m_DragThreshold: 10 @@ -997,18 +1028,20 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1720004317} + 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!1001 &2009036955 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 121980481} m_Modifications: - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, @@ -1124,10 +1157,13 @@ PrefabInstance: - target: {fileID: 5266522511616468950, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} propertyPath: m_SceneMenuToLoad - value: + value: objectReference: {fileID: 11400000, guid: 4a3cdce12e998384f8aca207b5a2c700, type: 2} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} --- !u!224 &2009036956 stripped RectTransform: @@ -1135,3 +1171,14 @@ RectTransform: type: 3} m_PrefabInstance: {fileID: 2009036955} m_PrefabAsset: {fileID: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 412073686} + - {fileID: 1720004319} + - {fileID: 677472850} + - {fileID: 1230519283} + - {fileID: 13157010} + - {fileID: 740249728} + - {fileID: 121980481} diff --git a/testproject/Assets/Tests/Manual/NestedNetworkTransforms/AutomatedPlayer-OA.prefab b/testproject/Assets/Tests/Manual/NestedNetworkTransforms/AutomatedPlayer-OA.prefab index 3301087dd5..00ed2f2f48 100644 --- a/testproject/Assets/Tests/Manual/NestedNetworkTransforms/AutomatedPlayer-OA.prefab +++ b/testproject/Assets/Tests/Manual/NestedNetworkTransforms/AutomatedPlayer-OA.prefab @@ -26,13 +26,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 772585991204072682} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 4, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 296612175404815447} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &6327137497379236391 MeshRenderer: @@ -96,6 +96,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 0d8ad30fca3f9a240bdce16f0166033b, type: 3} m_Name: m_EditorClassIdentifier: + UseUnreliableDeltas: 0 SyncPositionX: 1 SyncPositionY: 1 SyncPositionZ: 1 @@ -105,23 +106,27 @@ MonoBehaviour: SyncScaleX: 1 SyncScaleY: 1 SyncScaleZ: 1 - SlerpPosition: 1 - UseQuaternionSynchronization: 1 - UseQuaternionCompression: 1 - UseHalfFloatPrecision: 1 PositionThreshold: 0.001 RotAngleThreshold: 0.01 ScaleThreshold: 0.01 + UseQuaternionSynchronization: 1 + UseQuaternionCompression: 1 + UseHalfFloatPrecision: 1 InLocalSpace: 1 Interpolate: 1 + SlerpPosition: 1 + IsServerAuthority: 1 DebugTransform: 0 - IsServerAuthoritative: 0 LastUpdatedPosition: {x: 0, y: 0, z: 0} LastUpdatedScale: {x: 0, y: 0, z: 0} LastUpdatedRotation: {x: 0, y: 0, z: 0, w: 0} + PushedPosition: {x: 0, y: 0, z: 0} + PushedScale: {x: 0, y: 0, z: 0} + PushedRotation: {x: 0, y: 0, z: 0, w: 0} PreviousUpdatedPosition: {x: 0, y: 0, z: 0} PreviousUpdatedScale: {x: 0, y: 0, z: 0} PreviousUpdatedRotation: {x: 0, y: 0, z: 0, w: 0} + m_StatesToLog: 80 RotationSpeed: 7.4 RotateBasedOnDirection: 0 --- !u!1 &2771624607751045562 @@ -147,6 +152,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2771624607751045562} + 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} @@ -154,7 +160,6 @@ Transform: m_Children: - {fileID: 4974009855568796650} m_Father: {fileID: 296612175404815447} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &4147667212972069939 GameObject: @@ -180,13 +185,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4147667212972069939} + serializedVersion: 2 m_LocalRotation: {x: 0.17364816, y: -0, z: -0, w: 0.9848078} m_LocalPosition: {x: 0, y: 8, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 296612175404815447} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 20, y: 0, z: 0} --- !u!20 &8372809022110481992 Camera: @@ -202,9 +207,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 @@ -257,13 +270,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6292214655028195304} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -4, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5485086383386216104} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &3062926429781172158 MeshRenderer: @@ -327,6 +340,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 0d8ad30fca3f9a240bdce16f0166033b, type: 3} m_Name: m_EditorClassIdentifier: + UseUnreliableDeltas: 0 SyncPositionX: 1 SyncPositionY: 1 SyncPositionZ: 1 @@ -336,23 +350,27 @@ MonoBehaviour: SyncScaleX: 1 SyncScaleY: 1 SyncScaleZ: 1 - SlerpPosition: 1 - UseQuaternionSynchronization: 1 - UseQuaternionCompression: 1 - UseHalfFloatPrecision: 1 PositionThreshold: 0.001 RotAngleThreshold: 0.01 ScaleThreshold: 0.01 + UseQuaternionSynchronization: 1 + UseQuaternionCompression: 1 + UseHalfFloatPrecision: 1 InLocalSpace: 1 Interpolate: 1 + SlerpPosition: 1 + IsServerAuthority: 1 DebugTransform: 0 - IsServerAuthoritative: 0 LastUpdatedPosition: {x: 0, y: 0, z: 0} LastUpdatedScale: {x: 0, y: 0, z: 0} LastUpdatedRotation: {x: 0, y: 0, z: 0, w: 0} + PushedPosition: {x: 0, y: 0, z: 0} + PushedScale: {x: 0, y: 0, z: 0} + PushedRotation: {x: 0, y: 0, z: 0, w: 0} PreviousUpdatedPosition: {x: 0, y: 0, z: 0} PreviousUpdatedScale: {x: 0, y: 0, z: 0} PreviousUpdatedRotation: {x: 0, y: 0, z: 0, w: 0} + m_StatesToLog: 80 RotationSpeed: 7.4 RotateBasedOnDirection: 0 --- !u!1001 &8977898853425847701 @@ -360,6 +378,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: -745482209883575862, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, @@ -369,7 +388,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 947981134, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, type: 3} propertyPath: GlobalObjectIdHash - value: 951099334 + value: 503295152 objectReference: {fileID: 0} - target: {fileID: 3809075828520557319, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, type: 3} @@ -469,6 +488,33 @@ PrefabInstance: - {fileID: 8685790303553767877, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, type: 3} - {fileID: -745482209883575862, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, type: 3} - {fileID: 3809075828520557319, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 8685790303553767874, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, + type: 3} + insertIndex: -1 + addedObject: {fileID: 1522619104359096714} + - targetCorrespondingSourceObject: {fileID: 8685790303553767874, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, + type: 3} + insertIndex: -1 + addedObject: {fileID: 5485086383386216104} + - targetCorrespondingSourceObject: {fileID: 8685790303553767874, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, + type: 3} + insertIndex: -1 + addedObject: {fileID: 7199215624742357828} + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 8685790303553767886, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, + type: 3} + insertIndex: -1 + addedObject: {fileID: 4389916208190318681} + - targetCorrespondingSourceObject: {fileID: 8685790303553767886, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, + type: 3} + insertIndex: -1 + addedObject: {fileID: 5376990732947334198} + - targetCorrespondingSourceObject: {fileID: 8685790303553767886, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, + type: 3} + insertIndex: -1 + addedObject: {fileID: 7431853297519116304} m_SourcePrefab: {fileID: 100100000, guid: 96e0a72e30d0c46c8a5c9a750e8f5807, type: 3} --- !u!4 &296612175404815447 stripped Transform: @@ -511,6 +557,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: dfb1af1a9249278438d2daa2877ee2ad, type: 3} m_Name: m_EditorClassIdentifier: + UseUnreliableDeltas: 1 SyncPositionX: 1 SyncPositionY: 1 SyncPositionZ: 1 @@ -520,23 +567,27 @@ MonoBehaviour: SyncScaleX: 1 SyncScaleY: 1 SyncScaleZ: 1 - SlerpPosition: 0 - UseQuaternionSynchronization: 1 - UseQuaternionCompression: 0 - UseHalfFloatPrecision: 1 PositionThreshold: 0.001 RotAngleThreshold: 0.001 ScaleThreshold: 0.001 + UseQuaternionSynchronization: 1 + UseQuaternionCompression: 0 + UseHalfFloatPrecision: 1 InLocalSpace: 0 Interpolate: 1 + SlerpPosition: 0 + IsServerAuthority: 1 DebugTransform: 0 - IsServerAuthoritative: 0 LastUpdatedPosition: {x: 0, y: 0, z: 0} LastUpdatedScale: {x: 0, y: 0, z: 0} LastUpdatedRotation: {x: 0, y: 0, z: 0, w: 0} + PushedPosition: {x: 0, y: 0, z: 0} + PushedScale: {x: 0, y: 0, z: 0} + PushedRotation: {x: 0, y: 0, z: 0, w: 0} PreviousUpdatedPosition: {x: 0, y: 0, z: 0} PreviousUpdatedScale: {x: 0, y: 0, z: 0} PreviousUpdatedRotation: {x: 0, y: 0, z: 0, w: 0} + m_StatesToLog: 80 --- !u!114 &7431853297519116304 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/testproject/Assets/Tests/Manual/NestedNetworkTransforms/NestedNetworkTransforms.unity b/testproject/Assets/Tests/Manual/NestedNetworkTransforms/NestedNetworkTransforms.unity index 47dcbb3c7f..6d4767503c 100644 --- a/testproject/Assets/Tests/Manual/NestedNetworkTransforms/NestedNetworkTransforms.unity +++ b/testproject/Assets/Tests/Manual/NestedNetworkTransforms/NestedNetworkTransforms.unity @@ -98,13 +98,13 @@ LightmapSettings: m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 0} + m_LightingSettings: {fileID: 2094904536} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -117,7 +117,7 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - accuratePlacement: 0 + buildHeightMesh: 0 maxJobWorkers: 0 preserveTilesOutsideBounds: 0 debug: @@ -148,13 +148,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 252123320} + serializedVersion: 2 m_LocalRotation: {x: 0.13052616, y: 0, z: 0, w: 0.9914449} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1986938866} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0} --- !u!102 &252123322 TextMesh: @@ -243,6 +243,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 502835659} + serializedVersion: 2 m_LocalRotation: {x: 0.2164396, y: -0, z: -0, w: 0.97629607} m_LocalPosition: {x: 50, y: 0.5, z: -50} m_LocalScale: {x: 1, y: 1, z: 1} @@ -250,7 +251,6 @@ Transform: m_Children: - {fileID: 2138384395} m_Father: {fileID: 1538614986} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 25, y: 0, z: 0} --- !u!1 &551024640 GameObject: @@ -277,13 +277,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 551024640} + serializedVersion: 2 m_LocalRotation: {x: 0.13052616, y: 0, z: 0, w: 0.9914449} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1344554987} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0} --- !u!102 &551024642 TextMesh: @@ -389,9 +389,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 @@ -425,13 +433,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 635877837} + serializedVersion: 2 m_LocalRotation: {x: 0.60876137, y: 0, z: 0, w: 0.7933534} m_LocalPosition: {x: 0, y: 99.7, z: -34.9} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 75, y: 0, z: 0} --- !u!1 &691147452 GameObject: @@ -519,19 +527,20 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 691147452} + 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!1001 &759287026 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1107190083} m_Modifications: - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, @@ -645,6 +654,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 &759287027 stripped RectTransform: @@ -677,13 +689,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 786098501} + serializedVersion: 2 m_LocalRotation: {x: 0.13052616, y: 0, z: 0, w: 0.9914449} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2025433889} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0} --- !u!102 &786098503 TextMesh: @@ -825,7 +837,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 @@ -846,7 +860,6 @@ RectTransform: - {fileID: 759287027} - {fileID: 1622867933} 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} @@ -878,13 +891,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1127945245} + serializedVersion: 2 m_LocalRotation: {x: 0.13052616, y: 0, z: 0, w: 0.9914449} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1546903652} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0} --- !u!102 &1127945247 TextMesh: @@ -983,7 +996,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1107190083} - 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} @@ -1005,6 +1017,9 @@ MonoBehaviour: GlobalObjectIdHash: 1789729126 AlwaysReplicateAsRoot: 0 SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 0 --- !u!114 &1136626024 @@ -1067,6 +1082,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1107190083} m_Modifications: - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, @@ -1201,6 +1217,9 @@ PrefabInstance: objectReference: {fileID: 11400000, guid: 4a3cdce12e998384f8aca207b5a2c700, type: 2} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} --- !u!224 &1200545880 stripped RectTransform: @@ -1231,6 +1250,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1344554986} + serializedVersion: 2 m_LocalRotation: {x: 0.2164396, y: -0, z: -0, w: 0.97629607} m_LocalPosition: {x: -50, y: 0.5, z: -50} m_LocalScale: {x: 1, y: 1, z: 1} @@ -1238,7 +1258,6 @@ Transform: m_Children: - {fileID: 551024641} m_Father: {fileID: 1538614986} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 25, y: 0, z: 0} --- !u!1 &1538614984 GameObject: @@ -1282,6 +1301,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1538614984} + 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} @@ -1293,7 +1313,6 @@ Transform: - {fileID: 1344554987} - {fileID: 502835660} m_Father: {fileID: 0} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1546903651 GameObject: @@ -1318,6 +1337,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1546903651} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -50, y: 0.5, z: 50} m_LocalScale: {x: 1, y: 1, z: 1} @@ -1325,7 +1345,6 @@ Transform: m_Children: - {fileID: 1127945246} m_Father: {fileID: 1538614986} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1622867932 GameObject: @@ -1352,13 +1371,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1622867932} + 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: 1107190083} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1622867934 MonoBehaviour: @@ -1425,8 +1444,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3} m_Name: m_EditorClassIdentifier: - RunInBackground: 1 - LogLevel: 0 NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 1909864231} @@ -1450,6 +1467,8 @@ MonoBehaviour: SpawnTimeout: 1 EnableNetworkLogs: 1 OldPrefabList: [] + RunInBackground: 1 + LogLevel: 0 --- !u!4 &1909864230 Transform: m_ObjectHideFlags: 0 @@ -1457,13 +1476,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1909864228} + 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 &1909864231 MonoBehaviour: @@ -1487,7 +1506,7 @@ MonoBehaviour: ConnectionData: Address: 127.0.0.1 Port: 7777 - ServerListenAddress: + ServerListenAddress: 127.0.0.1 DebugSimulator: PacketDelayMS: 0 PacketJitterMS: 0 @@ -1515,6 +1534,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1986938865} + 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} @@ -1522,7 +1542,6 @@ Transform: m_Children: - {fileID: 252123321} m_Father: {fileID: 1538614986} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &2025433888 GameObject: @@ -1547,6 +1566,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2025433888} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 50, y: 0.5, z: 50} m_LocalScale: {x: 1, y: 1, z: 1} @@ -1554,8 +1574,71 @@ Transform: m_Children: - {fileID: 786098502} m_Father: {fileID: 1538614986} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!850595691 &2094904536 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 6 + m_GIWorkflowMode: 1 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + 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 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 1 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 + m_NumRaysToShootPerTexel: -1 + m_RespectSceneVisibilityWhenBakingGI: 0 --- !u!1 &2138384394 GameObject: m_ObjectHideFlags: 0 @@ -1581,13 +1664,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2138384394} + serializedVersion: 2 m_LocalRotation: {x: 0.13052616, y: 0, z: 0, w: 0.9914449} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 502835660} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0} --- !u!102 &2138384396 TextMesh: @@ -1694,13 +1777,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1854705292174238179} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0.3771283, z: -0, w: -0.92616105} m_LocalPosition: {x: -29.53, y: 0.98, z: -29.71} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4012615691346636487} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: -315.688, z: 0} --- !u!65 &3136259739935766482 BoxCollider: @@ -1710,9 +1793,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4674276233642512322} 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: 4, y: 2, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!65 &3739510625882408872 @@ -1723,9 +1814,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 910007656043186113} 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: 4, y: 2, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!4 &3910294716476965321 @@ -1735,13 +1834,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4674276233642512322} + serializedVersion: 2 m_LocalRotation: {x: 0, y: -0.38268343, z: 0, w: 0.92387956} m_LocalPosition: {x: 29.7, y: 0.98, z: -29.61} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4012615691346636487} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: -45, z: 0} --- !u!1 &4012615690812095564 GameObject: @@ -1769,13 +1868,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4012615690812095564} + 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: 4012615691346636487} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &4012615690812095601 MeshFilter: @@ -1835,9 +1934,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4012615690812095564} 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: 2} m_Center: {x: 0, y: 0, z: -0.5} --- !u!33 &4012615690985622676 @@ -1898,9 +2005,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4012615690985622679} 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: 2} m_Center: {x: 0, y: 0, z: 0.5} --- !u!1 &4012615690985622679 @@ -1929,13 +2044,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4012615690985622679} + 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: 4012615691346636487} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &4012615691333763184 GameObject: @@ -1963,13 +2078,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4012615691333763184} + 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: 4012615691346636487} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &4012615691333763189 MeshFilter: @@ -2029,9 +2144,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4012615691333763184} 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: 2, y: 1, z: 1} m_Center: {x: 0.5, y: 0, z: 0} --- !u!1 &4012615691346636480 @@ -2057,6 +2180,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4012615691346636480} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 2, y: 1, z: 2} @@ -2072,7 +2196,6 @@ Transform: - {fileID: 2290144461718287054} - {fileID: 6959258898915729271} m_Father: {fileID: 0} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &4012615692486624836 BoxCollider: @@ -2082,9 +2205,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4012615692486624837} 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: 2, y: 1, z: 1} m_Center: {x: -0.5, y: 0, z: 0} --- !u!1 &4012615692486624837 @@ -2113,13 +2244,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4012615692486624837} + 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: 4012615691346636487} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &4012615692486624842 MeshFilter: @@ -2221,9 +2352,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4012615692803562070} 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!1 &4012615692803562070 @@ -2252,13 +2391,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4012615692803562070} + 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: 4012615691346636487} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &4012615692803562075 MeshFilter: @@ -2276,9 +2415,17 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1854705292174238179} 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: 4, y: 2, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!1 &4674276233642512322 @@ -2305,13 +2452,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 910007656043186113} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0.9244967, z: -0, w: -0.38119} m_LocalPosition: {x: -29.72, y: 0.98, z: 29.82} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4012615691346636487} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: -224.815, z: 0} --- !u!4 &6959258898915729271 Transform: @@ -2320,13 +2467,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7080625902254019649} + serializedVersion: 2 m_LocalRotation: {x: -0, y: 0.93588465, z: -0, w: -0.35230666} m_LocalPosition: {x: 29.26, y: 0.98, z: 29.45} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4012615691346636487} - m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: -498.74298, z: 0} --- !u!1 &7080625902254019649 GameObject: @@ -2353,8 +2500,26 @@ BoxCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7080625902254019649} 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: 4, y: 2, z: 1} m_Center: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 635877840} + - {fileID: 691147454} + - {fileID: 1909864230} + - {fileID: 1107190083} + - {fileID: 4012615691346636487} + - {fileID: 1538614986} diff --git a/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingFrom.unity b/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingFrom.unity index d5b62b3d82..40ba210992 100644 --- a/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingFrom.unity +++ b/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingFrom.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641275, b: 0.5748172, a: 1} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -104,7 +104,7 @@ NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -117,7 +117,7 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - accuratePlacement: 0 + buildHeightMesh: 0 maxJobWorkers: 0 preserveTilesOutsideBounds: 0 debug: @@ -151,9 +151,9 @@ RectTransform: 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: 1651523611} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -170,8 +170,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} m_RaycastTarget: 1 @@ -242,9 +242,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 @@ -278,12 +286,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 382176158} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &553804184 GameObject: @@ -313,8 +322,9 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 m_HorizontalAxis: Horizontal m_VerticalAxis: Vertical m_SubmitButton: Submit @@ -332,8 +342,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_FirstSelected: {fileID: 0} m_sendNavigationEvents: 1 m_DragThreshold: 10 @@ -344,12 +354,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 553804184} + 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: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &746470207 GameObject: @@ -361,7 +372,7 @@ GameObject: m_Component: - component: {fileID: 746470210} - component: {fileID: 746470209} - - component: {fileID: 746470208} + - component: {fileID: 746470211} m_Layer: 0 m_Name: '[NetworkManager]' m_TagString: Untagged @@ -369,31 +380,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &746470208 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 746470207} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b84c2d8dfe509a34fb59e2b81f8e1319, type: 3} - m_Name: - m_EditorClassIdentifier: - MessageBufferSize: 65535 - MaxConnections: 100 - MaxSentMessageQueueSize: 512 - ConnectAddress: 127.0.0.1 - ConnectPort: 7777 - ServerListenPort: 7777 - ServerWebsocketListenPort: 8887 - SupportWebsocket: 0 - Channels: [] - UseNetcodeRelay: 0 - NetcodeRelayAddress: 127.0.0.1 - NetcodeRelayPort: 8888 - MessageSendMode: 0 --- !u!114 &746470209 MonoBehaviour: m_ObjectHideFlags: 0 @@ -404,28 +390,21 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3} - m_Name: - m_EditorClassIdentifier: - DontDestroy: 1 - RunInBackground: 1 - LogLevel: 1 + m_Name: + m_EditorClassIdentifier: NetworkConfig: ProtocolVersion: 0 - NetworkTransport: {fileID: 746470208} - RegisteredScenes: - - SceneWeAreSwitchingFrom - - SceneWeAreSwitchingTo - AllowRuntimeSceneChanges: 1 + NetworkTransport: {fileID: 746470211} PlayerPrefab: {fileID: 4700706668509470175, guid: 7eeaaf9e50c0afc4dab93584a54fb0d6, type: 3} - NetworkPrefabs: [] + Prefabs: + NetworkPrefabsLists: [] TickRate: 30 ClientConnectionBufferTimeout: 10 ConnectionApproval: 0 - ConnectionData: + ConnectionData: EnableTimeResync: 0 TimeResyncInterval: 30 - EnableNetworkVariable: 1 EnsureNetworkVariableLengthSafety: 0 EnableSceneManagement: 1 ForceSamePrefabs: 1 @@ -435,6 +414,9 @@ MonoBehaviour: LoadSceneTimeOut: 120 SpawnTimeout: 1 EnableNetworkLogs: 1 + OldPrefabList: [] + RunInBackground: 1 + LogLevel: 1 --- !u!4 &746470210 Transform: m_ObjectHideFlags: 0 @@ -442,13 +424,41 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 746470207} + 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 &746470211 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 746470207} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6960e84d07fb87f47956e7a81d71c4e6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ProtocolType: 0 + m_MaxPacketQueueSize: 128 + m_MaxPayloadSize: 6144 + m_HeartbeatTimeoutMS: 500 + m_ConnectTimeoutMS: 1000 + m_MaxConnectAttempts: 60 + m_DisconnectTimeoutMS: 30000 + ConnectionData: + Address: 127.0.0.1 + Port: 7777 + ServerListenAddress: 127.0.0.1 + DebugSimulator: + PacketDelayMS: 0 + PacketJitterMS: 0 + PacketDropRate: 0 --- !u!1 &1071752859 GameObject: m_ObjectHideFlags: 0 @@ -478,8 +488,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_IgnoreReversedGraphics: 1 m_BlockingObjects: 0 m_BlockingMask: @@ -495,8 +505,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_UiScaleMode: 0 m_ReferencePixelsPerUnit: 100 m_ScaleFactor: 1 @@ -525,7 +535,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 @@ -539,10 +551,10 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1651523611} m_Father: {fileID: 0} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -577,10 +589,14 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: GlobalObjectIdHash: 4103035044 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!114 &1146788460 @@ -593,8 +609,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f7cbaa25ecc57a2468dfb25c155cae9b, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: --- !u!4 &1146788461 Transform: m_ObjectHideFlags: 0 @@ -602,12 +618,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1146788458} + 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: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1514228240 GameObject: @@ -695,12 +712,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1514228240} + 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!1 &1651523610 GameObject: @@ -731,10 +749,10 @@ RectTransform: 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: - {fileID: 358097799} m_Father: {fileID: 1071752863} - 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} @@ -751,8 +769,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 @@ -794,7 +812,7 @@ MonoBehaviour: m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine m_IntArgument: 0 m_FloatArgument: 0 - m_StringArgument: + m_StringArgument: m_BoolArgument: 0 m_CallState: 2 --- !u!114 &1651523613 @@ -807,8 +825,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -835,3 +853,13 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1651523610} m_CullTransparentMesh: 1 +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 382176161} + - {fileID: 1514228242} + - {fileID: 746470210} + - {fileID: 553804187} + - {fileID: 1146788461} + - {fileID: 1071752863} diff --git a/testproject/Assets/Tests/Manual/PreserveNetworkObjectsOnShutdown/PreserveNetworkObjects.unity b/testproject/Assets/Tests/Manual/PreserveNetworkObjectsOnShutdown/PreserveNetworkObjects.unity index 492373aec3..6870f5b732 100644 --- a/testproject/Assets/Tests/Manual/PreserveNetworkObjectsOnShutdown/PreserveNetworkObjects.unity +++ b/testproject/Assets/Tests/Manual/PreserveNetworkObjectsOnShutdown/PreserveNetworkObjects.unity @@ -104,7 +104,7 @@ NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -117,7 +117,7 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - accuratePlacement: 0 + buildHeightMesh: 0 maxJobWorkers: 0 preserveTilesOutsideBounds: 0 debug: @@ -150,10 +150,10 @@ RectTransform: 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: - {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} @@ -170,12 +170,13 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 244f0414ea8419b41ac51adb305d64b0, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_SwitchSceneButtonObject: {fileID: 1347823141} m_SceneToSwitchTo: SceneTransitioningBase2 m_EnableAutoSwitch: 0 m_AutoSwitchTimeOut: 60 + DisconnectClientUponLoadScene: 0 --- !u!1 &37242881 GameObject: m_ObjectHideFlags: 0 @@ -262,12 +263,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: @@ -302,9 +304,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 @@ -364,12 +374,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 &167044830 GameObject: @@ -400,8 +411,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_IgnoreReversedGraphics: 1 m_BlockingObjects: 0 m_BlockingMask: @@ -417,8 +428,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_UiScaleMode: 0 m_ReferencePixelsPerUnit: 100 m_ScaleFactor: 1 @@ -447,7 +458,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 @@ -461,10 +474,10 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 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} @@ -500,8 +513,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_IgnoreReversedGraphics: 1 m_BlockingObjects: 0 m_BlockingMask: @@ -517,8 +530,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_UiScaleMode: 1 m_ReferencePixelsPerUnit: 100 m_ScaleFactor: 1 @@ -547,7 +560,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 @@ -561,6 +576,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1588117328} - {fileID: 34066665} @@ -570,7 +586,6 @@ RectTransform: - {fileID: 2058276876} - {fileID: 1383741138} 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} @@ -604,9 +619,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 @@ -666,12 +689,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 &562991978 GameObject: @@ -701,9 +725,9 @@ RectTransform: 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: 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} @@ -720,8 +744,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.9811321, g: 0.9811321, b: 0.9811321, a: 1} m_RaycastTarget: 1 @@ -792,9 +816,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 @@ -828,12 +860,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: @@ -863,9 +896,9 @@ RectTransform: 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: 1588117328} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -882,8 +915,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 0.5058824, b: 0.003921569, a: 1} m_RaycastTarget: 1 @@ -920,8 +953,8 @@ LightingSettings: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: - serializedVersion: 3 + m_Name: + serializedVersion: 6 m_GIWorkflowMode: 1 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 0 @@ -934,7 +967,7 @@ LightingSettings: m_LightmapMaxSize: 1024 m_BakeResolution: 40 m_Padding: 2 - m_TextureCompression: 1 + m_LightmapCompression: 3 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 @@ -960,8 +993,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 @@ -975,11 +1008,15 @@ LightingSettings: m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 + m_NumRaysToShootPerTexel: -1 + m_RespectSceneVisibilityWhenBakingGI: 0 --- !u!1001 &992809122 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 290861172} m_Modifications: - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, @@ -1100,7 +1137,7 @@ PrefabInstance: - target: {fileID: 2848221156307247793, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: + value: objectReference: {fileID: 1113539279} - target: {fileID: 2848221156307247793, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} @@ -1135,7 +1172,7 @@ PrefabInstance: - target: {fileID: 2848221157716786269, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} propertyPath: m_FontData.m_Font - value: + value: objectReference: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - target: {fileID: 2848221157716786269, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} @@ -1170,10 +1207,13 @@ PrefabInstance: - target: {fileID: 5266522511616468950, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} propertyPath: m_SceneMenuToLoad - value: + value: objectReference: {fileID: 11400000, guid: 4a3cdce12e998384f8aca207b5a2c700, type: 2} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} --- !u!224 &992809123 stripped RectTransform: @@ -1190,10 +1230,10 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1024114720} - - component: {fileID: 1024114719} - component: {fileID: 1024114718} - component: {fileID: 1024114721} - component: {fileID: 1024114722} + - component: {fileID: 1024114723} m_Layer: 0 m_Name: NetworkManager m_TagString: Untagged @@ -1211,17 +1251,31 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3} - m_Name: - m_EditorClassIdentifier: - DontDestroy: 1 - RunInBackground: 1 - LogLevel: 1 + m_Name: + m_EditorClassIdentifier: NetworkConfig: ProtocolVersion: 0 - NetworkTransport: {fileID: 1024114719} + NetworkTransport: {fileID: 1024114723} PlayerPrefab: {fileID: 4079352819444256614, guid: c16f03336b6104576a565ef79ad643c0, type: 3} - NetworkPrefabs: + Prefabs: + NetworkPrefabsLists: [] + TickRate: 30 + ClientConnectionBufferTimeout: 10 + ConnectionApproval: 0 + ConnectionData: + EnableTimeResync: 0 + TimeResyncInterval: 30 + EnsureNetworkVariableLengthSafety: 0 + EnableSceneManagement: 1 + ForceSamePrefabs: 1 + RecycleNetworkIds: 0 + NetworkIdRecycleDelay: 120 + RpcHashSize: 0 + LoadSceneTimeOut: 120 + SpawnTimeout: 1 + EnableNetworkLogs: 1 + OldPrefabList: - Override: 0 Prefab: {fileID: 771575417923360811, guid: c0a45bdb516f341498d933b7a7ed4fc1, type: 3} @@ -1272,41 +1326,8 @@ MonoBehaviour: SourcePrefabToOverride: {fileID: 0} SourceHashToOverride: 0 OverridingTargetPrefab: {fileID: 0} - TickRate: 30 - ClientConnectionBufferTimeout: 10 - ConnectionApproval: 0 - ConnectionData: - EnableTimeResync: 0 - TimeResyncInterval: 30 - EnableNetworkVariable: 1 - EnsureNetworkVariableLengthSafety: 0 - EnableSceneManagement: 1 - ForceSamePrefabs: 1 - RecycleNetworkIds: 0 - NetworkIdRecycleDelay: 120 - RpcHashSize: 0 - LoadSceneTimeOut: 120 - SpawnTimeout: 1 - EnableNetworkLogs: 1 ---- !u!114 &1024114719 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1024114717} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b84c2d8dfe509a34fb59e2b81f8e1319, type: 3} - m_Name: - m_EditorClassIdentifier: - MessageBufferSize: 65535 - MaxConnections: 100 - MaxSentMessageQueueSize: 512 - ConnectAddress: 127.0.0.1 - ConnectPort: 7777 - ServerListenPort: 7777 - MessageSendMode: 0 + RunInBackground: 1 + LogLevel: 1 --- !u!4 &1024114720 Transform: m_ObjectHideFlags: 0 @@ -1314,12 +1335,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.000061035156, y: 0.000015258789, 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: @@ -1331,8 +1353,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 0e6f8504d891fc44881b2d9703017d03, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: --- !u!114 &1024114722 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1343,10 +1365,37 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 71c52a32bd1c1c84691050b6d045ab4a, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: LogToConsole: 1 TimeToLive: 10 +--- !u!114 &1024114723 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1024114717} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6960e84d07fb87f47956e7a81d71c4e6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ProtocolType: 0 + m_MaxPacketQueueSize: 128 + m_MaxPayloadSize: 6144 + m_HeartbeatTimeoutMS: 500 + m_ConnectTimeoutMS: 1000 + m_MaxConnectAttempts: 60 + m_DisconnectTimeoutMS: 30000 + ConnectionData: + Address: 127.0.0.1 + Port: 7777 + ServerListenAddress: 127.0.0.1 + DebugSimulator: + PacketDelayMS: 0 + PacketJitterMS: 0 + PacketDropRate: 0 --- !u!1 &1113539278 GameObject: m_ObjectHideFlags: 0 @@ -1375,14 +1424,19 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 8c48ea35c67e64f7fac22a3f6831ca88, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: AutoSpawnEnable: 1 InitialSpawnDelay: 0.2 SpawnsPerSecond: 1 PoolSize: 32 ObjectSpeed: 8 DontDestroy: 1 + LabelEnabled: 1 + MaximumSpawnCount: 1000 + HalfFloat: {fileID: 0} + QuatSynch: {fileID: 0} + QuatComp: {fileID: 0} EnableHandler: 1 RegisterUsingNetworkObject: 0 ServerObjectToPool: {fileID: 771575417923360811, guid: c0a45bdb516f341498d933b7a7ed4fc1, @@ -1398,12 +1452,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: @@ -1415,10 +1470,14 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: GlobalObjectIdHash: 3714040803 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!1 &1332123091 @@ -1444,9 +1503,11 @@ 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} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 336568649} - {fileID: 2028091272} @@ -1454,7 +1515,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: @@ -1483,9 +1543,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 @@ -1545,12 +1613,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 &1347823141 GameObject: @@ -1581,10 +1650,10 @@ RectTransform: 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: - {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} @@ -1601,8 +1670,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 @@ -1644,7 +1713,7 @@ MonoBehaviour: m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine m_IntArgument: 0 m_FloatArgument: 0 - m_StringArgument: + m_StringArgument: m_BoolArgument: 0 m_CallState: 2 --- !u!114 &1347823144 @@ -1657,8 +1726,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.1981132, g: 0.1981132, b: 0.1981132, a: 1} m_RaycastTarget: 1 @@ -1713,9 +1782,9 @@ RectTransform: 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: 290861172} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 0} @@ -1732,8 +1801,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.990566, g: 0.990566, b: 0.990566, a: 1} m_RaycastTarget: 1 @@ -1790,10 +1859,10 @@ RectTransform: 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: - {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} @@ -1828,9 +1897,9 @@ RectTransform: 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: 1387688805} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1847,8 +1916,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -1903,9 +1972,9 @@ RectTransform: 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: 1889006547} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1922,8 +1991,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -1979,10 +2048,10 @@ RectTransform: 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: - {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} @@ -1999,8 +2068,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 @@ -2042,7 +2111,7 @@ MonoBehaviour: m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine m_IntArgument: 0 m_FloatArgument: 0 - m_StringArgument: + m_StringArgument: m_BoolArgument: 0 m_CallState: 2 --- !u!114 &1588117330 @@ -2055,8 +2124,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.1981132, g: 0.1981132, b: 0.1981132, a: 1} m_RaycastTarget: 1 @@ -2111,8 +2180,9 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 m_HorizontalAxis: Horizontal m_VerticalAxis: Vertical m_SubmitButton: Submit @@ -2130,8 +2200,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_FirstSelected: {fileID: 0} m_sendNavigationEvents: 1 m_DragThreshold: 10 @@ -2142,12 +2212,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: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1846334314 GameObject: @@ -2177,9 +2248,9 @@ RectTransform: 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: 1347823142} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2196,8 +2267,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 0.5058824, b: 0.003921569, a: 1} m_RaycastTarget: 1 @@ -2255,9 +2326,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 @@ -2317,18 +2396,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, @@ -2442,6 +2523,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: @@ -2475,10 +2559,10 @@ RectTransform: 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: - {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} @@ -2513,9 +2597,9 @@ RectTransform: 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: 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} @@ -2532,8 +2616,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 @@ -2587,9 +2671,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 @@ -2649,12 +2741,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: @@ -2683,13 +2776,13 @@ RectTransform: 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: - {fileID: 2021718439} - {fileID: 1889006547} - {fileID: 1387688805} - {fileID: 562991979} m_Father: {fileID: 290861172} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 1} m_AnchorMax: {x: 0.5, y: 1} @@ -2706,8 +2799,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 @@ -2756,7 +2849,7 @@ MonoBehaviour: m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine m_IntArgument: 0 m_FloatArgument: 0 - m_StringArgument: + m_StringArgument: m_BoolArgument: 0 m_CallState: 2 --- !u!1 &2107482020 @@ -2784,12 +2877,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: @@ -2801,11 +2895,10 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: cb5f3e55f5dd247129d8a4979b80ebbb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_ClientServerToggle: {fileID: 1588117327} m_TrackSceneEvents: 1 - m_LogSceneEventsToConsole: 1 --- !u!114 &2107482023 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2816,10 +2909,14 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: GlobalObjectIdHash: 767017127 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!1001 &2848221156282925290 @@ -2827,6 +2924,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 290861172} m_Modifications: - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, @@ -2947,7 +3045,7 @@ PrefabInstance: - target: {fileID: 2848221156307247793, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target - value: + value: objectReference: {fileID: 1113539279} - target: {fileID: 2848221156307247793, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} @@ -2987,7 +3085,7 @@ PrefabInstance: - target: {fileID: 2848221157716786269, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} propertyPath: m_FontData.m_Font - value: + value: objectReference: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - target: {fileID: 2848221157716786269, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} @@ -3022,8 +3120,23 @@ PrefabInstance: - target: {fileID: 5266522511616468950, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} propertyPath: m_SceneMenuToLoad - value: + value: objectReference: {fileID: 11400000, guid: 4a3cdce12e998384f8aca207b5a2c700, 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} diff --git a/testproject/Assets/Tests/Manual/RpcTesting/RpcTesting.unity b/testproject/Assets/Tests/Manual/RpcTesting/RpcTesting.unity index f7ec8099d1..4df018e21b 100644 --- a/testproject/Assets/Tests/Manual/RpcTesting/RpcTesting.unity +++ b/testproject/Assets/Tests/Manual/RpcTesting/RpcTesting.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641275, b: 0.5748172, a: 1} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -104,7 +104,7 @@ NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -117,7 +117,7 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - accuratePlacement: 0 + buildHeightMesh: 0 maxJobWorkers: 0 preserveTilesOutsideBounds: 0 debug: @@ -151,8 +151,9 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 m_HorizontalAxis: Horizontal m_VerticalAxis: Vertical m_SubmitButton: Submit @@ -170,8 +171,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_FirstSelected: {fileID: 0} m_sendNavigationEvents: 1 m_DragThreshold: 10 @@ -182,12 +183,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 255727965} + 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: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &521221616 GameObject: @@ -217,9 +219,9 @@ RectTransform: 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: 1207168972} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -236,8 +238,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.990566, g: 0.5664483, b: 0.023362402, a: 1} m_RaycastTarget: 1 @@ -292,9 +294,9 @@ RectTransform: 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: 964909095} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -311,8 +313,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 0.5058824, b: 0.003921569, a: 1} m_RaycastTarget: 1 @@ -383,9 +385,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 @@ -419,12 +429,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 811084163} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &964909094 GameObject: @@ -456,10 +467,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.78858, y: 0.78858, z: 0.78858} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 723757197} m_Father: {fileID: 1207168972} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 1} @@ -476,8 +487,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fa32b4a74f166fd44bd2cf187de1c5d8, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_SceneMenuToLoad: {fileID: 11400000, guid: 4a3cdce12e998384f8aca207b5a2c700, type: 2} --- !u!114 &964909097 MonoBehaviour: @@ -489,8 +500,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Navigation: m_Mode: 3 m_WrapAround: 0 @@ -532,7 +543,7 @@ MonoBehaviour: m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine m_IntArgument: 0 m_FloatArgument: 0 - m_StringArgument: + m_StringArgument: m_BoolArgument: 0 m_CallState: 2 --- !u!114 &964909098 @@ -545,8 +556,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.2, g: 0.2, b: 0.2, a: 1} m_RaycastTarget: 1 @@ -578,12 +589,13 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1207168972} m_Modifications: - target: {fileID: 2956145122089128464, guid: d725b5588e1b956458798319e6541d84, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: + value: objectReference: {fileID: 1207168974} - target: {fileID: 2956145122089128464, guid: d725b5588e1b956458798319e6541d84, type: 3} @@ -598,7 +610,7 @@ PrefabInstance: - target: {fileID: 2956145122546206394, guid: d725b5588e1b956458798319e6541d84, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: + value: objectReference: {fileID: 1207168974} - target: {fileID: 2956145122546206394, guid: d725b5588e1b956458798319e6541d84, type: 3} @@ -613,7 +625,7 @@ PrefabInstance: - target: {fileID: 2956145122624039697, guid: d725b5588e1b956458798319e6541d84, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: + value: objectReference: {fileID: 1207168974} - target: {fileID: 2956145122624039697, guid: d725b5588e1b956458798319e6541d84, type: 3} @@ -736,6 +748,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 &1041651792 stripped RectTransform: @@ -774,8 +789,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_IgnoreReversedGraphics: 1 m_BlockingObjects: 0 m_BlockingMask: @@ -791,8 +806,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_UiScaleMode: 0 m_ReferencePixelsPerUnit: 100 m_ScaleFactor: 1 @@ -821,7 +836,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 @@ -835,13 +852,13 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 964909095} - {fileID: 1859881228} - {fileID: 521221617} - {fileID: 1041651792} 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} @@ -858,10 +875,14 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: GlobalObjectIdHash: 1844309308 AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 --- !u!114 &1207168974 @@ -874,8 +895,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 47f41f8e19d061b49866be44887f53ee, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_RunInTestMode: 1 m_IterationsToRun: 5 m_CounterTextObject: {fileID: 1859881229} @@ -968,12 +989,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1544159781} + 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!1 &1574548684 GameObject: @@ -985,7 +1007,7 @@ GameObject: m_Component: - component: {fileID: 1574548687} - component: {fileID: 1574548686} - - component: {fileID: 1574548685} + - component: {fileID: 1574548688} m_Layer: 0 m_Name: '[NetworkManager]' m_TagString: Untagged @@ -993,31 +1015,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &1574548685 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1574548684} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b84c2d8dfe509a34fb59e2b81f8e1319, type: 3} - m_Name: - m_EditorClassIdentifier: - MessageBufferSize: 65535 - MaxConnections: 100 - MaxSentMessageQueueSize: 512 - ConnectAddress: 127.0.0.1 - ConnectPort: 7777 - ServerListenPort: 7777 - ServerWebsocketListenPort: 8887 - SupportWebsocket: 0 - Channels: [] - UseNetcodeRelay: 0 - NetcodeRelayAddress: 127.0.0.1 - NetcodeRelayPort: 8888 - MessageSendMode: 0 --- !u!114 &1574548686 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1028,27 +1025,21 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3} - m_Name: - m_EditorClassIdentifier: - DontDestroy: 1 - RunInBackground: 1 - LogLevel: 1 + m_Name: + m_EditorClassIdentifier: NetworkConfig: ProtocolVersion: 0 - NetworkTransport: {fileID: 1574548685} - RegisteredScenes: - - RpcTesting - AllowRuntimeSceneChanges: 0 + NetworkTransport: {fileID: 1574548688} PlayerPrefab: {fileID: 4700706668509470175, guid: 7eeaaf9e50c0afc4dab93584a54fb0d6, type: 3} - NetworkPrefabs: [] + Prefabs: + NetworkPrefabsLists: [] TickRate: 30 ClientConnectionBufferTimeout: 10 ConnectionApproval: 0 - ConnectionData: + ConnectionData: EnableTimeResync: 0 TimeResyncInterval: 30 - EnableNetworkVariable: 1 EnsureNetworkVariableLengthSafety: 0 EnableSceneManagement: 1 ForceSamePrefabs: 1 @@ -1058,6 +1049,9 @@ MonoBehaviour: LoadSceneTimeOut: 120 SpawnTimeout: 1 EnableNetworkLogs: 1 + OldPrefabList: [] + RunInBackground: 1 + LogLevel: 1 --- !u!4 &1574548687 Transform: m_ObjectHideFlags: 0 @@ -1065,13 +1059,41 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1574548684} + 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 &1574548688 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1574548684} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6960e84d07fb87f47956e7a81d71c4e6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ProtocolType: 0 + m_MaxPacketQueueSize: 128 + m_MaxPayloadSize: 6144 + m_HeartbeatTimeoutMS: 500 + m_ConnectTimeoutMS: 1000 + m_MaxConnectAttempts: 60 + m_DisconnectTimeoutMS: 30000 + ConnectionData: + Address: 127.0.0.1 + Port: 7777 + ServerListenAddress: 127.0.0.1 + DebugSimulator: + PacketDelayMS: 0 + PacketJitterMS: 0 + PacketDropRate: 0 --- !u!1 &1705962118 stripped GameObject: m_CorrespondingSourceObject: {fileID: 6963777608485144162, guid: d725b5588e1b956458798319e6541d84, @@ -1106,9 +1128,9 @@ RectTransform: 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: 1207168972} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} @@ -1125,8 +1147,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: + m_Name: + m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 0.50495994, b: 0.0047169924, a: 1} m_RaycastTarget: 1 @@ -1157,3 +1179,12 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1859881227} m_CullTransparentMesh: 0 +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 811084166} + - {fileID: 1544159783} + - {fileID: 1574548687} + - {fileID: 1207168972} + - {fileID: 255727968} diff --git a/testproject/Assets/Tests/Runtime/NetworkTransform/NestedNetworkTransformTests.cs b/testproject/Assets/Tests/Runtime/NetworkTransform/NestedNetworkTransformTests.cs index 53b5cf5b19..77d8403d57 100644 --- a/testproject/Assets/Tests/Runtime/NetworkTransform/NestedNetworkTransformTests.cs +++ b/testproject/Assets/Tests/Runtime/NetworkTransform/NestedNetworkTransformTests.cs @@ -183,7 +183,7 @@ protected override float GetDeltaVarianceThreshold() private string GetVector3Values(ref Vector3 vector3) { - return $"({vector3.x.ToString("G6")},{vector3.y.ToString("G6")},{vector3.z.ToString("G6")})"; + return $"({vector3.x:F6},{vector3.y:F6},{vector3.z:F6})"; } /// @@ -229,9 +229,11 @@ private bool ValidateNetworkTransforms() } } - if (!Approximately(playerNetworkTransforms[i].PushedScale, relativeClonedTransforms[i].transform.localScale)) + if (!Approximately(playerNetworkTransforms[i].transform.localScale, relativeClonedTransforms[i].transform.localScale)) { - m_ValidationErrors.Append($"[Scale][Client-{connectedClient} {playerNetworkTransforms[i].transform.localScale}][Failing on Client-{playerRelative.Key} for Clone-{relativeClonedTransforms[i].OwnerClientId} {relativeClonedTransforms[i].transform.localScale}]\n"); + var playerScale = playerNetworkTransforms[i].transform.localScale; + var relativeScale = relativeClonedTransforms[i].transform.localScale; + m_ValidationErrors.Append($"[Scale][Client-{connectedClient} {GetVector3Values(ref playerScale)}][Failing on Client-{playerRelative.Key} for Clone-{relativeClonedTransforms[i].OwnerClientId} {GetVector3Values(ref relativeScale)}]\n"); } // TODO: Determine why MAC OS X on 2020.3 has precision issues when interpolating using full precision but no other platform does nor does MAC OS X on later versions of Unity. @@ -263,7 +265,7 @@ private bool ValidateNetworkTransforms() var eulerPlayer = playerCurrentRotation.eulerAngles; var eulerClone = cloneRotation.eulerAngles; - m_ValidationErrors.Append($"[Rotation][Client-{connectedClient} ({eulerPlayer.x}, {eulerPlayer.y}, {eulerPlayer.z})][Failing on Client-{playerRelative.Key} for Clone-{relativeClonedTransforms[i].OwnerClientId}-{cloneGameObjectName} ({eulerClone.x}, {eulerClone.y}, {eulerClone.z})]\n"); + m_ValidationErrors.Append($"[Rotation][Client-{connectedClient} ({GetVector3Values(ref eulerPlayer)})][Failing on Client-{playerRelative.Key} for Clone-{relativeClonedTransforms[i].OwnerClientId}-{cloneGameObjectName} ({GetVector3Values(ref eulerClone)})]\n"); m_ValidationErrors.Append($"[Rotation Delta] ({deltaEuler.x}, {deltaEuler.y}, {deltaEuler.z})\n"); } } @@ -302,7 +304,7 @@ public void NestedNetworkTransformSynchronization() m_ValidationErrors = new StringBuilder(); var pauseFrames = CalculateTimeOutFrames(1f); - var synchTimeOut = CalculateTimeOutFrames(m_Interpolation == Interpolation.Interpolation ? 4 : 2); + var synchTimeOut = CalculateTimeOutFrames(m_Interpolation == Interpolation.Interpolation ? k_DefaultTickRate * 3 : k_DefaultTickRate * 2); m_ServerNetworkManager.SceneManager.VerifySceneBeforeLoading = VerifySceneServer; From 7dfb09359b90e2f9316e35304ca4cc9cc55864a5 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Fri, 1 Dec 2023 16:33:04 -0600 Subject: [PATCH 14/24] update Making explicitly set states persist the exact state at the time it was set in order to assure no additional transform modifications are updated implicitly. --- .../Components/NetworkTransform.cs | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index 8cf729cf30..eecc362f04 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -161,6 +161,9 @@ internal uint BitSet // Used when tracking by state ID is enabled internal int StateId; + // When explicitly settings (i.e. SetState) this will be set; + internal bool ExplicitSet; + // Used during serialization private FastBufferReader m_Reader; private FastBufferWriter m_Writer; @@ -1541,10 +1544,16 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz } // If the transform has deltas (returns dirty) or we are applying a deferred state update then... - if (ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToCommit, synchronize)) + if (m_LocalAuthoritativeNetworkState.ExplicitSet || ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToCommit, synchronize)) { m_LocalAuthoritativeNetworkState.LastSerializedSize = m_OldState.LastSerializedSize; + // If the state was explicitly set, then update the network tick + if (m_LocalAuthoritativeNetworkState.ExplicitSet) + { + m_LocalAuthoritativeNetworkState.NetworkTick = m_CachedNetworkManager.NetworkTickSystem.ServerTime.Tick; + } + // Send the state update UpdateTransformState(); @@ -1555,6 +1564,9 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz // We could set this again in the below OnAuthorityPushTransformState virtual method m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame = false; + // Clear out the explicit flag after having sent this state update (in the event it was set) + m_LocalAuthoritativeNetworkState.ExplicitSet = false; + // Notify of the pushed state update OnAuthorityPushTransformState(ref m_LocalAuthoritativeNetworkState); @@ -2675,7 +2687,7 @@ private void AxisChangedDeltaPositionCheck() internal void OnUpdateAuthoritativeState(ref Transform transformSource) { // If our replicated state is not dirty and our local authority state is dirty, clear it. - if (m_LocalAuthoritativeNetworkState.IsDirty && !m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame) + if (!m_LocalAuthoritativeNetworkState.ExplicitSet && m_LocalAuthoritativeNetworkState.IsDirty && !m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame) { // Now clear our bitset and prepare for next network tick state update m_LocalAuthoritativeNetworkState.ClearBitSetForNextTick(); @@ -2981,6 +2993,10 @@ private void SetStateInternal(Vector3 pos, Quaternion rot, Vector3 scale, bool s } transform.localScale = scale; m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame = shouldTeleport; + + var transformToRef = transform; + // Apply the state as it is currently to the next update. If there was an adjustment/change then it will set the ExplicitSet flag + m_LocalAuthoritativeNetworkState.ExplicitSet = ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToRef); } /// From 2880118fb4f0d4eda4626cf41826e0d3bbcbba8e Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Fri, 1 Dec 2023 16:45:30 -0600 Subject: [PATCH 15/24] style renaming to match the previous var name. --- com.unity.netcode.gameobjects/Components/NetworkTransform.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index eecc362f04..8dac42398d 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -2994,9 +2994,9 @@ private void SetStateInternal(Vector3 pos, Quaternion rot, Vector3 scale, bool s transform.localScale = scale; m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame = shouldTeleport; - var transformToRef = transform; + var transformToCommit = transform; // Apply the state as it is currently to the next update. If there was an adjustment/change then it will set the ExplicitSet flag - m_LocalAuthoritativeNetworkState.ExplicitSet = ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToRef); + m_LocalAuthoritativeNetworkState.ExplicitSet = ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToCommit); } /// From cbc7632600c951ccd6a898cae4926da3387131e5 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Fri, 1 Dec 2023 18:24:39 -0600 Subject: [PATCH 16/24] test fix Removing some additions that were not needed for the TestRotationThresholdDeltaCheck --- .../Runtime/NetworkTransform/NetworkTransformGeneral.cs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs index dd61e81750..5aae855bf6 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs @@ -76,7 +76,6 @@ public void TestRotationThresholdDeltaCheck([Values] Interpolation interpolation authorityRotation.eulerAngles = authorityEulerRotation; m_AuthoritativeTransform.transform.rotation = authorityRotation; results = m_AuthoritativeTransform.ApplyState(); - WaitForNextTick(); Assert.IsFalse(results.isRotationDirty, $"Rotation is dirty when rotation threshold is {m_AuthoritativeTransform.RotAngleThreshold} degrees and only adjusted by {halfThreshold} degrees!"); WaitForNextTick(); @@ -85,8 +84,6 @@ public void TestRotationThresholdDeltaCheck([Values] Interpolation interpolation authorityRotation.eulerAngles = authorityEulerRotation; m_AuthoritativeTransform.transform.rotation = authorityRotation; results = m_AuthoritativeTransform.ApplyState(); - - WaitForNextTick(); Assert.IsTrue(results.isRotationDirty, $"Rotation was not dirty when rotated by the threshold value: {m_AuthoritativeTransform.RotAngleThreshold} degrees!"); WaitForNextTick(); @@ -100,7 +97,6 @@ public void TestRotationThresholdDeltaCheck([Values] Interpolation interpolation authorityRotation.eulerAngles = authorityEulerRotation; m_AuthoritativeTransform.transform.rotation = authorityRotation; results = m_AuthoritativeTransform.ApplyState(); - WaitForNextTick(); Assert.IsFalse(results.isRotationDirty, $"Rotation is dirty when rotation threshold is {m_AuthoritativeTransform.RotAngleThreshold} degrees and only adjusted by " + $"{Mathf.DeltaAngle(0, authorityEulerRotation.y)} degrees!"); @@ -108,7 +104,6 @@ public void TestRotationThresholdDeltaCheck([Values] Interpolation interpolation authorityRotation.eulerAngles = authorityEulerRotation; m_AuthoritativeTransform.transform.rotation = authorityRotation; results = m_AuthoritativeTransform.ApplyState(); - WaitForNextTick(); Assert.IsTrue(results.isRotationDirty, $"Rotation was not dirty when rotated by {Mathf.DeltaAngle(0, authorityEulerRotation.y)} degrees!"); //Reset rotation back to zero on all axis @@ -120,7 +115,6 @@ public void TestRotationThresholdDeltaCheck([Values] Interpolation interpolation authorityRotation.eulerAngles = authorityEulerRotation; m_AuthoritativeTransform.transform.rotation = authorityRotation; results = m_AuthoritativeTransform.ApplyState(); - WaitForNextTick(); Assert.IsFalse(results.isRotationDirty, $"Rotation is dirty when rotation threshold is {m_AuthoritativeTransform.RotAngleThreshold} degrees and only adjusted by " + $"{Mathf.DeltaAngle(0, authorityEulerRotation.y)} degrees!"); @@ -128,7 +122,6 @@ public void TestRotationThresholdDeltaCheck([Values] Interpolation interpolation authorityRotation.eulerAngles = authorityEulerRotation; m_AuthoritativeTransform.transform.rotation = authorityRotation; results = m_AuthoritativeTransform.ApplyState(); - WaitForNextTick(); Assert.IsTrue(results.isRotationDirty, $"Rotation was not dirty when rotated by {Mathf.DeltaAngle(0, authorityEulerRotation.y)} degrees!"); } From 666b7bc45b50cc2c44b78c5c615420af74121eb5 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Sat, 2 Dec 2023 12:55:02 -0600 Subject: [PATCH 17/24] test fix and update Fixing some issues with the TestRotationThresholdDeltaCheck test. Updated NetcodeIntegrationTest to provide a generic test relative TimeTravelAdvanceTick to assure all tests are operating at their set frame rate and tick values. Added TestMultipleExplicitSetStates test to validate explicitly setting state multiple times within the same fractional tick period will be preserved and propogate out on the next upcoming tick. --- .../Components/NetworkTransform.cs | 22 ++- .../Runtime/NetcodeIntegrationTest.cs | 37 ++++- .../NetworkTransform/NetworkTransformBase.cs | 35 +---- .../NetworkTransformGeneral.cs | 127 ++++++++++++++++-- .../NetworkTransform/NetworkTransformTests.cs | 20 ++- 5 files changed, 190 insertions(+), 51 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index 8dac42398d..99567fec66 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -2995,8 +2995,26 @@ private void SetStateInternal(Vector3 pos, Quaternion rot, Vector3 scale, bool s m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame = shouldTeleport; var transformToCommit = transform; - // Apply the state as it is currently to the next update. If there was an adjustment/change then it will set the ExplicitSet flag - m_LocalAuthoritativeNetworkState.ExplicitSet = ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToCommit); + + // Explicit set states are additive during the same fractional tick period of time (i.e. each SetState invocation will + // update the axial deltas to whatever changes are applied). As such, we need to preserve the dirty flag. + var stateWasDirty = m_LocalAuthoritativeNetworkState.IsDirty; + + // Preserve the explicit state in case it was already set. + var explicitState = m_LocalAuthoritativeNetworkState.ExplicitSet; + + // Apply any delta states to the m_LocalAuthoritativeNetworkState + var isDirty = ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToCommit); + + // If we were dirty and the explicit state was set (prior to checking for deltas) or the current explicit state is dirty, + // then we set the explicit state flag. + m_LocalAuthoritativeNetworkState.ExplicitSet = (stateWasDirty & explicitState) | isDirty; + + // If the current explicit set flag is set, then we are dirty. This assures if more than one explicit set state is invoked + // in between a fractional tick period and the current explicit set state did not find any deltas that we preserve any + // previous dirty state. + m_LocalAuthoritativeNetworkState.IsDirty = m_LocalAuthoritativeNetworkState.ExplicitSet; + } /// diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs index b30d935ecd..34835f77b5 100644 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs +++ b/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs @@ -313,6 +313,8 @@ public IEnumerator SetUp() } else { + // Setup the frames per tick for time travel to next tick + ConfigureFramesPerTick(); OnInlineSetup(); } @@ -1544,8 +1546,42 @@ protected static void TimeTravel(double amountOfTimeInSeconds, int numFramesToSi } } + protected virtual uint GetTickRate() + { + return k_DefaultTickRate; + } + + protected virtual int GetFrameRate() + { + return Application.targetFrameRate == 0 ? 60 : Application.targetFrameRate; + } + + private int m_FramesPerTick = 0; + private float m_TickFrequency = 0; + + /// + /// Recalculates the and that is + /// used in . + /// + protected void ConfigureFramesPerTick() + { + m_TickFrequency = 1.0f / GetTickRate(); + m_FramesPerTick = Math.Max((int)(m_TickFrequency / GetFrameRate()), 1); + } + /// /// Helper function to time travel exactly one tick's worth of time at the current frame and tick rates. + /// This is NetcodeIntegrationTest instance relative and will automatically adjust based on + /// and . + /// + protected void TimeTravelAdvanceTick() + { + TimeTravel(m_TickFrequency, m_FramesPerTick); + } + + /// + /// Helper function to time travel exactly one tick's worth of time at the current frame and tick rates. + /// ** Is based on the global k_DefaultTickRate and is not local to each NetcodeIntegrationTest instance ** /// public static void TimeTravelToNextTick() { @@ -1555,7 +1591,6 @@ public static void TimeTravelToNextTick() { frameRate = 60; } - var frames = Math.Max((int)(timePassed / frameRate), 1); TimeTravel(timePassed, frames); } diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs index dff714d8bc..736d40268b 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformBase.cs @@ -11,7 +11,7 @@ namespace Unity.Netcode.RuntimeTests { public class NetworkTransformBase : IntegrationTestWithApproximation { - protected const int k_TickRate = 60; + // The number of iterations to change position, rotation, and scale for NetworkTransformMultipleChangesOverTime protected const int k_PositionRotationScaleIterations = 3; protected const int k_PositionRotationScaleIterations3Axis = 8; @@ -138,11 +138,6 @@ protected virtual int OnNumberOfClients() return 1; } - protected virtual uint GetTestTickRate() - { - return k_DefaultTickRate; - } - /// /// Determines whether the test will use unreliable delivery for implicit state updates or not /// @@ -170,6 +165,7 @@ protected virtual void Teardown() protected override void OnInlineSetup() { Setup(); + base.OnInlineSetup(); } /// @@ -178,6 +174,7 @@ protected override void OnInlineSetup() protected override void OnInlineTearDown() { Teardown(); + base.OnInlineTearDown(); } /// @@ -275,10 +272,10 @@ protected override void OnServerAndClientsCreated() } } - m_ServerNetworkManager.NetworkConfig.TickRate = k_TickRate; + m_ServerNetworkManager.NetworkConfig.TickRate = GetTickRate(); foreach (var clientNetworkManager in m_ClientNetworkManagers) { - clientNetworkManager.NetworkConfig.TickRate = k_TickRate; + clientNetworkManager.NetworkConfig.TickRate = GetTickRate(); } } @@ -322,7 +319,7 @@ protected override void OnTimeTravelServerAndClientsConnected() Assert.True(m_AuthoritativeTransform.CanCommitToTransform); Assert.False(m_NonAuthoritativeTransform.CanCommitToTransform); // Just wait for at least one tick for NetworkTransforms to finish synchronization - WaitForNextTick(); + TimeTravelAdvanceTick(); } /// @@ -343,7 +340,7 @@ protected override IEnumerator OnServerAndClientsConnected() protected override void OnNewClientCreated(NetworkManager networkManager) { networkManager.NetworkConfig.Prefabs = m_ServerNetworkManager.NetworkConfig.Prefabs; - networkManager.NetworkConfig.TickRate = k_TickRate; + networkManager.NetworkConfig.TickRate = GetTickRate(); if (m_EnableVerboseDebug) { networkManager.LogLevel = LogLevel.Developer; @@ -729,24 +726,6 @@ private void PrintPositionRotationScaleDeltas() PositionsMatch(true); ScaleValuesMatch(true); } - - /// - /// Waits until the next tick - /// - protected void WaitForNextTick() - { - var currentTick = m_AuthoritativeTransform.NetworkManager.LocalTime.Tick; - while (m_AuthoritativeTransform.NetworkManager.LocalTime.Tick == currentTick) - { - var frameRate = Application.targetFrameRate; - if (frameRate <= 0) - { - frameRate = 60; - } - var frameDuration = 1f / frameRate; - TimeTravel(frameDuration, 1); - } - } } /// diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs index 5aae855bf6..17475b1713 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformGeneral.cs @@ -29,8 +29,8 @@ public void VerifyNonAuthorityCantChangeTransform([Values] Interpolation interpo m_NonAuthoritativeTransform.transform.position = new Vector3(4, 5, 6); - WaitForNextTick(); - WaitForNextTick(); + TimeTravelAdvanceTick(); + TimeTravelAdvanceTick(); Assert.AreEqual(Vector3.zero, m_NonAuthoritativeTransform.transform.position, "[Position] NonAuthority was able to change the position!"); @@ -41,14 +41,14 @@ public void VerifyNonAuthorityCantChangeTransform([Values] Interpolation interpo nonAuthorityEulerRotation.y += 20.0f; nonAuthorityRotation.eulerAngles = nonAuthorityEulerRotation; m_NonAuthoritativeTransform.transform.rotation = nonAuthorityRotation; - WaitForNextTick(); + TimeTravelAdvanceTick(); var nonAuthorityCurrentEuler = m_NonAuthoritativeTransform.transform.rotation.eulerAngles; Assert.True(originalNonAuthorityEulerRotation.Equals(nonAuthorityCurrentEuler), "[Rotation] NonAuthority was able to change the rotation!"); var nonAuthorityScale = m_NonAuthoritativeTransform.transform.localScale; m_NonAuthoritativeTransform.transform.localScale = nonAuthorityScale * 100; - WaitForNextTick(); + TimeTravelAdvanceTick(); Assert.True(nonAuthorityScale.Equals(m_NonAuthoritativeTransform.transform.localScale), "[Scale] NonAuthority was able to change the scale!"); } @@ -63,13 +63,16 @@ public void TestRotationThresholdDeltaCheck([Values] Interpolation interpolation m_AuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; m_NonAuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; m_NonAuthoritativeTransform.RotAngleThreshold = m_AuthoritativeTransform.RotAngleThreshold = 5.0f; - var halfThreshold = m_AuthoritativeTransform.RotAngleThreshold * 0.5001f; - var authorityRotation = m_AuthoritativeTransform.transform.rotation; - var authorityEulerRotation = authorityRotation.eulerAngles; - // Apply the current state which assures all bitset flags are updated + // Apply the current state prior to getting reference rotations which assures we have + // applied the most current rotation deltas and that all bitset flags are updated var results = m_AuthoritativeTransform.ApplyState(); + TimeTravelAdvanceTick(); + + // Get the current rotation values; + var authorityRotation = m_AuthoritativeTransform.transform.rotation; + var authorityEulerRotation = authorityRotation.eulerAngles; // Verify rotation is not marked dirty when rotated by half of the threshold authorityEulerRotation.y += halfThreshold; @@ -77,7 +80,9 @@ public void TestRotationThresholdDeltaCheck([Values] Interpolation interpolation m_AuthoritativeTransform.transform.rotation = authorityRotation; results = m_AuthoritativeTransform.ApplyState(); Assert.IsFalse(results.isRotationDirty, $"Rotation is dirty when rotation threshold is {m_AuthoritativeTransform.RotAngleThreshold} degrees and only adjusted by {halfThreshold} degrees!"); - WaitForNextTick(); + // Now allow the delta state to be processed and sent (just allow for two ticks to cover edge cases with time travel and the testing environment) + TimeTravelAdvanceTick(); + TimeTravelAdvanceTick(); // Verify rotation is marked dirty when rotated by another half threshold value authorityEulerRotation.y += halfThreshold; @@ -85,12 +90,16 @@ public void TestRotationThresholdDeltaCheck([Values] Interpolation interpolation m_AuthoritativeTransform.transform.rotation = authorityRotation; results = m_AuthoritativeTransform.ApplyState(); Assert.IsTrue(results.isRotationDirty, $"Rotation was not dirty when rotated by the threshold value: {m_AuthoritativeTransform.RotAngleThreshold} degrees!"); - WaitForNextTick(); + // Now allow the delta state to be processed and sent (just allow for two ticks to cover edge cases with time travel and the testing environment) + TimeTravelAdvanceTick(); + TimeTravelAdvanceTick(); //Reset rotation back to zero on all axis authorityRotation.eulerAngles = authorityEulerRotation = Vector3.zero; m_AuthoritativeTransform.transform.rotation = authorityRotation; - WaitForNextTick(); + // Now allow the delta state to be processed and sent (just allow for two ticks to cover edge cases with time travel and the testing environment) + TimeTravelAdvanceTick(); + TimeTravelAdvanceTick(); // Rotate by 360 minus halfThreshold (which is really just negative halfThreshold) and verify rotation is not marked dirty authorityEulerRotation.y = 360 - halfThreshold; @@ -99,7 +108,11 @@ public void TestRotationThresholdDeltaCheck([Values] Interpolation interpolation results = m_AuthoritativeTransform.ApplyState(); Assert.IsFalse(results.isRotationDirty, $"Rotation is dirty when rotation threshold is {m_AuthoritativeTransform.RotAngleThreshold} degrees and only adjusted by " + $"{Mathf.DeltaAngle(0, authorityEulerRotation.y)} degrees!"); + // Now allow the delta state to be processed and sent (just allow for two ticks to cover edge cases with time travel and the testing environment) + TimeTravelAdvanceTick(); + TimeTravelAdvanceTick(); + // Now apply one more minor decrement that should trigger a dirty flag authorityEulerRotation.y -= halfThreshold; authorityRotation.eulerAngles = authorityEulerRotation; m_AuthoritativeTransform.transform.rotation = authorityRotation; @@ -109,15 +122,22 @@ public void TestRotationThresholdDeltaCheck([Values] Interpolation interpolation //Reset rotation back to zero on all axis authorityRotation.eulerAngles = authorityEulerRotation = Vector3.zero; m_AuthoritativeTransform.transform.rotation = authorityRotation; - WaitForNextTick(); + // Now allow the delta state to be processed and sent (just allow for two ticks to cover edge cases with time travel and the testing environment) + TimeTravelAdvanceTick(); + TimeTravelAdvanceTick(); + // Minor decrement again under the threshold value authorityEulerRotation.y -= halfThreshold; authorityRotation.eulerAngles = authorityEulerRotation; m_AuthoritativeTransform.transform.rotation = authorityRotation; results = m_AuthoritativeTransform.ApplyState(); Assert.IsFalse(results.isRotationDirty, $"Rotation is dirty when rotation threshold is {m_AuthoritativeTransform.RotAngleThreshold} degrees and only adjusted by " + $"{Mathf.DeltaAngle(0, authorityEulerRotation.y)} degrees!"); + // Now allow the delta state to be processed and sent (just allow for two ticks to cover edge cases with time travel and the testing environment) + TimeTravelAdvanceTick(); + TimeTravelAdvanceTick(); + // Now decrement another half threshold which should trigger the dirty flag authorityEulerRotation.y -= halfThreshold; authorityRotation.eulerAngles = authorityEulerRotation; m_AuthoritativeTransform.transform.rotation = authorityRotation; @@ -147,13 +167,94 @@ public void TestBitsetValue([Values] Interpolation interpolation) m_AuthoritativeTransform.Interpolate = interpolation == Interpolation.EnableInterpolate; m_NonAuthoritativeTransform.RotAngleThreshold = m_AuthoritativeTransform.RotAngleThreshold = 0.1f; m_AuthoritativeTransform.transform.rotation = Quaternion.Euler(1, 2, 3); - WaitForNextTick(); + TimeTravelAdvanceTick(); var success = WaitForConditionOrTimeOutWithTimeTravel(ValidateBitSetValues); Assert.True(success, $"Timed out waiting for Authoritative Bitset state to equal NonAuthoritative replicated Bitset state!"); success = WaitForConditionOrTimeOutWithTimeTravel(() => RotationsMatch()); Assert.True(success, $"[Timed-Out] Authoritative rotation {m_AuthoritativeTransform.transform.rotation.eulerAngles} != Non-Authoritative rotation {m_NonAuthoritativeTransform.transform.rotation.eulerAngles}"); } + /// + /// This validates that you can perform multiple explicit calls + /// within the same fractional tick period without the loss of the states applied. + /// + [Test] + public void TestMultipleExplicitSetStates([Values] Interpolation interpolation) + { + var interpolate = interpolation == Interpolation.EnableInterpolate; + m_AuthoritativeTransform.Interpolate = interpolate; + var updatedPosition = GetRandomVector3(-5.0f, 5.0f); + m_AuthoritativeTransform.SetState(updatedPosition, null, null, !interpolate); + // Advance to next frame + TimeTravel(0.001f, 1); + + updatedPosition += GetRandomVector3(-5.0f, 5.0f); + m_AuthoritativeTransform.SetState(updatedPosition, null, null, !interpolate); + TimeTravelAdvanceTick(); + + var success = WaitForConditionOrTimeOutWithTimeTravel(() => PositionsMatch()); + Assert.True(success, $"[Timed-Out] Authoritative position {m_AuthoritativeTransform.transform.position} != Non-Authoritative position {m_NonAuthoritativeTransform.transform.position}"); + Assert.True(Approximately(updatedPosition, m_NonAuthoritativeTransform.transform.position), $"NonAuthority position {m_NonAuthoritativeTransform.transform.position} does not equal the calculated position {updatedPosition}!"); + + var updatedRotation = m_AuthoritativeTransform.transform.rotation; + updatedRotation.eulerAngles += GetRandomVector3(-30.0f, 30.0f); + m_AuthoritativeTransform.SetState(null, updatedRotation, null, !interpolate); + // Advance to next frame + TimeTravel(0.001f, 1); + + updatedRotation.eulerAngles += GetRandomVector3(-30.0f, 30.0f); + m_AuthoritativeTransform.SetState(null, updatedRotation, null, !interpolate); + TimeTravelAdvanceTick(); + + success = WaitForConditionOrTimeOutWithTimeTravel(() => RotationsMatch()); + Assert.True(success, $"[Timed-Out] Authoritative rotation {m_AuthoritativeTransform.transform.rotation.eulerAngles} != Non-Authoritative rotation {m_NonAuthoritativeTransform.transform.rotation.eulerAngles}"); + Assert.True(Approximately(updatedRotation.eulerAngles, m_NonAuthoritativeTransform.transform.rotation.eulerAngles), $"NonAuthority rotation {m_NonAuthoritativeTransform.transform.rotation.eulerAngles} does not equal the calculated rotation {updatedRotation.eulerAngles}!"); + + var updatedScale = m_AuthoritativeTransform.transform.localScale; + updatedScale += GetRandomVector3(-2.0f, 2.0f); + m_AuthoritativeTransform.SetState(null, null, updatedScale, !interpolate); + // Advance to next frame + TimeTravel(0.001f, 1); + + updatedScale += GetRandomVector3(-2.0f, 2.0f); + m_AuthoritativeTransform.SetState(null, null, updatedScale, !interpolate); + TimeTravelAdvanceTick(); + + success = WaitForConditionOrTimeOutWithTimeTravel(() => ScaleValuesMatch()); + Assert.True(success, $"[Timed-Out] Authoritative rotation {m_AuthoritativeTransform.transform.localScale} != Non-Authoritative rotation {m_NonAuthoritativeTransform.transform.localScale}"); + Assert.True(Approximately(updatedScale, m_NonAuthoritativeTransform.transform.localScale), $"NonAuthority scale {m_NonAuthoritativeTransform.transform.localScale} does not equal the calculated scale {updatedScale}!"); + + // Now test explicitly setting all axis of transform multiple times during a fractional tick period + updatedPosition += GetRandomVector3(-5.0f, 5.0f); + updatedRotation.eulerAngles += GetRandomVector3(-30.0f, 30.0f); + updatedScale += GetRandomVector3(-2.0f, 2.0f); + m_AuthoritativeTransform.SetState(updatedPosition, updatedRotation, updatedScale, !interpolate); + // Advance to next frame + TimeTravel(0.001f, 1); + + updatedPosition += GetRandomVector3(-5.0f, 5.0f); + updatedRotation.eulerAngles += GetRandomVector3(-30.0f, 30.0f); + updatedScale += GetRandomVector3(-2.0f, 2.0f); + m_AuthoritativeTransform.SetState(updatedPosition, updatedRotation, updatedScale, !interpolate); + // Advance to next frame + TimeTravel(0.001f, 1); + + updatedPosition += GetRandomVector3(-5.0f, 5.0f); + updatedRotation.eulerAngles += GetRandomVector3(-30.0f, 30.0f); + updatedScale += GetRandomVector3(-2.0f, 2.0f); + m_AuthoritativeTransform.SetState(updatedPosition, updatedRotation, updatedScale, !interpolate); + // Advance to next frame + TimeTravel(0.001f, 1); + + TimeTravelAdvanceTick(); + + success = WaitForConditionOrTimeOutWithTimeTravel(() => PositionsMatch() && RotationsMatch() && ScaleValuesMatch()); + Assert.True(success, $"[Timed-Out] Authoritative transform != Non-Authoritative transform!"); + Assert.True(Approximately(updatedPosition, m_NonAuthoritativeTransform.transform.position), $"NonAuthority position {m_NonAuthoritativeTransform.transform.position} does not equal the calculated position {updatedPosition}!"); + Assert.True(Approximately(updatedRotation.eulerAngles, m_NonAuthoritativeTransform.transform.rotation.eulerAngles), $"NonAuthority rotation {m_NonAuthoritativeTransform.transform.rotation.eulerAngles} does not equal the calculated rotation {updatedRotation.eulerAngles}!"); + Assert.True(Approximately(updatedScale, m_NonAuthoritativeTransform.transform.localScale), $"NonAuthority scale {m_NonAuthoritativeTransform.transform.localScale} does not equal the calculated scale {updatedScale}!"); + } + /// /// This test validates the method /// usage for the non-authoritative side. It will either be the owner or the server making/requesting state changes. diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs index b351b7f99a..0b7be8a4f6 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformTests.cs @@ -22,6 +22,7 @@ namespace Unity.Netcode.RuntimeTests [TestFixture(HostOrServer.Host, Authority.OwnerAuthority, RotationCompression.QuaternionCompress, Rotation.Quaternion, Precision.Half)] public class NetworkTransformTests : NetworkTransformBase { + protected const int k_TickRate = 60; /// /// Constructor /// @@ -35,6 +36,11 @@ public NetworkTransformTests(HostOrServer testWithHost, Authority authority, Rot protected override bool m_SetupIsACoroutine => false; protected override bool m_TearDownIsACoroutine => false; + protected override uint GetTickRate() + { + return k_TickRate; + } + /// /// Handles validating the local space values match the original local space values. /// If not, it generates a message containing the axial values that did not match @@ -43,7 +49,7 @@ public NetworkTransformTests(HostOrServer testWithHost, Authority authority, Rot private void AllChildrenLocalTransformValuesMatch(bool useSubChild, ChildrenTransformCheckType checkType) { // We don't assert on timeout here because we want to log this information during PostAllChildrenLocalTransformValuesMatch - var success = WaitForConditionOrTimeOutWithTimeTravel(() => AllInstancesKeptLocalTransformValues(useSubChild), k_TickRate * 2); + var success = WaitForConditionOrTimeOutWithTimeTravel(() => AllInstancesKeptLocalTransformValues(useSubChild), (int)GetTickRate() * 2); m_InfoMessage.Clear(); m_InfoMessage.AppendLine($"[{checkType}][{useSubChild}] Timed out waiting for all children to have the correct local space values:\n"); if (!success) @@ -53,7 +59,7 @@ private void AllChildrenLocalTransformValuesMatch(bool useSubChild, ChildrenTran { var instances = useSubChild ? ChildObjectComponent.SubInstances : ChildObjectComponent.Instances; success = PostAllChildrenLocalTransformValuesMatch(useSubChild); - WaitForNextTick(); + TimeTravelAdvanceTick(); } } @@ -123,7 +129,7 @@ public void ParentedNetworkTransformTest([Values] Interpolation interpolation, [ m_AuthoritySubChildObject.transform.localScale = GetRandomVector3(scale - halfScale, scale + halfScale); // Allow one tick for authority to update these changes - TimeTravelToNextTick(); + TimeTravelAdvanceTick(); success = WaitForConditionOrTimeOutWithTimeTravel(PositionRotationScaleMatches); Assert.True(success, "All transform values did not match prior to parenting!"); @@ -139,8 +145,8 @@ public void ParentedNetworkTransformTest([Values] Interpolation interpolation, [ Assert.True(success, "Timed out waiting for all instances to have parented a child!"); // Provide two network ticks for interpolation to finalize - TimeTravelToNextTick(); - TimeTravelToNextTick(); + TimeTravelAdvanceTick(); + TimeTravelAdvanceTick(); // This validates each child instance has preserved their local space values AllChildrenLocalTransformValuesMatch(false, ChildrenTransformCheckType.Connected_Clients); @@ -230,7 +236,7 @@ public void NetworkTransformMultipleChangesOverTime([Values] TransformSpace test WaitForConditionOrTimeOutWithTimeTravel(() => m_AuthoritativeTransform.StatePushed); // Allow the precision settings to propagate first as changing precision // causes a teleport event to occur - WaitForNextTick(); + TimeTravelAdvanceTick(); var iterations = axisCount == 3 ? k_PositionRotationScaleIterations3Axis : k_PositionRotationScaleIterations; // Move and rotate within the same tick, validate the non-authoritative instance updates @@ -365,7 +371,7 @@ public void TestAuthoritativeTransformChangeOneAtATime([Values] TransformSpace t Assert.AreEqual(Vector3.zero, m_NonAuthoritativeTransform.transform.position, "server side pos should be zero at first"); // sanity check - TimeTravelToNextTick(); + TimeTravelAdvanceTick(); m_AuthoritativeTransform.StatePushed = false; var nextPosition = GetRandomVector3(2f, 30f); From 2980308a6cbe1cee44c84ccd00c8da1338e8d9ff Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Sat, 2 Dec 2023 13:20:59 -0600 Subject: [PATCH 18/24] style removing whitespaces --- .../TestHelpers/Runtime/NetcodeIntegrationTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs index 34835f77b5..7c356f42c0 100644 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs +++ b/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs @@ -1575,7 +1575,7 @@ protected void ConfigureFramesPerTick() /// and . /// protected void TimeTravelAdvanceTick() - { + { TimeTravel(m_TickFrequency, m_FramesPerTick); } From 3778b841b037fe667d413674ec5c8873e21a4979 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Sat, 2 Dec 2023 13:28:09 -0600 Subject: [PATCH 19/24] update Switching from ReliableFragmentedSequenced to ReliableSequenced --- .../Components/NetworkTransform.cs | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index 99567fec66..82f52fa4ba 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -102,7 +102,7 @@ public struct NetworkTransformState : INetworkSerializable private const int k_PositionSlerp = 0x00010000; // Persists between state updates (authority dictates if this is set) private const int k_IsParented = 0x00020000; // When parented and synchronizing, we need to have both lossy and local scale due to varying spawn order private const int k_SynchBaseHalfFloat = 0x00040000; - private const int k_ReliableFragmentedSequenced = 0x00080000; + private const int k_ReliableSequenced = 0x00080000; private const int k_UseUnreliableDeltas = 0x00100000; private const int k_UnreliableFrameSync = 0x00200000; private const int k_TrackStateId = 0x10000000; // (Internal Debugging) When set each state update will contain a state identifier @@ -475,7 +475,7 @@ public bool IsUnreliableFrameSync() /// public bool IsReliableStateUpdate() { - return ReliableFragmentedSequenced; + return ReliableSequenced; } internal bool IsParented @@ -496,12 +496,12 @@ internal bool SynchronizeBaseHalfFloat } } - internal bool ReliableFragmentedSequenced + internal bool ReliableSequenced { - get => GetFlag(k_ReliableFragmentedSequenced); + get => GetFlag(k_ReliableSequenced); set { - SetFlag(value, k_ReliableFragmentedSequenced); + SetFlag(value, k_ReliableSequenced); } } @@ -685,16 +685,16 @@ public void NetworkSerialize(BufferSerializer serializer) where T : IReade if (IsTeleportingNextFrame || IsSynchronizing || UnreliableFrameSync || (UseHalfFloatPrecision && NetworkDeltaPosition.CollapsedDeltaIntoBase)) { // Send the message reliably - ReliableFragmentedSequenced = true; + ReliableSequenced = true; } else { - ReliableFragmentedSequenced = false; + ReliableSequenced = false; } } else // If not using UseUnreliableDeltas, then always use reliable fragmented sequenced { - ReliableFragmentedSequenced = true; + ReliableSequenced = true; } BytePacker.WriteValueBitPacked(m_Writer, m_Bitset); @@ -3172,7 +3172,7 @@ private void TransformStateUpdate(ulong senderId, FastBufferReader messagePayloa messagePayload.Seek(currentPosition); // Get the network delivery method used to send this state update - var networkDelivery = m_LocalAuthoritativeNetworkState.ReliableFragmentedSequenced ? NetworkDelivery.ReliableFragmentedSequenced : NetworkDelivery.UnreliableSequenced; + var networkDelivery = m_LocalAuthoritativeNetworkState.ReliableSequenced ? NetworkDelivery.ReliableSequenced : NetworkDelivery.UnreliableSequenced; // Forward owner authoritative messages before doing anything else if (ownerAuthoritativeServerSide) @@ -3246,7 +3246,7 @@ private void UpdateTransformState() // - If sending an UnrealiableFrameSync or synchronizing the base position of the NetworkDeltaPosition var networkDelivery = !UseUnreliableDeltas | m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame | m_LocalAuthoritativeNetworkState.IsSynchronizing | m_LocalAuthoritativeNetworkState.UnreliableFrameSync | m_LocalAuthoritativeNetworkState.SynchronizeBaseHalfFloat - ? NetworkDelivery.ReliableFragmentedSequenced : NetworkDelivery.UnreliableSequenced; + ? NetworkDelivery.ReliableSequenced : NetworkDelivery.UnreliableSequenced; using (writer) { From 0709cd3becedfa878219c5e47be4069db91ef2c0 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Sat, 2 Dec 2023 18:49:05 -0600 Subject: [PATCH 20/24] style updating comments for better readability or to better reflect some recent adjustments made --- .../Components/NetworkTransform.cs | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index 82f52fa4ba..891b5d7d28 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -161,7 +161,7 @@ internal uint BitSet // Used when tracking by state ID is enabled internal int StateId; - // When explicitly settings (i.e. SetState) this will be set; + // Set when a state has been explicitly set (i.e. SetState) internal bool ExplicitSet; // Used during serialization @@ -461,8 +461,8 @@ internal set /// /// Returns whether this state update was a frame synchronization when - /// UseUnreliableDeltas is enabled. When set, the entire transform has - /// been synchronized. + /// UseUnreliableDeltas is enabled. When set, the entire transform will + /// be or has been synchronized. /// public bool IsUnreliableFrameSync() { @@ -470,9 +470,12 @@ public bool IsUnreliableFrameSync() } /// - /// Returns whether this state update was sent with unreliable delivery. - /// If false, then it was sent with reliable delivery. + /// Returns true if this state was sent with reliable delivery. + /// If false, then it was sent with unreliable delivery. /// + /// + /// Unreliable delivery will only be used if is set. + /// public bool IsReliableStateUpdate() { return ReliableSequenced; @@ -1543,12 +1546,12 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz return; } - // If the transform has deltas (returns dirty) or we are applying a deferred state update then... + // If the transform has deltas (returns dirty) or if an explicitly set state is pending if (m_LocalAuthoritativeNetworkState.ExplicitSet || ApplyTransformToNetworkStateWithInfo(ref m_LocalAuthoritativeNetworkState, ref transformToCommit, synchronize)) { m_LocalAuthoritativeNetworkState.LastSerializedSize = m_OldState.LastSerializedSize; - // If the state was explicitly set, then update the network tick + // If the state was explicitly set, then update the network tick to match the locally calculate tick if (m_LocalAuthoritativeNetworkState.ExplicitSet) { m_LocalAuthoritativeNetworkState.NetworkTick = m_CachedNetworkManager.NetworkTickSystem.ServerTime.Tick; @@ -1560,11 +1563,9 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz // Mark the last tick and the old state (for next ticks) m_OldState = m_LocalAuthoritativeNetworkState; - // Reset the teleport flag after we have sent the state update. - // We could set this again in the below OnAuthorityPushTransformState virtual method + // Reset the teleport and explicit state flags after we have sent the state update. + // These could be set again in the below OnAuthorityPushTransformState virtual method m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame = false; - - // Clear out the explicit flag after having sent this state update (in the event it was set) m_LocalAuthoritativeNetworkState.ExplicitSet = false; // Notify of the pushed state update @@ -1643,13 +1644,13 @@ internal bool ApplyTransformToNetworkState(ref NetworkTransformState networkStat private bool ApplyTransformToNetworkStateWithInfo(ref NetworkTransformState networkState, ref Transform transformToUse, bool isSynchronization = false, ulong targetClientId = 0) { // As long as we are not doing our first synchronization and we are sending unreliable deltas, each - // NetworkTransform will stagger their axial synchronization over a 1 second period based on their - // assigned tick synchronization (m_TickSync) value. + // NetworkTransform will stagger its full transfom synchronization over a 1 second period based on the + // assigned tick slot (m_TickSync). // More about m_DeltaSynch: // If we have not sent any deltas since our last frame synch, then this will prevent us from sending // frame synch's when the object is at rest. If this is false and a state update is detected and sent, // then it will be set to true and each subsequent tick will do this check to determine if it should - // send a frame synch. + // send a full frame synch. var isAxisSync = false; // We compare against the NetworkTickSystem version since ServerTime is set when updating ticks if (UseUnreliableDeltas && !isSynchronization && m_DeltaSynch && m_NextTickSync <= m_CachedNetworkManager.NetworkTickSystem.ServerTime.Tick) @@ -1724,6 +1725,8 @@ private bool ApplyTransformToNetworkStateWithInfo(ref NetworkTransformState netw } } + // All of the checks below, up to the delta position checking portion, are to determine if the + // authority changed a property during runtime that requires a full synchronizing. if (InLocalSpace != networkState.InLocalSpace) { networkState.InLocalSpace = InLocalSpace; @@ -1774,6 +1777,7 @@ private bool ApplyTransformToNetworkStateWithInfo(ref NetworkTransformState netw networkState.IsTeleportingNextFrame = true; } + // Begin delta checks against last sent state update if (!UseHalfFloatPrecision) { if (SyncPositionX && (Mathf.Abs(networkState.PositionX - position.x) >= PositionThreshold || networkState.IsTeleportingNextFrame || isAxisSync)) @@ -2996,11 +3000,10 @@ private void SetStateInternal(Vector3 pos, Quaternion rot, Vector3 scale, bool s var transformToCommit = transform; - // Explicit set states are additive during the same fractional tick period of time (i.e. each SetState invocation will - // update the axial deltas to whatever changes are applied). As such, we need to preserve the dirty flag. + // Explicit set states are cumulative during a fractional tick period of time (i.e. each SetState invocation will + // update the axial deltas to whatever changes are applied). As such, we need to preserve the dirty and explicit + // state flags. var stateWasDirty = m_LocalAuthoritativeNetworkState.IsDirty; - - // Preserve the explicit state in case it was already set. var explicitState = m_LocalAuthoritativeNetworkState.ExplicitSet; // Apply any delta states to the m_LocalAuthoritativeNetworkState From 234f652b8bceee4e5e4a843b103f69350401fbfc Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Mon, 4 Dec 2023 17:10:39 -0600 Subject: [PATCH 21/24] update Minor updates based on code review discussion. Excluding the packet loss test for UTP v2.x. --- .../Components/NetworkTransform.cs | 13 ++++++++++--- .../TestHelpers/Runtime/NetcodeIntegrationTest.cs | 8 +++++--- .../NetworkTransformPacketLossTests.cs | 14 +++----------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index 891b5d7d28..4616afba0b 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -1568,8 +1568,15 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz m_LocalAuthoritativeNetworkState.IsTeleportingNextFrame = false; m_LocalAuthoritativeNetworkState.ExplicitSet = false; - // Notify of the pushed state update - OnAuthorityPushTransformState(ref m_LocalAuthoritativeNetworkState); + try + { + // Notify of the pushed state update + OnAuthorityPushTransformState(ref m_LocalAuthoritativeNetworkState); + } + catch(Exception ex) + { + Debug.LogException(ex); + } // The below is part of assuring we only send a frame synch, when sending unreliable deltas, if // we have already sent at least one unreliable delta state update. At this point in the callstack, @@ -3011,7 +3018,7 @@ private void SetStateInternal(Vector3 pos, Quaternion rot, Vector3 scale, bool s // If we were dirty and the explicit state was set (prior to checking for deltas) or the current explicit state is dirty, // then we set the explicit state flag. - m_LocalAuthoritativeNetworkState.ExplicitSet = (stateWasDirty & explicitState) | isDirty; + m_LocalAuthoritativeNetworkState.ExplicitSet = (stateWasDirty && explicitState) || isDirty; // If the current explicit set flag is set, then we are dirty. This assures if more than one explicit set state is invoked // in between a fractional tick period and the current explicit set state did not find any deltas that we preserve any diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs index 7c356f42c0..7a4d44e099 100644 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs +++ b/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs @@ -305,16 +305,18 @@ protected virtual void OnInlineSetup() public IEnumerator SetUp() { VerboseDebug($"Entering {nameof(SetUp)}"); - NetcodeLogAssert = new NetcodeLogAssert(); + if (m_EnableTimeTravel) + { + // Setup the frames per tick for time travel advance to next tick + ConfigureFramesPerTick(); + } if (m_SetupIsACoroutine) { yield return OnSetup(); } else { - // Setup the frames per tick for time travel to next tick - ConfigureFramesPerTick(); OnInlineSetup(); } diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs index 4354e85811..422183b2af 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformPacketLossTests.cs @@ -1,3 +1,5 @@ +// TODO: Rewrite test to use the tools package. Debug simulator not available in UTP 2.X. +#if !UTP_TRANSPORT_2_0_ABOVE using System.Collections; using NUnit.Framework; using Unity.Netcode.Components; @@ -478,16 +480,6 @@ private void OnAuthorityPushedTransformState(ref NetworkTransform.NetworkTransfo m_Teleported = true; } } - - //public IEnumerator MultipleTeleportsBackToBack([Values] TransformSpace testLocalTransform, [Values] Interpolation interpolation) - //{ - // // Register with NetworkUpdateLoop EarlyUpdate - // // Mock receiving message that teleports - // // Determine each frame if it is a new tick - // // If so, teleport to a position - // // Check the receiving side for the teleport - // // repeat steps several times - // yield return null; - //} } } +#endif From 48978cb4c42bb02cd83f818e181669e3d125780f Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Mon, 4 Dec 2023 17:31:02 -0600 Subject: [PATCH 22/24] style adding missing whitespace --- com.unity.netcode.gameobjects/Components/NetworkTransform.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs index 4616afba0b..5b7b2ee415 100644 --- a/com.unity.netcode.gameobjects/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Components/NetworkTransform.cs @@ -1569,11 +1569,11 @@ private void TryCommitTransform(ref Transform transformToCommit, bool synchroniz m_LocalAuthoritativeNetworkState.ExplicitSet = false; try - { + { // Notify of the pushed state update OnAuthorityPushTransformState(ref m_LocalAuthoritativeNetworkState); } - catch(Exception ex) + catch (Exception ex) { Debug.LogException(ex); } From 621228d67f2175c8ccaea6f75f68e9f3f5fc5f85 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Mon, 4 Dec 2023 17:35:11 -0600 Subject: [PATCH 23/24] update adding change log entries --- com.unity.netcode.gameobjects/CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/com.unity.netcode.gameobjects/CHANGELOG.md b/com.unity.netcode.gameobjects/CHANGELOG.md index b124f4270a..25cf88150c 100644 --- a/com.unity.netcode.gameobjects/CHANGELOG.md +++ b/com.unity.netcode.gameobjects/CHANGELOG.md @@ -21,12 +21,15 @@ Additional documentation and release notes are available at [Multiplayer Documen ### Fixed +- Fixed issue where a teleport state could potentially be overridden by a previous unreliable delta state. (#2777) +- Fixed issue where `NetworkTransform` was using the `NetworkManager.ServerTime.Tick` as opposed to `NetworkManager.NetworkTickSystem.ServerTime.Tick` during the authoritative side's tick update where it performed a delta state check. (#2777) - Fixed issue where a parented in-scene placed NetworkObject would be destroyed upon a client or server exiting a network session but not unloading the original scene in which the NetworkObject was placed. (#2737) - Fixed issue where during client synchronization and scene loading, when client synchronization or the scene loading mode are set to `LoadSceneMode.Single`, a `CreateObjectMessage` could be received, processed, and the resultant spawned `NetworkObject` could be instantiated in the client's currently active scene that could, towards the end of the client synchronization or loading process, be unloaded and cause the newly created `NetworkObject` to be destroyed (and throw and exception). (#2735) - Fixed issue where a `NetworkTransform` instance with interpolation enabled would result in wide visual motion gaps (stuttering) under above normal latency conditions and a 1-5% or higher packet are drop rate. (#2713) ### Changed +- Changed `NetworkTransform.SetState` (and related methods) now are cumulative during a fractional tick period and sent on the next pending tick. (#2777) - `NetworkManager.ConnectedClientsIds` is now accessible on the client side and will contain the list of all clients in the session, including the host client if the server is operating in host mode (#2762) - Changed `NetworkSceneManager` to return a `SceneEventProgress` status and not throw exceptions for methods invoked when scene management is disabled and when a client attempts to access a `NetworkSceneManager` method by a client. (#2735) - Changed `NetworkTransform` authoritative instance tick registration so a single `NetworkTransform` specific tick event update will update all authoritative instances to improve perofmance. (#2713) From 1e67b3475a0b1bc94f1b93c452977d9b6ff966cd Mon Sep 17 00:00:00 2001 From: NoelStephensUnity Date: Mon, 4 Dec 2023 17:49:45 -0600 Subject: [PATCH 24/24] style Whitespace fix --- .../TestHelpers/Runtime/NetcodeIntegrationTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs index 7a4d44e099..29d0f165f1 100644 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs +++ b/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs @@ -310,7 +310,7 @@ public IEnumerator SetUp() { // Setup the frames per tick for time travel advance to next tick ConfigureFramesPerTick(); - } + } if (m_SetupIsACoroutine) { yield return OnSetup();