def setup(self): w = self._precision h = w * self.ratio self.solver = FluidSolver(w, h) self.solver.rgb = self._rgb self.solver.fadespeed = self._fadespeed self.solver.viscosity = self._viscosity self.solver.solveriterations = self._iterations self.solver.colordiffusion = self._colordiffusion self.solver.wrapx = self._wrapx self.solver.wrapy = self._wrapy
class MTFluid(MTWidget): def __init__(self, **kwargs): super(MTFluid, self).__init__(**kwargs) self.ratio = self.height / float(self.width) self._precision = kwargs.get('precision', 120) self._rgb = kwargs.get('rgb', True) self._fadespeed = kwargs.get('fadespeed', .003) self._viscosity = kwargs.get('viscosity', .0001) self._iterations = kwargs.get('iterations', 5) self._colordiffusion = kwargs.get('colordiffusion', 0.0001) self._contrast = kwargs.get('contrast', 5) self._speed = kwargs.get('speed', 5) self._wrapx = kwargs.get('wrapx', False) self._wrapy = kwargs.get('wrapy', False) self.setup() def on_resize(self, w, h): self.setup() def setup(self): w = self._precision h = w * self.ratio self.solver = FluidSolver(w, h) self.solver.rgb = self._rgb self.solver.fadespeed = self._fadespeed self.solver.viscosity = self._viscosity self.solver.solveriterations = self._iterations self.solver.colordiffusion = self._colordiffusion self.solver.wrapx = self._wrapx self.solver.wrapy = self._wrapy def on_update(self): self.solver.update(getFrameDt() * self._speed) def on_touch_down(self, touch): self.solver.addForce(touch.sx, touch.sy * self.ratio, 0, 0) def on_touch_move(self, touch): d = (Vector(touch.pos) - Vector(touch.dpos)) self.solver.addForce(touch.sx, touch.sy * self.ratio, d.x, d.y) def draw(self): self.solver.draw_into_texture(self._contrast) #self.solver.draw_into_texture_motion() #self.solver.draw_into_texture_speed() set_color(1, 1, 1) drawTexturedRectangle(texture=self.solver.texture, size=self.size)