]> git.leopard-lacewing.eu Git - cgue_weave.git/commitdiff
Lever should now work properly
authorLockedLunatic <locked.lunatic@aon.at>
Mon, 20 Jun 2016 09:30:06 +0000 (11:30 +0200)
committerLockedLunatic <locked.lunatic@aon.at>
Mon, 20 Jun 2016 09:30:06 +0000 (11:30 +0200)
the only thing left is to actually call the trigger() function

Weave/Game.cpp
Weave/Scene/Lever.cpp
Weave/Scene/Lever.h
Weave/Scene/Scene.cpp
Weave/Scene/SceneObject.cpp

index c21bc42b0e3e767ad55665a0c29e866e525c055d..e30b1f2d21316acd4ea1b0bdef30f02462574df5 100644 (file)
@@ -77,7 +77,7 @@ Game::Game() : playing(true)
 \r
        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");\r
        current_world->addObject(lever);\r
-       lever->startanimation((uint)0, 0.0f);\r
+       lever->startanimation((uint)0, 1.0f);\r
        lever->setAnimationLoop(false);\r
        lever->timeresistant = true;\r
        lever->setup(door);\r
index f03c17f4b218b9e2bebce32f6fa2b130f9b0187e..058934592ce0ded1d60e943352c25da737ee3173 100644 (file)
@@ -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
index c24f5d541b1bb5b7c43f6442e7807a82163716e0..64fd442b46970725952154e862132c0e2ce9ec00 100644 (file)
@@ -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;
index 01a53600aa1430f5d9a40f48511d3d642fa75ac0..d932b040efb068fe803bc847e4971c35d3e20550 100644 (file)
@@ -1,5 +1,6 @@
 #include "Scene.h"
 #include "SceneObject.h"
+#include "Lever.h"
 //#include "Sky.h"
 //#include "Camera.h"
 #include <GL\glew.h>
@@ -571,7 +572,10 @@ void Scene::revertEvent(TimeEvent e)
 
        case 2:
                //Lever triggered
-
+               if (Lever* l = dynamic_cast<Lever*> (e.object))
+               {
+                       l->reverseTrigger();
+               }
                break;
        }
 }
\ No newline at end of file
index b904410b6d0e1570d4ba78e71b5900a694e008b8..19e3e15dc9f39232c003f2c23c129197dddfd3f6 100644 (file)
@@ -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);
                        }
                }
        }