]> git.leopard-lacewing.eu Git - cgue_weave.git/commitdiff
Door collides with Marvin & Enemy
authorPeter Schaefer <schaeferpm@gmail.com>
Fri, 24 Jun 2016 11:38:50 +0000 (13:38 +0200)
committerPeter Schaefer <schaeferpm@gmail.com>
Fri, 24 Jun 2016 11:38:50 +0000 (13:38 +0200)
BUG: CollisionMesh dont rotate

Weave/Game.cpp
Weave/Scene/Level.cpp
Weave/Scene/Level.h

index c063206a4a069ea1c8dbae708f4527bb39003d45..dde9f31b4c9bd18a48de3320b2c382d3c84c2623 100644 (file)
@@ -64,12 +64,12 @@ Game::Game() : playing(true)
        current_world->addObject(new SceneObject(translate(vec3(-3.f, .4f, 0.f)), vec4(3.0f, 0.5f, 0.4f, 1.5f), "duck_col", "model_duck_2D.png"));\r
        //current_world->addObject(new SceneObject(translate(vec3(-5.f, .4f, 0.f)), vec4(3.0f, 3.f, 0.4f, 1.5f), "boar", "model_boar_2D.png"));\r
 \r
-       SceneObject* door1 = new SceneObject(translate(vec3(92.f, -12.f, -4.f)), vec4(3.0f, 3.f, 0.4f, 1.5f), "door", "model_duck_2D.png");\r
+       SceneObject* door1 = new Level(translate(vec3(92.f, -12.f, -4.f)), vec4(3.0f, 3.f, 0.4f, 1.5f), "door", "model_duck_2D.png");\r
        current_world->addObject(door1);\r
        door1->setAnimationLoop(false);\r
        door1->timeresistant = true;\r
 \r
-       SceneObject* door2 = new SceneObject(translate(vec3(7.0f, 0.0f, -5.0f)), vec4(3.0f, 1.f, -1.4f, 1.5f), "door", "model_duck_2D.png");\r
+       SceneObject* door2 = new Level(translate(vec3(7.0f, 0.0f, -5.0f)), vec4(3.0f, 1.f, -1.4f, 1.5f), "door", "model_duck_2D.png");\r
        current_world->addObject(door2);\r
        door2->setAnimationLoop(false);\r
 \r
@@ -83,7 +83,7 @@ Game::Game() : playing(true)
        current_world->addObject(lever2);\r
        lever2->setAnimationLoop(false);\r
        lever2->timeresistant = true;\r
-       lever2->setup(door1);\r
+       lever2->setup(door2);\r
 \r
        current_world->addObject(new Boar(translate(vec3(-5.f, 1.f, 5.f))));\r
 \r
index cf9b63dbfab7851db25f3275732897e9ddad60b1..e98b97f71c97cd952ad7b5119ad3bd26f0674438 100644 (file)
@@ -31,6 +31,31 @@ Level::Level(std::string _modelpath, std::string _texturepath) : SceneObject(mat
        bt_rigid_body = new btRigidBody(RigidBodyCI);
 }
 
+Level::Level(const mat4& _modelMat, const vec4& _material, std::string _modelpath, std::string _texturepath) :
+       SceneObject(_modelMat, _material, Model::newIMetaModel(_modelpath + ".dae"), _texturepath)
+{
+       collide_group = COL_LEVEL;
+       collide_with = COL_MARVIN | COL_ENEMY;
+
+       //model->bindModel();
+       //model->bindShader(shader);
+
+       collision = model;
+       collision->bt_init();
+       bt_collision_object->setCollisionShape(*collision);
+       bt_collision_object->setUserPointer(this);
+
+
+       btTransform btModelMat;
+       btModelMat.setFromOpenGLMatrix(value_ptr(modelMat));
+
+       btDefaultMotionState* MotionState =
+               new btDefaultMotionState(btModelMat);
+       btRigidBody::btRigidBodyConstructionInfo RigidBodyCI(0, MotionState, *model, btVector3(0, 0, 0));
+
+       bt_rigid_body = new btRigidBody(RigidBodyCI);
+}
+
 
 Level::~Level()
 {
index b5d81ec58d1d649baf53fd1132d167615e313185..f1307c59f83b2fb9a36deee23cfec1accc012fe5 100644 (file)
@@ -10,6 +10,7 @@ class Level :
 {
 public:
        Level(std::string modelpath, std::string texturepath);
+       Level(const mat4& modelMat, const vec4& material, string modelpath, string texturepath);
        ~Level();
 
        virtual void collides(SceneObject* other, btPersistentManifold* contactManifold, float deltaT=1.f) override;