public GraphicsCompositorEditorViewModel([NotNull] GraphicsCompositorViewModel graphicsCompositor) : base(graphicsCompositor)
        {
            // Create the service needed to manage observable view models
            ViewModelService = new GraphViewModelService(Session.AssetNodeContainer);

            // Update the service provider of this view model to contains the ObservableViewModelService we created.
            ServiceProvider = new ViewModelServiceProvider(ServiceProvider, ViewModelService.Yield());

            // Get some quantum nodes
            graphicsCompositorNode = Session.AssetNodeContainer.GetNode(graphicsCompositor.Asset);
            renderStagesNode       = graphicsCompositorNode[nameof(GraphicsCompositorAsset.RenderStages)].Target;
            renderFeaturesNode     = graphicsCompositorNode[nameof(GraphicsCompositorAsset.RenderFeatures)].Target;
            cameraSlotsNode        = graphicsCompositorNode[nameof(GraphicsCompositorAsset.Cameras)].Target;
            sharedRenderersNode    = graphicsCompositorNode[nameof(GraphicsCompositorAsset.SharedRenderers)].Target;

            // Setup commands
            DeleteSelectionCommand = new AnonymousCommand(ServiceProvider, DeleteSelection);

            AddNewRenderStageCommand          = new AnonymousCommand(ServiceProvider, AddNewRenderStage);
            RemoveSelectedRenderStagesCommand = new AnonymousCommand(ServiceProvider, RemoveSelectedRenderStages);

            AddNewRenderFeatureCommand          = new AnonymousCommand <AbstractNodeType>(ServiceProvider, AddNewRenderFeature);
            RemoveSelectedRenderFeaturesCommand = new AnonymousCommand(ServiceProvider, RemoveSelectedRenderFeatures);

            AddNewCameraSlotCommand          = new AnonymousCommand(ServiceProvider, AddNewCameraSlot);
            RemoveSelectedCameraSlotsCommand = new AnonymousCommand(ServiceProvider, RemoveSelectedCameraSlots);
        }
示例#2
0
        private static ICommandBase OpenHyperlinkCommandFactory()
        {
            // TODO: have a proper way to initialize the services (maybe at application startup)
            var serviceProvider = new ViewModelServiceProvider(new[] { new DispatcherService(Application.Current?.Dispatcher ?? Dispatcher.CurrentDispatcher) });

            return(new AnonymousCommand <string>(serviceProvider, OpenHyperlink, CanOpenHyperlink));
        }
示例#3
0
        public VisualScriptEditorViewModel(IVisualScriptViewModelService visualScriptViewModelService, VisualScriptViewModel visualScript) : base(visualScript)
        {
            // Create the service needed to manage observable view models
            ViewModelService = new GraphViewModelService(Session.AssetNodeContainer);

            // Update the service provider of this view model to contains the ObservableViewModelService we created.
            ServiceProvider = new ViewModelServiceProvider(ServiceProvider, ViewModelService.Yield());

            VisualScriptViewModelService = visualScriptViewModelService;

            blockTemplateDescriptionCollection = new Lazy <BlockTemplateDescriptionCollectionViewModel>(() => new BlockTemplateDescriptionCollectionViewModel(this));

            AddNewPropertyCommand           = new AnonymousCommand(ServiceProvider, AddNewProperty);
            RemoveSelectedPropertiesCommand = new AnonymousCommand(ServiceProvider, RemoveSelectedProperties);

            //ShowAddBlockDialogCommand = new AnonymousTaskCommand(ServiceProvider, ShowAddBlockDialog);

            AddNewMethodCommand         = new AnonymousCommand(ServiceProvider, AddNewMethod);
            RemoveSelectedMethodCommand = new AnonymousCommand(ServiceProvider, RemoveSelectedFunction);

            var rootNode = Session.AssetNodeContainer.GetNode(visualScript.Asset);

            baseTypeNodeBinding = new MemberGraphNodeBinding <string>(rootNode[nameof(VisualScriptAsset.BaseType)], nameof(BaseType), OnPropertyChanging, OnPropertyChanged, visualScript.UndoRedoService);
            propertiesNode      = rootNode[nameof(VisualScriptAsset.Properties)];
        }
        internal void Initialize(NugetStore store, string defaultLogText = null)
        {
            var dispatcherService = new DispatcherService(Dispatcher);
            var dialogService     = new DialogService(dispatcherService, Launcher.ApplicationName);
            var serviceProvider   = new ViewModelServiceProvider(new object[] { dispatcherService, dialogService });

            DataContext = new LauncherViewModel(serviceProvider, store);
        }
示例#5
0
 public TestContext()
 {
     ObservableViewModelService = new ObservableViewModelService();
     ServiceProvider            = new ViewModelServiceProvider();
     ServiceProvider.RegisterService(new DispatcherService(Dispatcher.CurrentDispatcher));
     ServiceProvider.RegisterService(ObservableViewModelService);
     NodeContainer = new NodeContainer();
 }
