Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove depsgraph catch #4610

Merged
merged 1 commit into from
Aug 27, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 2 additions & 38 deletions core/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,6 @@

_state = {'frame': None}

pre_running = False
sv_depsgraph = []
depsgraph_need = False

def get_sv_depsgraph():
global sv_depsgraph
global depsgraph_need

if not depsgraph_need:
sv_depsgraph = bpy.context.evaluated_depsgraph_get()
depsgraph_need = True
elif not sv_depsgraph:
sv_depsgraph = bpy.context.evaluated_depsgraph_get()

return sv_depsgraph

def set_sv_depsgraph_need(val):
global depsgraph_need
depsgraph_need = val


def sverchok_trees():
for ng in bpy.data.node_groups:
Expand Down Expand Up @@ -82,7 +62,6 @@ def sv_handler_undo_post(scene):
if undo_handler_node_count['sv_groups'] != num_to_test_against:
debug('looks like a node was removed, cleaning')
sv_clean(scene)
sv_main_handler(scene)

undo_handler_node_count['sv_groups'] = 0

Expand Down Expand Up @@ -113,25 +92,10 @@ def sv_update_handler(scene):


@persistent
def sv_main_handler(scene):
def sv_scene_change_handler(scene):
"""
On depsgraph update (pre)
"""
global pre_running
global sv_depsgraph
global depsgraph_need

# when this handler is called from inside another call to this handler we end early
# to avoid stack overflow.
if pre_running:
return

pre_running = True
if depsgraph_need:
sv_depsgraph = bpy.context.evaluated_depsgraph_get()

pre_running = False

# When the Play Animation is on this trigger is executed once. Such event
# should be suppressed because it repeats animation trigger. When Play
# animation is on and user changes something in the scene this trigger is
Expand Down Expand Up @@ -242,7 +206,7 @@ def save_pre_handler(scene):
'undo_post': sv_handler_undo_post,
'load_pre': sv_pre_load,
'load_post': sv_post_load,
'depsgraph_update_pre': sv_main_handler,
'depsgraph_update_pre': sv_scene_change_handler,
'save_pre': save_pre_handler,
}

Expand Down
9 changes: 2 additions & 7 deletions nodes/modifier_make/sweep_modulator.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import bpy
from sverchok.node_tree import SverchCustomTreeNode
from sverchok.data_structure import updateNode
from sverchok.core.handlers import get_sv_depsgraph, set_sv_depsgraph_need


def interp_v3l_v3v3(a, b, t):
Expand Down Expand Up @@ -108,7 +107,7 @@ def sweep_between(self, construct):
num_path_verts = len(path_verts)

# -- use the depsgraph for the bevelled objects
sv_depsgraph = get_sv_depsgraph()
sv_depsgraph = bpy.context.evaluated_depsgraph_get()
shape_a = sv_depsgraph.objects[construct.shape_a.name]
shape_b = sv_depsgraph.objects[construct.shape_b.name]
shape_a_data = shape_a.to_mesh()
Expand Down Expand Up @@ -200,16 +199,12 @@ def process(self):
finally:
if not construct.complete:
return

set_sv_depsgraph_need(True)

v, e, f = self.sweep_between(construct)
self.outputs['Verts'].sv_set([v])
self.outputs['Edges'].sv_set([e])
self.outputs['Faces'].sv_set([f])

def sv_free(self):
set_sv_depsgraph_need(False)


classes = [SvSweepModulator]
register, unregister = bpy.utils.register_classes_factory(classes)
6 changes: 1 addition & 5 deletions nodes/object_nodes/color_uv_texture.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import numpy as np
from bpy.props import BoolProperty, StringProperty, FloatVectorProperty
from sverchok.node_tree import SverchCustomTreeNode
from sverchok.core.handlers import get_sv_depsgraph, set_sv_depsgraph_need
from sverchok.data_structure import (updateNode, second_as_first_cycle as safc)


Expand Down Expand Up @@ -50,12 +49,9 @@ def sv_init(self, context):
color_socket = si('SvColorSocket', 'Color on UV')
color_socket.prop_name = 'unit_color'

