]> git.leopard-lacewing.eu Git - cgue_weave.git/commitdiff
Lever - Door started
authorLockedLunatic <locked.lunatic@aon.at>
Sun, 19 Jun 2016 23:55:59 +0000 (01:55 +0200)
committerLockedLunatic <locked.lunatic@aon.at>
Sun, 19 Jun 2016 23:55:59 +0000 (01:55 +0200)
Animations get reverted properly when reversing time
green objects

16 files changed:
Weave/Game.cpp
Weave/Graphix/Model/IAnimMesh.cpp
Weave/Graphix/Model/IAnimMesh.h
Weave/Graphix/Model/IMetaMesh.cpp
Weave/Graphix/Model/IMetaMesh.h
Weave/Graphix/Model/Model.cpp
Weave/Graphix/Model/Model.h
Weave/Scene/EventBox.cpp
Weave/Scene/Lever.cpp [new file with mode: 0644]
Weave/Scene/Lever.h [new file with mode: 0644]
Weave/Scene/Scene.cpp
Weave/Scene/Scene.h
Weave/Scene/SceneObject.cpp
Weave/Scene/SceneObject.h
Weave/Weave.vcxproj
Weave/Weave.vcxproj.filters

index 3b9dcf98bfb31f6ef2c1cbee03e3f96cedbf0b92..53b96d92c737ba522aecc5fdc610f289473a40a0 100644 (file)
@@ -12,6 +12,7 @@
 #include <GL\glew.h>\r
 \r
 #include "Scene.h"\r
+#include "Scene\Lever.h"\r
 \r
 #include "Graphix\Shader.h"\r
 #include "Graphix\Graphix.h"\r
@@ -66,15 +67,29 @@ Game::Game() : playing(true)
        current_world->addObject(new SceneObject(translate(vec3(-5.f, .4f, 0.f)), vec4(3.0f, 3.f, 0.4f, 1.5f), "duck", "model_duck_2D.png"));\r
 \r
        SceneObject* door = new SceneObject(translate(vec3(2.f, .4f, 0.f)), vec4(3.0f, 3.f, 0.4f, 1.5f), "door", "model_duck_2D.png");\r
-       SceneObject* lever = new SceneObject(translate(vec3(0.f, .4f, 0.f)), vec4(3.0f, 3.f, 0.4f, 1.5f), "lever", "model_duck_2D.png");\r
-       lever->timeresistant = true;\r
        current_world->addObject(door);\r
+       door->startanimation((uint)0, 1.0f);\r
+       door->setAnimationLoop(true);\r
+\r
+       SceneObject* door2 = new SceneObject(translate(vec3(1.f, .4f, 0.f)), vec4(3.0f, 1.f, 0.4f, 1.5f), "door", "model_duck_2D.png");\r
+       current_world->addObject(door2);\r
+       door2->startanimation((uint)0, 1.0f);\r
+       door2->setAnimationLoop(true);\r
+       door2->timeresistant = true;\r
+\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->setAnimationLoop(false);\r
+       lever->timeresistant = true;\r
+       lever->setup(door);\r
+\r
+       //TODO register door to lever\r
 \r
 \r
        current_world->addObject(new SceneObject(translate(vec3(-5.f, 3.f, 0.f)), vec4(3.0f, 3.f, 0.4f, 1.5f), "SkyBox", "model_SkyBox_2D.png"));\r
 \r
-       current_world->addObject(new EventBox(translate(vec3(3.f, .4f, 0.f)),EB_LOSTZONE));\r
+       current_world->addObject(new EventBox(translate(vec3(3.f, .4f, 0.f)), EB_LOSTZONE));\r
        //current_world->addObject(new EventBox(translate(vec3(0.f, -5.f, 0.f))*glm::scale(vec3(50.f,1.f,50.f)), EB_LOSTZONE));\r
        current_world->addObject(new EventBox(translate(vec3(3.f, .4f, -15.f)), EB_WINZONE));\r
 \r
index af4692067737baf9698e5fd1e1b76399d193bad3..55da2078a8c38f08d3510809606c2d057a155fb7 100644 (file)
@@ -2,9 +2,7 @@
 
 IAnimMesh::IAnimMesh(const aiMesh* mesh, const vec3& scale, bool isConvex) : IMesh(mesh, scale)
 {
-       currentAnimation = 0;
-       time = 0;
-       animationSpeed = 1.0f;
+       
 }
 
 IAnimMesh::~IAnimMesh()
