externals
box2d
testbed
tests
pyramid.cpp
Go to the documentation of this file.
1
// MIT License
2
3
// Copyright (c) 2019 Erin Catto
4
5
// Permission is hereby granted, free of charge, to any person obtaining a copy
6
// of this software and associated documentation files (the "Software"), to deal
7
// in the Software without restriction, including without limitation the rights
8
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
// copies of the Software, and to permit persons to whom the Software is
10
// furnished to do so, subject to the following conditions:
11
12
// The above copyright notice and this permission notice shall be included in all
13
// copies or substantial portions of the Software.
14
15
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
// SOFTWARE.
22
23
#include "test.h"
24
25
class
Pyramid
:
public
Test
26
{
27
public
:
28
enum
29
{
30
e_count
= 20
31
};
32
33
Pyramid
()
34
{
35
{
36
b2BodyDef
bd;
37
b2Body
* ground =
m_world
->
CreateBody
(&bd);
38
39
b2EdgeShape
shape;
40
shape.
SetTwoSided
(
b2Vec2
(-40.0
f
, 0.0
f
),
b2Vec2
(40.0
f
, 0.0
f
));
41
ground->
CreateFixture
(&shape, 0.0
f
);
42
}
43
44
{
45
float
a = 0.5f;
46
b2PolygonShape
shape;
47
shape.
SetAsBox
(a, a);
48
49
b2Vec2
x(-7.0
f
, 0.75
f
);
50
b2Vec2
y;
51
b2Vec2
deltaX(0.5625
f
, 1.25
f
);
52
b2Vec2
deltaY(1.125
f
, 0.0
f
);
53
54
for
(
int32
i = 0; i <
e_count
; ++i)
55
{
56
y = x;
57
58
for
(
int32
j = i; j <
e_count
; ++j)
59
{
60
b2BodyDef
bd;
61
bd.
type
=
b2_dynamicBody
;
62
bd.
position
= y;
63
b2Body
* body =
m_world
->
CreateBody
(&bd);
64
body->
CreateFixture
(&shape, 5.0
f
);
65
66
y += deltaY;
67
}
68
69
x += deltaX;
70
}
71
}
72
}
73
74
void
Step
(
Settings
& settings)
override
75
{
76
Test::Step
(settings);
77
78
//b2DynamicTree* tree = &m_world->m_contactManager.m_broadPhase.m_tree;
79
80
//if (m_stepCount == 400)
81
//{
82
// tree->RebuildBottomUp();
83
//}
84
}
85
86
static
Test
*
Create
()
87
{
88
return
new
Pyramid
;
89
}
90
};
91
92
static
int
testIndex
=
RegisterTest
(
"Stacking"
,
"Pyramid"
,
Pyramid::Create
);
b2Body::CreateFixture
b2Fixture * CreateFixture(const b2FixtureDef *def)
Definition:
b2_body.cpp:165
Pyramid::e_count
Definition:
pyramid.cpp:30
f
f
b2BodyDef
Definition:
b2_body.h:52
Pyramid::Pyramid
Pyramid()
Definition:
pyramid.cpp:33
Test
Definition:
test.h:80
b2Vec2
A 2D column vector.
Definition:
b2_math.h:41
int32
signed int int32
Definition:
b2_types.h:28
b2PolygonShape
Definition:
b2_polygon_shape.h:32
b2EdgeShape::SetTwoSided
void SetTwoSided(const b2Vec2 &v1, const b2Vec2 &v2)
Set this as an isolated edge. Collision is two-sided.
Definition:
b2_edge_shape.cpp:36
b2PolygonShape::SetAsBox
void SetAsBox(float hx, float hy)
Definition:
b2_polygon_shape.cpp:36
b2BodyDef::type
b2BodyType type
Definition:
b2_body.h:74
Pyramid
Definition:
pyramid.cpp:25
b2Body
A rigid body. These are created via b2World::CreateBody.
Definition:
b2_body.h:128
Settings
Definition:
settings.h:25
Test::m_world
b2World * m_world
Definition:
test.h:128
b2BodyDef::position
b2Vec2 position
Definition:
b2_body.h:78
testIndex
static int testIndex
Definition:
pyramid.cpp:92
b2EdgeShape
Definition:
b2_edge_shape.h:32
Pyramid::Step
void Step(Settings &settings) override
Definition:
pyramid.cpp:74
RegisterTest
int RegisterTest(const char *category, const char *name, TestCreateFcn *fcn)
Definition:
test.cpp:458
Pyramid::Create
static Test * Create()
Definition:
pyramid.cpp:86
Test::Step
virtual void Step(Settings &settings)
Definition:
test.cpp:278
b2World::CreateBody
b2Body * CreateBody(const b2BodyDef *def)
Definition:
b2_world.cpp:115
b2_dynamicBody
Definition:
b2_body.h:47
mvsim
Author(s):
autogenerated on Tue Jul 4 2023 03:08:21