SpriteAction_SineWave.cpp
Go to the documentation of this file.00001 //*** SpriteAction_SineWave.cpp *** 00002 00003 #include "SpriteAction_SineWave.h" 00004 #include "ColorHelper.h" 00005 #include "Sprite.h" 00006 #include "SpriteController.h" 00007 00008 00009 //*** Constructor *** 00010 00011 SpriteAction_SineWave::SpriteAction_SineWave(float amplitudeX, float offsetX, float frequencyX, float amplitudeY, float offsetY, float frequencyY, float easeIn): 00012 amplitudeX_(amplitudeX), 00013 offsetX_(offsetX), 00014 frequencyX_(frequencyX), 00015 amplitudeY_(amplitudeY), 00016 offsetY_(offsetY), 00017 frequencyY_(frequencyY), 00018 easeIn_(easeIn), 00019 perpetual_(true), 00020 time_(0), 00021 easeOut_(0), 00022 elapsedTime_(0) 00023 { 00024 } 00025 00026 00027 //*** Constructor *** 00028 00029 SpriteAction_SineWave::SpriteAction_SineWave(float amplitudeX, float offsetX, float frequencyX, float amplitudeY, float offsetY, float frequencyY, float time, float easeIn, float easeOut): 00030 amplitudeX_(amplitudeX), 00031 offsetX_(offsetX), 00032 frequencyX_(frequencyX), 00033 amplitudeY_(amplitudeY), 00034 offsetY_(offsetY), 00035 frequencyY_(frequencyY), 00036 easeIn_(easeIn), 00037 perpetual_(false), 00038 time_(time), 00039 easeOut_(easeOut), 00040 elapsedTime_(0) 00041 { 00042 } 00043 00044 00045 //*** Setup *** 00046 00047 void SpriteAction_SineWave::Setup(SpriteController* controller, Sprite* sprite) 00048 { 00049 if (time_==0) 00050 { 00051 perpetual_=true; 00052 } 00053 } 00054 00055 00056 //*** Update *** 00057 00058 void SpriteAction_SineWave::Update(SpriteController* controller, Sprite* sprite, float deltaTime) 00059 { 00060 elapsedTime_+=deltaTime; 00061 00062 if (!perpetual_ && elapsedTime_>time_) 00063 { 00064 ActionCompleted(); 00065 return; 00066 } 00067 00068 float scale=1.0f; 00069 if (elapsedTime_<easeIn_) 00070 { 00071 scale=elapsedTime_/easeIn_; 00072 } 00073 else if (!perpetual_ && elapsedTime_>time_-easeOut_) 00074 { 00075 scale=1.0f-(elapsedTime_-(time_-easeOut_))/easeOut_; 00076 } 00077 00078 float xOffset=Sin(elapsedTime_*frequencyX_+ToRadians(offsetX_))*amplitudeX_*scale; 00079 float yOffset=Sin(elapsedTime_*frequencyY_+ToRadians(offsetY_))*amplitudeY_*scale; 00080 00081 controller->AddOffset(xOffset,yOffset); 00082 } 00083
Reproduction/republishing of any material on this site without permission is strictly prohibited.
