| 
									
										
										
										
											2018-04-21 21:24:46 +08:00
										 |  |  | #include "..\e2daction.h"
 | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-28 20:06:27 +08:00
										 |  |  | e2d::FiniteTimeAction::FiniteTimeAction(float duration) | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  | 	: delta_(0) | 
					
						
							|  |  |  | 	, duration_(std::max(duration, 0.f)) | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-10 18:18:02 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  | void e2d::FiniteTimeAction::Reset() | 
					
						
							| 
									
										
										
										
											2018-05-10 18:18:02 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  | 	Action::Reset(); | 
					
						
							|  |  |  | 	delta_ = 0; | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  | void e2d::FiniteTimeAction::Init() | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  | 	Action::Init(); | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  | void e2d::FiniteTimeAction::Update() | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  | 	Action::Update(); | 
					
						
							| 
									
										
										
										
											2018-05-10 14:03:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  | 	if (duration_ == 0) | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  | 		delta_ = 1; | 
					
						
							|  |  |  | 		this->Stop(); | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-05-10 18:18:02 +08:00
										 |  |  | 	else | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  | 		delta_ = std::min((Time::Now() - started_).Seconds() / duration_, 1.f); | 
					
						
							| 
									
										
										
										
											2018-05-10 18:18:02 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  | 		if (delta_ >= 1) | 
					
						
							| 
									
										
										
										
											2018-05-10 18:18:02 +08:00
										 |  |  | 		{ | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  | 			this->Stop(); | 
					
						
							| 
									
										
										
										
											2018-05-10 18:18:02 +08:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-01-30 16:45:38 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2018-05-10 18:18:02 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  | void e2d::FiniteTimeAction::ResetTime() | 
					
						
							| 
									
										
										
										
											2018-05-10 18:18:02 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-09-04 22:42:34 +08:00
										 |  |  | 	Action::ResetTime(); | 
					
						
							|  |  |  | 	started_ = Time::Now() - Duration(delta_ * duration_); | 
					
						
							| 
									
										
										
										
											2018-05-10 18:18:02 +08:00
										 |  |  | } |