public void LoadDocument(VisualTreeAsset visualTreeAsset, VisualElement documentElement)
        {
            NewDocument(documentElement);

            if (visualTreeAsset == null)
            {
                return;
            }

            m_VisualTreeAssetBackup = visualTreeAsset.DeepCopy();
            m_VisualTreeAsset       = visualTreeAsset;
            m_VisualTreeAsset.ConvertAllAssetReferencesToPaths();

            // Load styles.
            var styleSheetsUsed = m_VisualTreeAsset.GetAllReferencedStyleSheets();

            for (int i = 0; i < styleSheetsUsed.Count; ++i)
            {
                AddStyleSheetToDocument(styleSheetsUsed[i], null);
            }

            m_OpenendVisualTreeAssetOldPath = AssetDatabase.GetAssetPath(m_VisualTreeAsset);

            hasUnsavedChanges = false;

            m_Settings = BuilderDocumentSettings.CreateOrLoadSettingsObject(m_Settings, uxmlPath);

            ReloadDocumentToCanvas(documentElement);
        }
        public void LoadDocument(VisualTreeAsset visualTreeAsset, VisualElement documentElement)
        {
            NewDocument(documentElement);

            if (visualTreeAsset == null)
            {
                return;
            }

            m_VisualTreeAssetBackup = visualTreeAsset.DeepCopy();
            m_VisualTreeAsset       = visualTreeAsset;
            m_VisualTreeAsset.ConvertAllAssetReferencesToPaths();

            // Load styles.
            // TODO: For now we only support one stylesheet so we just load the first one we find.
            var styleSheetsUsed = m_VisualTreeAsset.GetAllReferencedStyleSheets();
            var styleSheet      = styleSheetsUsed.Count > 0 ? styleSheetsUsed[0] : null;

            m_MainStyleSheetBackup = null;
            if (styleSheet != null)
            {
                m_MainStyleSheetBackup = styleSheet.DeepCopy();
            }
            m_MainStyleSheet = styleSheet;

            m_OpenendMainStyleSheetOldPath = AssetDatabase.GetAssetPath(styleSheet);

            hasUnsavedChanges = false;

            CreateOrLoadSettingsObject();

            ReloadDocumentToCanvas(documentElement);

            SaveToDisk();
        }
        public void PostLoadDocumentStyleSheetCleanup()
        {
            m_VisualTreeAsset.ConvertAllAssetReferencesToPaths();

            // Load styles.
            var styleSheetsUsed = m_VisualTreeAsset.GetAllReferencedStyleSheets();

            for (int i = 0; i < styleSheetsUsed.Count; ++i)
            {
                AddStyleSheetToDocument(styleSheetsUsed[i], null);
            }

#if !UNITY_2019_4
            // For the near to mid term, we have this code that cleans up any
            // existing root element stylesheets.
            RemoveLegacyStyleSheetsFromRootAssets();
#endif

            hasUnsavedChanges = false;
        }
Esempio n. 4
0
        public void PostLoadDocumentStyleSheetCleanup()
        {
            m_VisualTreeAsset.UpdateUsingEntries();

            m_OpenUSSFiles.Clear();

            // Load styles.
            var styleSheetsUsed = m_VisualTreeAsset.GetAllReferencedStyleSheets();

            for (int i = 0; i < styleSheetsUsed.Count; ++i)
            {
                AddStyleSheetToDocument(styleSheetsUsed[i], null);
            }

            // For the near to mid term, we have this code that cleans up any
            // existing root element stylesheets.
            RemoveLegacyStyleSheetsFromRootAssets();

            hasUnsavedChanges = false;
        }
        public void OnAfterBuilderDeserialize(VisualElement documentElement)
        {
            // Refresh StyleSheets.
            var styleSheetsUsed = m_VisualTreeAsset.GetAllReferencedStyleSheets();

            while (m_OpenUSSFiles.Count < styleSheetsUsed.Count)
            {
                m_OpenUSSFiles.Add(new BuilderDocumentOpenUSS());
            }

            // Make sure active stylesheet is still in the document.
            ValidateActiveStyleSheet();

            for (int i = 0; i < styleSheetsUsed.Count; ++i)
            {
                if (m_OpenUSSFiles[i].Sheet == styleSheetsUsed[i])
                {
                    continue;
                }

                m_OpenUSSFiles[i].Set(styleSheetsUsed[i], null);
            }

            while (m_OpenUSSFiles.Count > styleSheetsUsed.Count)
            {
                var lastIndex = m_OpenUSSFiles.Count - 1;
                RemoveStyleSheetFromLists(lastIndex);
            }

            // Fix unserialized rule references in Selectors in StyleSheets.
            // VTA.inlineSheet only has Rules so it does not need this fix.
            foreach (var openUSSFile in m_OpenUSSFiles)
            {
                openUSSFile.FixRuleReferences();
            }

            ReloadDocumentToCanvas(documentElement);
        }
Esempio n. 6
0
        static bool IsAssetUsedInDependencies(VisualTreeAsset visualTreeAsset, string assetPath)
        {
            foreach (var styleSheet in visualTreeAsset.GetAllReferencedStyleSheets())
            {
                if (AssetDatabase.GetAssetPath(styleSheet) == assetPath)
                {
                    return(true);
                }
            }

            foreach (var vta in visualTreeAsset.templateDependencies)
            {
                var path = visualTreeAsset.GetPathFromTemplateName(vta.name);
                if (path == assetPath)
                {
                    return(true);
                }

                return(IsAssetUsedInDependencies(vta, assetPath));
            }

            return(false);
        }