]> git.leopard-lacewing.eu Git - cgue_weave.git/commitdiff
Trigger in front of player...
authorPeter Schaefer <schaeferpm@gmail.com>
Tue, 21 Jun 2016 10:20:24 +0000 (12:20 +0200)
committerPeter Schaefer <schaeferpm@gmail.com>
Tue, 21 Jun 2016 10:20:24 +0000 (12:20 +0200)
Weave/Game.cpp
Weave/Scene/EventBox.cpp
Weave/Scene/Marvin.cpp
Weave/Scene/Marvin.h
Weave/Scene/Scene.cpp
Weave/Scene/SceneObject.cpp
Weave/Scene/SceneObject.h

index 1e965fd62caa6e140d7501111a853b4e2d405cd1..c063206a4a069ea1c8dbae708f4527bb39003d45 100644 (file)
@@ -78,7 +78,8 @@ Game::Game() : playing(true)
        lever1->setAnimationLoop(false);\r
        lever1->setup(door2);\r
 \r
-       Lever* lever2 = new Lever(translate(vec3(86.f, -18.f, 5.f)), vec4(3.0f, 3.f, 0.4f, 1.5f), "lever", "model_duck_2D.png");\r
+       //Lever* lever2 = new Lever(translate(vec3(86.f, -18.f, 5.f)), vec4(3.0f, 3.f, 0.4f, 1.5f), "lever", "model_duck_2D.png");\r
+       Lever* lever2 = new Lever(translate(vec3(-5.f, 0.f, -5.f)), vec4(3.0f, 3.f, 0.4f, 1.5f), "lever", "model_duck_2D.png");\r
        current_world->addObject(lever2);\r
        lever2->setAnimationLoop(false);\r
        lever2->timeresistant = true;\r
index f113782af18f232ba3636e95db63f0c34701fdaf..06b6a0dd3b3073ab4a2b78852e5c90b32ef0d191 100644 (file)
@@ -63,8 +63,13 @@ void EventBox::update(float _deltaT)
 
 void EventBox::draw(drawTarget _target) const
 {
+       vec4 color = vec4(.3f, .9f, .9f, 1.f);
+
+       if(eb_type==EB_LEVER)
+               color = vec4(.9f, .3f, .9f, 1.f);
+
        if (_target == DRAW_Coll)
-               collision->drawModel(modelMat, dr_BBox, vec4(.3f,.9f,.9f,1.f), 0, 0);
+               collision->drawModel(modelMat, dr_BBox, color, 0, 0);
 }
 
 void EventBox::collides(SceneObject* _other, btPersistentManifold* _contactManifold, float _deltaT)
@@ -75,25 +80,26 @@ void EventBox::collides(SceneObject* _other, btPersistentManifold* _contactManif
                        return;
        }
 
-                       switch (eb_type)
-                       {
-                       default:
-                               Message::info("EB Kollision: " + std::to_string(eb_type) + " !");
-                               break;
-                       case EB_LOSTZONE:
-                               Message::info("Spiel Verloren!");
-                               //Events::halt = true;
-                               _other->movable = false;
-
-                               break;
-                       case EB_WINZONE:
-                               Message::info("Spiel Gewonnen!");
-                               Events::halt = true;
-                               break;
-                       case EB_LEVER:
-                               ((Lever*)_other)->trigger();
-                               break;
-                       }
-
-                       activated = true;
+       switch (eb_type)
+       {
+       default:
+               Message::info("EB Kollision: " + std::to_string(eb_type) + " !");
+               break;
+       case EB_LOSTZONE:
+               Message::info("Spiel Verloren!");
+               //Events::halt = true;
+               _other->movable = false;
+
+               break;
+       case EB_WINZONE:
+               Message::info("Spiel Gewonnen!");
+               Events::halt = true;
+               break;
+       case EB_LEVER:
+               Message::info("Sesam öffne dich!");
+               ((Lever*)_other)->trigger();
+               break;
+       }
+
+       activated = true;
 }
index 273d68de0f160e11bbe2968a0c9329787c7be23a..c3cd6f84c2c8be442f26888dfb6e378ccad84005 100644 (file)
@@ -5,6 +5,7 @@
 #include "../Events.h"
 #include "Camera.h"
 #include "Scene.h"
+#include "EventBox.h"
 
 #define TIME_TILL_MAX_MOVE 2
 #define TIME_TILL_DIRECTION_ROTATE 1
