Esempio n. 1
0
        public void ConvertToUnityObjectOverride(List <RuntimePrefabPropertyOverride> list, int i, SerializationMetadata metadata)
        {
            var objectReference = m_Value;
            var guid            = objectReference.guid;

            if (!string.IsNullOrEmpty(guid))
            {
                list[i] = new RuntimePrefabOverrideUnityObject(PropertyPath, TransformPath, ComponentIndex,
                                                               UnityObjectReference.GetAsset(guid, objectReference.fileId, metadata.AssetPack));

                return;
            }

            list[i] = null;
            var sceneId = objectReference.sceneID;

            if (sceneId == SerializationMetadata.InvalidID)
            {
                return;
            }

            var index = i;

            metadata.EnqueuePostSerializationAction(() =>
            {
                list[index] = new RuntimePrefabOverrideUnityObject(PropertyPath, TransformPath, ComponentIndex,
                                                                   metadata.GetSceneObject(sceneId));
            });
        }
        internal void FinalizePrefab(PrefabMetadataContainer metadataContainer, SerializationMetadata metadata)
        {
            var removedComponents = metadataContainer.RemovedComponents;

            if (removedComponents != null)
            {
                HandleRemovedComponents(removedComponents);
            }

            if (Application.isPlaying)
            {
                m_GameObject.AddComponent <PrefabMetadata>().Setup(metadataContainer);
            }

            var overrides = metadataContainer.PropertyOverrides;

            if (overrides == null)
            {
                return;
            }

            metadata.EnqueuePostSerializationAction(() => { HandlePropertyOverrides(overrides, metadata); });
        }