def test_Bounce_controller_neg_friction(self): from lepton import controller group = self._make_group() bounce = controller.Bounce(DummyPlaneDomain(), friction=-0.5) bounce(0, group) p = list(group) self.assertVector(p[0].position, (0, 0, 0)) self.assertVector(p[0].velocity, (0, 1, 0)) self.assertVector(p[1].position, (0, 0.5, 0)) self.assertVector(p[1].velocity, (0, 1.5, 0)) self.assertVector(p[2].position, (1, -1, 1.5)) self.assertVector(p[2].velocity, (3, -2, 0)) self.assertVector(p[3].position, (1, 2, 1)) self.assertVector(p[3].velocity, (0, 1, 0))
def test_Bounce_controller_low_bounce(self): from lepton import controller group = self._make_group() bounce = controller.Bounce(DummyPlaneDomain(), bounce=0.5) bounce(0, group) p = list(group) self.assertVector(p[0].position, (0, 0, 0)) self.assertVector(p[0].velocity, (0, 0.5, 0)) self.assertVector(p[1].position, (0, 0.25, 0)) self.assertVector(p[1].velocity, (0, 0.75, 0)) self.assertVector(p[2].position, (1, -0.5, 1)) self.assertVector(p[2].velocity, (2, -1, 0)) self.assertVector(p[3].position, (1, 2, 1)) self.assertVector(p[3].velocity, (0, 1, 0))
def test_Bounce_controller_callback(self): from lepton import controller group = self._make_group() callback_args = [] def dummy_callback(*args): self.assertEqual(len(args), 5) callback_args.append(args) bounce = controller.Bounce(DummyPlaneDomain(), callback=dummy_callback) bounce(0, group) p = list(group) self.assertEqual(len(callback_args), len(group) - 1) for particle, (cbparticle, cbgroup, cbcontroller, cbpoint, cbnormal) in zip(p, callback_args): # TODO Add particle-particle and vector-vector comparison ops self.assertVector(cbparticle.position, particle.position) self.failUnless(cbgroup is group, cbgroup) self.failUnless(cbcontroller is bounce, cbcontroller) self.assertEqual(cbpoint[1], 0)
def load(cls): super(Rocket, cls).load() img = loader.image('data/sprites/rocket-spark.png') cls.particle_texture = img w = img.width h = img.height img.anchor_x = w * 0.5 img.anchor_y = h * 0.5 cls.particle_controllers = [ controller.Movement(), controller.Lifetime(max_age=2), controller.Growth(30.0), controller.ColorBlender([ (0, (1.0, 0.9, 0.0, 1.0)), (1, (0.0, 0.0, 0.0, 0.2)), (3, (0.0, 0.0, 0.0, 0.0)), ]), controller.Bounce(domain=domain.Plane((0, SEA_LEVEL, 0), (0, 1, 0)), bounce=0.02) ] cls.particle_renderer = Renderer(cls.particle_texture)