52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
# 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)
|