|
1 |
| -from ursina import Entity, Slider, color, Button, camera, Quad, copy |
| 1 | +from ursina import Entity, Slider, color, Button, camera, Quad, copy, Color |
2 | 2 |
|
3 | 3 |
|
4 | 4 | class ColorPicker(Entity):
|
| 5 | + default_values = dict(parent=camera.ui) |
| 6 | + |
5 | 7 | def __init__(self, dynamic=True, **kwargs):
|
6 |
| - super().__init__(parent=camera.ui, **kwargs) |
| 8 | + super().__init__(**(__class__.default_values | kwargs)) |
7 | 9 |
|
8 | 10 | self.bg = Entity(parent=self, z=.01, model=Quad(aspect=.5/.2), scale=[.5,.225], origin=[0,.5], color=color.black66)
|
9 | 11 | self.h_slider = Slider(parent=self, max=360, step=1, dynamic=dynamic, on_value_changed=self._calculate_color)
|
@@ -36,6 +38,18 @@ def __init__(self, dynamic=True, **kwargs):
|
36 | 38 | for key, value in kwargs.items():
|
37 | 39 | setattr(self, key, value)
|
38 | 40 |
|
| 41 | + @property |
| 42 | + def value(self): |
| 43 | + return color.hsv(self.h_slider.value, self.s_slider.value/100, self.v_slider.value/100, self.a_slider.value/100) |
| 44 | + |
| 45 | + @value.setter |
| 46 | + def value(self, value:Color): |
| 47 | + value = value.hsv |
| 48 | + self.h_slider.value = value[0] |
| 49 | + self.s_slider.value = value[1]*100 |
| 50 | + self.v_slider.value = value[2]*100 |
| 51 | + self.a_slider.value = value[3]*100 |
| 52 | + |
39 | 53 |
|
40 | 54 | def _calculate_color(self):
|
41 | 55 | self.color = color.hsv(self.h_slider.value, self.s_slider.value/100, self.v_slider.value/100, self.a_slider.value/100)
|
|
0 commit comments