1 /*
2 * Copyright (c) 2006-2010 Erin Catto http://www.box2d.org
3 *
4 * This software is provided 'as-is', without any express or implied
5 * warranty.  In no event will the authors be held liable for any damages
6 * arising from the use of this software.
7 * Permission is granted to anyone to use this software for any purpose,
8 * including commercial applications, and to alter it and redistribute it
9 * freely, subject to the following restrictions:
10 * 1. The origin of this software must not be misrepresented; you must not
11 * claim that you wrote the original software. If you use this software
12 * in a product, an acknowledgment in the product documentation would be
13 * appreciated but is not required.
14 * 2. Altered source versions must be plainly marked as such, and must not be
15 * misrepresented as being the original software.
16 * 3. This notice may not be removed or altered from any source distribution.
17 */
18 
19 #ifndef EDGE_TEST_H
20 #define EDGE_TEST_H
21 
22 class EdgeTest : public Test
23 {
24 public:
25 
EdgeTest()26 	EdgeTest()
27 	{
28 		{
29 			b2BodyDef bd;
30 			b2Body* ground = m_world->CreateBody(&bd);
31 
32 			b2Vec2 v1(-10.0f, 0.0f), v2(-7.0f, -2.0f), v3(-4.0f, 0.0f);
33 			b2Vec2 v4(0.0f, 0.0f), v5(4.0f, 0.0f), v6(7.0f, 2.0f), v7(10.0f, 0.0f);
34 
35 			b2EdgeShape shape;
36 
37 			shape.Set(v1, v2);
38 			shape.m_hasVertex3 = true;
39 			shape.m_vertex3 = v3;
40 			ground->CreateFixture(&shape, 0.0f);
41 
42 			shape.Set(v2, v3);
43 			shape.m_hasVertex0 = true;
44 			shape.m_hasVertex3 = true;
45 			shape.m_vertex0 = v1;
46 			shape.m_vertex3 = v4;
47 			ground->CreateFixture(&shape, 0.0f);
48 
49 			shape.Set(v3, v4);
50 			shape.m_hasVertex0 = true;
51 			shape.m_hasVertex3 = true;
52 			shape.m_vertex0 = v2;
53 			shape.m_vertex3 = v5;
54 			ground->CreateFixture(&shape, 0.0f);
55 
56 			shape.Set(v4, v5);
57 			shape.m_hasVertex0 = true;
58 			shape.m_hasVertex3 = true;
59 			shape.m_vertex0 = v3;
60 			shape.m_vertex3 = v6;
61 			ground->CreateFixture(&shape, 0.0f);
62 
63 			shape.Set(v5, v6);
64 			shape.m_hasVertex0 = true;
65 			shape.m_hasVertex3 = true;
66 			shape.m_vertex0 = v4;
67 			shape.m_vertex3 = v7;
68 			ground->CreateFixture(&shape, 0.0f);
69 
70 			shape.Set(v6, v7);
71 			shape.m_hasVertex0 = true;
72 			shape.m_vertex0 = v5;
73 			ground->CreateFixture(&shape, 0.0f);
74 		}
75 
76 		{
77 			b2BodyDef bd;
78 			bd.type = b2_dynamicBody;
79 			bd.position.Set(-0.5f, 0.6f);
80 			bd.allowSleep = false;
81 			b2Body* body = m_world->CreateBody(&bd);
82 
83 			b2CircleShape shape;
84 			shape.m_radius = 0.5f;
85 
86 			body->CreateFixture(&shape, 1.0f);
87 		}
88 
89 		{
90 			b2BodyDef bd;
91 			bd.type = b2_dynamicBody;
92 			bd.position.Set(1.0f, 0.6f);
93 			bd.allowSleep = false;
94 			b2Body* body = m_world->CreateBody(&bd);
95 
96 			b2PolygonShape shape;
97 			shape.SetAsBox(0.5f, 0.5f);
98 
99 			body->CreateFixture(&shape, 1.0f);
100 		}
101 	}
102 
Create()103 	static Test* Create()
104 	{
105 		return new EdgeTest;
106 	}
107 };
108 
109 #endif
110