ya2 · news · projects · code · about

refactoring of functional tests
[pmachines.git] / lib / engine / gui / circle.py
CommitLineData
8ee66edd
FC
1from os import name
2from lib.lib.gui import Frame
3from lib.lib.p3d.shader import load_shader
4from lib.gameobject import GameObject
5
6
7class Circle(Frame, GameObject):
8
9 def __init__(self, size=.4, pos=(0, 0), parent=None, ray=.4, thickness=.05,
10 col_start=(1, 1, 1, 1), col_end=(1, 1, 1, 1)):
11 GameObject.__init__(self)
12 Frame.__init__(self, pos=(pos[0], pos[1]), texture_coord=True,
13 frame_size=(-size, size, -size, size), parent=parent)
14 path = 'assets/shaders/'
15 shader = load_shader(path + 'filter.vert', path + 'circle.frag')
16 drv_lst = [self.eng.lib.driver_vendor, self.eng.lib.driver_renderer,
17 self.eng.lib.driver_version]
18 is_nvidia = any('nvidia' in drv.lower() for drv in drv_lst)
19 if shader and not (name == 'nt' and is_nvidia):
20 self.set_shader(shader)
21 args = [('ray', ray), ('width', thickness), ('progress', 0),
22 ('color_start', col_start), ('color_end', col_end)]
23 list(map(lambda arg: self.set_shader_input(*arg), args))
24 else: self['frameColor'] = (1, 1, 1, 0)
25 self.set_transparency(True)
26
27 @property
28 def progress(self): return self.get_shader_input('progress')
29
30 @progress.setter
31 def progress(self, val): self.set_shader_input('progress', val)
32
33 def destroy(self):
34 Frame.destroy(self)
35 GameObject.destroy(self)