27 lines
1016 B
Python
27 lines
1016 B
Python
from direct.showbase.DirectObject import DirectObject
|
|
from panda3d.direct import CInterval
|
|
|
|
from p3dimgui.utilities.IntervalTimeSlider import IntervalTimeSlider
|
|
|
|
from direct.extensions_native.extension_native_helpers import Dtool_funcToMethod
|
|
|
|
class TimeSliderManager(DirectObject):
|
|
def __init__(self):
|
|
DirectObject.__init__(self)
|
|
|
|
self.intervalToTimeSliders: dict[CInterval, IntervalTimeSlider] = {}
|
|
|
|
# Replace the popupControls() extension method for CInterval
|
|
def popupControls(interval):
|
|
self.intervalToTimeSliders[interval] = IntervalTimeSlider(interval)
|
|
|
|
Dtool_funcToMethod(popupControls, CInterval)
|
|
Dtool_funcToMethod(popupControls, CInterval, "slider")
|
|
self.accept('imgui-new-frame', self.__checkActive)
|
|
|
|
def __checkActive(self):
|
|
for node in list(self.intervalToTimeSliders.keys()):
|
|
placer = self.intervalToTimeSliders[node]
|
|
if not placer.active:
|
|
del self.intervalToTimeSliders[node]
|