Monthly Archives: July 2004

Glop Actor Heirarchy

Just as POE has Components, Glop has Actors. And unlike the rest of the design, you use Actors by inheriting from them (well, you can use them directly, too). A simple Actor that will come with glop will be the 2D::Circle actor, which is good enough to toss into a scene and watch it bounce around. Of course, there will need to be things for it to bounce against. That’s what 2D::Wall is for. It is not, by default, affected by gravity, but it registers collisions.

I envisage a program in which a ball bounces around the screen, in its entirety, as such:

    use Glop qw{-fullscreen -2d},
            -view => [ 0, 0, 32, 24 ];   # set the viewport to (0,0)-(32,24)
    $KERNEL->world->gravity(v(0, -9.8));
    $KERNEL->add(Glop::Actor::2D::Circle->new(v(16,12)));
    $KERNEL->add(Glop::Actor::2D::Wall->new(v(0,0), v(32, 1));   # floor
    $KERNEL->add(Glop::Actor::2D::Wall->new(v(0,0), v(1, 24));   # left
    $KERNEL->add(Glop::Actor::2D::Wall->new(v(31,0), v(32,24));  # right
    $KERNEL->run;

Note, here, that the program responds to an OS quit event, and quits if you push escape. It just runs otherwise. Also note that the keyboard handling is already implemented, as well as the $KERNEL->add and $KERNEL->run methods. The next thing I’ll be working on is integrating ODE, followed by the collision detector. After that’s done, I’ll probaby have less than two weeks to prepare my presentation, so, um, yeah, I’ll be doing that.