Source code for yt_idv.scene_annotations.block_outline

import numpy as np
import traitlets
from OpenGL import GL

from yt_idv.scene_annotations.base_annotation import SceneAnnotation
from yt_idv.scene_data.block_collection import BlockCollection


[docs]class BlockOutline(SceneAnnotation): """ A class that renders outlines of block data. """ name = "block_outline" data = traitlets.Instance(BlockCollection) box_width = traitlets.CFloat(0.1) box_color = traitlets.Tuple((1.0, 1.0, 1.0), trait=traitlets.CFloat()) box_alpha = traitlets.CFloat(1.0)
[docs] def draw(self, scene, program): GL.glDisable(GL.GL_CULL_FACE) each = self.data.vertex_array.each for tex_ind, _tex, _bitmap_tex in self.data.viewpoint_iter(scene.camera): GL.glDrawArrays(GL.GL_POINTS, tex_ind * each, each)
[docs] def render_gui(self, imgui, renderer, scene): changed = super().render_gui(imgui, renderer, scene) _, bw = imgui.slider_float("Width", self.box_width, 0.001, 2.50) if _: self.box_width = bw changed = changed or _ _, (r, g, b) = imgui.color_edit3("Color", *self.box_color) if _: self.box_color = (r, g, b) changed = changed or _ _, ba = imgui.slider_float("Alpha", self.box_alpha, 0.0, 1.0) if _: self.box_alpha = ba changed = changed or _ return changed
def _set_uniforms(self, scene, shader_program): shader_program._set_uniform("box_width", self.box_width) shader_program._set_uniform("box_color", np.array(self.box_color)) shader_program._set_uniform("box_alpha", self.box_alpha)