示例#6
0
 public TestContext()
 {
     ObservableViewModelService = new ObservableViewModelService();
     ServiceProvider = new ViewModelServiceProvider();
     ServiceProvider.RegisterService(new DispatcherService(Dispatcher.CurrentDispatcher));
     ServiceProvider.RegisterService(ObservableViewModelService);
     NodeContainer = new NodeContainer();
 }
示例#7
0
 public TestContainerContext()
 {
     NodeContainer         = new NodeContainer();
     GraphViewModelService = new GraphViewModelService(NodeContainer);
     ServiceProvider       = new ViewModelServiceProvider();
     ServiceProvider.RegisterService(new DispatcherService(Dispatcher.CurrentDispatcher));
     ServiceProvider.RegisterService(GraphViewModelService);
 }
示例#8
0
        public ModelAssetTemplateWindow()
        {
            var viewModelService = new GraphViewModelService(SessionViewModel.Instance.AssetNodeContainer);
            var services         = new ViewModelServiceProvider(SessionViewModel.Instance.ServiceProvider, viewModelService.Yield());

            Parameters = new ImportModelFromFileViewModel(services);
            InitializeComponent();
        }
示例#9
0
        public ScriptNameWindow(string defaultClassName, string defaultNamespace)
        {
            var dispatcher = new DispatcherService(Dispatcher);

            services = new ViewModelServiceProvider(new object[] { dispatcher, new DialogService(dispatcher, EditorViewModel.Instance.EditorName) });
            InitializeComponent();
            ClassNameTextBox.Text = defaultClassName;
            NamespaceTextBox.Text = defaultNamespace;
        }
示例#10
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SettingsViewModel"/> class.
        /// </summary>
        /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> and an <see cref="IDialogService"/> to use for this view model.</param>
        /// <param name="profile">The profile associated </param>
        public SettingsViewModel([NotNull] IViewModelServiceProvider serviceProvider, SettingsProfile profile)
            : base(serviceProvider, new AssetNodeContainer())
        {
            var viewModelService = ServiceProvider.Get <GraphViewModelService>();

            RegisterNodePresenterUpdater(new SettingsPropertyNodeUpdater());
            ServiceProvider        = new ViewModelServiceProvider(serviceProvider, viewModelService.Yield());
            ValidateChangesCommand = new AnonymousTaskCommand(serviceProvider, ValidateChanges);
            DiscardChangesCommand  = new AnonymousCommand(serviceProvider, DiscardChanges);
            Profile = profile;
            Initialize();
        }
示例#11
0
        private static IViewModelServiceProvider InitializeServiceProvider()
        {
            // TODO: this should be done elsewhere
            var dispatcherService = new DispatcherService(Dispatcher.CurrentDispatcher);
            var dialogService     = new XenkoDialogService(dispatcherService, XenkoGameStudio.EditorName);
            var pluginService     = new PluginService();
            var services          = new List <object> {
                new DispatcherService(Dispatcher.CurrentDispatcher), dialogService, pluginService
            };

            if (renderDocManager != null)
            {
                services.Add(renderDocManager);
            }
            var serviceProvider = new ViewModelServiceProvider(services);

            return(serviceProvider);
        }
示例#12
0
        public ScriptNameWindow(string defaultClassName, string defaultNamespace, TemplateAssetDescription defaultScriptTemplate, bool enableTemplateSelect, IEnumerable <TemplateAssetDescription> scriptTemplates)
        {
            var dispatcher = new DispatcherService(Dispatcher);

            services = new ViewModelServiceProvider(new object[] { dispatcher, new DialogService(dispatcher, EditorViewModel.Instance.EditorName) });
            InitializeComponent();
            ClassNameTextBox.Text = defaultClassName;
            NamespaceTextBox.Text = defaultNamespace;

            TemplateComboBox.Visibility = enableTemplateSelect ? Visibility.Visible : Visibility.Collapsed;
            if (enableTemplateSelect)
            {
                TemplateComboBox.ItemsSource   = scriptTemplates;
                TemplateComboBox.SelectedValue = defaultScriptTemplate;
            }

            this.enableTemplateSelect  = enableTemplateSelect;
            this.defaultScriptTemplate = defaultScriptTemplate;
        }
示例#13
0
        public UpdatePlatformsWindow(ICollection <PlatformType> installedPlatforms)
        {
            if (installedPlatforms == null)
            {
                throw new ArgumentNullException(nameof(installedPlatforms));
            }
            var dispatcher = new DispatcherService(Dispatcher);
            var dialog     = new DialogService(dispatcher, EditorViewModel.Instance.EditorName);

            services           = new ViewModelServiceProvider(new object[] { dispatcher, dialog });
            AvailablePlatforms = new List <SolutionPlatformViewModel>();
            foreach (var platform in AssetRegistry.SupportedPlatforms)
            {
                var isInstalled      = installedPlatforms.Contains(platform.Type);
                var solutionPlatform = new SolutionPlatformViewModel(services, platform, isInstalled, isInstalled);
                AvailablePlatforms.Add(solutionPlatform);
            }
            ForcePlatformRegenerationVisible = true;
            InitializeComponent();
            DataContext = this;
        }
