Added wrapper for b2WeldJoint
[qml-box2d:qml-box2d-folibis.git] / box2dweldjoint.h
1 /*
2  * box2ddistancejoint.h
3  * Copyright (c) 2011 Joonas Erkinheimo <joonas.erkinheimo@nokia.com>
4  *
5  * This file is part of the Box2D QML plugin.
6  *
7  * This software is provided 'as-is', without any express or implied warranty.
8  * In no event will the authors be held liable for any damages arising from
9  * the use of this software.
10  *
11  * Permission is granted to anyone to use this software for any purpose,
12  * including commercial applications, and to alter it and redistribute it
13  * freely, subject to the following restrictions:
14  *
15  * 1. The origin of this software must not be misrepresented; you must not
16  *    claim that you wrote the original software. If you use this software in
17  *    a product, an acknowledgment in the product documentation would be
18  *    appreciated but is not required.
19  *
20  * 2. Altered source versions must be plainly marked as such, and must not be
21  *    misrepresented as being the original software.
22  *
23  * 3. This notice may not be removed or altered from any source distribution.
24  */
25
26 #ifndef BOX2WELDJOINT_H
27 #define BOX2WELDJOINT_H
28
29 #include "box2djoint.h"
30 #include <Box2D.h>
31
32 class b2World;
33 class b2WeldJoint;
34 class b2WeldJointDef;
35
36 class Box2DWeldJoint : public Box2DJoint
37 {
38     Q_OBJECT
39
40     Q_PROPERTY(float referenceAngle READ referenceAngle WRITE setReferenceAngle NOTIFY referenceAngleChanged)
41     Q_PROPERTY(float frequencyHz READ frequencyHz WRITE setFrequencyHz NOTIFY frequencyHzChanged)
42     Q_PROPERTY(float dampingRatio READ dampingRatio WRITE setDampingRatio NOTIFY dampingRatioChanged)
43     Q_PROPERTY(QPointF localAnchorA READ localAnchorA WRITE setLocalAnchorA NOTIFY localAnchorAChanged)
44     Q_PROPERTY(QPointF localAnchorB READ localAnchorB WRITE setLocalAnchorB NOTIFY localAnchorBChanged)
45
46 public:
47     explicit Box2DWeldJoint(QObject *parent = 0);
48     ~Box2DWeldJoint();
49
50     float referenceAngle() const;
51     void setReferenceAngle(float referenceAngle);
52
53     float frequencyHz() const;
54     void setFrequencyHz(float frequencyHz);
55
56     float dampingRatio() const;
57     void setDampingRatio(float dampingRatio);
58
59     QPointF localAnchorA() const;
60     void setLocalAnchorA(const QPointF &localAnchorA);
61
62     QPointF localAnchorB() const;
63     void setLocalAnchorB(const QPointF &localAnchorB);
64
65     void nullifyJoint();
66     void createJoint();
67     void cleanup(b2World *world);
68
69 signals:
70     void referenceAngleChanged();
71     void frequencyHzChanged();
72     void dampingRatioChanged();
73     void localAnchorAChanged();
74     void localAnchorBChanged();
75
76 private:
77     b2WeldJointDef mWeldJointDef;
78     b2WeldJoint * mWeldJoint;
79     bool anchorsAuto;
80 };
81
82 #endif // BOX2WELDJOINT_H