blender-addons/amaranth/scene/stats.py

51 lines
1.4 KiB
Python

# SPDX-License-Identifier: GPL-2.0-or-later
"""
Scene, Cameras, and Meshlights Count
Increase the stats by displaying the number of scenes, cameras, and light
emitting meshes.
On the Info header.
"""
import bpy
from amaranth import utils
def stats_scene(self, context):
get_addon = "amaranth" in context.preferences.addons.keys()
if not get_addon:
return
if context.preferences.addons["amaranth"].preferences.use_scene_stats:
scenes_count = str(len(bpy.data.scenes))
cameras_count = str(len(bpy.data.cameras))
cameras_selected = 0
meshlights = 0
meshlights_visible = 0
for ob in context.scene.objects:
if utils.cycles_is_emission(context, ob):
meshlights += 1
if ob in context.visible_objects:
meshlights_visible += 1
if ob in context.selected_objects:
if ob.type == 'CAMERA':
cameras_selected += 1
meshlights_string = '| Meshlights:{}/{}'.format(
meshlights_visible, meshlights)
row = self.layout.row(align=True)
row.label(text="Scenes:{} | Cameras:{}/{} {}".format(
scenes_count, cameras_selected, cameras_count,
meshlights_string if utils.cycles_active(context) else ''))
def register():
bpy.types.STATUSBAR_HT_header.append(stats_scene)
def unregister():
bpy.types.STATUSBAR_HT_header.remove(stats_scene)