SpriteAction_AlphaFade.cpp
Go to the documentation of this file.00001 //*** SpriteAction_AlphaFade.cpp *** 00002 00003 #include "SpriteAction_AlphaFade.h" 00004 #include "ColorHelper.h" 00005 #include "Sprite.h" 00006 #include "StandardLibrary.h" 00007 00008 00009 //*** Constructor *** 00010 00011 SpriteAction_AlphaFade::SpriteAction_AlphaFade(unsigned char targetAlpha, float time): 00012 targetAlpha_(targetAlpha), 00013 time_(time), 00014 elapsedTime_(0), 00015 sourceA_(0), 00016 targetA_(0), 00017 deltaA_(0) 00018 { 00019 if (time_<=0) 00020 { 00021 time_=FLOAT_EPSILON; 00022 } 00023 } 00024 00025 00026 //*** Setup *** 00027 00028 void SpriteAction_AlphaFade::Setup(SpriteController* controller, Sprite* sprite) 00029 { 00030 unsigned char sourceAlpha=sprite->GetAlpha(); 00031 sourceA_=((float)sourceAlpha)/255.0f; 00032 00033 targetA_=((float)targetAlpha_)/255.0f; 00034 00035 deltaA_=(targetA_-sourceA_)/time_; 00036 } 00037 00038 00039 //*** Update *** 00040 00041 void SpriteAction_AlphaFade::Update(SpriteController* controller, Sprite* sprite, float deltaTime) 00042 { 00043 elapsedTime_+=deltaTime; 00044 00045 if (elapsedTime_>time_) 00046 { 00047 sprite->SetAlpha(targetAlpha_); 00048 ActionCompleted(); 00049 return; 00050 } 00051 00052 float a=sourceA_+deltaA_*elapsedTime_; 00053 if (targetA_<sourceA_) 00054 { 00055 a=Max(a,targetA_); 00056 } 00057 else 00058 { 00059 a=Min(a,targetA_); 00060 } 00061 00062 unsigned char alpha=(unsigned char)(a*255.0f); 00063 sprite->SetAlpha(alpha); 00064 } 00065
Reproduction/republishing of any material on this site without permission is strictly prohibited.
