45 lines
		
	
	
		
			640 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			640 B
		
	
	
	
		
			C++
		
	
	
	
| #include "..\e2daction.h"
 | |
| 
 | |
| e2d::FiniteTimeAction::FiniteTimeAction(float duration)
 | |
| 	: delta_(0)
 | |
| 	, duration_(std::max(duration, 0.f))
 | |
| {
 | |
| }
 | |
| 
 | |
| void e2d::FiniteTimeAction::Reset()
 | |
| {
 | |
| 	Action::Reset();
 | |
| 	delta_ = 0;
 | |
| }
 | |
| 
 | |
| void e2d::FiniteTimeAction::Init()
 | |
| {
 | |
| 	Action::Init();
 | |
| }
 | |
| 
 | |
| void e2d::FiniteTimeAction::Update()
 | |
| {
 | |
| 	Action::Update();
 | |
| 
 | |
| 	if (duration_ == 0)
 | |
| 	{
 | |
| 		delta_ = 1;
 | |
| 		this->Stop();
 | |
| 	}
 | |
| 	else
 | |
| 	{
 | |
| 		delta_ = std::min((Time::Now() - started_).Seconds() / duration_, 1.f);
 | |
| 
 | |
| 		if (delta_ >= 1)
 | |
| 		{
 | |
| 			this->Stop();
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| void e2d::FiniteTimeAction::ResetTime()
 | |
| {
 | |
| 	Action::ResetTime();
 | |
| 	started_ = Time::Now() - Duration(delta_ * duration_);
 | |
| }
 |