1 #include "physicsscene.h"
7 PhysicsScene::PhysicsScene(QObject *parent) :
10 mGravity= b2Vec2(0.0f,10.0f);
13 mTimer->setInterval(20);
14 mTime = QTime::currentTime();
15 connect(mTimer,SIGNAL(timeout()),this,SLOT(mainLoop()));
18 aThread * accelerometer = new aThread(this);
19 connect(accelerometer,SIGNAL(deviceOrientation(QString,QString,QString)),this,SLOT(moveXYZ(QString,QString,QString)));
22 accelerometer->start(QThread::NormalPriority);
24 PhysicsScene::~PhysicsScene()
30 void PhysicsScene::createWorld()
34 worldAABB.lowerBound.Set(-100.0f, -100.0f);
35 worldAABB.upperBound.Set(100.0f, 100.0f);
37 mWorld = new b2World(worldAABB, mGravity, doSleep);
40 void PhysicsScene::addPhysicsItem(BoxItem * item)
44 mBoxList.append(item);
46 void PhysicsScene::removePhysicsItem(BoxItem * item)
48 mBoxList.removeOne(item);
49 mWorld->DestroyBody(item->body());
54 void PhysicsScene::computeSimulation(int32 iterations)
60 mWorld->Step(timeStep, iterations);
62 b2Body* node = mWorld->GetBodyList();
66 node = node->GetNext();
68 if ( b->GetUserData()!=NULL)
70 // qDebug()<<"positionx:"<<b->GetPosition().x;
71 // q#include <phonon/MediaObject>
72 //qDebug()<<"positiony:"<<b->GetPosition().y;
75 BoxItem* item = (BoxItem*)b->GetUserData();
76 if (!item->needRemoveFromWorld())
77 item->updatePhysics();
81 mWorld->DestroyBody(item->body());
88 void PhysicsScene::keyPressEvent(QKeyEvent *event)
90 qDebug()<<"key press";
96 void PhysicsScene::mainLoop()
98 mFps = mTime.elapsed();
99 mTime = QTime::currentTime();
106 void PhysicsScene::start()
111 void PhysicsScene::stop()
122 void PhysicsScene::moveXYZ(QString x, QString y, QString z)
124 #if defined(Q_WS_MAEMO_5)
130 mWorld->SetGravity(b2Vec2(-x.toDouble()/10, -y.toDouble() / 10));