def sv_free(self):
set_sv_depsgraph_need(False)

def process(self):
Object, Points, Colors = self.inputs
dps = get_sv_depsgraph()
dps = bpy.context.evaluated_depsgraph_get()
obj = Object.sv_get()[0] # triangulate faces
bvh = BVHTree.FromObject(obj, dps)
point = Points.sv_get()[0]
Expand Down
6 changes: 1 addition & 5 deletions nodes/object_nodes/sample_uv_color.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import numpy as np
from bpy.props import BoolProperty, StringProperty
from sverchok.node_tree import SverchCustomTreeNode
from sverchok.core.handlers import get_sv_depsgraph, set_sv_depsgraph_need
from sverchok.data_structure import (updateNode)


Expand All @@ -46,14 +45,11 @@ def sv_init(self, context):
self.inputs.new('SvVerticesSocket', 'Point on mesh')
self.outputs.new('SvColorSocket', 'Color on UV')

def sv_free(self):
set_sv_depsgraph_need(False)

def process(self):
Points = self.inputs[1]
Colors = self.outputs[0]
if Colors.is_linked:
dps = get_sv_depsgraph()
dps = bpy.context.evaluated_depsgraph_get()
obj = self.inputs[0].sv_get()[0] # triangulate faces
bvh = BVHTree.FromObject(obj, dps)
point = Points.sv_get()[0]
Expand Down
13 changes: 2 additions & 11 deletions nodes/scene/get_objects_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
from sverchok.utils.sv_operator_mixins import SvGenericNodeLocator
from sverchok.data_structure import updateNode
from sverchok.utils.sv_bmesh_utils import pydata_from_bmesh
from sverchok.core.handlers import get_sv_depsgraph, set_sv_depsgraph_need
from sverchok.utils.nodes_mixins.show_3d_properties import Show3DProperties
from sverchok.utils.blender_mesh import (
read_verts, read_edges, read_verts_normal,
Expand Down Expand Up @@ -107,14 +106,10 @@ def hide_show_versgroups(self, context):
elif not self.vergroups and showing_vg:
outs.remove(outs['Vers_grouped'])

def modifiers_handle(self, context):
set_sv_depsgraph_need(self.modifiers)
updateNode(self, context)

modifiers: BoolProperty(
name='Modifiers',
description='Apply modifier geometry to import (original untouched)',
default=False, update=modifiers_handle)
default=False, update=updateNode)

vergroups: BoolProperty(
name='Vergroups',
Expand Down Expand Up @@ -257,9 +252,6 @@ def draw_buttons_3dpanel(self, layout):
def get_materials_from_bmesh(self, bm):
return [face.material_index for face in bm.faces[:]]

def sv_free(self):
set_sv_depsgraph_need(False)

def process(self):

objs = self.inputs[0].sv_get(default=[[]])
Expand All @@ -274,8 +266,7 @@ def process(self):
o_vs, o_es, o_ps, o_vn, o_mi, o_pa, o_pc, o_pn, o_ms, o_ob = [s.is_linked for s in self.outputs[:10]]
vs, es, ps, vn, mi, pa, pc, pn, ms = [[] for s in self.outputs[:9]]
if self.modifiers:
sv_depsgraph = get_sv_depsgraph()

sv_depsgraph = bpy.context.evaluated_depsgraph_get()

out_np = self.out_np if not self.output_np_all else [True for i in range(7)]
if isinstance(objs[0], list):
Expand Down
5 changes: 1 addition & 4 deletions nodes/scene/particles_MK2.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
from bpy.props import BoolProperty
from sverchok.node_tree import SverchCustomTreeNode
from sverchok.data_structure import updateNode, second_as_first_cycle as safc
from sverchok.core.handlers import get_sv_depsgraph, set_sv_depsgraph_need


class SvParticlesMK2Node(bpy.types.Node, SverchCustomTreeNode):
Expand Down Expand Up @@ -50,7 +49,7 @@ def process(self):
outL, outV = self.outputs

# this may not work in render mode.
sv_depsgraph = get_sv_depsgraph()
sv_depsgraph = bpy.context.evaluated_depsgraph_get()

# listobj = [i.particle_systems.active.particles for i in O.sv_get() if i.particle_systems]
listobj = []
Expand Down Expand Up @@ -79,8 +78,6 @@ def process(self):
if outV.is_linked:
outV.sv_set([[i.velocity[:] for i in Plist] for Plist in listobj])

def sv_free(self):
set_sv_depsgraph_need(False)

def register():
bpy.utils.register_class(SvParticlesMK2Node)
Expand Down
13 changes: 3 additions & 10 deletions old_nodes/blenddata_to_svdata2.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
from bpy.props import BoolProperty
from sverchok.node_tree import SverchCustomTreeNode
from sverchok.data_structure import (updateNode)
from sverchok.core.handlers import get_sv_depsgraph, set_sv_depsgraph_need


class SvObjectToMeshNodeMK2(bpy.types.Node, SverchCustomTreeNode):
'''Get Object Data'''
Expand All @@ -38,11 +38,7 @@ class SvObjectToMeshNodeMK2(bpy.types.Node, SverchCustomTreeNode):
PolygonCenters='Polygon Centers',
PolygonNormals='Polygon Normals'))]

