2
* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
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.
22
class BulletTest : public Test
30
bd.position.Set(0.0f, 0.0f);
31
b2Body* body = m_world->CreateBody(&bd);
35
edge.Set(b2Vec2(-10.0f, 0.0f), b2Vec2(10.0f, 0.0f));
36
body->CreateFixture(&edge, 0.0f);
39
shape.SetAsBox(0.2f, 1.0f, b2Vec2(0.5f, 1.0f), 0.0f);
40
body->CreateFixture(&shape, 0.0f);
45
bd.type = b2_dynamicBody;
46
bd.position.Set(0.0f, 4.0f);
49
box.SetAsBox(2.0f, 0.1f);
51
m_body = m_world->CreateBody(&bd);
52
m_body->CreateFixture(&box, 1.0f);
54
box.SetAsBox(0.25f, 0.25f);
56
//m_x = RandomFloat(-1.0f, 1.0f);
58
bd.position.Set(m_x, 10.0f);
61
m_bullet = m_world->CreateBody(&bd);
62
m_bullet->CreateFixture(&box, 100.0f);
64
m_bullet->SetLinearVelocity(b2Vec2(0.0f, -50.0f));
70
m_body->SetTransform(b2Vec2(0.0f, 4.0f), 0.0f);
71
m_body->SetLinearVelocity(b2Vec2_zero);
72
m_body->SetAngularVelocity(0.0f);
74
m_x = RandomFloat(-1.0f, 1.0f);
75
m_bullet->SetTransform(b2Vec2(m_x, 10.0f), 0.0f);
76
m_bullet->SetLinearVelocity(b2Vec2(0.0f, -50.0f));
77
m_bullet->SetAngularVelocity(0.0f);
79
extern int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters;
80
extern int32 b2_toiCalls, b2_toiIters, b2_toiMaxIters;
81
extern int32 b2_toiRootIters, b2_toiMaxRootIters;
91
b2_toiMaxRootIters = 0;
94
void Step(Settings* settings)
98
extern int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters;
99
extern int32 b2_toiCalls, b2_toiIters;
100
extern int32 b2_toiRootIters, b2_toiMaxRootIters;
104
m_debugDraw.DrawString(5, m_textLine, "gjk calls = %d, ave gjk iters = %3.1f, max gjk iters = %d",
105
b2_gjkCalls, b2_gjkIters / float32(b2_gjkCalls), b2_gjkMaxIters);
111
m_debugDraw.DrawString(5, m_textLine, "toi calls = %d, ave toi iters = %3.1f, max toi iters = %d",
112
b2_toiCalls, b2_toiIters / float32(b2_toiCalls), b2_toiMaxRootIters);
115
m_debugDraw.DrawString(5, m_textLine, "ave toi root iters = %3.1f, max toi root iters = %d",
116
b2_toiRootIters / float32(b2_toiCalls), b2_toiMaxRootIters);
120
if (m_stepCount % 60 == 0)
126
static Test* Create()
128
return new BulletTest;