@@ -17,50 +15,17 @@ void IAnimMesh::addanimation(aiNodeAnim* animation)
        animations.push_back(new Animation(animation));
 }
 
-void IAnimMesh::startanimation(uint index, float speed)
-{
-       currentAnimation = index;
-       animationSpeed = 1.0f;
-       time = 0;
-}
-
-void IAnimMesh::stopanimation()
-{
-       animationSpeed = 0;
-}
-
-void IAnimMesh::drawModel(const mat4& _modelMat, drawType _type, const vec4& _color) const
+void IAnimMesh::drawModel(const mat4& _modelMat, drawType _type, const vec4& _color, uint index, double time) const
 {
        if (animations.empty())
        {
-               Model::drawModel(_modelMat, _type, _color);
+               Model::drawModel(_modelMat, _type, _color, index, time);
        }
        else
        {
-               Animation* anim = animations[currentAnimation];
+               Animation* anim = animations[index];
                mat4 mat = anim->getmodelmat(time);
 
-               Model::drawModel(_modelMat * mat, _type, _color);
-       }
-}
-
-void IAnimMesh::updateModel(float deltaT)
-{
-       if (animations.empty())
-       {
-               Model::updateModel(deltaT);
-       }
-       else
-       {
-               time += animationSpeed * deltaT;
-               while (time < 0)
-               {
-                       time = time + animationduration;
-               }
-               while (time >= animationduration)
-               {
-                       time = time - animationduration;
-               }
-               Model::updateModel(deltaT);
+               Model::drawModel(_modelMat * mat, _type, _color, index, time);
        }
 }
\ No newline at end of file
index 01c4ea9892a1a5fdd6553bbd2ff63aa9d81ea13b..a8da184c39d9c24dd3f00e2e75651ec392a0a917 100644 (file)
@@ -12,18 +12,9 @@ public:
        virtual ~IAnimMesh();
 
        void addanimation(aiNodeAnim* animation);
-       void startanimation(uint index, float speed);
-       void stopanimation();
 
-       virtual void drawModel(const mat4& modelMat, drawType type, const vec4& color) const;
-
-       void updateModel(float deltaT);
-
-       double animationduration;
+       virtual void drawModel(const mat4& modelMat, drawType type, const vec4& color, uint index, double time) const;
 
 protected:
        std::vector<Animation*> animations;
-       double time;
-       uint currentAnimation;
-       float animationSpeed;
 };
