/// <summary> /// Aggregates all upstream geometry for the given node then sends /// a message that a visualization is ready /// </summary> /// <param name="node">The node whose upstream geometry you need.</param> /// <returns>A render description containing all upstream geometry.</returns> public void AggregateUpstreamRenderPackages(RenderTag tag) { var packages = new List <IRenderPackage>(); //send back just what the node needs var watch = new Stopwatch(); watch.Start(); if (tag.Node == null) { //send back everything List <NodeModel> copyOfNodesList = controller.DynamoModel.Nodes; foreach (var modelNode in copyOfNodesList) { lock (modelNode.RenderPackagesMutex) { packages.AddRange(modelNode.RenderPackages); } } watch.Stop(); Debug.WriteLine(String.Format("RENDER: {0} ellapsed for aggregating geometry for background preview.", watch.Elapsed)); if (packages.Any()) { // if there are packages, send any that aren't empty OnResultsReadyToVisualize(this, new VisualizationEventArgs( packages.Where(x => ((RenderPackage)x).IsNotEmpty()).Cast <RenderPackage>(), string.Empty, tag.TaskId)); } else { // if there are no packages, still trigger an update // so the view gets redrawn OnResultsReadyToVisualize(this, new VisualizationEventArgs(packages.Cast <RenderPackage>(), string.Empty, tag.TaskId)); } } else { watch.Stop(); Debug.WriteLine(String.Format("RENDER: {0} ellapsed for aggregating geometry for branch {1}.", watch.Elapsed, tag.Node.GUID)); //send back renderables for the branch packages = GetUpstreamPackages(tag.Node.Inputs, 0).ToList(); if (packages.Any()) { OnResultsReadyToVisualize(this, new VisualizationEventArgs(packages.Where(x => ((RenderPackage)x).IsNotEmpty()).Cast <RenderPackage>(), tag.Node.GUID.ToString(), tag.TaskId)); } } //LogVisualizationUpdateData(rd, watch.Elapsed.ToString()); }
/// <summary> /// Aggregates all upstream geometry for the given node then sends /// a message that a visualization is ready /// </summary> /// <param name="node">The node whose upstream geometry you need.</param> /// <returns>A render description containing all upstream geometry.</returns> public void AggregateUpstreamRenderPackages(RenderTag tag) { var packages = new List<IRenderPackage>(); //send back just what the node needs var watch = new Stopwatch(); watch.Start(); if (tag.Node == null) { //send back everything List<NodeModel> copyOfNodesList = dynamoModel.Nodes; foreach (var modelNode in copyOfNodesList) { lock (modelNode.RenderPackagesMutex) { packages.AddRange(modelNode.RenderPackages); } } watch.Stop(); Debug.WriteLine(String.Format("RENDER: {0} ellapsed for aggregating geometry for background preview.", watch.Elapsed)); if (packages.Any()) { // if there are packages, send any that aren't empty OnResultsReadyToVisualize(this, new VisualizationEventArgs( packages.Where(x => ((RenderPackage)x).IsNotEmpty()).Cast<RenderPackage>(), string.Empty, tag.TaskId)); } else { // if there are no packages, still trigger an update // so the view gets redrawn OnResultsReadyToVisualize(this, new VisualizationEventArgs(packages.Cast<RenderPackage>(), string.Empty, tag.TaskId)); } } else { watch.Stop(); Debug.WriteLine(String.Format("RENDER: {0} ellapsed for aggregating geometry for branch {1}.", watch.Elapsed, tag.Node.GUID)); //send back renderables for the branch packages = GetUpstreamPackages(tag.Node.Inputs, 0).ToList(); if (packages.Any()) OnResultsReadyToVisualize(this, new VisualizationEventArgs(packages.Where(x => ((RenderPackage)x).IsNotEmpty()).Cast<RenderPackage>(), tag.Node.GUID.ToString(),tag.TaskId)); } //LogVisualizationUpdateData(rd, watch.Elapsed.ToString()); }