From: Peter Schaefer Date: Mon, 22 Jun 2015 12:17:11 +0000 (+0200) Subject: walking against Walls Jumpy X-Git-Url: https://git.leopard-lacewing.eu/?a=commitdiff_plain;h=43f9aec7b136544a2e9f351c8366b2694b9d0d66;p=cgue_weave.git walking against Walls Jumpy --- diff --git a/Weave/Scene/Level.cpp b/Weave/Scene/Level.cpp index 401ad73..f565eec 100644 --- a/Weave/Scene/Level.cpp +++ b/Weave/Scene/Level.cpp @@ -57,14 +57,18 @@ void Level::collides(SceneObject* _other, btPersistentManifold* _contactManifold _other->move(-pdist * vec3(0.f, normal[1], 0.f)); } - if (normal[1] >= .6f && _other->ySpeed < 0) + if (normal[1] >= .3f && _other->ySpeed < 0) { _other->ySpeed = 0; } - //if (normal[1] <= .6f && pdist<0 && pdist > -1) - // _other->move(-pdist * vec3(normal[0], 0.f, normal[2])); + if (normal[1] <= .3f && pdist<0 && pdist > -1) + { + _other->move(-pdist * vec3(normal[0], 0.f, normal[2])); + _other->move_delta = 0; + } + } diff --git a/Weave/Scene/Marvin.cpp b/Weave/Scene/Marvin.cpp index 75f4e8c..4fe18f7 100644 --- a/Weave/Scene/Marvin.cpp +++ b/Weave/Scene/Marvin.cpp @@ -13,8 +13,7 @@ #define MOVE_FASTER 2.5f Marvin::Marvin(Shader* _shader, const mat4& _modelMat) : -SceneObject(_shader, _modelMat, vec4(7.0f, 0.7f, 1.0f, 3.0f), "Player.dae", "model_player_2D.png"), -move_delta(0) +SceneObject(_shader, _modelMat, vec4(7.0f, 0.7f, 1.0f, 3.0f), "Player.dae", "model_player_2D.png") { collide_group = COL_MARVIN; collide_with = COL_LEVEL | COL_ENEMY; diff --git a/Weave/Scene/Marvin.h b/Weave/Scene/Marvin.h index 5ae4140..ddd4ad7 100644 --- a/Weave/Scene/Marvin.h +++ b/Weave/Scene/Marvin.h @@ -14,7 +14,6 @@ public: virtual void update(float) override; protected: - float move_delta; }; diff --git a/Weave/Scene/Scene.cpp b/Weave/Scene/Scene.cpp index b88d247..0f79ff3 100644 --- a/Weave/Scene/Scene.cpp +++ b/Weave/Scene/Scene.cpp @@ -52,7 +52,7 @@ lookat(_lookat) bt_dynamics_world = new btDiscreteDynamicsWorld(bt_dispatcher, bt_broadphase, bt_solver, bt_collision_configuration); - //bt_collision_world = new btCollisionWorld(bt_dispatcher, bt_broadphase, bt_collision_configuration); + bt_collision_world = new btCollisionWorld(bt_dispatcher, bt_broadphase, bt_collision_configuration); bt_dynamics_world->setGravity(btVector3(0, YFALL_SPEED, 0)); @@ -69,7 +69,7 @@ Scene::~Scene() timestamps.empty(); //Bullet - //delete bt_collision_world; + delete bt_collision_world; delete bt_dynamics_world; delete bt_solver; delete bt_broadphase; @@ -109,7 +109,7 @@ void Scene::update(float deltaT) (*i)->update(deltaT); } bt_dynamics_world->stepSimulation(deltaT, 2); - //bt_collision_world->performDiscreteCollisionDetection(); + bt_collision_world->performDiscreteCollisionDetection(); int numManifolds = bt_dynamics_world->getDispatcher()->getNumManifolds(); //For each contact manifold @@ -192,7 +192,7 @@ void Scene::addObject(SceneObject* _add) SceneObjects.push_back(_add); ShaderSet.insert(_add->getShader()); - //bt_collision_world->addCollisionObject(*_add); + bt_collision_world->addCollisionObject(*_add, _add->getCollideGroup(), _add->getCollideWith()); bt_dynamics_world->addCollisionObject(*_add,_add->getCollideGroup(),_add->getCollideWith()); _add->setMainScene(this); diff --git a/Weave/Scene/Scene.h b/Weave/Scene/Scene.h index e6495f9..baddcb2 100644 --- a/Weave/Scene/Scene.h +++ b/Weave/Scene/Scene.h @@ -59,6 +59,6 @@ protected: btCollisionDispatcher* bt_dispatcher; btBroadphaseInterface* bt_broadphase; btSequentialImpulseConstraintSolver* bt_solver; - //btCollisionWorld* bt_collision_world; + btCollisionWorld* bt_collision_world; btDiscreteDynamicsWorld* bt_dynamics_world; }; diff --git a/Weave/Scene/SceneObject.cpp b/Weave/Scene/SceneObject.cpp index e6a32fa..2d36451 100644 --- a/Weave/Scene/SceneObject.cpp +++ b/Weave/Scene/SceneObject.cpp @@ -35,7 +35,8 @@ ignore(false), newModel(true), collide_group(0), collide_with(0), -bt_collision_object(new btCollisionObject()) +bt_collision_object(new btCollisionObject()), +move_delta(0) { //Message::info("Error from befor?"); //Graphix::getGlError(); @@ -100,7 +101,8 @@ newModel(false), collide_group(0), collide_with(0), bt_collision_object(new btCollisionObject()), -bt_rigid_body(nullptr) +bt_rigid_body(nullptr), +move_delta(0) { //Message::info("Error from befor?"); //Graphix::getGlError(); diff --git a/Weave/Scene/SceneObject.h b/Weave/Scene/SceneObject.h index ddf6476..e1a1351 100644 --- a/Weave/Scene/SceneObject.h +++ b/Weave/Scene/SceneObject.h @@ -74,6 +74,7 @@ public: //Falling bool yStatic; float ySpeed; + float move_delta; float yFloorDist; bool ignore; @@ -81,6 +82,7 @@ public: protected: mat4 modelMat; + Shader* shader; Texture* texture;