| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | #pragma once
 | 
					
						
							|  |  |  |  | #include "ebase.h"
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace e2d | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class EPhysicsManager; | 
					
						
							| 
									
										
										
										
											2017-10-28 18:48:21 +08:00
										 |  |  |  | class ENode; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | class EGeometry : | 
					
						
							|  |  |  |  | 	public EObject | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	friend EPhysicsManager; | 
					
						
							| 
									
										
										
										
											2017-10-28 18:48:21 +08:00
										 |  |  |  | 	friend ENode; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | public: | 
					
						
							|  |  |  |  | 	EGeometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 	virtual ~EGeometry(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-28 18:48:21 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڵ<EFBFBD>
 | 
					
						
							|  |  |  |  | 	ENode * getParentNode() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-31 17:19:13 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	UINT32 getCategoryBitmask() const; | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-05 14:45:53 +08:00
										 |  |  |  | 	// <20><>ȡ<EFBFBD><C8A1>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	UINT32 getCollisionBitmask() const; | 
					
						
							| 
									
										
										
										
											2017-10-31 17:19:13 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setCategoryBitmask( | 
					
						
							|  |  |  |  | 		UINT32 mask | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-05 14:45:53 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ó<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setCollisionBitmask( | 
					
						
							| 
									
										
										
										
											2017-10-31 17:19:13 +08:00
										 |  |  |  | 		UINT32 mask | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>״<EFBFBD>Ŀɼ<C4BF><C9BC><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setVisiable( | 
					
						
							|  |  |  |  | 		bool bVisiable | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ɫ
 | 
					
						
							|  |  |  |  | 	void setColor( | 
					
						
							|  |  |  |  | 		UINT32 color | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	void setOpacity( | 
					
						
							|  |  |  |  | 		float opacity | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2017-10-28 18:48:21 +08:00
										 |  |  |  | 	// <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>״<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>ϵ
 | 
					
						
							|  |  |  |  | 	virtual EPhysicsMsg::INTERSECT_RELATION _intersectWith( | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 		EGeometry * pGeometry | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-28 18:48:21 +08:00
										 |  |  |  | 	// ת<><D7AA><EFBFBD><EFBFBD>״
 | 
					
						
							|  |  |  |  | 	virtual void _transform(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 	// <20><>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
 | 
					
						
							| 
									
										
										
										
											2017-12-08 15:37:52 +08:00
										 |  |  |  | 	virtual void _render(); | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 	virtual ID2D1Geometry * _getD2dGeometry() const = 0; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2017-10-31 17:19:13 +08:00
										 |  |  |  | 	bool	m_bIsVisiable; | 
					
						
							|  |  |  |  | 	UINT32	m_nCategoryBitmask; | 
					
						
							| 
									
										
										
										
											2017-11-05 14:45:53 +08:00
										 |  |  |  | 	UINT32	m_nCollisionBitmask; | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 	UINT32	m_nColor; | 
					
						
							|  |  |  |  | 	float	m_fOpacity; | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 	ENode * m_pParentNode; | 
					
						
							| 
									
										
										
										
											2017-10-28 18:48:21 +08:00
										 |  |  |  | 	ID2D1TransformedGeometry * m_pTransformedGeometry; | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ERectangle : | 
					
						
							|  |  |  |  | 	public EGeometry | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ռ<EFBFBD><D5BC>ξ<EFBFBD><CEBE><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 	ERectangle(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><CEBE><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 	ERectangle( | 
					
						
							|  |  |  |  | 		float x, | 
					
						
							|  |  |  |  | 		float y, | 
					
						
							|  |  |  |  | 		float width, | 
					
						
							|  |  |  |  | 		float height | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ͽڵ<CDBD>λ<EFBFBD>ô<EFBFBD>С<EFBFBD><D0A1>ͬ<EFBFBD>ļ<EFBFBD><C4BC>ξ<EFBFBD><CEBE><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 	ERectangle( | 
					
						
							|  |  |  |  | 		ENode * node | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 	virtual ~ERectangle(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | protected: | 
					
						
							|  |  |  |  | 	void _setRect( | 
					
						
							|  |  |  |  | 		float left, | 
					
						
							|  |  |  |  | 		float top, | 
					
						
							|  |  |  |  | 		float right, | 
					
						
							|  |  |  |  | 		float bottom | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual ID2D1RectangleGeometry * _getD2dGeometry() const override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	ID2D1RectangleGeometry * m_pD2dRectangle; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class ECircle : | 
					
						
							|  |  |  |  | 	public EGeometry | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>յļ<D5B5><C4BC><EFBFBD>Բ<EFBFBD><D4B2>
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 	ECircle(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>Բ<EFBFBD>ĺͰ뾶<CDB0><EBBEB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 	ECircle( | 
					
						
							|  |  |  |  | 		EPoint center, | 
					
						
							|  |  |  |  | 		float radius | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ͽڵ<CDBD>λ<EFBFBD>ô<EFBFBD>С<EFBFBD><D0A1>ͬ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Բ<EFBFBD><D4B2>
 | 
					
						
							|  |  |  |  | 	ECircle( | 
					
						
							|  |  |  |  | 		ENode * node | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual ~ECircle(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | protected: | 
					
						
							|  |  |  |  | 	void _setCircle( | 
					
						
							|  |  |  |  | 		EPoint center, | 
					
						
							|  |  |  |  | 		float radius | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual ID2D1EllipseGeometry * _getD2dGeometry() const override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	ID2D1EllipseGeometry * m_pD2dCircle; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | class EEllipse : | 
					
						
							|  |  |  |  | 	public EGeometry | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>յļ<D5B5><C4BC><EFBFBD><EFBFBD><EFBFBD>Բ
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 	EEllipse(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>Բ<EFBFBD>ĺͰ뾶<CDB0><EBBEB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | 	EEllipse( | 
					
						
							|  |  |  |  | 		EPoint center, | 
					
						
							|  |  |  |  | 		float radiusX, | 
					
						
							|  |  |  |  | 		float radiusY | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-29 23:48:32 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ͽڵ<CDBD>λ<EFBFBD>ô<EFBFBD>С<EFBFBD><D0A1>ͬ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Բ
 | 
					
						
							|  |  |  |  | 	EEllipse( | 
					
						
							|  |  |  |  | 		ENode * node | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual ~EEllipse(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-26 17:17:30 +08:00
										 |  |  |  | protected: | 
					
						
							|  |  |  |  | 	void _setEllipse( | 
					
						
							|  |  |  |  | 		EPoint center, | 
					
						
							|  |  |  |  | 		float radiusX, | 
					
						
							|  |  |  |  | 		float radiusY | 
					
						
							|  |  |  |  | 	); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	virtual ID2D1EllipseGeometry * _getD2dGeometry() const override; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | protected: | 
					
						
							|  |  |  |  | 	ID2D1EllipseGeometry * m_pD2dEllipse; | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | } |