| 
									
										
										
										
											2018-04-21 21:24:46 +08:00
										 |  |  | #include "..\e2dcollider.h"
 | 
					
						
							|  |  |  | #include "..\e2dnode.h"
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-22 22:29:42 +08:00
										 |  |  | e2d::EllipseCollider::EllipseCollider() | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 	: _d2dEllipse(nullptr) | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-22 22:29:42 +08:00
										 |  |  | e2d::EllipseCollider::EllipseCollider(Point center, double radiusX, double radiusY) | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 	: _d2dEllipse(nullptr) | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-03-31 11:59:51 +08:00
										 |  |  | 	this->setEllipse(center, radiusX, radiusY); | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-22 22:29:42 +08:00
										 |  |  | e2d::EllipseCollider::EllipseCollider(Node * node) | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 	: _d2dEllipse(nullptr) | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-03-31 11:59:51 +08:00
										 |  |  | 	this->setEllipse( | 
					
						
							| 
									
										
										
										
											2018-02-07 16:37:12 +08:00
										 |  |  | 		Point( | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  | 			node->getWidth() / 2, | 
					
						
							|  |  |  | 			node->getHeight() / 2 | 
					
						
							|  |  |  | 		), | 
					
						
							|  |  |  | 		node->getWidth() / 2, | 
					
						
							|  |  |  | 		node->getHeight() / 2 | 
					
						
							|  |  |  | 	); | 
					
						
							| 
									
										
										
										
											2018-05-17 12:22:52 +08:00
										 |  |  | 	this->setAutoResize(true); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-22 22:29:42 +08:00
										 |  |  | e2d::EllipseCollider::~EllipseCollider() | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-22 12:24:43 +08:00
										 |  |  | 	SafeRelease(_d2dEllipse); | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-22 22:29:42 +08:00
										 |  |  | void e2d::EllipseCollider::setEllipse(Point center, double radiusX, double radiusY) | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-22 12:24:43 +08:00
										 |  |  | 	SafeRelease(_d2dEllipse); | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-03 18:16:26 +08:00
										 |  |  | 	Renderer::getFactory()->CreateEllipseGeometry( | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  | 		D2D1::Ellipse( | 
					
						
							|  |  |  | 			D2D1::Point2F( | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 				float(center.x), | 
					
						
							|  |  |  | 				float(center.y)), | 
					
						
							|  |  |  | 			float(radiusX), | 
					
						
							|  |  |  | 			float(radiusY)), | 
					
						
							|  |  |  | 		&_d2dEllipse | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  | 	); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-22 22:29:42 +08:00
										 |  |  | void e2d::EllipseCollider::_resize() | 
					
						
							| 
									
										
										
										
											2018-03-07 20:14:58 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 	if (_parentNode && _enable) | 
					
						
							| 
									
										
										
										
											2018-03-07 20:14:58 +08:00
										 |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-03-31 11:59:51 +08:00
										 |  |  | 		this->setEllipse( | 
					
						
							| 
									
										
										
										
											2018-03-07 20:14:58 +08:00
										 |  |  | 			Point( | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 				_parentNode->getWidth() / 2, | 
					
						
							|  |  |  | 				_parentNode->getHeight() / 2 | 
					
						
							| 
									
										
										
										
											2018-03-07 20:14:58 +08:00
										 |  |  | 			), | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 			_parentNode->getWidth() / 2, | 
					
						
							|  |  |  | 			_parentNode->getHeight() / 2 | 
					
						
							| 
									
										
										
										
											2018-03-07 20:14:58 +08:00
										 |  |  | 		); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-22 22:29:42 +08:00
										 |  |  | ID2D1EllipseGeometry * e2d::EllipseCollider::getD2dGeometry() const | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2018-05-09 00:34:15 +08:00
										 |  |  | 	return _d2dEllipse; | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  | } |