Updated examples to work with 1.1
[qml-box2d:qml-box2d-folibis.git] / examples / revolute / revolute.qml
1 import QtQuick 2.0
2 import Box2D 1.1
3
4 Item {
5     id: screen
6     width: 800
7     height: 600
8     focus: true
9     Keys.onPressed: onKeysPressed(event)
10
11     function onKeysPressed(event) {
12         if (event.key == Qt.Key_Left) {
13             revolute.motorSpeed -= 10;
14         }
15         else if (event.key == Qt.Key_Right) {
16             revolute.motorSpeed += 10
17         }
18     }
19
20     Text {
21         anchors {
22             right: parent.right
23             top: parent.top
24             left: parent.left
25         }
26         height: 40
27         horizontalAlignment: Text.AlignHCenter;
28         text: "Left/Right buttons to control the speed, Mouse click to activate/deactivate motor"
29     }
30
31     // BOX2D WORLD
32     World {
33         id: world;
34         anchors.fill: parent
35
36         Wall {
37             id: ground
38             height: 20
39             anchors { left: parent.left; right: parent.right; top: parent.bottom }
40         }
41         Wall {
42             id: ceiling
43             height: 20
44             anchors { left: parent.left; right: parent.right; bottom: parent.top }
45         }
46         Wall {
47             id: leftWall
48             width: 20
49             anchors { right: parent.left; bottom: ground.top; top: ceiling.bottom }
50         }
51         Wall {
52             id: rightWall
53             width: 20
54             anchors { left: parent.right; bottom: ground.top; top: ceiling.bottom }
55         }
56
57         Body {
58             id: rod
59             fixedRotation: false
60             sleepingAllowed: false
61             bodyType: Body.Dynamic
62             x: 350
63             y: 300 - circleShape.radius
64
65             width: 250
66             height: 40
67
68             fixtures: Box {
69                 anchors.fill: parent
70                 density: 1;
71                 friction: 1;
72                 restitution: 0.3;
73             }
74
75             Rectangle {
76                 color: "green"
77                 radius: 6
78                 anchors.fill: parent
79             }
80         }
81
82         Body {
83             id: middle
84             fixedRotation: true
85             sleepingAllowed: false
86             bodyType: Body.Static
87
88             width: 40
89             height: width
90
91             x: 400
92             y: 300
93
94             fixtures: Circle {
95                 id: circleShape
96                 radius: width / 2
97                 anchors.fill: parent
98             }
99
100             Rectangle {
101                 id: itemShape
102                 radius: 180
103                 width: parent.width
104                 height: parent.height
105                 color: "black"
106                 x: circleShape.x - circleShape.radius
107                 y: circleShape.y - circleShape.radius
108             }
109         }
110
111         RevoluteJoint {
112             id: revolute
113             maxMotorTorque: 1000
114             motorSpeed: 0
115             enableMotor: false
116             bodyA: middle
117             bodyB: rod
118             world: world
119             localAnchorA: Qt.point(20,20)
120             localAnchorB: Qt.point(40,20)
121         }
122
123         // Debug
124         DebugDraw {
125             id: debugDraw
126             world: world
127             anchors.fill: world
128             opacity: 0.75
129             visible: false
130         }
131     }
132
133     MouseArea {
134         anchors.fill: parent
135         onClicked: revolute.enableMotor = !revolute.enableMotor
136     }
137 }