class WaterBar(NodePath): def __init__(self): NodePath.__init__(self, 'waterBar') self.range = 100 self.value = 100 self.back = OnscreenImage("phase_14/maps/backv2.png", scale=(0.289, 1, 0.813), parent=self) self.bar = OnscreenImage("phase_14/maps/frontv2.png", scale=(0.233, 1, 0.740), parent=self) self.setTransparency(1) barSh = loader.loadShader("phase_14/models/shaders/progress_bar.sha") self.bar.setShader(barSh) self.bar.setShaderInput( "tex", loader.loadTexture("phase_14/maps/frontv2.png")) self.bar.setShaderInput("perct", float(self.value) / float(self.range)) self.bar.setShaderInput("dir", 0) self.bar.setShaderInput("alpha", 1.0) self.task = taskMgr.add(self.__update, "WaterBar.update") def removeNode(self): self.task.remove() self.task = None self.back.destroy() self.back = None self.bar.destroy() self.bar = None self.range = None self.value = None NodePath.removeNode(self) def setDirection(self, dir): self.bar.setShaderInput("dir", dir) def setBarAlpha(self, alpha): self.bar.setShaderInput("alpha", alpha) def __update(self, task): self.bar.setShaderInput("perct", float(self.value) / float(self.range)) return task.cont