Не подтверждена Коммит 2c309df7 создал по автору Dealga McArdle's avatar Dealga McArdle Зафиксировано автором GitHub
Просмотр файлов

backend cleaning 5 (#4117)

* remove cruddy code

* remove animatable state from graph-time controls

* remove redundant code

* reintroduce graph_dicts

* interesting redraw behaviour observed..

* small code shuffle

* take import out

* revert graph_dicts for now

* change param order to match

* add excess check

* prevent displaying node data that is not part of the nodetree

* comment out this stuff for now
владелец 24de05bf
......@@ -33,7 +33,7 @@ from sverchok.data_structure import (
SIMPLE_DATA_TYPES,
flatten_data, graft_data, map_at_level, wrap_data, unwrap_data)
from sverchok.settings import get_params
from sverchok.settings import get_param
from sverchok.utils.handle_blender_data import get_func_and_args
from sverchok.utils.socket_utils import format_bpy_property, setup_new_node_location
......@@ -492,7 +492,7 @@ class SvSocketCommon(SvSocketProcessing):
else:
layout.label(text=text)
menu_option = get_params({'show_input_menus': 'QUICKLINK'}).show_input_menus
menu_option = get_param('show_input_menus', 'QUICKLINK')
# just handle custom draw..be it input or output.
if self.custom_draw:
......
......@@ -37,6 +37,7 @@ import traceback
import ast
graphs = []
# graph_dicts = {}
no_data_color = (1, 0.3, 0)
exception_color = (0.8, 0.0, 0)
......@@ -66,6 +67,7 @@ def update_error_colors(self, context):
def reset_timing_graphs():
global graphs
graphs = []
# graph_dicts = {}
# cache node group update trees
update_cache = {}
......@@ -306,12 +308,12 @@ def do_update_heat_map(node_list, nodes):
def update_error_nodes(ng, name, err=Exception):
if ng.bl_idname == "SverchGroupTreeType":
return # ignore error color inside of monad
if "error nodes" in ng:
error_nodes = ast.literal_eval(ng["error nodes"])
else:
error_nodes = {}
if ng.bl_idname == "SverchGroupTreeType":
return
node = ng.nodes.get(name)
if not node:
return
......@@ -361,13 +363,18 @@ def reset_error_nodes(ng):
node.color = data[1]
del ng["error nodes"]
def node_info(ng_name, node, start, delta):
return {"name" : node.name, "bl_idname": node.bl_idname, "start": start, "duration": delta, "tree_name": ng_name}
@profile(section="UPDATE")
def do_update_general(node_list, nodes, procesed_nodes=set()):
"""
General update function for node set
"""
ng = nodes.id_data
global graphs
# graph_dicts[ng.name] = []
timings = []
graph = []
gather = graph.append
......@@ -394,14 +401,12 @@ def do_update_general(node_list, nodes, procesed_nodes=set()):
debug("Processed %s in: %.4f", node_name, delta)
timings.append(delta)
gather({"name" : node_name, "bl_idname": node.bl_idname, "start": start, "duration": delta})
gather(node_info(ng.name, node, start, delta))
# probably it's not grate place for doing it
# reroute nodes can be in node variable
# probably it's not great place for doing this, the node can be a ReRoute
[s.update_objects_number() for s in chain(node.inputs, node.outputs) if hasattr(s, 'update_objects_number')]
except Exception as err:
ng = nodes.id_data
update_error_nodes(ng, node_name, err)
#traceback.print_tb(err.__traceback__)
exception("Node %s had exception: %s", node_name, err)
......@@ -417,7 +422,8 @@ def do_update_general(node_list, nodes, procesed_nodes=set()):
graphs.append(graph)
if data_structure.DEBUG_MODE:
debug("Node set updated in: %.4f seconds", total_time)
# graph_dicts[nodes.id_data.name] = graph
return timings
......
......@@ -183,8 +183,8 @@ class SverchCustomTree(NodeTree, SvNodeTreeCommon):
sv_animate: BoolProperty(name="Animate", default=True, description='Animate this layout')
sv_show: BoolProperty(name="Show", default=True, description='Show this layout', update=turn_off_ng)
sv_show_time_graph: BoolProperty(name="Time Graph", default=False, update=set_ng_time_graph_drawing_state)
sv_show_time_nodes: BoolProperty(name="Node times", default=False, update=set_ng_time_info_drawing_state)
sv_show_time_graph: BoolProperty(name="Time Graph", default=False, update=set_ng_time_graph_drawing_state, options=set())
sv_show_time_nodes: BoolProperty(name="Node times", default=False, update=set_ng_time_info_drawing_state, options=set())
# something related with heat map feature
# looks like it keeps dictionary of nodes and their user defined colors in string format
......
......@@ -180,11 +180,8 @@ class SvStethoscopeNodeMK2(bpy.types.Node, SverchCustomTreeNode):
layout.prop(self, 'font_id')
def get_preferences(self):
# supplied with default, forces at least one value :)
props = get_params({
'stethoscope_view_scale': 1.0,
'render_location_xy_multiplier': 1.0})
return props.stethoscope_view_scale, props.render_location_xy_multiplier
return get_params({
'stethoscope_view_scale': 1.0, 'render_location_xy_multiplier': 1.0}, direct=True)
def process(self):
inputs = self.inputs
......
......@@ -33,7 +33,7 @@ from sverchok.data_structure import updateNode, node_id
from sverchok.node_tree import SverchCustomTreeNode
from sverchok.ui import bgl_callback_nodeview as nvBGL
from sverchok.utils.sv_mesh_utils import polygons_to_edges_np
from sverchok.settings import get_params
socket_dict = {
......@@ -715,12 +715,10 @@ class SvViewer2D(bpy.types.Node, SverchCustomTreeNode):
def get_drawing_attributes(self):
""" obtain the dpi adjusted xy and scale factors, cache location_theta """
from sverchok.settings import get_params
props = get_params({
'render_scale': 1.0,
'render_location_xy_multiplier': 1.0})
self.location_theta = props.render_location_xy_multiplier
return props.render_scale
scale, multiplier = get_params({
'render_scale': 1.0, 'render_location_xy_multiplier': 1.0}, direct=True)
self.location_theta = multiplier
return scale
def get_offset(self):
return [int(j) for j in (Vector(self.absolute_location) + Vector((self.width + 20, 0)))[:]]
......
......@@ -319,11 +319,8 @@ class SvTextureViewerNode(bpy.types.Node, SverchCustomTreeNode):
nvBGL2.callback_enable(n_id, draw_data)
def get_preferences(self):
# supplied with default, forces at least one value :)
props = get_params({
'render_scale': 1.0,
'render_location_xy_multiplier': 1.0})
return props.render_scale, props.render_location_xy_multiplier
return get_params({
'render_scale': 1.0, 'render_location_xy_multiplier': 1.0}, direct=True)
def get_dimensions(self, width, height):
"""
......
......@@ -138,11 +138,8 @@ class SvTextureViewerNodeLite(bpy.types.Node, SverchCustomTreeNode):
Im.pixels = np.resize(self.inputs[0].sv_get(), len(Im.pixels))
def get_preferences(self):
# supplied with default, forces at least one value :)
props = get_params({
'render_scale': 1.0,
'render_location_xy_multiplier': 1.0})
return props.render_scale, props.render_location_xy_multiplier
return get_params({
'render_scale': 1.0, 'render_location_xy_multiplier': 1.0}, direct=True)
def get_dimensions(self, width, height):
"""
......
......@@ -34,7 +34,9 @@ def get_preferences():
from sverchok.settings import get_dpi_factor
return get_dpi_factor()
def write_time_graph():
def get_time_graph(): # tree_name):
# m = sverchok.core.update_system.graph_dicts.get(tree_name)
# return {idx: event for idx, event in enumerate(m)} if m else {}
m = sverchok.core.update_system.graphs
if len(m) == 1:
return {idx: event for idx, event in enumerate(m[0])}
......@@ -63,9 +65,10 @@ def draw_text(font_id, location, text, color):
def draw_node_time_infos(*data):
data_tree = write_time_graph() # data[0]
location_theta = data[1]
node_tree = bpy.data.node_groups.get(data[2])
tree_name = data[2]
data_tree = get_time_graph() # tree_name)
node_tree = bpy.data.node_groups.get(tree_name)
r, g, b = (0.9, 0.9, 0.9)
index_color = (0.98, 0.6, 0.6)
......@@ -82,6 +85,7 @@ def draw_node_time_infos(*data):
for idx, node_data in data_tree.items():
node = node_tree.nodes.get(node_data['name'])
if not node: continue
if not tree_name == node_data['tree_name']: continue
x, y = get_xy_for_bgl_drawing(node)
x, y = int(x), int(y)
......@@ -107,9 +111,10 @@ def draw_overlay(*data):
# visible width ( T panel is not included, only N panel)
region_width = region.width
data_tree = write_time_graph() # data[0]
node_tree = bpy.data.node_groups.get(data[1])
shader = data[2]
shader = data[1]
tree_name = data[2]
data_tree = get_time_graph() # tree_name)
node_tree = bpy.data.node_groups.get(tree_name)
white = (1.0, 1.0, 1.0, 1.0)
left_offset = 140
......@@ -132,7 +137,9 @@ def draw_overlay(*data):
for idx in sorted(data_tree, key=lambda value: data_tree.get(value).get("start")):
node_data = data_tree.get(idx)
node = node_tree.nodes.get(node_data['name'])
if not node: continue
if not tree_name == node_data['tree_name']: continue
cumsum += node_data['duration']
txt_width, txt_height = blf.dimensions(font_id, node_data['name'])
......@@ -216,7 +223,7 @@ def configure_time_graph(ng):
named_tree = ng.name
shader = gpu.shader.from_builtin('2D_SMOOTH_COLOR')
data_overlay = (None, named_tree, shader)
data_overlay = (None, shader, named_tree)
config_graph_overlay = {
'tree_name': named_tree,
......
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать