use Module::AutoInstall;
name 'LandingAirplanes';
-all_from 'lib/LandingAirplanes.pm';
-readme_from 'lib/LandingPairplanes.pm';
+#all_from 'lib/LandingAirplanes.pm';
+#readme_from 'lib/LandingPairplanes.pm';
license 'artistic';
requires 'SDL';
requires 'Data::Dump';
requires 'Math::CatmullRom';
requires 'Algorithm::Line::Bresenham';
+requires 'Math::Bezier';
#requires '';
auto_include;
use SDL::Event;
use Math::CatmullRom;
use Algorithm::Line::Bresenham qw(line);
+use Math::Bezier;
use Carp qw(cluck);
use Data::Dump qw(dump);
my $curve = Math::CatmullRom->new( @path );
my $points = $#path + 1 - 4; # remove start/end points
- my @curve = $curve->curve( $points );
+ return $curve->curve( $points );
+}
+
+sub curve_bezier {
+ my $curve = Math::Bezier->new( @path );
+ return $curve->curve( $#path + 1 );
+}
+
+our $curve_type = 0;
+
+sub curve {
+ # add landing path points
+ push @path, lading_points( $path[-2], $path[-1] ) if $#path > 1;
+
+ my $type = 1;
+
+ my @curve = $curve_type ? curve_catmull_rom : curve_bezier;
debug 'curve' => @curve;
my $i = 0;
sub { $app->pixel( @_, $path_color ) }
);
}
+ $app->sync;
+
push @airplanes, Airplane->new( $app );
$airplanes[-1]->set_path( @path );
- $app->sync;
reset_path;
}
-sub curve {
- # add landing path points
- push @path, lading_points( $path[-2], $path[-1] ) if $#path > 1;
-
- if ( 1 ) {
- curve_catmull_rom;
- } else {
-
- }
-
-}
-
sub clear_screen {
my ( $mask ) = @_;
reset_path;
$current_mask++;
$current_mask = 0 if $current_mask > $#masks;
clear_screen $current_mask;
+ } elsif ( $key eq 't' ) { # XXX curve type
+ $curve_type = ! $curve_type;
} else {
warn "unknown key $key";
}