예제 #1
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)];
        }
        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);
        }
예제 #3
0
 public TestContainerContext()
 {
     NodeContainer         = new NodeContainer();
     GraphViewModelService = new GraphViewModelService(NodeContainer);
     ServiceProvider       = new ViewModelServiceProvider();
     ServiceProvider.RegisterService(new DispatcherService(Dispatcher.CurrentDispatcher));
     ServiceProvider.RegisterService(GraphViewModelService);
 }
예제 #4
0
        public ModelAssetTemplateWindow()
        {
            var viewModelService = new GraphViewModelService(SessionViewModel.Instance.AssetNodeContainer);
            var services         = new ViewModelServiceProvider(SessionViewModel.Instance.ServiceProvider, viewModelService.Yield());

            Parameters = new ImportModelFromFileViewModel(services);
            InitializeComponent();
        }
예제 #5
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());
        }