\ No newline at end of file
index 8a7ea46552137841af20dc3062cb28e3de984504..f440c895f57d28711e1aa89621acdf37d9dcfc26 100644 (file)
@@ -57,6 +57,8 @@ IMetaMesh::IMetaMesh(const string& _modelpath, const vec3& _scale, bool _isConve
                {\r
                        IAnimMesh* tmpIMesh;\r
 \r
+                       animationduration = scene->mAnimations[0]->mDuration;\r
+\r
                        for (uint i = 0; i < scene->mNumMeshes; i++)\r
                        {\r
                                bool animated = false;\r
@@ -83,8 +85,6 @@ IMetaMesh::IMetaMesh(const string& _modelpath, const vec3& _scale, bool _isConve
                                tmpModelMatClean = removeScale(tmpModelMat);\r
                                tmpIMesh = new IAnimMesh(scene->mMeshes[i], _scale* getScale(tmpModelMat));\r
 \r
-                               tmpIMesh->animationduration = scene->mAnimations[0]->mDuration;\r
-\r
                                for (uint l = 0; l < scene->mNumAnimations; l++)\r
                                {\r
                                        aiAnimation* tmpanimation = scene->mAnimations[l];\r
@@ -202,11 +202,11 @@ void IMetaMesh::unbindShader(const Shader* _shader)
        }\r
 }\r
 \r
-void IMetaMesh::drawModel(const mat4& _modelMat, drawType _type, const vec4& _color) const\r
+void IMetaMesh::drawModel(const mat4& _modelMat, drawType _type, const vec4& _color, uint index, double time) const\r
 {\r
        for (auto i = models.begin(); i != models.end(); ++i)\r
        {\r
-               i->first->drawModel(_modelMat* i->second, _type, _color*.9f);\r
+               i->first->drawModel(_modelMat* i->second, _type, _color*.9f, index, time);\r
        }\r
 }\r
 \r
@@ -218,14 +218,6 @@ void IMetaMesh::drawModel(const mat4& _modelMat, drawType _type, const vec4& _co
 //     }\r
 //}\r
 \r
-void IMetaMesh::updateModel(float deltaT)\r
-{\r
-       for (auto i = models.begin(); i != models.end(); ++i)\r
-       {\r
-               i->first->updateModel(deltaT);\r
-       }\r
-}\r
-\r
 void IMetaMesh::bt_init(bool _isConvex)\r
 {\r
        if (bt_collision_shape == nullptr)\r
index 9358bf98267791202a0b52b0ed0e91f83c8883ec..a1c43fdb48ea7d048ed880320c3774c5a4ab1338 100644 (file)
@@ -22,13 +22,11 @@ public:
        void unbindModel() override;\r
        void unbindShader(const Shader* shader) override;\r
 \r
-       virtual void drawModel(const mat4& modelMat, drawType type = dr_Model, const vec4& color = vec4(0.9f, 0.f, 0.f, 1.f)) const override;\r
+       virtual void drawModel(const mat4& modelMat, drawType type = dr_Model, const vec4& color = vec4(0.9f, 0.f, 0.f, 1.f), uint index = 0, double animationtime = 0) const override;\r
        //void drawWire(const mat4& modelMat, const vec4& _color = vec4(0.9f, 0.f, 0.f, 1.f)) const override;\r
 \r
        //void drawBBox(const mat4& modelMat, const vec4& color = vec4(0.9f, 0.f, 0.f, 1.f)) const override;\r
 \r
-       void updateModel(float deltaT) override;\r
-\r
        virtual void bt_init(bool isConvex = true) override;\r
 \r
        std::string type2str() const override;\r
index 45508fc8679c882799358f91f198502afc1b9696..2c08731008bdcb63fbc5db77af30c0552d344caf 100644 (file)
@@ -25,6 +25,7 @@ typedef Model::Box Box;
 \r
 Model::Model()\r
 {\r
+       animationduration = 0;\r
 }\r
 \r
 Model::~Model()\r
@@ -131,7 +132,7 @@ void Model::drawWire() const
        glBindVertexArray(0);\r
 }\r
 \r
-void Model::drawModel(const mat4& _modelMat, drawType _type, const vec4& _color) const\r
+void Model::drawModel(const mat4& _modelMat, drawType _type, const vec4& _color, uint animation, double time) const\r
 {\r
        useModel(_modelMat);\r
 \r
@@ -165,8 +166,12 @@ void Model::drawModel(const mat4& _modelMat, drawType _type, const vec4& _color)
                getBBoxModel()->drawModel(_modelMat*translate(center)*glm::scale(size));\r
                break;\r
        }\r
+}\r
 \r
-       \r
+void Model::drawModel(const mat4& _modelMat) const\r
+{\r
+       useModel(_modelMat);\r
+       drawModel();\r
 }\r
 \r
 //void Model::drawModel(const mat4& _modelMat) const\r
@@ -437,11 +442,6 @@ bool Model::loadMesh(const aiMesh* mesh, const vec3& _scale)
        return true;\r
 }\r
 \r
-void Model::updateModel(float deltaT)\r
-{\r
-       \r
-}\r
-\r
 void Model::box_init(const mat4& _model)\r
 {\r
        if (vertex == nullptr)\r
index 2f7693d75a5ff535b934fe7961cd5540e7db7a60..2f162a9ed810a1f2a87f016c0554dada198c815a 100644 (file)
@@ -33,7 +33,8 @@ public:
        virtual void unbindShader(const Shader* shader);\r
 \r
        /* Draws Model */\r
-       virtual void drawModel(const mat4& modelMat, drawType type = dr_Model, const vec4& color = vec4(0.9f, 0.f, 0.f, 1.f)) const;\r
+       virtual void drawModel(const mat4& modelMat, drawType type, const vec4& color, uint animation, double time) const;\r
+       void drawModel(const mat4& modelMat) const;\r
        //virtual void drawModel(const mat4& modelMat) const;\r
        //virtual void drawWire(const mat4& modelMat, const vec4& color) const;\r
        //virtual void drawWire(const mat4& modelMat) const;\r
@@ -64,7 +65,7 @@ public:
        bool loadMesh(const std::string& modelpath, uint mindex = 0);\r
        bool loadMesh(const aiMesh* mesh, const vec3& scale = vec3(1.f));\r
 \r
-       virtual void updateModel(float deltaT);\r
+       double animationduration;\r
 \r
        class Box\r
        {\r
index e924fa61cec47fce4803422b9ecf6a529b0c39d0..4047f508ec816aaf2d54db1a5e6b4bb9e9f67f86 100644 (file)
@@ -52,8 +52,8 @@ void EventBox::update(float _deltaT)
 
 void EventBox::draw(drawTarget _target) const
 {
-if (_target == DRAW_Coll)
-               collision->drawModel(modelMat, dr_BBox, vec4(.3f,.9f,.9f,1.f));
+       if (_target == DRAW_Coll)
+               collision->drawModel(modelMat, dr_BBox, vec4(.3f,.9f,.9f,1.f), 0, 0);
 }
 
 void EventBox::collides(SceneObject* _other, btPersistentManifold* _contactManifold, float _deltaT)
diff --git a/Weave/Scene/Lever.cpp b/Weave/Scene/Lever.cpp
new file mode 100644 (file)
index 0000000..f03c17f
--- /dev/null
@@ -0,0 +1,40 @@
+#include "Lever.h"
+
+Lever::Lever(const mat4& _modelMat, const vec4& _material, string _modelpath, string texturepath) : SceneObject(_modelMat, _material, _modelpath, texturepath)
+{
+       recipient = nullptr;
+}
+
+Lever::Lever(const mat4& modelMat, const vec4& material, Model* model, string texturepath) : SceneObject(modelMat, material, model, texturepath)
+{
+       recipient = nullptr;
+}
+
+Lever::~Lever()
+{
+
+}
+
+void Lever::setup(SceneObject* object)
+{
+       recipient = object;
+}
+
+void Lever::trigger(bool state)
+{
+       if (turned != state)
+       {
+               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);
+               }
+       }
+}
\ No newline at end of file
diff --git a/Weave/Scene/Lever.h b/Weave/Scene/Lever.h
new file mode 100644 (file)
index 0000000..c24f5d5
--- /dev/null
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "../GLM.h"
+
+#include "SceneObject.h"
+
+typedef unsigned int uint;
+
+class Lever : public SceneObject
+{
+public:
+       Lever(const mat4& _modelMat, const vec4& _material, string _modelpath, string texturepath);
+       Lever(const mat4& modelMat, const vec4& material, Model* model, string texturepath);
+       ~Lever();
+       void setup(SceneObject* object);
+       void trigger(bool state);
+
+protected:
+       SceneObject* recipient;
+       bool turned;
+};
\ No newline at end of file
index f6b2b6af9ac3ce11a776d866c3d7929379b30bdb..a02a3c31e03369753124a6eee1f13733ccc3cafd 100644 (file)
@@ -55,6 +55,12 @@ lookat(_lookat)
        if (lookat != nullptr)
                timestamps.push(Timestamp(0.0f, _lookat->getModelMat(), lookat->ySpeed));
 
+       TimeEvent dummy;
+       dummy.time = 0.0f;
+       dummy.object = nullptr;
+       dummy.id = -1;
+       events.push(dummy);
+
        bt_collision_configuration = new btDefaultCollisionConfiguration();
        bt_dispatcher = new btCollisionDispatcher(bt_collision_configuration);
 
@@ -202,11 +208,15 @@ void Scene::update(float deltaT)
                        }
                }
 
