4
4
mirror of https://github.com/H-uru/korman.git synced 2025-07-14 14:27:36 +00:00

Don't bake shadows for objects with no drawables

I fail to understand why Blender thinks this is legit, but oh well...
Also, as a bonus, we no longer clobber values in the GoodNeighbor tracker.
I wonder how many bugs this will fix?
This commit is contained in:
2016-06-20 18:54:04 -04:00
parent 0b1c4a4f45
commit 7e387fda48
2 changed files with 10 additions and 2 deletions

View File

@ -163,7 +163,10 @@ class LightBaker:
return None
def _has_valid_material(self, bo):
for material in bo.data.materials:
data = bo.data
if data is None or not isinstance(data, bpy.types.Mesh):
return False
for material in data.materials:
if material is not None:
return True
return False
@ -318,11 +321,15 @@ class LightBaker:
toggle.track(objs, "hide_render", False)
for i in bpy.data.objects:
i.select = i == objs
if not self._has_valid_material(i):
toggle.track(i, "hide_render", True)
else:
for i in bpy.data.objects:
value = i in objs
if value:
toggle.track(i, "hide_render", False)
elif not self._has_valid_material(i):
toggle.track(i, "hide_render", True)
i.select = value
@persistent

View File

@ -24,7 +24,8 @@ class GoodNeighbor:
return self
def track(self, cls, attr, value):
self._tracking[(cls, attr)] = getattr(cls, attr)
if (cls, attr) not in self._tracking:
self._tracking[(cls, attr)] = getattr(cls, attr)
setattr(cls, attr, value)
def __exit__(self, type, value, traceback):