public static HelixWatch3DViewModel Start(Watch3DViewModelStartupParams parameters) { var vm = new HelixWatch3DViewModel(parameters); vm.OnStartup(); return(vm); }
public static Watch3DViewModelBase Start(Watch3DViewModelStartupParams parameters) { var vm = new Watch3DViewModelBase(parameters); vm.OnStartup(); return(vm); }
public static HelixWatch3DNodeViewModel Start(Dynamo.Nodes.Watch3D node, Watch3DViewModelStartupParams parameters) { var vm = new HelixWatch3DNodeViewModel(node, parameters); vm.OnStartup(); return(vm); }
private HelixWatch3DNodeViewModel(Dynamo.Nodes.Watch3D node, Watch3DViewModelStartupParams parameters) : base(parameters) { watchNode = node; IsResizable = true; RegisterPortEventHandlers(node); watchNode.Serialized += SerializeCamera; watchNode.Deserialized += watchNode_Deserialized; }
private HelixWatch3DNodeViewModel(Dynamo.Nodes.Watch3D node, Watch3DViewModelStartupParams parameters): base(parameters) { watchNode = node; IsResizable = true; RegisterPortEventHandlers(node); watchNode.Serialized += SerializeCamera; watchNode.Deserialized += watchNode_Deserialized; }
public HelixWatch3DNodeViewModel(Watch3D node, Watch3DViewModelStartupParams parameters): base(parameters) { watchNode = node; IsResizable = true; RegisterPortEventHandlers(node); watchNode.Serialized += SerializeCamera; watchNode.Deserialized += watchNode_Deserialized; Name = string.Format("{0} Preview", node.GUID); }
/// <summary> /// The DefaultWatch3DViewModel is used in contexts where a complete rendering environment /// cannot be established. Typically, this is machines that do not have GPUs, or do not /// support DirectX 10 feature levels. For most purposes, you will want to use a <see cref="HelixWatch3DViewModel"/> /// </summary> /// <param name="model">The NodeModel that this watch is displaying.</param> /// <param name="parameters">A Watch3DViewModelStartupParams object.</param> public DefaultWatch3DViewModel(NodeModel model, Watch3DViewModelStartupParams parameters) { watchModel = model; dynamoModel = parameters.Model; scheduler = parameters.Scheduler; preferences = parameters.Preferences; engineManager = parameters.EngineControllerManager; Name = Resources.BackgroundPreviewDefaultName; active = parameters.Preferences.IsBackgroundPreviewActive; CanBeActivated = true; }
protected Watch3DViewModelBase(Watch3DViewModelStartupParams parameters) { model = parameters.Model; scheduler = parameters.Scheduler; preferences = parameters.Preferences; logger = parameters.Logger; engineManager = parameters.EngineControllerManager; renderPackageFactory = parameters.RenderPackageFactory; viewModel = parameters.ViewModel; renderPackageFactoryViewModel = parameters.RenderPackageFactoryViewModel; Active = parameters.IsActiveAtStart; Name = parameters.Name; logger = parameters.Logger; RegisterEventHandlers(); }
protected Watch3DViewModelBase(Watch3DViewModelStartupParams parameters) { model = parameters.Model; scheduler = parameters.Scheduler; preferences = parameters.Preferences; logger = parameters.Logger; engineManager = parameters.EngineControllerManager; renderPackageFactory = parameters.RenderPackageFactory; viewModel = parameters.ViewModel; renderPackageFactoryViewModel = parameters.RenderPackageFactoryViewModel; Active = parameters.Preferences.IsBackgroundPreviewActive; Name = parameters.Name; logger = parameters.Logger; RegisterEventHandlers(); TogglePanCommand = new DelegateCommand(TogglePan, CanTogglePan); ToggleOrbitCommand = new DelegateCommand(ToggleOrbit, CanToggleOrbit); ToggleCanNavigateBackgroundCommand = new DelegateCommand(ToggleCanNavigateBackground, CanToggleCanNavigateBackground); }
/// <summary> /// The DefaultWatch3DViewModel is used in contexts where a complete rendering environment /// cannot be established. Typically, this is machines that do not have GPUs, or do not /// support DirectX 10 feature levels. For most purposes, you will want to use a <see cref="HelixWatch3DViewModel"/> /// </summary> /// <param name="parameters">A Watch3DViewModelStartupParams object.</param> public DefaultWatch3DViewModel(Watch3DViewModelStartupParams parameters) { model = parameters.Model; scheduler = parameters.Scheduler; preferences = parameters.Preferences; logger = parameters.Logger; engineManager = parameters.EngineControllerManager; Name = Resources.BackgroundPreviewDefaultName; isGridVisible = parameters.Preferences.IsBackgroundGridVisible; active = parameters.Preferences.IsBackgroundPreviewActive; logger = parameters.Logger; RegisterEventHandlers(); TogglePanCommand = new DelegateCommand(TogglePan, CanTogglePan); ToggleOrbitCommand = new DelegateCommand(ToggleOrbit, CanToggleOrbit); ToggleCanNavigateBackgroundCommand = new DelegateCommand(ToggleCanNavigateBackground, CanToggleCanNavigateBackground); ZoomToFitCommand = new DelegateCommand(ZoomToFit, CanZoomToFit); CanBeActivated = true; }
public static Watch3DViewModelBase Start(Watch3DViewModelStartupParams parameters) { var vm = new Watch3DViewModelBase(parameters); vm.OnStartup(); return vm; }
public static HelixWatch3DNodeViewModel Start(Dynamo.Nodes.Watch3D node, Watch3DViewModelStartupParams parameters) { var vm = new HelixWatch3DNodeViewModel(node, parameters); vm.OnStartup(); return vm; }
protected void StartDynamo() { var assemblyPath = Assembly.GetExecutingAssembly().Location; preloader = new Preloader(Path.GetDirectoryName(assemblyPath)); preloader.Preload(); TestPathResolver pathResolver = null; var preloadedLibraries = new List<string>(); GetLibrariesToPreload(preloadedLibraries); if (preloadedLibraries.Any()) { // Only when any library needs preloading will a path resolver be // created, otherwise DynamoModel gets created without preloading // any library. // var pathResolverParams = new TestPathResolverParams() { UserDataRootFolder = GetUserUserDataRootFolder(), CommonDataRootFolder = GetCommonDataRootFolder() }; pathResolver = new TestPathResolver(pathResolverParams); foreach (var preloadedLibrary in preloadedLibraries.Distinct()) { pathResolver.AddPreloadLibraryPath(preloadedLibrary); } } var model = DynamoModel.Start( new DynamoModel.DefaultStartConfiguration() { PathResolver = pathResolver, StartInTestMode = true, GeometryFactoryPath = preloader.GeometryFactoryPath, ProcessMode = Core.Threading.TaskProcessMode.Synchronous }); var watch3DViewParams = new Watch3DViewModelStartupParams(model); this.ViewModel = DynamoViewModel.Start( new DynamoViewModel.StartConfiguration() { DynamoModel = model, Watch3DViewModel = new DefaultWatch3DViewModel(watch3DViewParams) }); this.ViewModel.RequestUserSaveWorkflow += RequestUserSaveWorkflow; }
protected DynamoViewModel(StartConfiguration startConfiguration) { this.ShowLogin = startConfiguration.ShowLogin; // initialize core data structures this.model = startConfiguration.DynamoModel; this.model.CommandStarting += OnModelCommandStarting; this.model.CommandCompleted += OnModelCommandCompleted; UsageReportingManager.Instance.InitializeCore(this); this.WatchHandler = startConfiguration.WatchHandler; var pmExtension = model.GetPackageManagerExtension(); this.PackageManagerClientViewModel = new PackageManagerClientViewModel(this, pmExtension.PackageManagerClient); this.SearchViewModel = new SearchViewModel(this); // Start page should not show up during test mode. this.ShowStartPage = !DynamoModel.IsTestMode; this.BrandingResourceProvider = startConfiguration.BrandingResourceProvider ?? new DefaultBrandingResourceProvider(); //add the initial workspace and register for future //updates to the workspaces collection var homespaceViewModel = new HomeWorkspaceViewModel(model.CurrentWorkspace as HomeWorkspaceModel, this); workspaces.Add(homespaceViewModel); currentWorkspaceViewModel = homespaceViewModel; model.WorkspaceAdded += WorkspaceAdded; model.WorkspaceRemoved += WorkspaceRemoved; SubscribeModelCleaningUpEvent(); SubscribeModelUiEvents(); SubscribeModelChangedHandlers(); SubscribeUpdateManagerHandlers(); InitializeAutomationSettings(startConfiguration.CommandFilePath); InitializeDelegateCommands(); SubscribeLoggerHandlers(); DynamoSelection.Instance.Selection.CollectionChanged += SelectionOnCollectionChanged; InitializeRecentFiles(); UsageReportingManager.Instance.PropertyChanged += CollectInfoManager_PropertyChanged; WatchIsResizable = false; SubscribeDispatcherHandlers(); RenderPackageFactoryViewModel = new RenderPackageFactoryViewModel(Model.PreferenceSettings); if (DynamoModel.IsTestMode) return; var backgroundPreviewParams = new Watch3DViewModelStartupParams(Model, this, Resources.BackgroundPreviewName); var watch3DViewModel = HelixWatch3DViewModel.Start(backgroundPreviewParams); Watch3DViewModels.Add(watch3DViewModel); watch3DViewModel.PropertyChanged += HelixWatch3DViewModelPropertyChanged; }
protected DynamoViewModel(StartConfiguration startConfiguration) { this.ShowLogin = startConfiguration.ShowLogin; // initialize core data structures this.model = startConfiguration.DynamoModel; this.model.CommandStarting += OnModelCommandStarting; this.model.CommandCompleted += OnModelCommandCompleted; UsageReportingManager.Instance.InitializeCore(this); this.WatchHandler = startConfiguration.WatchHandler; var pmExtension = model.GetPackageManagerExtension(); this.PackageManagerClientViewModel = new PackageManagerClientViewModel(this, pmExtension.PackageManagerClient); this.SearchViewModel = new SearchViewModel(this); // Start page should not show up during test mode. this.ShowStartPage = !DynamoModel.IsTestMode; this.BrandingResourceProvider = startConfiguration.BrandingResourceProvider ?? new DefaultBrandingResourceProvider(); // commands should be initialized before adding any WorkspaceViewModel InitializeDelegateCommands(); //add the initial workspace and register for future //updates to the workspaces collection var homespaceViewModel = new HomeWorkspaceViewModel(model.CurrentWorkspace as HomeWorkspaceModel, this); workspaces.Add(homespaceViewModel); currentWorkspaceViewModel = homespaceViewModel; model.WorkspaceAdded += WorkspaceAdded; model.WorkspaceRemoved += WorkspaceRemoved; SubscribeModelCleaningUpEvent(); SubscribeModelUiEvents(); SubscribeModelChangedHandlers(); SubscribeUpdateManagerHandlers(); InitializeAutomationSettings(startConfiguration.CommandFilePath); SubscribeLoggerHandlers(); DynamoSelection.Instance.Selection.CollectionChanged += SelectionOnCollectionChanged; InitializeRecentFiles(); UsageReportingManager.Instance.PropertyChanged += CollectInfoManager_PropertyChanged; WatchIsResizable = false; SubscribeDispatcherHandlers(); RenderPackageFactoryViewModel = new RenderPackageFactoryViewModel(Model.PreferenceSettings); RenderPackageFactoryViewModel.PropertyChanged += RenderPackageFactoryViewModel_PropertyChanged; var backgroundPreviewParams = new Watch3DViewModelStartupParams(Model, this, Resources.BackgroundPreviewName); // TODO: http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-8736 Watch3DViewModelBase watch3DViewModel; try { watch3DViewModel = HelixWatch3DViewModel.Start(backgroundPreviewParams); } catch (Exception ex) { Model.Logger.Log(ex.Message); Model.Logger.Log("Failed to create Watch3DViewModel. Creating base view model."); watch3DViewModel = Watch3DViewModelBase.Start(backgroundPreviewParams); } BackgroundPreviewViewModel = watch3DViewModel; Watch3DViewModels.Add(watch3DViewModel); watch3DViewModel.PropertyChanged += Watch3DViewModelPropertyChanged; }
/// <summary> /// Attempt to create a HelixWatch3DViewModel. If one cannot be created, /// fall back to creating a DefaultWatch3DViewModel and log the exception. /// </summary> /// <param name="model">The NodeModel to associate with the returned view model.</param> /// <param name="parameters">A Watch3DViewModelStartupParams object.</param> /// <param name="logger">A logger to be used to log the exception.</param> /// <returns></returns> public static DefaultWatch3DViewModel TryCreateHelixWatch3DViewModel(NodeModel model, Watch3DViewModelStartupParams parameters, DynamoLogger logger) { try { var vm = new HelixWatch3DViewModel(model, parameters); return(vm); } catch (Exception ex) { logger.Log(Resources.BackgroundPreviewCreationFailureMessage, LogLevel.Console); logger.Log(ex.Message, LogLevel.File); var vm = new DefaultWatch3DViewModel(model, parameters) { Active = false, CanBeActivated = false }; return(vm); } }
protected HelixWatch3DViewModel(NodeModel model, Watch3DViewModelStartupParams parameters) : base(model, parameters) { Name = Resources.BackgroundPreviewName; }
public void Watch3D_Reopened_SizeRemainsTheSame() { var random = new Random(); var original = new Watch3D(); // Update the original node instance. var width = original.Width * (1.0 + random.NextDouble()); var height = original.Height * (1.0 + random.NextDouble()); original.SetSize(Math.Floor(width), Math.Floor(height)); var vmParams = new Watch3DViewModelStartupParams(ViewModel.Model); var vm1 = new HelixWatch3DNodeViewModel(original, vmParams); var cam = vm1.Camera; cam.Position = new Point3D(10, 20, 30); cam.LookDirection = new Vector3D(15, 25, 35); // Ensure the serialization survives through file, undo, and copy. var document = new XmlDocument(); var fileElement = original.Serialize(document, SaveContext.File); var undoElement = original.Serialize(document, SaveContext.Undo); var copyElement = original.Serialize(document, SaveContext.Copy); // Duplicate the node in various save context. var nodeFromFile = new Watch3D(); var vmFile = new HelixWatch3DNodeViewModel(nodeFromFile, vmParams); var nodeFromUndo = new Watch3D(); var vmUndo = new HelixWatch3DNodeViewModel(nodeFromUndo, vmParams); var nodeFromCopy = new Watch3D(); var vmCopy = new HelixWatch3DNodeViewModel(nodeFromCopy, vmParams); nodeFromFile.Deserialize(fileElement, SaveContext.File); nodeFromUndo.Deserialize(undoElement, SaveContext.Undo); nodeFromCopy.Deserialize(copyElement, SaveContext.Copy); var newCam = vmFile.Camera; // Making sure we have properties preserved through file operation. Assert.AreEqual(original.WatchWidth, nodeFromFile.WatchWidth); Assert.AreEqual(original.WatchHeight, nodeFromFile.WatchHeight); Assert.AreEqual(cam.Position.X, newCam.Position.X); Assert.AreEqual(cam.Position.Y, newCam.Position.Y); Assert.AreEqual(cam.Position.Z, newCam.Position.Z); Assert.AreEqual(cam.LookDirection.X, newCam.LookDirection.X); Assert.AreEqual(cam.LookDirection.Y, newCam.LookDirection.Y); Assert.AreEqual(cam.LookDirection.Z, newCam.LookDirection.Z); newCam = vmUndo.Camera; // Making sure we have properties preserved through undo operation. Assert.AreEqual(original.WatchWidth, nodeFromUndo.WatchWidth); Assert.AreEqual(original.WatchHeight, nodeFromUndo.WatchHeight); Assert.AreEqual(cam.Position.X, newCam.Position.X); Assert.AreEqual(cam.Position.Y, newCam.Position.Y); Assert.AreEqual(cam.Position.Z, newCam.Position.Z); Assert.AreEqual(cam.LookDirection.X, newCam.LookDirection.X); Assert.AreEqual(cam.LookDirection.Y, newCam.LookDirection.Y); Assert.AreEqual(cam.LookDirection.Z, newCam.LookDirection.Z); newCam = vmCopy.Camera; // Making sure we have properties preserved through copy operation. Assert.AreEqual(original.WatchWidth, nodeFromCopy.WatchWidth); Assert.AreEqual(original.WatchHeight, nodeFromCopy.WatchHeight); Assert.AreEqual(cam.Position.X, newCam.Position.X); Assert.AreEqual(cam.Position.Y, newCam.Position.Y); Assert.AreEqual(cam.Position.Z, newCam.Position.Z); Assert.AreEqual(cam.LookDirection.X, newCam.LookDirection.X); Assert.AreEqual(cam.LookDirection.Y, newCam.LookDirection.Y); Assert.AreEqual(cam.LookDirection.Z, newCam.LookDirection.Z); }
protected HelixWatch3DViewModel(Watch3DViewModelStartupParams parameters) : base(parameters) { IsResizable = false; TogglePanCommand = new DelegateCommand(TogglePan, CanTogglePan); ToggleOrbitCommand = new DelegateCommand(ToggleOrbit, CanToggleOrbit); ToggleCanNavigateBackgroundCommand = new DelegateCommand(ToggleCanNavigateBackground, CanToggleCanNavigateBackground); }
public static HelixWatch3DViewModel Start(Watch3DViewModelStartupParams parameters) { var vm = new HelixWatch3DViewModel(parameters); vm.OnStartup(); return vm; }
/// <summary> /// The DefaultWatch3DViewModel is used in contexts where a complete rendering environment /// cannot be established. Typically, this is machines that do not have GPUs, or do not /// support DirectX 10 feature levels. For most purposes, you will want to use a <see cref="HelixWatch3DViewModel"/> /// </summary> /// <param name="parameters">A Watch3DViewModelStartupParams object.</param> public DefaultWatch3DViewModel(Watch3DViewModelStartupParams parameters) { model = parameters.Model; scheduler = parameters.Scheduler; preferences = parameters.Preferences; logger = parameters.Logger; engineManager = parameters.EngineControllerManager; Name = Resources.BackgroundPreviewDefaultName; isGridVisible = parameters.Preferences.IsBackgroundGridVisible; logger = parameters.Logger; RegisterEventHandlers(); TogglePanCommand = new DelegateCommand(TogglePan, CanTogglePan); ToggleOrbitCommand = new DelegateCommand(ToggleOrbit, CanToggleOrbit); ToggleCanNavigateBackgroundCommand = new DelegateCommand(ToggleCanNavigateBackground, CanToggleCanNavigateBackground); ZoomToFitCommand = new DelegateCommand(ZoomToFit, CanZoomToFit); CanBeActivated = true; }
protected HelixWatch3DViewModel(Watch3DViewModelStartupParams parameters) : base(parameters) { IsResizable = false; RenderTechniquesManager = new DynamoRenderTechniquesManager(); EffectsManager = new DynamoEffectsManager(RenderTechniquesManager); }