+
+               currenttime = max(0.0f, currenttime - deltaT);
+
+
                float prev_time = timestamps.top().time;
                mat4 prev_mat = timestamps.top().Playermodel;
                //unsigned int prev_camera = timestamps.top().CameraX;
-               int prev_ySpeed = timestamps.top().ySpeed;
-               while (max(0.0f, currenttime - deltaT) < prev_time)
+               float prev_ySpeed = timestamps.top().ySpeed;
+               while (currenttime < prev_time)
                {
                        timestamps.pop();
 
@@ -217,20 +227,21 @@ void Scene::update(float deltaT)
                }
 
 
-               //TODO revert events
+               while (currenttime < events.top().time)
+               {
+                       TimeEvent tmp = events.top();
+                       events.pop();
+
+                       revertEvent(tmp);
+               }
+
+
                //TODO go from keyframe to current time
                lookat->setModel(prev_mat);
                lookat->ySpeed = prev_ySpeed;
                lookat->movable = true;
 
 
-               //for (auto i = SceneObjects.begin(); i != SceneObjects.end(); ++i)
-               //{
-               //      //(*i)->update(-max(0.0f, currenttime - deltaT));
-               //}
-
-
-               currenttime = max(0.0f, currenttime - deltaT);
        }
 
        camera.updateView(lookat->getPosition()+vec3(0.f,1.f,0.f));
