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

« back to all changes in this revision

Viewing changes to tests/box2d/Box2D/Dynamics/b2Island.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) 2006-2009 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 B2_ISLAND_H
 
20
#define B2_ISLAND_H
 
21
 
 
22
#include <Box2D/Common/b2Math.h>
 
23
#include <Box2D/Dynamics/b2Body.h>
 
24
#include <Box2D/Dynamics/b2TimeStep.h>
 
25
 
 
26
class b2Contact;
 
27
class b2Joint;
 
28
class b2StackAllocator;
 
29
class b2ContactListener;
 
30
struct b2ContactVelocityConstraint;
 
31
struct b2Profile;
 
32
 
 
33
/// This is an internal class.
 
34
class b2Island
 
35
{
 
36
public:
 
37
        b2Island(int32 bodyCapacity, int32 contactCapacity, int32 jointCapacity,
 
38
                        b2StackAllocator* allocator, b2ContactListener* listener);
 
39
        ~b2Island();
 
40
 
 
41
        void Clear()
 
42
        {
 
43
                m_bodyCount = 0;
 
44
                m_contactCount = 0;
 
45
                m_jointCount = 0;
 
46
        }
 
47
 
 
48
        void Solve(b2Profile* profile, const b2TimeStep& step, const b2Vec2& gravity, bool allowSleep);
 
49
 
 
50
        void SolveTOI(const b2TimeStep& subStep, int32 toiIndexA, int32 toiIndexB);
 
51
 
 
52
        void Add(b2Body* body)
 
53
        {
 
54
                b2Assert(m_bodyCount < m_bodyCapacity);
 
55
                body->m_islandIndex = m_bodyCount;
 
56
                m_bodies[m_bodyCount] = body;
 
57
                ++m_bodyCount;
 
58
        }
 
59
 
 
60
        void Add(b2Contact* contact)
 
61
        {
 
62
                b2Assert(m_contactCount < m_contactCapacity);
 
63
                m_contacts[m_contactCount++] = contact;
 
64
        }
 
65
 
 
66
        void Add(b2Joint* joint)
 
67
        {
 
68
                b2Assert(m_jointCount < m_jointCapacity);
 
69
                m_joints[m_jointCount++] = joint;
 
70
        }
 
71
 
 
72
        void Report(const b2ContactVelocityConstraint* constraints);
 
73
 
 
74
        b2StackAllocator* m_allocator;
 
75
        b2ContactListener* m_listener;
 
76
 
 
77
        b2Body** m_bodies;
 
78
        b2Contact** m_contacts;
 
79
        b2Joint** m_joints;
 
80
 
 
81
        b2Position* m_positions;
 
82
        b2Velocity* m_velocities;
 
83
 
 
84
        int32 m_bodyCount;
 
85
        int32 m_jointCount;
 
86
        int32 m_contactCount;
 
87
 
 
88
        int32 m_bodyCapacity;
 
89
        int32 m_contactCapacity;
 
90
        int32 m_jointCapacity;
 
91
};
 
92
 
 
93
#endif