@ -5,11 +5,11 @@
INCLUDE_ANIMATION_DATA
INCLUDE_game
Bullet : : Bullet ( vf2d pos , vf2d vel , float radius , int damage , bool upperLevel , bool friendly , Pixel col )
: pos ( pos ) , vel ( vel ) , radius ( radius ) , damage ( damage ) , col ( col ) , friendly ( friendly ) , upperLevel ( upperLevel ) { } ;
Bullet : : Bullet ( vf2d pos , vf2d vel , float radius , int damage , bool upperLevel , bool friendly , Pixel col , vf2d scale )
: pos ( pos ) , vel ( vel ) , radius ( radius ) , damage ( damage ) , col ( col ) , friendly ( friendly ) , upperLevel ( upperLevel ) , scale ( scale ) { } ;
Bullet : : Bullet ( vf2d pos , vf2d vel , float radius , int damage , AnimationState animation , bool upperLevel , bool hitsMultiple , float lifetime , bool rotatesWithAngle , bool friendly , Pixel col )
: pos ( pos ) , vel ( vel ) , radius ( radius ) , damage ( damage ) , col ( col ) , animated ( true ) , rotates ( rotatesWithAngle ) , lifetime ( lifetime ) , hitsMultiple ( hitsMultiple ) , friendly ( friendly ) , upperLevel ( upperLevel ) {
Bullet : : Bullet ( vf2d pos , vf2d vel , float radius , int damage , AnimationState animation , bool upperLevel , bool hitsMultiple , float lifetime , bool rotatesWithAngle , bool friendly , Pixel col , vf2d scale )
: pos ( pos ) , vel ( vel ) , radius ( radius ) , damage ( damage ) , col ( col ) , animated ( true ) , rotates ( rotatesWithAngle ) , lifetime ( lifetime ) , hitsMultiple ( hitsMultiple ) , friendly ( friendly ) , upperLevel ( upperLevel ) , scale ( scale ) {
this - > animation . AddState ( animation , ANIMATION_DATA [ animation ] ) ;
this - > animation . ChangeState ( internal_animState , animation ) ;
} ;
@ -17,7 +17,6 @@ Bullet::Bullet(vf2d pos,vf2d vel,float radius,int damage,AnimationState animatio
Animate2D : : Frame Bullet : : GetFrame ( ) {
return animation . GetFrame ( internal_animState ) ;
}
void Bullet : : UpdateFadeTime ( float fElapsedTime )
{
if ( fadeOutTime > 0 ) {
@ -34,7 +33,7 @@ void Bullet::Draw(){
auto lerp = [ ] ( uint8_t f1 , uint8_t f2 , float t ) { return uint8_t ( ( float ( f2 ) * t ) + f1 * ( 1 - t ) ) ; } ;
if ( animated ) {
game - > view . DrawPartialRotatedDecal ( pos , GetFrame ( ) . GetSourceImage ( ) - > Decal ( ) , rotates ? atan2 ( vel . y , vel . x ) - PI / 2 : 0 , GetFrame ( ) . GetSourceRect ( ) . size / 2 , GetFrame ( ) . GetSourceRect ( ) . pos , GetFrame ( ) . GetSourceRect ( ) . size , { 1 , 1 } , fadeOutTime = = 0 ? col : Pixel { col . r , col . g , col . b , lerp ( col . a , 0 , 1 - ( ( fadeOutTime - fadeOutTimer ) / fadeOutTime ) ) } ) ;
game - > view . DrawPartialRotatedDecal ( pos , GetFrame ( ) . GetSourceImage ( ) - > Decal ( ) , rotates ? atan2 ( vel . y , vel . x ) - PI / 2 : 0 , GetFrame ( ) . GetSourceRect ( ) . size / 2 , GetFrame ( ) . GetSourceRect ( ) . pos , GetFrame ( ) . GetSourceRect ( ) . size , scale , fadeOutTime = = 0 ? col : Pixel { col . r , col . g , col . b , lerp ( col . a , 0 , 1 - ( ( fadeOutTime - fadeOutTimer ) / fadeOutTime ) ) } ) ;
} else {
game - > view . DrawDecal ( pos , game - > GFX_BulletCircle . Decal ( ) , { radius , radius } , fadeOutTime = = 0 ? col : Pixel { col . r , col . g , col . b , lerp ( col . a , 0 , 1 - ( ( fadeOutTime - fadeOutTimer ) / fadeOutTime ) ) } ) ;
game - > view . DrawDecal ( pos , game - > GFX_BulletCircleOutline . Decal ( ) , { radius , radius } , fadeOutTime = = 0 ? WHITE : Pixel { WHITE . r , WHITE . g , WHITE . b , lerp ( WHITE . a , 0 , 1 - ( ( fadeOutTime - fadeOutTimer ) / fadeOutTime ) ) } ) ;