From 4fc93ad9515fdb7c025b0bf6ac5052cde8b08df8 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Fri, 30 Jul 2021 15:00:47 -0500 Subject: [PATCH 1/8] samples addition Added prefab pool and prefab pool override examples into test project. --- .../References/Scene/PrefabPoolOverride.asset | 19 + .../Scene/PrefabPoolOverride.asset.meta | 8 + .../{Tests/Manual => Samples}/PrefabPool.meta | 0 .../GenericPooledObjectBehaviour.cs | 164 ++ .../GenericPooledObjectBehaviour.cs.meta | 11 + .../Samples/PrefabPool/NetworkObjectLabel.cs | 33 + .../PrefabPool/NetworkObjectLabel.cs.meta | 11 + .../NetworkPrefabHandlerObjectPool.cs | 118 + .../NetworkPrefabHandlerObjectPool.cs.meta | 11 + .../NetworkPrefabHandlerObjectPoolOverride.cs | 170 ++ ...orkPrefabHandlerObjectPoolOverride.cs.meta | 11 + ...bjectToOverride-VariantBlueCylinder.prefab | 86 + ...ToOverride-VariantBlueCylinder.prefab.meta | 7 + ...bjectToOverride-VariantOrangeSphere.prefab | 86 + ...ToOverride-VariantOrangeSphere.prefab.meta | 7 + .../ObjectToOverride-VariantPink.prefab | 81 + .../ObjectToOverride-VariantPink.prefab.meta | 7 + .../ObjectToOverride-VariantRedCapsule.prefab | 86 + ...ctToOverride-VariantRedCapsule.prefab.meta | 7 + .../PrefabPool/ObjectToOverride.prefab | 274 +++ .../PrefabPool/ObjectToOverride.prefab.meta | 7 + .../PrefabPool/PrefabPoolExample.unity | 505 +---- .../PrefabPool/PrefabPoolExample.unity.meta | 0 .../PrefabPoolOverrideExample.unity | 1929 +++++++++++++++++ .../PrefabPoolOverrideExample.unity.meta | 7 + testproject/Assets/Samples/SamplesMenu.unity | 2 + .../Assets/Tests/Manual/ManualTestsMenu.unity | 1 - .../Tests/Manual/Scripts/NetworkPrefabPool.cs | 1 + .../ProjectSettings/EditorBuildSettings.asset | 5 +- 29 files changed, 3155 insertions(+), 499 deletions(-) create mode 100644 testproject/Assets/References/Scene/PrefabPoolOverride.asset create mode 100644 testproject/Assets/References/Scene/PrefabPoolOverride.asset.meta rename testproject/Assets/{Tests/Manual => Samples}/PrefabPool.meta (100%) create mode 100644 testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs create mode 100644 testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs.meta create mode 100644 testproject/Assets/Samples/PrefabPool/NetworkObjectLabel.cs create mode 100644 testproject/Assets/Samples/PrefabPool/NetworkObjectLabel.cs.meta create mode 100644 testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs create mode 100644 testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs.meta create mode 100644 testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs create mode 100644 testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs.meta create mode 100644 testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantBlueCylinder.prefab create mode 100644 testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantBlueCylinder.prefab.meta create mode 100644 testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantOrangeSphere.prefab create mode 100644 testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantOrangeSphere.prefab.meta create mode 100644 testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantPink.prefab create mode 100644 testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantPink.prefab.meta create mode 100644 testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantRedCapsule.prefab create mode 100644 testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantRedCapsule.prefab.meta create mode 100644 testproject/Assets/Samples/PrefabPool/ObjectToOverride.prefab create mode 100644 testproject/Assets/Samples/PrefabPool/ObjectToOverride.prefab.meta rename testproject/Assets/{Tests/Manual => Samples}/PrefabPool/PrefabPoolExample.unity (79%) rename testproject/Assets/{Tests/Manual => Samples}/PrefabPool/PrefabPoolExample.unity.meta (100%) create mode 100644 testproject/Assets/Samples/PrefabPool/PrefabPoolOverrideExample.unity create mode 100644 testproject/Assets/Samples/PrefabPool/PrefabPoolOverrideExample.unity.meta diff --git a/testproject/Assets/References/Scene/PrefabPoolOverride.asset b/testproject/Assets/References/Scene/PrefabPoolOverride.asset new file mode 100644 index 0000000000..78ce44db80 --- /dev/null +++ b/testproject/Assets/References/Scene/PrefabPoolOverride.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 39a16938ffb5cd846a9f6df7a686a9c4, type: 3} + m_Name: PrefabPoolOverride + m_EditorClassIdentifier: + SceneToReference: {fileID: 102900000, guid: 8c9bee1332e0526429d8a2c929945d60, type: 3} + m_IncludedScenes: [] + m_DisplayName: Prefab Pool Override + m_ReferencedScenes: + - PrefabPoolOverrideExample diff --git a/testproject/Assets/References/Scene/PrefabPoolOverride.asset.meta b/testproject/Assets/References/Scene/PrefabPoolOverride.asset.meta new file mode 100644 index 0000000000..76df40bf83 --- /dev/null +++ b/testproject/Assets/References/Scene/PrefabPoolOverride.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d2e34ed37c087154dbd7f89fd463801b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Tests/Manual/PrefabPool.meta b/testproject/Assets/Samples/PrefabPool.meta similarity index 100% rename from testproject/Assets/Tests/Manual/PrefabPool.meta rename to testproject/Assets/Samples/PrefabPool.meta diff --git a/testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs b/testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs new file mode 100644 index 0000000000..eca42b4113 --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs @@ -0,0 +1,164 @@ +using MLAPI; +using UnityEngine; + +/// +/// A general object that can be used for testing purposes +/// +public class GenericPooledObjectBehaviour : NetworkBehaviour +{ + [SerializeField] + [Tooltip("This will make the spawned objects move around randomly. !Caution! You can generate a lot of objects this way!")] + private bool m_MoveRandomly = true; + + private Rigidbody m_RigidBody; + private MeshRenderer m_MeshRenderer; + private Vector3 m_Direction; + private float m_Velocity; + + private void Start() + { + m_RigidBody = GetComponent(); + m_MeshRenderer = GetComponent(); + } + + /// + /// Handles disabling the MeshRenderer when the client despawns a NetworkObject + /// + public override void OnNetworkDespawn() + { + if (!IsServer) + { + if (m_MeshRenderer == null) + { + m_MeshRenderer = GetComponent(); + } + + if (m_MeshRenderer != null) + { + m_MeshRenderer.enabled = false; + } + } + base.OnNetworkDespawn(); + } + + private float m_VisibilitySpawn; + /// + /// Handles setting a delay before the newly spawned object is visible + /// Note: this might get removed once the snapshot system is synchronizing + /// NetworkObjects' spawn and despawn. + /// + public override void OnNetworkSpawn() + { + if (!IsServer) + { + if (m_MeshRenderer == null) + { + m_MeshRenderer = GetComponent(); + } + m_MeshRenderer.enabled = false; + m_VisibilitySpawn = Time.realtimeSinceStartup + 0.12f; + if (NetworkObject.NetworkObjectId == 0) + { + Debug.Log("Spawning NetworkObjectId 0!"); + } + } + base.OnNetworkSpawn(); + } + + /// + /// Sets the object's direction and velocity + /// + /// vector3 direction + /// float velocity + public void SetDirectionAndVelocity(Vector3 direction, float velocity) + { + m_Direction = direction; + m_Direction.Normalize(); + m_Direction.y = 0; + m_Velocity = velocity; + } + + /// + /// Handles moving the object based on its current direction and velocity + /// + private void FixedUpdate() + { + if (NetworkManager != null && NetworkManager.IsListening) + { + if (IsOwner) + { + m_RigidBody.MovePosition(transform.position + m_Direction * (m_Velocity * Time.fixedDeltaTime)); + + if (m_MoveRandomly && Random.Range(0.0f, 1.0f) < 0.01f) + { + var dir = Random.insideUnitCircle; + m_Direction.x = dir.x; + m_Direction.z = dir.y; + } + } + else + { + if (NetworkObject != null && !NetworkObject.isActiveAndEnabled) + { + Debug.LogWarning($"{nameof(GenericPooledObjectBehaviour)} id {NetworkObject.NetworkObjectId} is not active and enabled but game object is still active!"); + } + + if (NetworkObject != null && !NetworkObject.IsSpawned) + { + Debug.LogWarning($"{nameof(GenericPooledObjectBehaviour)} id {NetworkObject.NetworkObjectId} is not spawned but still active and enabled"); + gameObject.SetActive(false); + } + } + } + } + + + private void Update() + { + if (IsOwner && m_ShouldDespawn && NetworkObject != null) + { + m_ShouldDespawn = false; + + NetworkObject.Despawn(HasHandler); + if (!HasHandler) + { + NetworkObject.gameObject.SetActive(false); + NetworkObject.gameObject.transform.position = Vector3.zero; + } + } + else if (!IsServer) + { + // This is here to handle any short term latency between the time + // an object becomes spawned to the time it takes to update its first + // position. + if (m_MeshRenderer != null && !m_MeshRenderer.enabled) + { + if (m_VisibilitySpawn < Time.realtimeSinceStartup) + { + m_MeshRenderer.enabled = true; + } + } + } + + } + + [HideInInspector] + public bool HasHandler; + + private bool m_ShouldDespawn; + + private void OnTriggerEnter(Collider other) + { + if (IsOwner && gameObject.activeInHierarchy) + { + if (other.CompareTag("GenericObject") || other.CompareTag("Floor")) + { + return; + } + else + { + m_ShouldDespawn = true; + } + } + } +} diff --git a/testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs.meta b/testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs.meta new file mode 100644 index 0000000000..35283cca24 --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: abb84c1ee2a6fd3449acdf47a14bdf17 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/PrefabPool/NetworkObjectLabel.cs b/testproject/Assets/Samples/PrefabPool/NetworkObjectLabel.cs new file mode 100644 index 0000000000..4b3c24add7 --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/NetworkObjectLabel.cs @@ -0,0 +1,33 @@ +using UnityEngine; +using MLAPI; + +public class NetworkObjectLabel : NetworkBehaviour +{ + + private TextMesh m_ObjectLabel; + + public override void OnNetworkSpawn() + { + if (m_ObjectLabel == null) + { + m_ObjectLabel = GetComponent(); + } + + m_ObjectLabel.text = NetworkObject.NetworkObjectId.ToString(); + + base.OnNetworkSpawn(); + } + + public override void OnNetworkDespawn() + { + if (m_ObjectLabel == null) + { + m_ObjectLabel = GetComponent(); + } + + m_ObjectLabel.text = "None"; + + base.OnNetworkDespawn(); + } + +} diff --git a/testproject/Assets/Samples/PrefabPool/NetworkObjectLabel.cs.meta b/testproject/Assets/Samples/PrefabPool/NetworkObjectLabel.cs.meta new file mode 100644 index 0000000000..161994de4e --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/NetworkObjectLabel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b85e388ccb24094d97ef2c46a7ef0d2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs new file mode 100644 index 0000000000..fbcbf68332 --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs @@ -0,0 +1,118 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using MLAPI; +using MLAPI.Spawning; + +public class NetworkPrefabHandlerObjectPool : NetworkBehaviour, INetworkPrefabInstanceHandler +{ + [SerializeField] + private GameObject m_ObjectToPool; + + [SerializeField] + private int m_ObjectPoolSize = 15; + + [SerializeField] + [Range(1, 5)] + private int m_SpawnsPerSecond = 2; + + private List m_ObjectsPool; + + private bool m_IsSpawningObjects; + + public override void OnNetworkSpawn() + { + if (NetworkManager && NetworkManager.PrefabHandler != null) + { + NetworkManager.PrefabHandler.AddHandler(m_ObjectToPool, this); + } + + // Makes sure we have the right prefab + m_ObjectToPool = NetworkManager.GetNetworkPrefabOverride(m_ObjectToPool); + if (m_ObjectToPool != null) + { + m_ObjectsPool = new List(); + for (int i = 0; i < m_ObjectPoolSize; i++) + { + InstantiatePoolObject().SetActive(false); + } + } + + // Host and Server spawn the objects + if (IsServer) + { + StartCoroutine(SpawnObjects()); + } + } + + private GameObject InstantiatePoolObject() + { + m_ObjectsPool.Add(Instantiate(m_ObjectToPool)); + return m_ObjectsPool[m_ObjectsPool.Count - 1]; + } + + private GameObject GetNextSpawnObject() + { + foreach (var gameObject in m_ObjectsPool) + { + if (!gameObject.activeInHierarchy) + { + return gameObject; + } + } + //We are out of objects, expand our pool by 1 more NetworkObject + return InstantiatePoolObject(); + } + + public NetworkObject Instantiate(ulong ownerClientId, Vector3 position, Quaternion rotation) + { + var gameObject = GetNextSpawnObject(); + gameObject.SetActive(true); + gameObject.transform.position = position; + gameObject.transform.rotation = rotation; + return gameObject.GetComponent(); + } + + public void Destroy(NetworkObject networkObject) + { + if (m_ObjectsPool.Contains(networkObject.gameObject)) + { + networkObject.gameObject.SetActive(false); + } + } + + private IEnumerator SpawnObjects() + { + //Exit if we are a client or we happen to not have a NetworkManager + if (NetworkManager == null || (NetworkManager.IsClient && !NetworkManager.IsHost && !NetworkManager.IsServer)) + { + yield return null; + } + + m_IsSpawningObjects = true; + + var entitySpawnUpdateRate = 1.0f; + while (m_IsSpawningObjects) + { + entitySpawnUpdateRate = 1.0f / (float)m_SpawnsPerSecond; + + GameObject go = GetNextSpawnObject(); + if (go != null) + { + go.SetActive(true); + go.transform.position = transform.position; + + float ang = Random.Range(0.0f, 2 * Mathf.PI); + go.GetComponent().SetDirectionAndVelocity(new Vector3(Mathf.Cos(ang), 0, Mathf.Sin(ang)), 4); + + var no = go.GetComponent(); + if (!no.IsSpawned) + { + no.Spawn(null, true); + } + } + yield return new WaitForSeconds(entitySpawnUpdateRate); + } + } + +} diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs.meta b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs.meta new file mode 100644 index 0000000000..10f6552938 --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 83e085235981b734bad565d9a60de47a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs new file mode 100644 index 0000000000..e2ccabf9c4 --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs @@ -0,0 +1,170 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using MLAPI; +using MLAPI.Spawning; + +public class NetworkPrefabHandlerObjectPoolOverride : NetworkBehaviour, INetworkPrefabInstanceHandler +{ + private GameObject m_ObjectToPool; + + [SerializeField] + private GameObject m_ObjectToOverride; + + [SerializeField] + private List m_ObjectOverrides; + + [SerializeField] + private int m_ObjectPoolSize = 15; + + [SerializeField] + [Range(1, 5)] + private int m_SpawnsPerSecond = 2; + + private Dictionary> m_ObjectsPool; + private List m_NameValidation; + + private bool m_IsSpawningObjects; + + public override void OnNetworkSpawn() + { + // Register your object to be overridden (m_ObjectToOverride) with this INetworkPrefabInstanceHandler implementation + if (NetworkManager && NetworkManager.PrefabHandler != null) + { + NetworkManager.PrefabHandler.AddHandler(m_ObjectToOverride, this); + } + + // Start with the base object to be overridden (i.e. Server mode will always use this) + m_ObjectToPool = m_ObjectToOverride; + + // Host and Client need to do an extra step + if (IsClient) + { + // Makes sure we have the right prefab to create a pool for (i.e. Clients and Hosts) + m_ObjectToPool = NetworkManager.GetNetworkPrefabOverride(m_ObjectToPool); + + // Host Only: + // Since the host will be spawning overrides, we need to manually create the link between the + // m_ObjectToOverride and the objects that could override it (i.e. m_ObjectOverrides) + if (IsHost) + { + // While this seems redundant, we could theoretically have several objects that we could potentially be spawning + NetworkManager.PrefabHandler.RegisterHostGlobalObjectIdHashValues(m_ObjectToOverride, m_ObjectOverrides); + } + } + + m_ObjectsPool = new Dictionary>(); + m_NameValidation = new List(); + for (int x = 0; x < m_ObjectOverrides.Count; x++) + { + // If we are a server, then we just create a big pool of the same base override object + // otherwise for Host and Client we use the list of object overrides + var objectIndex = IsServer && !IsHost ? 0 : x; + var objectToPool = IsServer && !IsHost ? m_ObjectToOverride : m_ObjectOverrides[x]; + + if (!m_ObjectsPool.ContainsKey(objectIndex)) + { + m_ObjectsPool.Add(objectIndex, new List()); + } + + for (int y = 0; y < m_ObjectPoolSize; y++) + { + var newObject = Instantiate(objectToPool); + + // One way to verify this object exists + // You could also make this a dictionary that linked to the actual GameObject instance + newObject.name += m_ObjectsPool[objectIndex].Count.ToString(); + m_NameValidation.Add(newObject.name); + + // Make sure we start this object as inactive + newObject.SetActive(false); + m_ObjectsPool[objectIndex].Add(newObject); + } + } + + // Host and Server spawn the objects + if (IsServer) + { + StartCoroutine(SpawnObjects()); + } + } + + private GameObject GetNextSpawnObject() + { + // If we are just a server use index 0, otherwise we are a host or client so get a random override object to spawn + var indexType = IsServer && !IsHost ? 0 : Random.Range(0, m_ObjectOverrides.Count - 1); + + if (m_ObjectsPool.ContainsKey(indexType)) + { + foreach (var gameObject in m_ObjectsPool[indexType]) + { + if (!gameObject.activeInHierarchy) + { + return gameObject; + } + } + //We are out of objects, expand our pool by 1 more NetworkObject + var newObject = Instantiate(m_ObjectOverrides[indexType]); + m_ObjectsPool[indexType].Add(newObject); + return newObject; + } + // If requesting a bad index return null + return null; + } + + public NetworkObject Instantiate(ulong ownerClientId, Vector3 position, Quaternion rotation) + { + var gameObject = GetNextSpawnObject(); + gameObject.SetActive(true); + gameObject.transform.position = position; + gameObject.transform.rotation = rotation; + return gameObject.GetComponent(); + } + + public void Destroy(NetworkObject networkObject) + { + if (m_NameValidation.Contains(networkObject.gameObject.name)) + { + networkObject.gameObject.SetActive(false); + } + } + + /// + /// Spawns the objects. + /// + /// IEnumerator + private IEnumerator SpawnObjects() + { + //Exit if we are a client or we happen to not have a NetworkManager + if (NetworkManager == null || (NetworkManager.IsClient && !NetworkManager.IsHost && !NetworkManager.IsServer)) + { + yield return null; + } + + m_IsSpawningObjects = true; + + var entitySpawnUpdateRate = 1.0f; + while (m_IsSpawningObjects) + { + entitySpawnUpdateRate = 1.0f / (float)m_SpawnsPerSecond; + + GameObject go = GetNextSpawnObject(); + if (go != null) + { + go.SetActive(true); + go.transform.position = transform.position; + + float ang = Random.Range(0.0f, 2 * Mathf.PI); + go.GetComponent().SetDirectionAndVelocity(new Vector3(Mathf.Cos(ang), 0, Mathf.Sin(ang)), 4); + + var no = go.GetComponent(); + if (!no.IsSpawned) + { + no.Spawn(null, true); + } + } + yield return new WaitForSeconds(entitySpawnUpdateRate); + } + } +} + diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs.meta b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs.meta new file mode 100644 index 0000000000..efff9d8838 --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e75c6dd7d88b8ef47bc652a967fa34eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantBlueCylinder.prefab b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantBlueCylinder.prefab new file mode 100644 index 0000000000..d584980843 --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantBlueCylinder.prefab @@ -0,0 +1,86 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &6889225174075073968 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -5591000292386890817, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: GlobalObjectIdHash + value: 951099334 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360811, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_Name + value: ObjectToOverride-VariantBlueCylinder + objectReference: {fileID: 0} + - target: {fileID: 771575417923360817, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} + - target: {fileID: 771575417923360819, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 126d2da9b339ba9418b15d150233e786, type: 2} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 29cabf623d47bb345a9bb4140e4397d7, type: 3} diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantBlueCylinder.prefab.meta b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantBlueCylinder.prefab.meta new file mode 100644 index 0000000000..48810fba88 --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantBlueCylinder.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d2bccc96d1636264fa43b546a1b617c3 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantOrangeSphere.prefab b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantOrangeSphere.prefab new file mode 100644 index 0000000000..51bc81dd5d --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantOrangeSphere.prefab @@ -0,0 +1,86 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &1231612107922318246 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -5591000292386890817, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: GlobalObjectIdHash + value: 951099334 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360811, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_Name + value: ObjectToOverride-VariantOrangeSphere + objectReference: {fileID: 0} + - target: {fileID: 771575417923360817, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} + - target: {fileID: 771575417923360819, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 62ff4693d71b55440a645bbccd83ac8a, type: 2} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 29cabf623d47bb345a9bb4140e4397d7, type: 3} diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantOrangeSphere.prefab.meta b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantOrangeSphere.prefab.meta new file mode 100644 index 0000000000..1688b772dc --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantOrangeSphere.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2ab098de4ccb3a8459b88084b29fd0ac +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantPink.prefab b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantPink.prefab new file mode 100644 index 0000000000..db82dfee5c --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantPink.prefab @@ -0,0 +1,81 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &7869561524614204950 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -5591000292386890817, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: GlobalObjectIdHash + value: 951099334 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360811, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_Name + value: ObjectToOverride-VariantRed + objectReference: {fileID: 0} + - target: {fileID: 771575417923360819, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: e0f9a13672c7ef74bad00a8ed0dd5c0b, type: 2} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 29cabf623d47bb345a9bb4140e4397d7, type: 3} diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantPink.prefab.meta b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantPink.prefab.meta new file mode 100644 index 0000000000..45d5a45af2 --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantPink.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cebc356e89448a948922c0f95549ebf3 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantRedCapsule.prefab b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantRedCapsule.prefab new file mode 100644 index 0000000000..743ac71931 --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantRedCapsule.prefab @@ -0,0 +1,86 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &5233142666392952286 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -5591000292386890817, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: GlobalObjectIdHash + value: 951099334 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360811, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_Name + value: ObjectToOverride-VariantRedCapsule + objectReference: {fileID: 0} + - target: {fileID: 771575417923360817, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_Mesh + value: + objectReference: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} + - target: {fileID: 771575417923360819, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: a7b755ad8e4fe4bdb8f5518c951abc70, type: 2} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 771575417923360822, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 29cabf623d47bb345a9bb4140e4397d7, type: 3} diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantRedCapsule.prefab.meta b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantRedCapsule.prefab.meta new file mode 100644 index 0000000000..b99a02cc5b --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantRedCapsule.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e32c8adee7794ee4c8db34d79e98821e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride.prefab b/testproject/Assets/Samples/PrefabPool/ObjectToOverride.prefab new file mode 100644 index 0000000000..c57a30051c --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/ObjectToOverride.prefab @@ -0,0 +1,274 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &505388414159745514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1841158748891296080} + - component: {fileID: 674563807513751893} + - component: {fileID: 913191476409999419} + - component: {fileID: 7037044168295681893} + m_Layer: 9 + m_Name: ObjectLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1841158748891296080 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 505388414159745514} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.67, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 771575417923360822} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &674563807513751893 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 505388414159745514} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!102 &913191476409999419 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 505388414159745514} + m_Text: No State + m_OffsetZ: 0 + m_CharacterSize: 1 + m_LineSpacing: 1 + m_Anchor: 7 + m_Alignment: 0 + m_TabSize: 4 + m_FontSize: 24 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!114 &7037044168295681893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 505388414159745514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7b85e388ccb24094d97ef2c46a7ef0d2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &771575417923360811 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 771575417923360822} + - component: {fileID: -5591000292386890817} + - component: {fileID: 771575417923360817} + - component: {fileID: 771575417923360819} + - component: {fileID: -5056059992271333076} + - component: {fileID: 771575417923360831} + - component: {fileID: 4600632750638426092} + - component: {fileID: -4944860544295663394} + m_Layer: 9 + m_Name: ObjectToOverride + m_TagString: GenericObject + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &771575417923360822 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 771575417923360811} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 0.5, y: 0.75, z: 0.5} + m_Children: + - {fileID: 1841158748891296080} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &-5591000292386890817 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 771575417923360811} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 951099334 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!33 &771575417923360817 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 771575417923360811} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &771575417923360819 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 771575417923360811} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7f7831f04363c2f48ba5edc060a4717b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &-5056059992271333076 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 771575417923360811} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!54 &771575417923360831 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 771575417923360811} + serializedVersion: 2 + m_Mass: 7 + m_Drag: 7 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 112 + m_CollisionDetection: 0 +--- !u!114 &4600632750638426092 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 771575417923360811} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3} + m_Name: + m_EditorClassIdentifier: + Authority: 0 + Channel: 0 + InLocalSpace: 0 + FixedSendsPerSecond: 5 +--- !u!114 &-4944860544295663394 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 771575417923360811} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: abb84c1ee2a6fd3449acdf47a14bdf17, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MoveRandomly: 1 + HasHandler: 0 diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride.prefab.meta b/testproject/Assets/Samples/PrefabPool/ObjectToOverride.prefab.meta new file mode 100644 index 0000000000..6fa6c177cd --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/ObjectToOverride.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 29cabf623d47bb345a9bb4140e4397d7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Tests/Manual/PrefabPool/PrefabPoolExample.unity b/testproject/Assets/Samples/PrefabPool/PrefabPoolExample.unity similarity index 79% rename from testproject/Assets/Tests/Manual/PrefabPool/PrefabPoolExample.unity rename to testproject/Assets/Samples/PrefabPool/PrefabPoolExample.unity index 1a986b15ca..b3869569bb 100644 --- a/testproject/Assets/Tests/Manual/PrefabPool/PrefabPoolExample.unity +++ b/testproject/Assets/Samples/PrefabPool/PrefabPoolExample.unity @@ -512,7 +512,6 @@ RectTransform: - {fileID: 1588117328} - {fileID: 42803802} - {fileID: 1834318148} - - {fileID: 2058276876} - {fileID: 1383741138} m_Father: {fileID: 0} m_RootOrder: 4 @@ -618,85 +617,6 @@ Transform: m_Father: {fileID: 1332123092} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &562991978 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 562991979} - - component: {fileID: 562991981} - - component: {fileID: 562991980} - m_Layer: 5 - m_Name: BoxGeneratorCount - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &562991979 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 562991978} - 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: 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} - m_AnchoredPosition: {x: 3, y: 20} - m_SizeDelta: {x: 160, y: 30} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &562991980 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 562991978} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.9811321, g: 0.9811321, b: 0.9811321, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 18 - m_FontStyle: 1 - m_BestFit: 0 - m_MinSize: 1 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: 0 ---- !u!222 &562991981 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 562991978} - m_CullTransparentMesh: 1 --- !u!1 &575203307 GameObject: m_ObjectHideFlags: 0 @@ -963,7 +883,7 @@ MonoBehaviour: type: 3} NetworkPrefabs: - Override: 0 - Prefab: {fileID: 771575417923360811, guid: c0a45bdb516f341498d933b7a7ed4fc1, + Prefab: {fileID: 771575417923360811, guid: 29cabf623d47bb345a9bb4140e4397d7, type: 3} SourcePrefabToOverride: {fileID: 771575417923360811, guid: c0a45bdb516f341498d933b7a7ed4fc1, type: 3} @@ -1037,7 +957,7 @@ GameObject: - component: {fileID: 1113539281} - component: {fileID: 1113539279} m_Layer: 0 - m_Name: PooledPrefabSpawnHandler + m_Name: PrefabPool m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1052,22 +972,13 @@ MonoBehaviour: m_GameObject: {fileID: 1113539278} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8c48ea35c67e64f7fac22a3f6831ca88, type: 3} + m_Script: {fileID: 11500000, guid: 83e085235981b734bad565d9a60de47a, type: 3} m_Name: m_EditorClassIdentifier: - AutoSpawnEnable: 1 - InitialSpawnDelay: 0.2 - SpawnsPerSecond: 2 - PoolSize: 10 - ObjectSpeed: 8 - EnableHandler: 1 - RegisterUsingNetworkObject: 0 - ServerObjectToPool: {fileID: 771575417923360811, guid: c0a45bdb516f341498d933b7a7ed4fc1, + m_ObjectToPool: {fileID: 771575417923360811, guid: 29cabf623d47bb345a9bb4140e4397d7, type: 3} - ClientObjectToPool: {fileID: 0} - SwitchScene: {fileID: 0} - SpawnSlider: {fileID: 2058276877} - SpawnSliderValueText: {fileID: 562991980} + m_ObjectPoolSize: 15 + m_SpawnsPerSecond: 2 --- !u!4 &1113539280 Transform: m_ObjectHideFlags: 0 @@ -1259,7 +1170,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 290861172} - m_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 0} @@ -1308,192 +1219,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1383741137} m_CullTransparentMesh: 0 ---- !u!1 &1387688804 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1387688805} - m_Layer: 5 - m_Name: Handle Slide Area - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1387688805 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1387688804} - 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: - - {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} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -20, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &1523424136 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1523424137} - - component: {fileID: 1523424139} - - component: {fileID: 1523424138} - m_Layer: 5 - m_Name: Handle - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1523424137 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1523424136} - 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: 1387688805} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 20, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1523424138 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1523424136} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1523424139 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1523424136} - m_CullTransparentMesh: 1 ---- !u!1 &1549858058 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1549858059} - - component: {fileID: 1549858061} - - component: {fileID: 1549858060} - m_Layer: 5 - m_Name: Fill - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1549858059 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1549858058} - 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: 1889006547} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 10, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1549858060 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1549858058} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1549858061 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1549858058} - m_CullTransparentMesh: 1 --- !u!1 &1588117327 GameObject: m_ObjectHideFlags: 0 @@ -1914,117 +1639,6 @@ RectTransform: type: 3} m_PrefabInstance: {fileID: 1865409448} m_PrefabAsset: {fileID: 0} ---- !u!1 &1889006546 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1889006547} - m_Layer: 5 - m_Name: Fill Area - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1889006547 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1889006546} - 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: - - {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} - m_AnchoredPosition: {x: -5, y: 0} - m_SizeDelta: {x: -20, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &2021718438 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2021718439} - - component: {fileID: 2021718441} - - component: {fileID: 2021718440} - m_Layer: 5 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2021718439 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2021718438} - 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: 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} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &2021718440 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2021718438} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &2021718441 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2021718438} - m_CullTransparentMesh: 1 --- !u!1 &2028091268 GameObject: m_ObjectHideFlags: 0 @@ -2121,109 +1735,6 @@ Transform: m_Father: {fileID: 1332123092} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2058276875 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2058276876} - - component: {fileID: 2058276877} - m_Layer: 5 - m_Name: BoxGeneratorSlider - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2058276876 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2058276875} - 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: - - {fileID: 2021718439} - - {fileID: 1889006547} - - {fileID: 1387688805} - - {fileID: 562991979} - m_Father: {fileID: 290861172} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 1} - m_AnchorMax: {x: 0.5, y: 1} - m_AnchoredPosition: {x: 0.99993896, y: -63.99997} - m_SizeDelta: {x: 400, y: 20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &2058276877 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2058276875} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1523424138} - m_FillRect: {fileID: 1549858059} - m_HandleRect: {fileID: 1523424137} - m_Direction: 0 - m_MinValue: 0 - m_MaxValue: 550 - m_WholeNumbers: 1 - m_Value: 2 - m_OnValueChanged: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1113539279} - m_TargetAssemblyTypeName: ServerBoxGenerator, Core - m_MethodName: UpdateSpawnsPerSecond - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 --- !u!1 &2107482020 GameObject: m_ObjectHideFlags: 0 @@ -2406,7 +1917,7 @@ PrefabInstance: type: 3} propertyPath: m_SceneMenuToLoad value: - objectReference: {fileID: 11400000, guid: 4a3cdce12e998384f8aca207b5a2c700, + objectReference: {fileID: 11400000, guid: c10d995498e0c514a853c3506031d3fb, type: 2} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} diff --git a/testproject/Assets/Tests/Manual/PrefabPool/PrefabPoolExample.unity.meta b/testproject/Assets/Samples/PrefabPool/PrefabPoolExample.unity.meta similarity index 100% rename from testproject/Assets/Tests/Manual/PrefabPool/PrefabPoolExample.unity.meta rename to testproject/Assets/Samples/PrefabPool/PrefabPoolExample.unity.meta diff --git a/testproject/Assets/Samples/PrefabPool/PrefabPoolOverrideExample.unity b/testproject/Assets/Samples/PrefabPool/PrefabPoolOverrideExample.unity new file mode 100644 index 0000000000..0b623bc778 --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/PrefabPoolOverrideExample.unity @@ -0,0 +1,1929 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 903034822} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &37242881 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 37242883} + - component: {fileID: 37242882} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &37242882 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37242881} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &37242883 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 37242881} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!224 &42803802 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + m_PrefabInstance: {fileID: 2848221156282925290} + m_PrefabAsset: {fileID: 0} +--- !u!1 &57392470 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 57392474} + - component: {fileID: 57392473} + - component: {fileID: 57392472} + - component: {fileID: 57392471} + m_Layer: 0 + m_Name: Side + m_TagString: Boundary + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &57392471 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 57392470} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &57392472 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 57392470} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 00cf8ac777c8c42e8967157f70fbfcbf, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &57392473 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 57392470} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &57392474 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 57392470} + 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_Children: [] + m_Father: {fileID: 1332123092} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &167044830 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 167044834} + - component: {fileID: 167044833} + - component: {fileID: 167044832} + - component: {fileID: 167044831} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &167044831 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 167044830} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &167044832 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 167044830} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &167044833 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 167044830} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &167044834 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 167044830} + 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_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} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &290861168 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 290861172} + - component: {fileID: 290861171} + - component: {fileID: 290861170} + - component: {fileID: 290861169} + m_Layer: 5 + m_Name: UI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &290861169 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 290861168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &290861170 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 290861168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1024, y: 768} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &290861171 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 290861168} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 575203309} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &290861172 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 290861168} + 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_Children: + - {fileID: 1588117328} + - {fileID: 42803802} + - {fileID: 1834318148} + - {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} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &336568645 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 336568649} + - component: {fileID: 336568648} + - component: {fileID: 336568647} + - component: {fileID: 336568646} + m_Layer: 0 + m_Name: Floor + m_TagString: Floor + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &336568646 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 336568645} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &336568647 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 336568645} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 00cf8ac777c8c42e8967157f70fbfcbf, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &336568648 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 336568645} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &336568649 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 336568645} + 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_Children: [] + m_Father: {fileID: 1332123092} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &575203307 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 575203310} + - component: {fileID: 575203309} + - component: {fileID: 575203308} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &575203308 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 575203307} + m_Enabled: 1 +--- !u!20 &575203309 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 575203307} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &575203310 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 575203307} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 49.530003, y: 0, z: 0} +--- !u!1 &599972120 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 599972121} + - component: {fileID: 599972123} + - component: {fileID: 599972122} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &599972121 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599972120} + 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: 1588117328} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &599972122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599972120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.5058824, b: 0.003921569, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Show Server Stats +--- !u!222 &599972123 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599972120} + m_CullTransparentMesh: 1 +--- !u!850595691 &903034822 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + serializedVersion: 3 + 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_TextureCompression: 1 + 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: 1 + m_PVREnvironmentMIS: 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 +--- !u!1 &1024114717 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1024114720} + - component: {fileID: 1024114719} + - component: {fileID: 1024114718} + m_Layer: 0 + m_Name: NetworkManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1024114718 +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: 593a2fe42fa9d37498c96f9a383b6521, type: 3} + m_Name: + m_EditorClassIdentifier: + DontDestroy: 1 + RunInBackground: 1 + LogLevel: 1 + NetworkConfig: + ProtocolVersion: 0 + NetworkTransport: {fileID: 1024114719} + RegisteredScenes: + - PrefabPoolExample + - PrefabPoolOverrideExample + AllowRuntimeSceneChanges: 0 + PlayerPrefab: {fileID: 4079352819444256614, guid: c16f03336b6104576a565ef79ad643c0, + type: 3} + NetworkPrefabs: + - Override: 0 + Prefab: {fileID: 771575417923360811, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + SourcePrefabToOverride: {fileID: 771575417923360811, guid: c0a45bdb516f341498d933b7a7ed4fc1, + type: 3} + SourceHashToOverride: 0 + OverridingTargetPrefab: {fileID: 8059323910720821982, guid: d143db9172e1f234e99d450286b77695, + type: 3} + TickRate: 30 + ClientConnectionBufferTimeout: 10 + ConnectionApproval: 0 + ConnectionData: + EnableTimeResync: 0 + TimeResyncInterval: 30 + EnableNetworkVariable: 1 + EnsureNetworkVariableLengthSafety: 0 + EnableSceneManagement: 1 + ForceSamePrefabs: 1 + RecycleNetworkIds: 1 + NetworkIdRecycleDelay: 120 + RpcHashSize: 0 + LoadSceneTimeOut: 120 + MessageBufferTimeout: 20 + 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 + ServerWebsocketListenPort: 8887 + SupportWebsocket: 0 + Channels: [] + UseMLAPIRelay: 0 + MLAPIRelayAddress: 184.72.104.138 + MLAPIRelayPort: 8888 + MessageSendMode: 0 +--- !u!4 &1024114720 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1024114717} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1113539278 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1113539280} + - component: {fileID: 1113539281} + - component: {fileID: 1113539279} + m_Layer: 0 + m_Name: PrefabPoolOverride + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1113539279 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1113539278} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e75c6dd7d88b8ef47bc652a967fa34eb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ObjectToOverride: {fileID: 771575417923360811, guid: 29cabf623d47bb345a9bb4140e4397d7, + type: 3} + m_ObjectOverrides: + - {fileID: 4767891739022460405, guid: e32c8adee7794ee4c8db34d79e98821e, type: 3} + - {fileID: 7458914543545669181, guid: cebc356e89448a948922c0f95549ebf3, type: 3} + - {fileID: 1991364468704639885, guid: 2ab098de4ccb3a8459b88084b29fd0ac, type: 3} + - {fileID: 6137946741893414299, guid: d2bccc96d1636264fa43b546a1b617c3, type: 3} + m_ObjectPoolSize: 15 + m_SpawnsPerSecond: 2 +--- !u!4 &1113539280 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1113539278} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1113539281 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1113539278} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 3569926023 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!1 &1332123091 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1332123092} + m_Layer: 0 + m_Name: Level + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1332123092 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1332123091} + 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_Children: + - {fileID: 336568649} + - {fileID: 2028091272} + - {fileID: 1857685347} + - {fileID: 57392474} + - {fileID: 1336081255} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1336081251 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1336081255} + - component: {fileID: 1336081254} + - component: {fileID: 1336081253} + - component: {fileID: 1336081252} + m_Layer: 0 + m_Name: Side + m_TagString: Boundary + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1336081252 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1336081251} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1336081253 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1336081251} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 00cf8ac777c8c42e8967157f70fbfcbf, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1336081254 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1336081251} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1336081255 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1336081251} + 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_Children: [] + m_Father: {fileID: 1332123092} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1383741137 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1383741138} + - component: {fileID: 1383741140} + - component: {fileID: 1383741139} + m_Layer: 5 + m_Name: SceneName + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1383741138 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1383741137} + 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: 290861172} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -139.70001, y: 45.59999} + m_SizeDelta: {x: 250, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1383741139 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1383741137} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.990566, g: 0.990566, b: 0.990566, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Prefab Pool Override Example +--- !u!222 &1383741140 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1383741137} + m_CullTransparentMesh: 0 +--- !u!1 &1588117327 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1588117328} + - component: {fileID: 1588117331} + - component: {fileID: 1588117330} + - component: {fileID: 1588117329} + m_Layer: 5 + m_Name: ToggleClientServerStats + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1588117328 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1588117327} + 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: + - {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} + m_AnchoredPosition: {x: 130, y: 51} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1588117329 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1588117327} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1588117330} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2107482022} + m_TargetAssemblyTypeName: StatsDisplay, Assembly-CSharp + m_MethodName: ToggleClientSever + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1588117330 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1588117327} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1981132, g: 0.1981132, b: 0.1981132, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1588117331 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1588117327} + m_CullTransparentMesh: 1 +--- !u!1 &1834318145 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1834318148} + - component: {fileID: 1834318147} + - component: {fileID: 1834318146} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1834318146 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1834318145} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1834318147 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1834318145} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &1834318148 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1834318145} + 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_Children: [] + m_Father: {fileID: 290861172} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1857685343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1857685347} + - component: {fileID: 1857685346} + - component: {fileID: 1857685345} + - component: {fileID: 1857685344} + m_Layer: 0 + m_Name: Side + m_TagString: Boundary + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1857685344 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1857685343} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1857685345 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1857685343} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 00cf8ac777c8c42e8967157f70fbfcbf, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1857685346 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1857685343} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1857685347 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1857685343} + 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_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: + m_TransformParent: {fileID: 167044834} + m_Modifications: + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_SizeDelta.x + value: -952 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_SizeDelta.y + value: -344 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6963777608485144162, guid: d725b5588e1b956458798319e6541d84, + type: 3} + propertyPath: m_Name + value: ConnectionModeButtons + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: d725b5588e1b956458798319e6541d84, type: 3} +--- !u!224 &1865409449 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 6633621479308595792, guid: d725b5588e1b956458798319e6541d84, + type: 3} + m_PrefabInstance: {fileID: 1865409448} + m_PrefabAsset: {fileID: 0} +--- !u!1 &2028091268 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2028091272} + - component: {fileID: 2028091271} + - component: {fileID: 2028091270} + - component: {fileID: 2028091269} + m_Layer: 0 + m_Name: Side + m_TagString: Boundary + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &2028091269 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2028091268} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &2028091270 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2028091268} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 00cf8ac777c8c42e8967157f70fbfcbf, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2028091271 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2028091268} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2028091272 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2028091268} + 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_Children: [] + m_Father: {fileID: 1332123092} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2107482020 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2107482021} + - component: {fileID: 2107482022} + - component: {fileID: 2107482023} + m_Layer: 0 + m_Name: Stats + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2107482021 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2107482020} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2107482022 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2107482020} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cb5f3e55f5dd247129d8a4979b80ebbb, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ClientServerToggle: {fileID: 1588117327} +--- !u!114 &2107482023 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2107482020} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 4056472094 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!1001 &2848221156282925290 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 290861172} + m_Modifications: + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_AnchorMin.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_SizeDelta.x + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_SizeDelta.y + value: 25 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_AnchoredPosition.x + value: -23.40039 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -23.800293 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247792, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2848221156307247795, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_Name + value: ExitButton + objectReference: {fileID: 0} + - target: {fileID: 5266522511616468950, guid: 3200770c16e3b2b4ebe7f604154faac7, + type: 3} + propertyPath: m_SceneMenuToLoad + value: + objectReference: {fileID: 11400000, guid: c10d995498e0c514a853c3506031d3fb, + type: 2} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3200770c16e3b2b4ebe7f604154faac7, type: 3} diff --git a/testproject/Assets/Samples/PrefabPool/PrefabPoolOverrideExample.unity.meta b/testproject/Assets/Samples/PrefabPool/PrefabPoolOverrideExample.unity.meta new file mode 100644 index 0000000000..e905ff676a --- /dev/null +++ b/testproject/Assets/Samples/PrefabPool/PrefabPoolOverrideExample.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8c9bee1332e0526429d8a2c929945d60 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SamplesMenu.unity b/testproject/Assets/Samples/SamplesMenu.unity index 8a2a70878f..6fe81d20a1 100644 --- a/testproject/Assets/Samples/SamplesMenu.unity +++ b/testproject/Assets/Samples/SamplesMenu.unity @@ -2496,6 +2496,8 @@ MonoBehaviour: m_EditorClassIdentifier: m_SceneMenus: - {fileID: 11400000, guid: 21aae92071ad50448a45b013d8346639, type: 2} + - {fileID: 11400000, guid: 660535b6e155b5b4bbede52313fcb32e, type: 2} + - {fileID: 11400000, guid: d2e34ed37c087154dbd7f89fd463801b, type: 2} - {fileID: 11400000, guid: 138603ab28f532140b48a57bea0e54b0, type: 2} m_SceneMenusDropDownList: {fileID: 1362704539} m_OptionsList: diff --git a/testproject/Assets/Tests/Manual/ManualTestsMenu.unity b/testproject/Assets/Tests/Manual/ManualTestsMenu.unity index c81d1c4367..cfa371e60d 100644 --- a/testproject/Assets/Tests/Manual/ManualTestsMenu.unity +++ b/testproject/Assets/Tests/Manual/ManualTestsMenu.unity @@ -914,7 +914,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_SceneMenus: - - {fileID: 11400000, guid: 660535b6e155b5b4bbede52313fcb32e, type: 2} - {fileID: 11400000, guid: d8c6d81e6a2574f4aa66a10aeb02f946, type: 2} - {fileID: 11400000, guid: 50c51a066c0971b49ab65929d5ba9630, type: 2} - {fileID: 11400000, guid: eb84694ca0950574981c9544bf99a552, type: 2} diff --git a/testproject/Assets/Tests/Manual/Scripts/NetworkPrefabPool.cs b/testproject/Assets/Tests/Manual/Scripts/NetworkPrefabPool.cs index fd1d7263e9..362e42b098 100644 --- a/testproject/Assets/Tests/Manual/Scripts/NetworkPrefabPool.cs +++ b/testproject/Assets/Tests/Manual/Scripts/NetworkPrefabPool.cs @@ -261,6 +261,7 @@ private GameObject AddNewInstance() var genericNetworkObjectBehaviour = obj.GetComponent(); genericNetworkObjectBehaviour.HasHandler = EnableHandler; m_ObjectPool.Add(obj); + return m_ObjectPool[m_ObjectPool.Count - 1]; return obj; } diff --git a/testproject/ProjectSettings/EditorBuildSettings.asset b/testproject/ProjectSettings/EditorBuildSettings.asset index 2c568d76ed..019bfe7fbe 100644 --- a/testproject/ProjectSettings/EditorBuildSettings.asset +++ b/testproject/ProjectSettings/EditorBuildSettings.asset @@ -51,6 +51,9 @@ EditorBuildSettings: path: Assets/Scenes/EmptyScene.unity guid: a2545a872c007404fbb6b0393ab74974 - enabled: 1 - path: Assets/Tests/Manual/PrefabPool/PrefabPoolExample.unity + path: Assets/Samples/PrefabPool/PrefabPoolExample.unity guid: e4732b28c18f52c4dbe06c8a37f7997f + - enabled: 1 + path: Assets/Samples/PrefabPool/PrefabPoolOverrideExample.unity + guid: 8c9bee1332e0526429d8a2c929945d60 m_configObjects: {} From 00c62b491eac8321c016a66c3f1de2ad7a046cc3 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Sun, 1 Aug 2021 16:26:57 -0500 Subject: [PATCH 2/8] refactor Handling multiple overrides with additional NetworkObjectLabel to help with identification of NetworkObjects spawned. Moved some of the assets into more appropriate folders. --- ...bjectToOverride-VariantBlueCylinder.prefab | 0 ...ToOverride-VariantBlueCylinder.prefab.meta | 0 ...bjectToOverride-VariantOrangeSphere.prefab | 0 ...ToOverride-VariantOrangeSphere.prefab.meta | 0 .../ObjectToOverride-VariantPink.prefab | 0 .../ObjectToOverride-VariantPink.prefab.meta | 0 .../ObjectToOverride-VariantRedCapsule.prefab | 0 ...ctToOverride-VariantRedCapsule.prefab.meta | 0 .../ObjectToOverride.prefab | 0 .../ObjectToOverride.prefab.meta | 0 .../GenericPooledObjectBehaviour.cs | 54 +++++++++++---- .../NetworkPrefabHandlerObjectPool.cs | 9 ++- .../NetworkPrefabHandlerObjectPoolOverride.cs | 69 +++++++++++++++++-- .../PrefabPoolOverrideExample.unity | 1 + .../NetworkObjectLabel.cs | 28 +++++++- .../NetworkObjectLabel.cs.meta | 0 16 files changed, 139 insertions(+), 22 deletions(-) rename testproject/Assets/{Samples/PrefabPool => Prefabs}/ObjectToOverride-VariantBlueCylinder.prefab (100%) rename testproject/Assets/{Samples/PrefabPool => Prefabs}/ObjectToOverride-VariantBlueCylinder.prefab.meta (100%) rename testproject/Assets/{Samples/PrefabPool => Prefabs}/ObjectToOverride-VariantOrangeSphere.prefab (100%) rename testproject/Assets/{Samples/PrefabPool => Prefabs}/ObjectToOverride-VariantOrangeSphere.prefab.meta (100%) rename testproject/Assets/{Samples/PrefabPool => Prefabs}/ObjectToOverride-VariantPink.prefab (100%) rename testproject/Assets/{Samples/PrefabPool => Prefabs}/ObjectToOverride-VariantPink.prefab.meta (100%) rename testproject/Assets/{Samples/PrefabPool => Prefabs}/ObjectToOverride-VariantRedCapsule.prefab (100%) rename testproject/Assets/{Samples/PrefabPool => Prefabs}/ObjectToOverride-VariantRedCapsule.prefab.meta (100%) rename testproject/Assets/{Samples/PrefabPool => Prefabs}/ObjectToOverride.prefab (100%) rename testproject/Assets/{Samples/PrefabPool => Prefabs}/ObjectToOverride.prefab.meta (100%) rename testproject/Assets/{Samples/PrefabPool => Scripts}/NetworkObjectLabel.cs (55%) rename testproject/Assets/{Samples/PrefabPool => Scripts}/NetworkObjectLabel.cs.meta (100%) diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantBlueCylinder.prefab b/testproject/Assets/Prefabs/ObjectToOverride-VariantBlueCylinder.prefab similarity index 100% rename from testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantBlueCylinder.prefab rename to testproject/Assets/Prefabs/ObjectToOverride-VariantBlueCylinder.prefab diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantBlueCylinder.prefab.meta b/testproject/Assets/Prefabs/ObjectToOverride-VariantBlueCylinder.prefab.meta similarity index 100% rename from testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantBlueCylinder.prefab.meta rename to testproject/Assets/Prefabs/ObjectToOverride-VariantBlueCylinder.prefab.meta diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantOrangeSphere.prefab b/testproject/Assets/Prefabs/ObjectToOverride-VariantOrangeSphere.prefab similarity index 100% rename from testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantOrangeSphere.prefab rename to testproject/Assets/Prefabs/ObjectToOverride-VariantOrangeSphere.prefab diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantOrangeSphere.prefab.meta b/testproject/Assets/Prefabs/ObjectToOverride-VariantOrangeSphere.prefab.meta similarity index 100% rename from testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantOrangeSphere.prefab.meta rename to testproject/Assets/Prefabs/ObjectToOverride-VariantOrangeSphere.prefab.meta diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantPink.prefab b/testproject/Assets/Prefabs/ObjectToOverride-VariantPink.prefab similarity index 100% rename from testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantPink.prefab rename to testproject/Assets/Prefabs/ObjectToOverride-VariantPink.prefab diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantPink.prefab.meta b/testproject/Assets/Prefabs/ObjectToOverride-VariantPink.prefab.meta similarity index 100% rename from testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantPink.prefab.meta rename to testproject/Assets/Prefabs/ObjectToOverride-VariantPink.prefab.meta diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantRedCapsule.prefab b/testproject/Assets/Prefabs/ObjectToOverride-VariantRedCapsule.prefab similarity index 100% rename from testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantRedCapsule.prefab rename to testproject/Assets/Prefabs/ObjectToOverride-VariantRedCapsule.prefab diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantRedCapsule.prefab.meta b/testproject/Assets/Prefabs/ObjectToOverride-VariantRedCapsule.prefab.meta similarity index 100% rename from testproject/Assets/Samples/PrefabPool/ObjectToOverride-VariantRedCapsule.prefab.meta rename to testproject/Assets/Prefabs/ObjectToOverride-VariantRedCapsule.prefab.meta diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride.prefab b/testproject/Assets/Prefabs/ObjectToOverride.prefab similarity index 100% rename from testproject/Assets/Samples/PrefabPool/ObjectToOverride.prefab rename to testproject/Assets/Prefabs/ObjectToOverride.prefab diff --git a/testproject/Assets/Samples/PrefabPool/ObjectToOverride.prefab.meta b/testproject/Assets/Prefabs/ObjectToOverride.prefab.meta similarity index 100% rename from testproject/Assets/Samples/PrefabPool/ObjectToOverride.prefab.meta rename to testproject/Assets/Prefabs/ObjectToOverride.prefab.meta diff --git a/testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs b/testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs index eca42b4113..0bff241b64 100644 --- a/testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs +++ b/testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs @@ -1,8 +1,10 @@ -using MLAPI; using UnityEngine; +using MLAPI; +using MLAPI.NetworkVariable; + /// -/// A general object that can be used for testing purposes +/// A general object used for pooling purposes /// public class GenericPooledObjectBehaviour : NetworkBehaviour { @@ -10,10 +12,18 @@ public class GenericPooledObjectBehaviour : NetworkBehaviour [Tooltip("This will make the spawned objects move around randomly. !Caution! You can generate a lot of objects this way!")] private bool m_MoveRandomly = true; + [HideInInspector] + public bool HasHandler; + + [HideInInspector] + public int SyncrhonizedObjectTypeIndex; + private Rigidbody m_RigidBody; private MeshRenderer m_MeshRenderer; private Vector3 m_Direction; private float m_Velocity; + private float m_VisibilitySpawn; + private bool m_ShouldDespawn; private void Start() { @@ -21,6 +31,8 @@ private void Start() m_MeshRenderer = GetComponent(); } + + /// /// Handles disabling the MeshRenderer when the client despawns a NetworkObject /// @@ -37,11 +49,18 @@ public override void OnNetworkDespawn() { m_MeshRenderer.enabled = false; } + + var objectLabel = GetComponentInChildren(); + if (objectLabel != null) + { + objectLabel.enabled = false; + } } + base.OnNetworkDespawn(); } - private float m_VisibilitySpawn; + /// /// Handles setting a delay before the newly spawned object is visible /// Note: this might get removed once the snapshot system is synchronizing @@ -56,11 +75,13 @@ public override void OnNetworkSpawn() m_MeshRenderer = GetComponent(); } m_MeshRenderer.enabled = false; - m_VisibilitySpawn = Time.realtimeSinceStartup + 0.12f; - if (NetworkObject.NetworkObjectId == 0) + var objectLabel = GetComponentInChildren(); + if (objectLabel != null) { - Debug.Log("Spawning NetworkObjectId 0!"); + objectLabel.enabled = false; } + + m_VisibilitySpawn = Time.realtimeSinceStartup + 0.12f; } base.OnNetworkSpawn(); } @@ -98,6 +119,7 @@ private void FixedUpdate() } else { + // All of the below is strictly for debugging purposes. None of these conditions should ever be true. if (NetworkObject != null && !NetworkObject.isActiveAndEnabled) { Debug.LogWarning($"{nameof(GenericPooledObjectBehaviour)} id {NetworkObject.NetworkObjectId} is not active and enabled but game object is still active!"); @@ -105,14 +127,16 @@ private void FixedUpdate() if (NetworkObject != null && !NetworkObject.IsSpawned) { - Debug.LogWarning($"{nameof(GenericPooledObjectBehaviour)} id {NetworkObject.NetworkObjectId} is not spawned but still active and enabled"); + Debug.LogWarning($"{nameof(GenericPooledObjectBehaviour)} id {NetworkObject.NetworkObjectId} is not spawned but still active and enabled (forcing set active false)"); gameObject.SetActive(false); } } } } - + /// + /// This update handles server side despawning and enables client side visibility + /// private void Update() { if (IsOwner && m_ShouldDespawn && NetworkObject != null) @@ -136,17 +160,23 @@ private void Update() if (m_VisibilitySpawn < Time.realtimeSinceStartup) { m_MeshRenderer.enabled = true; + var objectLabel = GetComponentInChildren(); + if (objectLabel != null) + { + objectLabel.enabled = true; + } } } } } - [HideInInspector] - public bool HasHandler; - - private bool m_ShouldDespawn; + /// + /// Host and Server Only: + /// When triggered this will start the despawn process + /// + /// private void OnTriggerEnter(Collider other) { if (IsOwner && gameObject.activeInHierarchy) diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs index fbcbf68332..6d8dacdc4b 100644 --- a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using UnityEngine; using MLAPI; +using MLAPI.Serialization.Pooled; using MLAPI.Spawning; public class NetworkPrefabHandlerObjectPool : NetworkBehaviour, INetworkPrefabInstanceHandler @@ -27,8 +28,12 @@ public override void OnNetworkSpawn() NetworkManager.PrefabHandler.AddHandler(m_ObjectToPool, this); } - // Makes sure we have the right prefab - m_ObjectToPool = NetworkManager.GetNetworkPrefabOverride(m_ObjectToPool); + // This assures we have the right prefab + if (IsClient) + { + m_ObjectToPool = NetworkManager.GetNetworkPrefabOverride(m_ObjectToPool); + } + if (m_ObjectToPool != null) { m_ObjectsPool = new List(); diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs index e2ccabf9c4..0da9303dea 100644 --- a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs @@ -3,7 +3,17 @@ using UnityEngine; using MLAPI; using MLAPI.Spawning; - +using MLAPI.Serialization; +using MLAPI.Serialization.Pooled; + +/// +/// This is an example of using more than one Network Prefab override when using a custom handler +/// USAGE NOTE: When using more than one network prefab, it is important to understand that each +/// client determines what prefab they will be using and will not be synchronized across other clients. +/// This feature is primarily to be used for things like platform specific Network Prefabs where +/// things like collision models or graphics related assets need to be used. The usage of different +/// visual assets used is strictly for example purposes. +/// public class NetworkPrefabHandlerObjectPoolOverride : NetworkBehaviour, INetworkPrefabInstanceHandler { private GameObject m_ObjectToPool; @@ -17,6 +27,9 @@ public class NetworkPrefabHandlerObjectPoolOverride : NetworkBehaviour, INetwork [SerializeField] private int m_ObjectPoolSize = 15; + [SerializeField] + private bool m_SynchronizeOverrides; + [SerializeField] [Range(1, 5)] private int m_SpawnsPerSecond = 2; @@ -59,8 +72,8 @@ public override void OnNetworkSpawn() { // If we are a server, then we just create a big pool of the same base override object // otherwise for Host and Client we use the list of object overrides - var objectIndex = IsServer && !IsHost ? 0 : x; - var objectToPool = IsServer && !IsHost ? m_ObjectToOverride : m_ObjectOverrides[x]; + var objectIndex = (IsServer && !IsHost) ? 0 : x; + var objectToPool = (IsServer && !IsHost) ? m_ObjectToOverride : m_ObjectOverrides[objectIndex]; if (!m_ObjectsPool.ContainsKey(objectIndex)) { @@ -89,7 +102,7 @@ public override void OnNetworkSpawn() } } - private GameObject GetNextSpawnObject() + private GameObject GetNextSpawnObject(int synchronizedIndex = -1) { // If we are just a server use index 0, otherwise we are a host or client so get a random override object to spawn var indexType = IsServer && !IsHost ? 0 : Random.Range(0, m_ObjectOverrides.Count - 1); @@ -103,8 +116,13 @@ private GameObject GetNextSpawnObject() return gameObject; } } - //We are out of objects, expand our pool by 1 more NetworkObject - var newObject = Instantiate(m_ObjectOverrides[indexType]); + // We are out of objects, get the type of object we need to instantiate and add to the pool + var objectToPool = (IsServer && !IsHost) ? m_ObjectToOverride : m_ObjectOverrides[indexType]; + + // Expand our pool by 1 more NetworkObject + var newObject = Instantiate(objectToPool); + var genericObjectPooledBehaviour = NetworkObject.GetComponent(); + genericObjectPooledBehaviour.SyncrhonizedObjectTypeIndex = (IsServer && !IsHost) ? Random.Range(0, m_ObjectOverrides.Count - 1) : indexType; m_ObjectsPool[indexType].Add(newObject); return newObject; } @@ -112,6 +130,18 @@ private GameObject GetNextSpawnObject() return null; } + public void OnSynchronizeWrite(NetworkWriter networkWriter, NetworkObject networkObject) + { + var genericObjectPooledBehaviour = NetworkObject.GetComponent(); + networkWriter.WriteInt32Packed(genericObjectPooledBehaviour.SyncrhonizedObjectTypeIndex); + } + + private int m_UseSynchronizedIndexValue = -1; + public void OnSynchronizeRead(NetworkReader networkReader) + { + m_UseSynchronizedIndexValue = networkReader.ReadInt32Packed(); + } + public NetworkObject Instantiate(ulong ownerClientId, Vector3 position, Quaternion rotation) { var gameObject = GetNextSpawnObject(); @@ -129,6 +159,8 @@ public void Destroy(NetworkObject networkObject) } } + + /// /// Spawns the objects. /// @@ -144,6 +176,16 @@ private IEnumerator SpawnObjects() m_IsSpawningObjects = true; var entitySpawnUpdateRate = 1.0f; + + var networkBuffer = (NetworkBuffer)null; + var networkWriter = (PooledNetworkWriter)null; + + if(m_SynchronizeOverrides) + { + networkBuffer = new NetworkBuffer(2); + networkWriter = PooledNetworkWriter.Get(networkBuffer); + } + while (m_IsSpawningObjects) { entitySpawnUpdateRate = 1.0f / (float)m_SpawnsPerSecond; @@ -160,11 +202,24 @@ private IEnumerator SpawnObjects() var no = go.GetComponent(); if (!no.IsSpawned) { - no.Spawn(null, true); + if (m_SynchronizeOverrides) + { + networkBuffer.Position = 0; + var genericObjectPooledBehaviour = no.GetComponent(); + networkWriter.WriteInt32Packed(genericObjectPooledBehaviour.SyncrhonizedObjectTypeIndex); + } + no.Spawn(networkBuffer, true); } } yield return new WaitForSeconds(entitySpawnUpdateRate); } + + if (m_SynchronizeOverrides) + { + NetworkWriterPool.PutBackInPool(networkWriter); + networkBuffer.Dispose(); + } + } } diff --git a/testproject/Assets/Samples/PrefabPool/PrefabPoolOverrideExample.unity b/testproject/Assets/Samples/PrefabPool/PrefabPoolOverrideExample.unity index 0b623bc778..ec140fb1aa 100644 --- a/testproject/Assets/Samples/PrefabPool/PrefabPoolOverrideExample.unity +++ b/testproject/Assets/Samples/PrefabPool/PrefabPoolOverrideExample.unity @@ -984,6 +984,7 @@ MonoBehaviour: - {fileID: 1991364468704639885, guid: 2ab098de4ccb3a8459b88084b29fd0ac, type: 3} - {fileID: 6137946741893414299, guid: d2bccc96d1636264fa43b546a1b617c3, type: 3} m_ObjectPoolSize: 15 + m_SynchronizeOverrides: 1 m_SpawnsPerSecond: 2 --- !u!4 &1113539280 Transform: diff --git a/testproject/Assets/Samples/PrefabPool/NetworkObjectLabel.cs b/testproject/Assets/Scripts/NetworkObjectLabel.cs similarity index 55% rename from testproject/Assets/Samples/PrefabPool/NetworkObjectLabel.cs rename to testproject/Assets/Scripts/NetworkObjectLabel.cs index 4b3c24add7..23ad6134d5 100644 --- a/testproject/Assets/Samples/PrefabPool/NetworkObjectLabel.cs +++ b/testproject/Assets/Scripts/NetworkObjectLabel.cs @@ -5,6 +5,33 @@ public class NetworkObjectLabel : NetworkBehaviour { private TextMesh m_ObjectLabel; + private MeshRenderer m_Renderer; + + private void OnEnable() + { + if (m_Renderer == null) + { + m_Renderer = GetComponent(); + } + + if(m_Renderer != null) + { + m_Renderer.enabled = true; + } + } + + private void OnDisable() + { + if (m_Renderer == null) + { + m_Renderer = GetComponent(); + } + + if (m_Renderer != null) + { + m_Renderer.enabled = false; + } + } public override void OnNetworkSpawn() { @@ -29,5 +56,4 @@ public override void OnNetworkDespawn() base.OnNetworkDespawn(); } - } diff --git a/testproject/Assets/Samples/PrefabPool/NetworkObjectLabel.cs.meta b/testproject/Assets/Scripts/NetworkObjectLabel.cs.meta similarity index 100% rename from testproject/Assets/Samples/PrefabPool/NetworkObjectLabel.cs.meta rename to testproject/Assets/Scripts/NetworkObjectLabel.cs.meta From 79975c4ee46799c52391d5fadf83661c543d46f1 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Sun, 1 Aug 2021 16:32:18 -0500 Subject: [PATCH 3/8] style Minor update in the description for NetworkPrefabHandlerObjectPoolOverride. --- .../PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs index 0da9303dea..b98679332c 100644 --- a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs @@ -11,8 +11,8 @@ /// USAGE NOTE: When using more than one network prefab, it is important to understand that each /// client determines what prefab they will be using and will not be synchronized across other clients. /// This feature is primarily to be used for things like platform specific Network Prefabs where -/// things like collision models or graphics related assets need to be used. The usage of different -/// visual assets used is strictly for example purposes. +/// things like collision models or graphics related assets might need to vary between platforms. +/// The usage of different visual assets used is strictly for example purposes only. /// public class NetworkPrefabHandlerObjectPoolOverride : NetworkBehaviour, INetworkPrefabInstanceHandler { From ef971e13d2bc25117a1bfab2f1decf24e743a370 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Sun, 1 Aug 2021 16:56:43 -0500 Subject: [PATCH 4/8] refactor removing unused namespace. --- .../Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs index 6d8dacdc4b..91f9df46cb 100644 --- a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using UnityEngine; using MLAPI; -using MLAPI.Serialization.Pooled; using MLAPI.Spawning; public class NetworkPrefabHandlerObjectPool : NetworkBehaviour, INetworkPrefabInstanceHandler From 7a160a96837ca18d47bbc58a68a3b89550566706 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Mon, 2 Aug 2021 11:43:37 -0500 Subject: [PATCH 5/8] refactor Removing unused code. --- .../NetworkPrefabHandlerObjectPoolOverride.cs | 35 +------------------ 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs index b98679332c..f889802c85 100644 --- a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs @@ -27,9 +27,6 @@ public class NetworkPrefabHandlerObjectPoolOverride : NetworkBehaviour, INetwork [SerializeField] private int m_ObjectPoolSize = 15; - [SerializeField] - private bool m_SynchronizeOverrides; - [SerializeField] [Range(1, 5)] private int m_SpawnsPerSecond = 2; @@ -136,12 +133,6 @@ public void OnSynchronizeWrite(NetworkWriter networkWriter, NetworkObject networ networkWriter.WriteInt32Packed(genericObjectPooledBehaviour.SyncrhonizedObjectTypeIndex); } - private int m_UseSynchronizedIndexValue = -1; - public void OnSynchronizeRead(NetworkReader networkReader) - { - m_UseSynchronizedIndexValue = networkReader.ReadInt32Packed(); - } - public NetworkObject Instantiate(ulong ownerClientId, Vector3 position, Quaternion rotation) { var gameObject = GetNextSpawnObject(); @@ -159,8 +150,6 @@ public void Destroy(NetworkObject networkObject) } } - - /// /// Spawns the objects. /// @@ -177,15 +166,6 @@ private IEnumerator SpawnObjects() var entitySpawnUpdateRate = 1.0f; - var networkBuffer = (NetworkBuffer)null; - var networkWriter = (PooledNetworkWriter)null; - - if(m_SynchronizeOverrides) - { - networkBuffer = new NetworkBuffer(2); - networkWriter = PooledNetworkWriter.Get(networkBuffer); - } - while (m_IsSpawningObjects) { entitySpawnUpdateRate = 1.0f / (float)m_SpawnsPerSecond; @@ -202,24 +182,11 @@ private IEnumerator SpawnObjects() var no = go.GetComponent(); if (!no.IsSpawned) { - if (m_SynchronizeOverrides) - { - networkBuffer.Position = 0; - var genericObjectPooledBehaviour = no.GetComponent(); - networkWriter.WriteInt32Packed(genericObjectPooledBehaviour.SyncrhonizedObjectTypeIndex); - } - no.Spawn(networkBuffer, true); + no.Spawn(null,true); } } yield return new WaitForSeconds(entitySpawnUpdateRate); } - - if (m_SynchronizeOverrides) - { - NetworkWriterPool.PutBackInPool(networkWriter); - networkBuffer.Dispose(); - } - } } From f9d4969a0b6e3b4ee9ab5dbbd2ee90b6f3771a3f Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Mon, 2 Aug 2021 11:49:13 -0500 Subject: [PATCH 6/8] style removing unused namespace and additional NL. --- .../Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs | 1 - .../Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs | 1 - 2 files changed, 2 deletions(-) diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs index 91f9df46cb..2dd2bc0390 100644 --- a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs @@ -118,5 +118,4 @@ private IEnumerator SpawnObjects() yield return new WaitForSeconds(entitySpawnUpdateRate); } } - } diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs index f889802c85..df45acc926 100644 --- a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs @@ -4,7 +4,6 @@ using MLAPI; using MLAPI.Spawning; using MLAPI.Serialization; -using MLAPI.Serialization.Pooled; /// /// This is an example of using more than one Network Prefab override when using a custom handler From 229e476d911b7c4bde315a331a63db4f7e26987d Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Mon, 2 Aug 2021 14:04:37 -0500 Subject: [PATCH 7/8] fix removing payload stream parameter that got removed from previous develop branch merge. --- .../Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs | 2 +- .../PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs index 2dd2bc0390..22acbd6e39 100644 --- a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs @@ -112,7 +112,7 @@ private IEnumerator SpawnObjects() var no = go.GetComponent(); if (!no.IsSpawned) { - no.Spawn(null, true); + no.Spawn(true); } } yield return new WaitForSeconds(entitySpawnUpdateRate); diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs index df45acc926..6ae67b146f 100644 --- a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs @@ -181,7 +181,7 @@ private IEnumerator SpawnObjects() var no = go.GetComponent(); if (!no.IsSpawned) { - no.Spawn(null,true); + no.Spawn(true); } } yield return new WaitForSeconds(entitySpawnUpdateRate); From c180f669bd767a8c7eada3c2461e40f4fd31336b Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Tue, 3 Aug 2021 17:15:06 -0500 Subject: [PATCH 8/8] fix fixing merge issues with namespace changes. --- .../Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs | 3 +-- .../Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs | 3 +-- .../PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs | 4 +--- testproject/Assets/Scripts/NetworkObjectLabel.cs | 2 +- testproject/Assets/Tests/Manual/Scripts/NetworkPrefabPool.cs | 1 - 5 files changed, 4 insertions(+), 9 deletions(-) diff --git a/testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs b/testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs index 0bff241b64..3828a66dcd 100644 --- a/testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs +++ b/testproject/Assets/Samples/PrefabPool/GenericPooledObjectBehaviour.cs @@ -1,6 +1,5 @@ using UnityEngine; -using MLAPI; -using MLAPI.NetworkVariable; +using Unity.Multiplayer.Netcode; /// diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs index 22acbd6e39..eecba0456a 100644 --- a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPool.cs @@ -1,8 +1,7 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; -using MLAPI; -using MLAPI.Spawning; +using Unity.Multiplayer.Netcode; public class NetworkPrefabHandlerObjectPool : NetworkBehaviour, INetworkPrefabInstanceHandler { diff --git a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs index 6ae67b146f..b2af5b2e5a 100644 --- a/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs +++ b/testproject/Assets/Samples/PrefabPool/NetworkPrefabHandlerObjectPoolOverride.cs @@ -1,9 +1,7 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; -using MLAPI; -using MLAPI.Spawning; -using MLAPI.Serialization; +using Unity.Multiplayer.Netcode; /// /// This is an example of using more than one Network Prefab override when using a custom handler diff --git a/testproject/Assets/Scripts/NetworkObjectLabel.cs b/testproject/Assets/Scripts/NetworkObjectLabel.cs index 23ad6134d5..a341e8e43a 100644 --- a/testproject/Assets/Scripts/NetworkObjectLabel.cs +++ b/testproject/Assets/Scripts/NetworkObjectLabel.cs @@ -1,5 +1,5 @@ using UnityEngine; -using MLAPI; +using Unity.Multiplayer.Netcode; public class NetworkObjectLabel : NetworkBehaviour { diff --git a/testproject/Assets/Tests/Manual/Scripts/NetworkPrefabPool.cs b/testproject/Assets/Tests/Manual/Scripts/NetworkPrefabPool.cs index f43e109dda..cad77d77b0 100644 --- a/testproject/Assets/Tests/Manual/Scripts/NetworkPrefabPool.cs +++ b/testproject/Assets/Tests/Manual/Scripts/NetworkPrefabPool.cs @@ -261,7 +261,6 @@ private GameObject AddNewInstance() genericNetworkObjectBehaviour.HasHandler = EnableHandler; m_ObjectPool.Add(obj); return m_ObjectPool[m_ObjectPool.Count - 1]; - return obj; } ///