Пример #1
0
    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))
Пример #2
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))
Пример #3
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)
Пример #4
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)