40 lines
		
	
	
		
			588 B
		
	
	
	
		
			C++
		
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			588 B
		
	
	
	
		
			C++
		
	
	
	
|  | #include "..\e2daction.h"
 | ||
|  | 
 | ||
|  | 
 | ||
|  | e2d::MoveBy::MoveBy(double duration, Vector vector) : | ||
|  | 	ActionGradual(duration) | ||
|  | { | ||
|  | 	_deltaPos = vector; | ||
|  | } | ||
|  | 
 | ||
|  | void e2d::MoveBy::_init() | ||
|  | { | ||
|  | 	ActionGradual::_init(); | ||
|  | 	if (_target) | ||
|  | 	{ | ||
|  | 		_startPos = _target->getPos(); | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | void e2d::MoveBy::_update() | ||
|  | { | ||
|  | 	ActionGradual::_update(); | ||
|  | 
 | ||
|  | 	if (_target == nullptr) | ||
|  | 	{ | ||
|  | 		this->stop(); | ||
|  | 		return; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	_target->setPos(_startPos + _deltaPos * _delta); | ||
|  | } | ||
|  | 
 | ||
|  | e2d::MoveBy * e2d::MoveBy::clone() const | ||
|  | { | ||
|  | 	return new MoveBy(_duration, _deltaPos); | ||
|  | } | ||
|  | 
 | ||
|  | e2d::MoveBy * e2d::MoveBy::reverse() const | ||
|  | { | ||
|  | 	return new MoveBy(_duration, -_deltaPos); | ||
|  | } |