| 
									
										
										
										
											2019-03-14 17:55:06 +08:00
										 |  |  |  | // Copyright (C) 2019 Nomango
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #pragma once
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #include "common.h"
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | // <20>̶<EFBFBD><CCB6><EFBFBD>ľ<EFBFBD><C4BE>
 | 
					
						
							| 
									
										
										
										
											2019-04-11 14:40:54 +08:00
										 |  |  |  | KGE_DECLARE_SMART_PTR(Board); | 
					
						
							| 
									
										
										
										
											2019-03-14 17:55:06 +08:00
										 |  |  |  | class Board | 
					
						
							|  |  |  |  | 	: public GeometryNode | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | public: | 
					
						
							|  |  |  |  | 	Board(b2World* world, const Size& size, const Point& pos) | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 		GeometryPtr geo = new RectangleGeometry(Point(), size); | 
					
						
							|  |  |  |  | 		SetGeometry(geo); | 
					
						
							|  |  |  |  | 		SetStrokeColor(Color::White); | 
					
						
							|  |  |  |  | 		SetFillColor(Color(0, 0, 0, 0)); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		SetSize(size); | 
					
						
							|  |  |  |  | 		SetAnchor(0.5f, 0.5f); | 
					
						
							|  |  |  |  | 		SetRotation(10); | 
					
						
							|  |  |  |  | 		SetPosition(pos); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		b2BodyDef groundBodyDef; | 
					
						
							|  |  |  |  | 		groundBodyDef.position = Vec2Convert(GetPosition()); | 
					
						
							|  |  |  |  | 		groundBodyDef.angle = 10 * math::constants::PI_F / 180.f; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		b2Body* groundBody = world->CreateBody(&groundBodyDef); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		b2PolygonShape groundBox; | 
					
						
							|  |  |  |  | 		b2Vec2 sz = Vec2Convert(Point{ size.x / 2, size.y / 2 }); | 
					
						
							|  |  |  |  | 		groundBox.SetAsBox(sz.x, sz.y); | 
					
						
							|  |  |  |  | 		groundBody->CreateFixture(&groundBox, 0.0f); | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | }; |