~ubuntu-branches/ubuntu/vivid/emscripten/vivid

« back to all changes in this revision

Viewing changes to tests/box2d/Testbed/Tests/Tumbler.h

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-02 13:11:51 UTC
  • Revision ID: package-import@ubuntu.com-20130502131151-q8dvteqr1ef2x7xz
Tags: upstream-1.4.1~20130504~adb56cb
ImportĀ upstreamĀ versionĀ 1.4.1~20130504~adb56cb

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
* Copyright (c) 2011 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 TUMBLER_H
 
20
#define TUMBLER_H
 
21
 
 
22
class Tumbler : public Test
 
23
{
 
24
public:
 
25
 
 
26
        enum
 
27
        {
 
28
                e_count = 800
 
29
        };
 
30
 
 
31
        Tumbler()
 
32
        {
 
33
                b2Body* ground = NULL;
 
34
                {
 
35
                        b2BodyDef bd;
 
36
                        ground = m_world->CreateBody(&bd);
 
37
                }
 
38
 
 
39
                {
 
40
                        b2BodyDef bd;
 
41
                        bd.type = b2_dynamicBody;
 
42
                        bd.allowSleep = false;
 
43
                        bd.position.Set(0.0f, 10.0f);
 
44
                        b2Body* body = m_world->CreateBody(&bd);
 
45
 
 
46
                        b2PolygonShape shape;
 
47
                        shape.SetAsBox(0.5f, 10.0f, b2Vec2( 10.0f, 0.0f), 0.0);
 
48
                        body->CreateFixture(&shape, 5.0f);
 
49
                        shape.SetAsBox(0.5f, 10.0f, b2Vec2(-10.0f, 0.0f), 0.0);
 
50
                        body->CreateFixture(&shape, 5.0f);
 
51
                        shape.SetAsBox(10.0f, 0.5f, b2Vec2(0.0f, 10.0f), 0.0);
 
52
                        body->CreateFixture(&shape, 5.0f);
 
53
                        shape.SetAsBox(10.0f, 0.5f, b2Vec2(0.0f, -10.0f), 0.0);
 
54
                        body->CreateFixture(&shape, 5.0f);
 
55
 
 
56
                        b2RevoluteJointDef jd;
 
57
                        jd.bodyA = ground;
 
58
                        jd.bodyB = body;
 
59
                        jd.localAnchorA.Set(0.0f, 10.0f);
 
60
                        jd.localAnchorB.Set(0.0f, 0.0f);
 
61
                        jd.referenceAngle = 0.0f;
 
62
                        jd.motorSpeed = 0.05f * b2_pi;
 
63
                        jd.maxMotorTorque = 1e8f;
 
64
                        jd.enableMotor = true;
 
65
                        m_joint = (b2RevoluteJoint*)m_world->CreateJoint(&jd);
 
66
                }
 
67
 
 
68
                m_count = 0;
 
69
        }
 
70
 
 
71
        void Step(Settings* settings)
 
72
        {
 
73
                Test::Step(settings);
 
74
 
 
75
                if (m_count < e_count)
 
76
                {
 
77
                        b2BodyDef bd;
 
78
                        bd.type = b2_dynamicBody;
 
79
                        bd.position.Set(0.0f, 10.0f);
 
80
                        b2Body* body = m_world->CreateBody(&bd);
 
81
 
 
82
                        b2PolygonShape shape;
 
83
                        shape.SetAsBox(0.125f, 0.125f);
 
84
                        body->CreateFixture(&shape, 1.0f);
 
85
 
 
86
                        ++m_count;
 
87
                }
 
88
        }
 
89
 
 
90
        static Test* Create()
 
91
        {
 
92
                return new Tumbler;
 
93
        }
 
94
 
 
95
        b2RevoluteJoint* m_joint;
 
96
        int32 m_count;
 
97
};
 
98
 
 
99
#endif