diff --git a/src/kekengine/cpp/common/engine.cpp b/src/kekengine/cpp/common/engine.cpp index 22b5d1e..d1f39d9 100644 --- a/src/kekengine/cpp/common/engine.cpp +++ b/src/kekengine/cpp/common/engine.cpp @@ -180,6 +180,8 @@ int start() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0, 0, kekData.screenWidth, kekData.screenHeight); + Physics::step(kekData.lastFrameTime); + for(auto cb : kekData.input->periodicCallbacks) { cb.second(kekData.window); } diff --git a/src/kekengine/cpp/physics/physics.cpp b/src/kekengine/cpp/physics/physics.cpp index 172a479..149e207 100644 --- a/src/kekengine/cpp/physics/physics.cpp +++ b/src/kekengine/cpp/physics/physics.cpp @@ -12,12 +12,25 @@ void init() { btCollisionDispatcher *dispatcher = new btCollisionDispatcher(collisionConf); btBroadphaseInterface *overlappingPairCache = new btDbvtBroadphase(); btSequentialImpulseConstraintSolver *solver = new btSequentialImpulseConstraintSolver(); - btDiscreteDynamicsWorld *world = new btDiscreteDynamicsWorld(dispatcher, overlappingPairCache, solver, collisionConf); - world->setGravity(btVector3(0, -10, 0)); + kekData.physics->world = new btDiscreteDynamicsWorld(dispatcher, overlappingPairCache, solver, collisionConf); + kekData.physics->world->setGravity(btVector3(0, -10, 0)); + + btCollisionShape *shape = new btBoxShape(btVector3(1, 1, 1)); + btDefaultMotionState *state = new btDefaultMotionState(); + btRigidBody *body = new btRigidBody(1, state, shape); + kekData.physics->world->addRigidBody(body); } void destroy() { delete kekData.physics; } +void step(float deltaT) { + kekData.physics->world->stepSimulation(deltaT, 100); + + //btRigidBody *body = btRigidBody::upcast(kekData.physics->world->getCollisionObjectArray()[0]); + //btTransform &t = body->getWorldTransform(); + //btVector3 &vec = t.getOrigin(); +} + } diff --git a/src/kekengine/include/physics.h b/src/kekengine/include/physics.h index 28178de..a4a8bf1 100644 --- a/src/kekengine/include/physics.h +++ b/src/kekengine/include/physics.h @@ -5,4 +5,6 @@ namespace kek::Physics { void init(); void destroy(); +void step(float deltaT); + }