@@ -19,11 +20,14 @@ SceneObject( _modelMat, vec4(7.0f, 0.7f, 1.0f, 3.0f), "Player", "model_player_2D
        collide_with = COL_LEVEL | COL_ENEMY | COL_EVENT;
        yStatic = false;
 
+       eTrigger = new EventBox(_modelMat, EB_LEVER);
+
 }
 
 
 Marvin::~Marvin()
 {
+       delete eTrigger;
 }
 
 
@@ -66,14 +70,27 @@ void Marvin::update(float deltaT)
                        turnTo(cam.getWorldDirection(), 3 * deltaT / TIME_TILL_DIRECTION_ROTATE);
 
                //hit E
+               eTrigger->setModelMat(modelMat * translate(vec3(0.f, .5f, .75f)));
+               //eTrigger->update(deltaT);
                if (Events::isKHeld(SDLK_e))
                {
-
+                       if (!trigger_active)
+                       {
+                               mainScene->addObject(eTrigger);
+                               trigger_active = true;
+                       }
+                       
+               }
+               else
+               {
+                       if (trigger_active)
+                       {
+                               mainScene->deleteObject(eTrigger);
+                               trigger_active = false;
+                       }
+                       
                }
        }
-       
-
-       
 
        SceneObject::update(deltaT);
 }
index 4a3b1f55b7daca30bb1211be1583c4ff0ec1a68e..4ba161e7f554a93f67bff9530996a5ccb049939a 100644 (file)
@@ -3,6 +3,8 @@
 
 #include "../GLM.h"
 
+class EventBox;
+
 class Marvin :
        public SceneObject
 {
@@ -13,7 +15,8 @@ public:
        virtual void update(float) override;
 protected:
 
-       
+       EventBox* eTrigger = nullptr;
+       bool trigger_active= false;
 
 };
 
index f9ec11a4ea03d114b2e1a9b7f4bd18fd87fcdce0..149256b856ca5ed3bb467138bfa080e02df33ca9 100644 (file)
@@ -247,7 +247,7 @@ void Scene::update(float deltaT)
 
 
                //TODO go from keyframe to current time
-               lookat->setModel(prev_mat);
+               lookat->setModelMat(prev_mat);
                lookat->ySpeed = prev_ySpeed;
                lookat->movable = true;
 
@@ -476,7 +476,7 @@ void Scene::addObject(SceneObject* _add)
        SceneObjects.push_back(_add);
 
        bt_collision_world->addCollisionObject(*_add, _add->getCollideGroup(), _add->getCollideWith());
-       bt_dynamics_world->addCollisionObject(*_add,_add->getCollideGroup(),_add->getCollideWith());
+       //bt_dynamics_world->addCollisionObject(*_add,_add->getCollideGroup(),_add->getCollideWith());
 
        _add->setMainScene(this);
 }
@@ -484,6 +484,7 @@ void Scene::addObject(SceneObject* _add)
 void Scene::deleteObject(SceneObject* _del)
 {
        SceneObjects.remove(_del);
+       bt_collision_world->removeCollisionObject(*_del);
 }
 
 
index 79ef45b01339223d0483089c18088af6cdaa2bce..b22516bdf89ae3297ae61d1b075b1c075f207c0d 100644 (file)
@@ -293,7 +293,7 @@ vec3 SceneObject::getPosition() const
        return vec3(modelMat[3]);
 }
 
-void SceneObject::setModel(mat4& _modelMat){
+void SceneObject::setModelMat(mat4& _modelMat){
        modelMat = _modelMat;
 }
 
index 156292d96c639d873e1f352683c55eee226f1b3b..1b6768854b5450d39df7a316291b2a2ba4d868ca 100644 (file)
@@ -55,7 +55,7 @@ public:
        virtual vec3 getPosition() const;
 
        __declspec(deprecated)
-       virtual void setModel(mat4&);
+       virtual void setModelMat(mat4&);
        __declspec(deprecated)
        virtual void turn(float angle, vec3& axis);
        virtual void turnTo(vec3& direction, float speed = 1);
@@ -74,11 +74,6 @@ public:
 
        void saveModelMat();
 
-       __declspec(deprecated)
-       void setEnemy(bool isenemy);
-       __declspec(deprecated)
-       bool isEnemy();
-
        operator btCollisionObject*() const;
        operator btRigidBody*() const;
        short getCollideGroup() const;