From 53d2a3b78b5a9a357aabcf7910cc433176fe9c66 Mon Sep 17 00:00:00 2001 From: LockedLunatic Date: Mon, 20 Jun 2016 11:30:06 +0200 Subject: [PATCH] Lever should now work properly the only thing left is to actually call the trigger() function --- Weave/Game.cpp | 2 +- Weave/Scene/Lever.cpp | 33 +++++++++++++++++++-------------- Weave/Scene/Lever.h | 3 ++- Weave/Scene/Scene.cpp | 6 +++++- Weave/Scene/SceneObject.cpp | 6 ++++-- 5 files changed, 31 insertions(+), 19 deletions(-) diff --git a/Weave/Game.cpp b/Weave/Game.cpp index c21bc42..e30b1f2 100644 --- a/Weave/Game.cpp +++ b/Weave/Game.cpp @@ -77,7 +77,7 @@ Game::Game() : playing(true) Lever* lever = new Lever(translate(vec3(0.f, .4f, 0.f)), vec4(3.0f, 3.f, 0.4f, 1.5f), "lever", "model_duck_2D.png"); current_world->addObject(lever); - lever->startanimation((uint)0, 0.0f); + lever->startanimation((uint)0, 1.0f); lever->setAnimationLoop(false); lever->timeresistant = true; lever->setup(door); diff --git a/Weave/Scene/Lever.cpp b/Weave/Scene/Lever.cpp index f03c17f..0589345 100644 --- a/Weave/Scene/Lever.cpp +++ b/Weave/Scene/Lever.cpp @@ -1,4 +1,5 @@ #include "Lever.h" +#include "Scene.h" Lever::Lever(const mat4& _modelMat, const vec4& _material, string _modelpath, string texturepath) : SceneObject(_modelMat, _material, _modelpath, texturepath) { @@ -20,21 +21,25 @@ void Lever::setup(SceneObject* object) recipient = object; } -void Lever::trigger(bool state) +void Lever::trigger() { - if (turned != state) + turned = !turned; + + mainScene->addEvent(this, 2); + + if (turned) + { + this->startanimation((uint)0, 1.0f); + recipient->startanimation((uint)0, 1.0f); + } + else { - turned = state; - //TODO add event - if (state) - { - this->startanimation((uint) 0, 1.0f); - recipient->startanimation((uint) 0, 1.0f); - } - else - { - this->startanimation((uint)0, -1.0f); - recipient->startanimation((uint)0, -1.0f); - } + this->startanimation((uint)0, -1.0f); + recipient->startanimation((uint)0, -1.0f); } +} + +void Lever::reverseTrigger() +{ + turned = !turned; } \ No newline at end of file diff --git a/Weave/Scene/Lever.h b/Weave/Scene/Lever.h index c24f5d5..64fd442 100644 --- a/Weave/Scene/Lever.h +++ b/Weave/Scene/Lever.h @@ -13,7 +13,8 @@ public: Lever(const mat4& modelMat, const vec4& material, Model* model, string texturepath); ~Lever(); void setup(SceneObject* object); - void trigger(bool state); + void trigger(); + void reverseTrigger(); protected: SceneObject* recipient; diff --git a/Weave/Scene/Scene.cpp b/Weave/Scene/Scene.cpp index 01a5360..d932b04 100644 --- a/Weave/Scene/Scene.cpp +++ b/Weave/Scene/Scene.cpp @@ -1,5 +1,6 @@ #include "Scene.h" #include "SceneObject.h" +#include "Lever.h" //#include "Sky.h" //#include "Camera.h" #include @@ -571,7 +572,10 @@ void Scene::revertEvent(TimeEvent e) case 2: //Lever triggered - + if (Lever* l = dynamic_cast (e.object)) + { + l->reverseTrigger(); + } break; } } \ No newline at end of file diff --git a/Weave/Scene/SceneObject.cpp b/Weave/Scene/SceneObject.cpp index b904410..19e3e15 100644 --- a/Weave/Scene/SceneObject.cpp +++ b/Weave/Scene/SceneObject.cpp @@ -453,7 +453,8 @@ void SceneObject::updateAnimation(float deltaT) { AnimationTime = 0; animationSpeed = 0; - //TODO add event + + mainScene->addEvent(this, 1); } } while (AnimationTime >= model->animationduration) @@ -466,7 +467,8 @@ void SceneObject::updateAnimation(float deltaT) { AnimationTime = model->animationduration - 0.01f; animationSpeed = 0; - //TODO add event + + mainScene->addEvent(this, 0); } } } -- 2.47.3