Esempio n. 1
0
        /// <inheritdoc/>
        public sealed override async Task <bool> Initialize()
        {
            sourceResolver = ServiceProvider.Get <IScriptSourceCodeResolver>();
            if (sourceResolver.LatestCompilation == null)
            {
                // Wait for initial compilation to be done before continuing initialization
                var          compilationReady  = new TaskCompletionSource <bool>();
                EventHandler compilationChange = (sender, args) => compilationReady.TrySetResult(true);

                sourceResolver.LatestCompilationChanged += compilationChange;
                await compilationReady.Task;
                sourceResolver.LatestCompilationChanged -= compilationChange;
            }

            properties = GraphViewModel.Create(ServiceProvider, new[] { new SinglePropertyProvider(propertiesNode.Target) });

            // Since Roslyn compilation is ready, regenerate slots
            await RegenerateSlots();

            // Regenerate slot on next compilations
            sourceResolver.LatestCompilationChanged += CompilationUpdated;

            // Listen to changes
            Session.AssetPropertiesChanged += Session_AssetPropertiesChanged;

            // Select first function
            SelectedMethod = Methods.FirstOrDefault();

            // Trigger initial compilation
            TriggerBackgroundCompilation().Forget();

            return(true);
        }
Esempio n. 2
0
            public SymbolSearchHelper(VisualScriptEditorViewModel viewModel)
            {
                this.viewModel = viewModel;

                viewModel.PropertyChanged += ViewModel_PropertyChanged;
                viewModel.SymbolSearchValues.Clear();
                viewModel.SymbolSearchOpen = true;

                sourceResolver = viewModel.ServiceProvider.Get <IScriptSourceCodeResolver>();

                // Start initial search
                symbolSearchCancellationToken = new CancellationTokenSource();
                Task.Run(() => GenerateSymbolSearchValues(sourceResolver.LatestCompilation, symbolSearchCancellationToken.Token)).Forget();

                // Listen for changes
                sourceResolver.LatestCompilationChanged += RestartSearch;
            }