SpriteAction_ColorFade.cpp
Go to the documentation of this file.00001 //*** SpriteAction_ColorFade.cpp *** 00002 00003 #include "SpriteAction_ColorFade.h" 00004 #include "ColorHelper.h" 00005 #include "Sprite.h" 00006 #include "StandardLibrary.h" 00007 00008 00009 //*** Constructor *** 00010 00011 SpriteAction_ColorFade::SpriteAction_ColorFade(unsigned short targetColor, float time): 00012 targetColor_(targetColor), 00013 time_(time), 00014 elapsedTime_(0), 00015 sourceR_(0), 00016 sourceG_(0), 00017 sourceB_(0), 00018 targetR_(0), 00019 targetG_(0), 00020 targetB_(0), 00021 deltaR_(0), 00022 deltaG_(0), 00023 deltaB_(0) 00024 { 00025 if (time_<=0) 00026 { 00027 time_=FLOAT_EPSILON; 00028 } 00029 } 00030 00031 00032 //*** Setup *** 00033 00034 void SpriteAction_ColorFade::Setup(SpriteController* controller, Sprite* sprite) 00035 { 00036 unsigned short sourceColor=sprite->GetColor(); 00037 sourceR_=RGB16TOFLOATR(sourceColor); 00038 sourceG_=RGB16TOFLOATG(sourceColor); 00039 sourceB_=RGB16TOFLOATB(sourceColor); 00040 00041 targetR_=RGB16TOFLOATR(targetColor_); 00042 targetG_=RGB16TOFLOATG(targetColor_); 00043 targetB_=RGB16TOFLOATB(targetColor_); 00044 00045 deltaR_=(targetR_-sourceR_)/time_; 00046 deltaG_=(targetG_-sourceG_)/time_; 00047 deltaB_=(targetB_-sourceB_)/time_; 00048 } 00049 00050 00051 //*** Update *** 00052 00053 void SpriteAction_ColorFade::Update(SpriteController* controller, Sprite* sprite, float deltaTime) 00054 { 00055 elapsedTime_+=deltaTime; 00056 00057 if (elapsedTime_>time_) 00058 { 00059 sprite->SetColor(targetColor_); 00060 ActionCompleted(); 00061 return; 00062 } 00063 00064 float r=sourceR_+deltaR_*elapsedTime_; 00065 float g=sourceG_+deltaG_*elapsedTime_; 00066 float b=sourceB_+deltaB_*elapsedTime_; 00067 00068 unsigned short color=FLOATTORGB16(r,g,b); 00069 sprite->SetColor(color); 00070 } 00071
Reproduction/republishing of any material on this site without permission is strictly prohibited.
