use strict;
use warnings;
use Box2D;
use Test::More;

my $vec = Box2D::b2Vec2->new(0,-10);
my $world = Box2D::b2World->new($vec, 1);

my $body_def = Box2D::b2BodyDef->new();

$body_def->position->Set(0.0, -10.0);

my $groundBody = $world->CreateBody($body_def); 

my $groundBox = Box2D::b2PolygonShape->new();

$groundBox->SetAsBox(50.0, 10.0);

$groundBody->CreateFixture( $groundBox, 0.0 ); 

my $bodyDef = Box2D::b2BodyDef->new();
	$bodyDef->type(Box2D::b2_dynamicBody);
	is( $bodyDef->type(), 2, "returning enum" );
	$bodyDef->position->Set(0.0, 4.0);

my $body = $world->CreateBody($bodyDef);

pass( "Create body for world " );

my $dynamicBox = Box2D::b2PolygonShape->new();
$dynamicBox->SetAsBox( 1.0, 1.0 );

pass( "Create box" );

my $fixtureDef = Box2D::b2FixtureDef->new();
$fixtureDef->shape( $dynamicBox );
$fixtureDef->density(1.0);
$fixtureDef->friction(0.3);


$body->CreateFixtureDef($fixtureDef);

pass( "Create fixture Def" );
my $timeStep = 1.0/60.0;
my $velocityIterations = 6;
my $positionIterations = 2;

foreach ( 0.. 60 )
{

	$world->Step( $timeStep, $velocityIterations, $positionIterations );
	$world->ClearForces();

	my $position = $body->GetPosition();
	my $angle = $body->GetAngle();
	warn( "Position ". $position->x(). ", ". $position->y() ."\n" );
	warn( "Angle ".$angle."\n");
}

pass( "Run step and clear forces");

pass("Made stuff and survived");

$world->DestroyBody( $body );
$body = undef;
pass("Destroyed the body");

done_testing;