@@ -509,4 +520,36 @@ void Scene::bindShader()
        
 
        
+}
+
+void Scene::addEvent(SceneObject* _object, int _id)
+{
+       TimeEvent newevent;
+       newevent.time = currenttime;
+       newevent.object = _object;
+       newevent.id = _id;
+       events.push(newevent);
+}
+
+void Scene::revertEvent(TimeEvent e)
+{
+       switch (e.id)
+       {
+       case 0:
+               //forward Animation ended
+               e.object->startanimation((uint) 0, -1.0f);
+               e.object->setanimationtime(e.time - currenttime);
+                       break;
+
+       case 1:
+               //reverse Animation ended
+               e.object->startanimation((uint) 0, 1.0f);
+               e.object->setanimationtime(e.time - currenttime);
+                       break;
+
+       case 2:
+               //Lever triggered
+
+               break;
+       }
 }
\ No newline at end of file
index 96abd01ab5a32cc6c709a27b593b45719d822bb2..6f8b24fe57d4d6ab0dc4f08948031cea750d3e08 100644 (file)
@@ -20,6 +20,13 @@ class Shader;
 class fBufferObject;
 //class Camera;
 
+struct TimeEvent
+{
+       float time;
+       SceneObject* object;
+       int id;
+};
+
 class Scene
 {
 public:
@@ -44,6 +51,8 @@ public:
 
        void setView(unsigned int width, unsigned int height, bool updateProjection = true);
 
+       void addEvent(SceneObject* _object, int _id);
+
 protected:
        //ViewPort viewPort;
        Camera camera;
@@ -54,10 +63,13 @@ protected:
        std::set<const Shader *> ShaderSet;
 
        void drawSceneObjects(drawTarget target = DRAW_Model, bool culling = true) const;
+
+       void revertEvent(TimeEvent e);
        
 
        float currenttime;
        std::stack<Timestamp> timestamps;
+       std::stack<TimeEvent> events;
        //std::stack<mat4> PlayerModels;
        //std::stack<vec3> PlayerDirections;
 
index 505e01548480ea5567fad9c90382382fa7109bdc..5957192c81e7bda58ed5cfe836502f2ec37e60c5 100644 (file)
@@ -44,7 +44,11 @@ newModel(true),
 collide_group(0),
 collide_with(0),
 bt_collision_object(new btCollisionObject()),
-move_delta(0)
+move_delta(0),
+AnimationTime(0),
+currentAnimation(0),
+animationSpeed(0),
+loopanimation(true)
 {
        //Message::info("Error from befor?");
        //Graphix::getGlError();
@@ -142,7 +146,11 @@ collide_group(0),
 collide_with(0),
 bt_collision_object(new btCollisionObject()),
 bt_rigid_body(nullptr),
-move_delta(0)
+move_delta(0),
+AnimationTime(0),
+currentAnimation(0),
+animationSpeed(0),
+loopanimation(true)
 {
        //Message::info("Error from befor?");
        //Graphix::getGlError();
@@ -226,7 +234,7 @@ void SceneObject::update(float deltaT)
 
        }
 
-       model->updateModel(deltaT);
+       updateAnimation(deltaT);
 
        btTransform tmp;
        tmp.setFromOpenGLMatrix(value_ptr(modelMat));
@@ -246,15 +254,15 @@ void SceneObject::draw(drawTarget _target) const
        case DRAW_Model:
        default:
                texture->useTexture();
-               model->drawModel(modelMat,dr_Model);
+               model->drawModel(modelMat, dr_Model, vec4(0.9f, 0.f, 0.f, 1.f), currentAnimation, AnimationTime);
                break;
        case DRAW_Wire:
                texture->useTexture();
-               model->drawModel(modelMat, dr_WireT);
+               model->drawModel(modelMat, dr_WireT, vec4(0.9f, 0.f, 0.f, 1.f), currentAnimation, AnimationTime);
                break;
        case DRAW_Coll:
                if (collision != nullptr)
-               collision->drawModel(modelMat, dr_WireC, vec4(0.9f, 0.f, 0.f, 1.f));
+               collision->drawModel(modelMat, dr_WireC, vec4(0.9f, 0.f, 0.f, 1.f), currentAnimation, AnimationTime);
                break;
        }
        /* Draw Object*/
@@ -389,3 +397,67 @@ short SceneObject::getCollideWith() const
        return collide_with;
 }
 
