EG/third_party/p3dimgui/utilities/TimeSliderManager.py

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]