Update
This commit is contained in:
25
2023/scripts/rigging_tools/ngskintools2/observableValue.py
Normal file
25
2023/scripts/rigging_tools/ngskintools2/observableValue.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from ngSkinTools2.api.python_compatibility import Object
|
||||
from ngSkinTools2.signal import Signal
|
||||
|
||||
|
||||
class Undefined(Object):
|
||||
pass
|
||||
|
||||
|
||||
class ObservableValue(Object):
|
||||
def __init__(self, default_value=Undefined):
|
||||
self.value = default_value
|
||||
self.changed = Signal("observable value")
|
||||
|
||||
def set(self, value):
|
||||
self.value = value
|
||||
self.changed.emit()
|
||||
|
||||
def __call__(self, default=Undefined, *args, **kwargs):
|
||||
if self.value != Undefined:
|
||||
return self.value
|
||||
|
||||
if default != Undefined:
|
||||
return default
|
||||
|
||||
raise Exception("using observable value before setting it")
|
||||
Reference in New Issue
Block a user