SpriteAction_AlphaSine.cpp
Go to the documentation of this file.00001 //*** SpriteAction_AlphaSine.cpp *** 00002 00003 #include "SpriteAction_AlphaSine.h" 00004 #include "ColorHelper.h" 00005 #include "Sprite.h" 00006 #include "SpriteController.h" 00007 00008 00009 //*** Constructor *** 00010 00011 SpriteAction_AlphaSine::SpriteAction_AlphaSine(float amplitude, float offset, float frequency, float easeIn): 00012 amplitude_(amplitude), 00013 offset_(offset), 00014 frequency_(frequency), 00015 easeIn_(easeIn), 00016 perpetual_(true), 00017 time_(0), 00018 easeOut_(0), 00019 elapsedTime_(0) 00020 { 00021 } 00022 00023 00024 //*** Constructor *** 00025 00026 SpriteAction_AlphaSine::SpriteAction_AlphaSine(float amplitude, float offset, float frequency, float time, float easeIn, float easeOut): 00027 amplitude_(amplitude), 00028 offset_(offset), 00029 frequency_(frequency), 00030 easeIn_(easeIn), 00031 perpetual_(false), 00032 time_(time), 00033 easeOut_(easeOut), 00034 elapsedTime_(0) 00035 { 00036 } 00037 00038 00039 //*** Setup *** 00040 00041 void SpriteAction_AlphaSine::Setup(SpriteController* controller, Sprite* sprite) 00042 { 00043 if (time_==0) 00044 { 00045 perpetual_=true; 00046 } 00047 } 00048 00049 00050 //*** Update *** 00051 00052 void SpriteAction_AlphaSine::Update(SpriteController* controller, Sprite* sprite, float deltaTime) 00053 { 00054 elapsedTime_+=deltaTime; 00055 00056 if (!perpetual_ && elapsedTime_>time_) 00057 { 00058 ActionCompleted(); 00059 return; 00060 } 00061 00062 float scale=1.0f; 00063 if (elapsedTime_<easeIn_) 00064 { 00065 scale=elapsedTime_/easeIn_; 00066 } 00067 else if (!perpetual_ && elapsedTime_>time_-easeOut_) 00068 { 00069 scale=1.0f-(elapsedTime_-(time_-easeOut_))/easeOut_; 00070 } 00071 00072 float sine=Sin(elapsedTime_*frequency_+ToRadians(offset_))*amplitude_*scale; 00073 sine=(sine+1.0f)*0.5f; 00074 00075 int alpha=Clamp((int)(sine*255.0f),1,255); 00076 sprite->SetAlpha((char)alpha); 00077 } 00078
Reproduction/republishing of any material on this site without permission is strictly prohibited.