示例#14
0
        /// <summary>
        ///   Initializes a new instance of the <see cref="PropertiesViewModel"/> class.
        /// </summary>
        /// <param name="serviceProvider">The view model service provider to use.</param>
        /// <param name="nodeContainer">
        ///   The <see cref="Core.Quantum.NodeContainer"/> containing the nodes used to access object
        ///   properties.
        /// </param>
        protected PropertiesViewModel([NotNull] IViewModelServiceProvider serviceProvider, [NotNull] NodeContainer nodeContainer)
            : base(serviceProvider)
        {
            if (nodeContainer is null)
            {
                throw new ArgumentNullException(nameof(nodeContainer));
            }

            NodeContainer = nodeContainer;

            // Create the service needed to manage graph view models
            ViewModelService = new GraphViewModelService(nodeContainer);

            // Update the service provider of this view model to contains the GraphViewModelService we created
            ServiceProvider = new ViewModelServiceProvider(serviceProvider, ViewModelService.Yield());

            RegisterNodePresenterCommand(new CreateNewInstanceCommand());
            RegisterNodePresenterCommand(new AddNewItemCommand());
            RegisterNodePresenterCommand(new AddPrimitiveKeyCommand());
            RegisterNodePresenterCommand(new RemoveItemCommand());
            RegisterNodePresenterCommand(new RenameStringKeyCommand());
            RegisterNodePresenterCommand(new MoveItemCommand());
            RegisterNodePresenterCommand(new FlagEnumSelectAllCommand());
            RegisterNodePresenterCommand(new FlagEnumSelectNoneCommand());
            RegisterNodePresenterCommand(new FlagEnumSelectInvertCommand());

            RegisterNodePresenterUpdater(new AbstractNodeEntryNodeUpdater());
            RegisterNodePresenterUpdater(new CategoryNodeUpdater());
            RegisterNodePresenterUpdater(new CollectionPropertyNodeUpdater());
            RegisterNodePresenterUpdater(new DisplayAttributeNodeUpdater());
            RegisterNodePresenterUpdater(new MathematicsNodeUpdater());
            RegisterNodePresenterUpdater(new NumericValueNodeUpdater());
            RegisterNodePresenterUpdater(new UPathNodeUpdater());
            RegisterNodePresenterUpdater(new DictionaryNodeUpdater());

            // NOTE: Try to keep InlineMemberNodeUpdater last since it's transfering some metadata generated by previous updater between nodes
            RegisterNodePresenterUpdater(new InlineMemberNodeUpdater());
        }
示例#15
0
        public GameTemplateWindow(IEnumerable <SolutionPlatform> availablePlatforms, string defaultNamespace)
        {
            var dispatcher = new DispatcherService(Dispatcher);
            var dialog     = new DialogService(dispatcher, EditorViewModel.Instance.EditorName);

            services           = new ViewModelServiceProvider(new object[] { dispatcher, dialog });
            AvailablePlatforms = availablePlatforms.Select(x => new SolutionPlatformViewModel(services, x, false, x.Type == PlatformType.Windows)).ToList();

            // Obsolete - this will be replaced by AssetPacks at some point
            AssetPackages = new List <AssetPackageViewModel>();
            AssetPackages.Add(new AssetPackageViewModel(services, "Animated Models", new UDirectory("mannequinModel"), false));
            AssetPackages.Add(new AssetPackageViewModel(services, "Building Blocks", new UDirectory("PrototypingBlocks"), false));
            AssetPackages.Add(new AssetPackageViewModel(services, "Materials Pack", new UDirectory("MaterialPackage"), false));
            AssetPackages.Add(new AssetPackageViewModel(services, "Particles Pack", new UDirectory("VFXPackage"), false));
            AssetPackages.Add(new AssetPackageViewModel(services, "Samples Assets", new UDirectory("SamplesAssetPackage"), false));

            Namespace   = defaultNamespace;
            Orientation = DisplayOrientation.LandscapeRight;
            InitializeComponent();
            DataContext             = this;
            SelectedGraphicsProfile = GraphicsProfile.Level_10_0;
            IsHDR = true;
        }
示例#16
0
 private static ICommandBase OpenHyperlinkCommandFactory()
 {
     // TODO: have a proper way to initialize the services (maybe at application startup)
     var serviceProvider = new ViewModelServiceProvider(new[] { new DispatcherService(Application.Current?.Dispatcher ?? Dispatcher.CurrentDispatcher) });
     return new AnonymousCommand<string>(serviceProvider, OpenHyperlink, CanOpenHyperlink);
 }
        protected MessageDialogBase()
        {
            var serviceProvider = new ViewModelServiceProvider(new[] { new DispatcherService(Dispatcher) });

            ButtonCommand = new AnonymousCommand <int>(serviceProvider, ButtonClick);
        }
 protected MessageDialogBase()
 {
     var serviceProvider = new ViewModelServiceProvider(new[] { new DispatcherService(Dispatcher) });
     ButtonCommand = new AnonymousCommand<int>(serviceProvider, ButtonClick);
 }