+void SceneObject::startanimation(uint index, float speed)
+{
+       currentAnimation = index;
+       animationSpeed = speed;
+       if (speed >= 0)
+       {
+               AnimationTime = 0;
+       }
+       else
+       {
+               AnimationTime = model->animationduration - 0.01f;
+       }
+}
+
+void SceneObject::setanimationtime(float _time)
+{
+       if (animationSpeed >= 0)
+       {
+               AnimationTime = _time;
+       }
+       else
+       {
+               AnimationTime = model->animationduration - _time;
+       }
+}
+
+void SceneObject::setAnimationLoop(bool loop)
+{
+       loopanimation = loop;
+}
+
+void SceneObject::updateAnimation(float deltaT)
+{
+       if (animationSpeed != 0)
+       {
+               AnimationTime += animationSpeed * deltaT;
+               while (AnimationTime < 0)
+               {
+                       if (loopanimation)
+                       {
+                               AnimationTime = AnimationTime + model->animationduration;
+                       }
+                       else
+                       {
+                               AnimationTime = 0;
+                               animationSpeed = 0;
+                               //TODO add event
+                       }
+               }
+               while (AnimationTime >= model->animationduration)
+               {
+                       if (loopanimation)
+                       {
+                               AnimationTime = AnimationTime - model->animationduration;
+                       }
+                       else
+                       {
+                               AnimationTime = model->animationduration - 0.01f;
+                               animationSpeed = 0;
+                               //TODO add event
+                       }
+               }
+       }
+}
\ No newline at end of file
index 2abcdea1cd11637c9b4ca321ddba6fa8026b6ab0..ffbb79f09fa2eb4aea466538ecd41c5acb155ccc 100644 (file)
@@ -5,6 +5,8 @@
 
 #include <btBulletDynamicsCommon.h>
 
+typedef unsigned int uint;
+
 using std::string;
 
 class Scene;
@@ -87,6 +89,9 @@ public:
        float move_delta;
        float yFloorDist;
 
+       virtual void startanimation(uint index, float speed);
+       virtual void setanimationtime(float time);
+       virtual void setAnimationLoop(bool loop);
        bool timeresistant;
        bool ignore;
 
@@ -94,6 +99,8 @@ public:
 
 protected:
 
+       void updateAnimation(float);
+
        mat4 modelMat;
        
 
@@ -113,5 +120,9 @@ protected:
        btCollisionObject* bt_collision_object;
        btRigidBody* bt_rigid_body;
 
+       double AnimationTime;
+       uint currentAnimation;
+       float animationSpeed;
+       bool loopanimation;
 };
 
index 7cba953e050c15ad7874e74aaa1a9ea12d699a0d..1c03e71f2cb1fe9414aade54cedaca965fb59e5a 100644 (file)
     <ClCompile Include="Scene\Camera.cpp" />\r
     <ClCompile Include="Scene\EventBox.cpp" />\r
     <ClCompile Include="Scene\Level.cpp" />\r
+    <ClCompile Include="Scene\Lever.cpp" />\r
     <ClCompile Include="Scene\Marvin.cpp" />\r
     <ClCompile Include="Scene\Scene.cpp" />\r
     <ClCompile Include="Scene\SceneObject.cpp" />\r
     <ClInclude Include="Scene\Camera.h" />\r
     <ClInclude Include="Scene\EventBox.h" />\r
     <ClInclude Include="Scene\Level.h" />\r
+    <ClInclude Include="Scene\Lever.h" />\r
     <ClInclude Include="Scene\Marvin.h" />\r
     <ClInclude Include="Scene\Scene.h" />\r
     <ClInclude Include="Scene\SceneObject.h" />\r
index e6490990985230179c8241d62de78ed5cc6b2c8b..cc39f757a58f85d52295242bff8ede17f9344ecb 100644 (file)
     <ClCompile Include="Graphix\Lights\PointLight.cpp">\r
       <Filter>Source Files</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="Scene\Lever.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="Fps.h">\r
     <ClInclude Include="Graphix\Lights.h">\r
       <Filter>Header Files</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="Scene\Lever.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
   </ItemGroup>\r
 </Project>
\ No newline at end of file