def modifiers_handle(self, context):
set_sv_depsgraph_need(self.modifiers)
updateNode(self, context)

modifiers: BoolProperty(name='Modifiers', default=False, update=modifiers_handle)
modifiers: BoolProperty(name='Modifiers', default=False, update=updateNode)

def sv_init(self, context):
self.inputs.new('SvObjectSocket', "Objects")
Expand All @@ -59,9 +55,6 @@ def sv_draw_buttons(self, context, layout):
row = layout.row()
row.prop(self, "modifiers", text="Post modifiers")

def sv_free(self):
set_sv_depsgraph_need(False)

def process(self):
objs = self.inputs[0].sv_get()
if isinstance(objs[0], list):
Expand All @@ -71,7 +64,7 @@ def process(self):
vs,vn,es,ps,pa,pc,pn,ms = [],[],[],[],[],[],[],[]

if self.modifiers:
sv_depsgraph = get_sv_depsgraph()
sv_depsgraph = bpy.context.evaluated_depsgraph_get()

ot = objs[0].type in ['MESH', 'CURVE', 'FONT', 'SURFACE', 'META']
for obj in objs:
Expand Down
12 changes: 2 additions & 10 deletions old_nodes/objects_mk3.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
from sverchok.utils.sv_operator_mixins import SvGenericNodeLocator
from sverchok.data_structure import updateNode
from sverchok.utils.sv_bmesh_utils import pydata_from_bmesh
from sverchok.core.handlers import get_sv_depsgraph, set_sv_depsgraph_need
from sverchok.utils.nodes_mixins.show_3d_properties import Show3DProperties

class SvOB3BDataCollection(bpy.types.PropertyGroup):
Expand Down Expand Up @@ -94,18 +93,14 @@ def hide_show_versgroups(self, context):
elif not self.vergroups and showing_vg:
outs.remove(outs['Vers_grouped'])

def modifiers_handle(self, context):
set_sv_depsgraph_need(self.modifiers)
updateNode(self, context)

groupname: StringProperty(
name='groupname', description='group of objects (green outline CTRL+G)',
default='', update=updateNode)

modifiers: BoolProperty(
name='Modifiers',
description='Apply modifier geometry to import (original untouched)',
default=False, update=modifiers_handle)
default=False, update=updateNode)

vergroups: BoolProperty(
name='Vergroups',
Expand Down Expand Up @@ -221,9 +216,6 @@ def get_materials_from_bmesh(self, bm):
def get_materials_from_mesh(self, mesh):
return [face.material_index for face in mesh.polygons[:]]

def sv_free(self):
set_sv_depsgraph_need(False)

def process(self):

if not self.object_names:
Expand All @@ -242,7 +234,7 @@ def process(self):
materials_out = []

if self.modifiers:
sv_depsgraph = get_sv_depsgraph()
sv_depsgraph = bpy.context.evaluated_depsgraph_get()

# iterate through references
for obj in (data_objects.get(o.name) for o in self.object_names):
Expand Down