Commit | Line | Data |
---|---|---|
8ee66edd FC |
1 | from os import name |
2 | from lib.lib.gui import Frame | |
3 | from lib.lib.p3d.shader import load_shader | |
4 | from lib.gameobject import GameObject | |
5 | ||
6 | ||
7 | class 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) |