public IExportCollection CreateCollection(Object asset)
        {
            if (OcclusionCullingSettings.IsCompatible(asset))
            {
                if (asset.File.IsScene)
                {
                    return(new SceneExportCollection(this, asset.File));
                }
                else
                {
                    return(new PrefabExportCollection(this, asset));
                }
            }
            else
            {
                switch (asset.ClassID)
                {
                case ClassIDType.NavMeshData:
                    return(new EmptyExportCollection());

                case ClassIDType.AnimatorController:
                    return(new AnimatorControllerExportCollection(this, asset));

                case ClassIDType.TagManager:
                    return(new ManagerExportCollection(this, asset));

                default:
                    return(new AssetExportCollection(this, asset));
                }
            }
        }
        public IExportCollection CreateCollection(Object asset)
        {
            if (!asset.IsValid)
            {
                Logger.Instance.Log(LogType.Warning, LogCategory.Export, $"Can't export '{asset}' because it isn't valid");
                return(new EmptyExportCollection());
            }

            if (OcclusionCullingSettings.IsCompatible(asset))
            {
                if (asset.File.IsScene)
                {
                    return(new SceneExportCollection(this, asset.File));
                }
                else
                {
                    return(new PrefabExportCollection(this, asset));
                }
            }
            else
            {
                switch (asset.ClassID)
                {
                case ClassIDType.NavMeshData:
                    return(new EmptyExportCollection());

                default:
                    return(new AssetExportCollection(this, asset));
                }
            }
        }
        public SceneExportCollection(IAssetExporter assetExporter, ISerializedFile file)
        {
            if (assetExporter == null)
            {
                throw new ArgumentNullException(nameof(assetExporter));
            }
            if (file == null)
            {
                throw new ArgumentNullException(nameof(file));
            }

            AssetExporter = assetExporter;
            Name          = file.Name;
            m_file        = file;

            foreach (Object asset in file.FetchAssets())
            {
                if (OcclusionCullingSettings.IsCompatible(asset))
                {
                    AddComponent(file, asset);
                }
            }
            m_cexportIDs = m_cexportIDs.OrderBy(t => t.Key, this).ToDictionary(t => t.Key, t => t.Value);

            if (OcclusionCullingSettings.IsReadSceneGUID(file.Version))
            {
                OcclusionCullingSettings sceneSettings = Components.Where(t => t.ClassID == ClassIDType.OcclusionCullingSettings).Select(t => (OcclusionCullingSettings)t).FirstOrDefault();
                if (sceneSettings == null)
                {
                    GUID = new EngineGUID(Guid.NewGuid());
                }
                else
                {
                    GUID = sceneSettings.SceneGUID;
                }
            }
            else
            {
                if (Config.IsGenerateGUIDByContent)
                {
                    GUID = ObjectUtils.CalculateObjectsGUID(Assets);
                }
                else
                {
                    GUID = new EngineGUID(Guid.NewGuid());
                }
            }
        }
Beispiel #4
0
        public IExportCollection CreateCollection(VirtualSerializedFile virtualFile, Object asset)
        {
            if (OcclusionCullingSettings.IsCompatible(asset))
            {
                if (asset.File.Collection.IsScene(asset.File))
                {
                    return(new SceneExportCollection(this, virtualFile, asset.File));
                }
                else
                {
                    return(new PrefabExportCollection(this, virtualFile, asset));
                }
            }
            else
            {
                switch (asset.ClassID)
                {
                case ClassIDType.NavMeshData:
                    return(new EmptyExportCollection());

                case ClassIDType.AnimatorController:
                    return(new AnimatorControllerExportCollection(this, virtualFile, asset));

                case ClassIDType.TimeManager:
                case ClassIDType.AudioManager:
                case ClassIDType.InputManager:
                case ClassIDType.Physics2DSettings:
                case ClassIDType.GraphicsSettings:
                case ClassIDType.QualitySettings:
                case ClassIDType.PhysicsManager:
                case ClassIDType.TagManager:
                case ClassIDType.NavMeshProjectSettings:
                case ClassIDType.NetworkManager:
                case ClassIDType.ClusterInputManager:
                case ClassIDType.UnityConnectSettings:
                    return(new ManagerExportCollection(this, asset));

                case ClassIDType.BuildSettings:
                    return(new BuildSettingsExportCollection(this, virtualFile, asset));

                default:
                    return(new AssetExportCollection(this, asset));
                }
            }
        }
        public SceneExportCollection(IAssetExporter assetExporter, VirtualSerializedFile virtualFile, ISerializedFile file)
        {
            if (assetExporter == null)
            {
                throw new ArgumentNullException(nameof(assetExporter));
            }
            if (file == null)
            {
                throw new ArgumentNullException(nameof(file));
            }

            AssetExporter = assetExporter;
            Name          = file.Name;
            m_file        = file;

            foreach (Object asset in file.FetchAssets())
            {
                if (OcclusionCullingSettings.IsCompatible(asset))
                {
                    AddComponent(file, asset);
                }
            }
            m_cexportIDs = m_cexportIDs.OrderBy(t => t.Key, this).ToDictionary(t => t.Key, t => t.Value);

            if (OcclusionCullingSettings.IsReadSceneGUID(file.Version))
            {
                OcclusionCullingSettings sceneSettings = Components.Where(t => t.ClassID == ClassIDType.OcclusionCullingSettings).Select(t => (OcclusionCullingSettings)t).FirstOrDefault();
                if (sceneSettings != null)
                {
                    GUID = sceneSettings.SceneGUID;
                }
            }
            if (GUID.IsZero)
            {
                if (Config.IsGenerateGUIDByContent)
                {
                    GUID = ObjectUtils.CalculateAssetsGUID(Assets);
                }
                else
                {
                    GUID = new EngineGUID(Guid.NewGuid());
                }
            }

            if (OcclusionCullingSettings.IsReadPVSData(File.Version))
            {
                foreach (Object comp in Components)
                {
                    if (comp.ClassID == ClassIDType.OcclusionCullingSettings)
                    {
                        OcclusionCullingSettings settings = (OcclusionCullingSettings)comp;
                        if (settings.PVSData.Count > 0)
                        {
                            m_occlusionCullingSettings = settings;
                            OcclusionCullingData       = OcclusionCullingData.CreateVirtualInstance(virtualFile, settings);
                            break;
                        }
                    }
                }
            }
        }