blob: b2dea04e3e7921a897287a23d304a64e971eb0f2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# SPDX-License-Identifier: GPL-2.0-or-later
"""
Select Meshlights
Select all the meshes that emit light. On the header of the 3D View, top
of the select menu.
"""
import bpy
from amaranth import utils
class AMTH_OBJECT_OT_select_meshlights(bpy.types.Operator):
"""Select light emitting meshes"""
bl_idname = "object.select_meshlights"
bl_label = "Select Meshlights"
bl_options = {"UNDO"}
@classmethod
def poll(cls, context):
return context.scene.render.engine == "CYCLES"
def execute(self, context):
# Deselect everything first
bpy.ops.object.select_all(action="DESELECT")
for ob in context.scene.objects:
if utils.cycles_is_emission(context, ob):
ob.select_set(True)
context.view_layer.objects.active = ob
if not context.selected_objects and not context.view_layer.objects.active:
self.report({"INFO"}, "No meshlights to select")
return {"FINISHED"}
def button_select_meshlights(self, context):
if utils.cycles_exists() and utils.cycles_active(context):
self.layout.operator('object.select_meshlights', icon="LIGHT_SUN")
def register():
bpy.utils.register_class(AMTH_OBJECT_OT_select_meshlights)
bpy.types.VIEW3D_MT_select_object.append(button_select_meshlights)
def unregister():
bpy.utils.unregister_class(AMTH_OBJECT_OT_select_meshlights)
bpy.types.VIEW3D_MT_select_object.remove(button_select_meshlights)
|