df45cce7ef6043256404a4362e699c87f271b8e8
2 from ya2
.lib
.gui
import Frame
3 from ya2
.lib
.p3d
.shader
import load_shader
4 from ya2
.gameobject
import GameObject
7 class Circle(Frame
, GameObject
):
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)
28 def progress(self
): return self
.get_shader_input('progress')
31 def progress(self
, val
): self
.set_shader_input('progress', val
)
35 GameObject
.destroy(self
)