— — — — — — — |
$Box::Calc::Role::Container::VERSION = '1.0206' ;
has outer_x => (
is => 'rw' ,
isa => 'Num' ,
required => 1,
);
has outer_y => (
is => 'rw' ,
isa => 'Num' ,
required => 1,
);
has outer_z => (
is => 'rw' ,
isa => 'Num' ,
required => 1,
);
sub outer_volume {
my ( $self ) = @_ ;
return $self ->outer_x * $self ->outer_y * $self ->outer_z;
}
sub outer_dimensions {
my ( $self ) = @_ ;
return [ $self ->outer_x, $self ->outer_y, $self ->outer_z, ];
}
sub outer_extent {
my ( $self ) = @_ ;
return join ',' , $self ->outer_x, $self ->outer_y, $self ->outer_z;
}
has max_weight => (
is => 'ro' ,
isa => 'Num' ,
default => 1000,
);
around BUILDARGS => sub {
my $orig = shift ;
my $className = shift ;
my $args ;
if ( ref $_ [0] eq 'HASH' ) {
$args = shift ;
}
else {
$args = { @_ };
}
$args ->{outer_x} ||= $args ->{x};
$args ->{outer_y} ||= $args ->{y};
$args ->{outer_z} ||= $args ->{z};
my ( $x , $y , $z ) = sort { $b <=> $a } ( $args ->{outer_x}, $args ->{outer_y}, $args ->{outer_z} );
$args ->{outer_x} = $x ;
$args ->{outer_y} = $y ;
$args ->{outer_z} = $z ;
return $className -> $orig ( $args );
};
1;
|