first commit
[blok] / boxitem.h
1 #ifndef BOXITEM_H
2 #define BOXITEM_H
3
4 #include <QGraphicsPolygonItem>
5 #include <QPixmap>
6 #include <QPainter>
7 #include "Box2D/Source/Box2D.h"
8
9 #define MAEMO_WIDTH 800
10 #define MAEMO_HEIGHT 480
11
12 class BoxItem : public QGraphicsPolygonItem
13 {
14 public:
15     BoxItem(QRectF rect, bool isStatic = false);
16     BoxItem(QPolygonF poly, bool isStatic = false);
17
18     void setPolygonDef(b2PolygonDef p){m_polygonDef = p;}
19     void setBodyDef(b2BodyDef b){m_bodyDef = b;}
20     void initDensity(const float32 &d ){m_polygonDef.density = d;}
21     void initFriction(const float32 &f){m_polygonDef.friction = f;}
22     void initRestitution(const float32 &r){m_polygonDef.restitution = r;}
23     void initSensor(bool b){m_polygonDef.isSensor = b;}
24     void setMass(const float32 &m){m_bodyDef.massData.mass = m;}
25     void initLinearDamping(const float32 &l){m_bodyDef.linearDamping = l;}
26     void initAngularDamping(const float32 &a){m_bodyDef.angularDamping = a;}
27     void initCategoryBits(const uint16 &c){m_polygonDef.filter.categoryBits = c;}
28     void initMaskBits(const uint16 &c){m_polygonDef.filter.maskBits = c;}
29     void initStatic(bool isStatic=true){mIsStatic=isStatic;}
30
31
32     b2PolygonDef *polygonDef(){return &m_polygonDef;}
33     b2BodyDef * bodyDef(){return &m_bodyDef;}
34     inline const float32 &density(){return m_polygonDef.density;}
35     inline const float32 &friction(){return m_polygonDef.friction;}
36     inline const float32 &restition(){return m_polygonDef.restitution;}
37     inline const float32 &mass(){return m_bodyDef.massData.mass; }
38     inline bool isSensor(){return m_polygonDef.isSensor;}
39     inline const float32 &linearDamping(){return m_bodyDef.linearDamping;}
40     inline const float32 &angularDamping(){return m_bodyDef.angularDamping;}
41     inline const uint16 &categoryBits(){return m_polygonDef.filter.categoryBits;}
42     inline const uint16 &maskBits(){return m_polygonDef.filter.maskBits;}
43
44     b2Body * body();
45
46
47
48     void setup(b2World *world);
49     void updatePhysics();
50
51     void removeFromWorld()
52     {
53         mNeedRemoveFromWorld = true;
54     }
55
56     bool needRemoveFromWorld()
57     {
58         return mNeedRemoveFromWorld;
59     }
60
61
62 protected:
63     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
64
65 private:
66     b2PolygonDef m_polygonDef;
67     b2BodyDef m_bodyDef;
68     b2Body *m_body;
69     bool mIsStatic;
70     bool mNeedRemoveFromWorld;
71     QPixmap mPixmap;
72 };
73
74 #endif // BOXITEM_H