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
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)
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;
}
#include "../Events.h"
#include "Camera.h"
#include "Scene.h"
+#include "EventBox.h"
#define TIME_TILL_MAX_MOVE 2
#define TIME_TILL_DIRECTION_ROTATE 1
collide_with = COL_LEVEL | COL_ENEMY | COL_EVENT;
yStatic = false;
+ eTrigger = new EventBox(_modelMat, EB_LEVER);
+
}
Marvin::~Marvin()
{
+ delete eTrigger;
}
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);
}
#include "../GLM.h"
+class EventBox;
+
class Marvin :
public SceneObject
{
virtual void update(float) override;
protected:
-
+ EventBox* eTrigger = nullptr;
+ bool trigger_active= false;
};
//TODO go from keyframe to current time
- lookat->setModel(prev_mat);
+ lookat->setModelMat(prev_mat);
lookat->ySpeed = prev_ySpeed;
lookat->movable = true;
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);
}
void Scene::deleteObject(SceneObject* _del)
{
SceneObjects.remove(_del);
+ bt_collision_world->removeCollisionObject(*_del);
}
return vec3(modelMat[3]);
}
-void SceneObject::setModel(mat4& _modelMat){
+void SceneObject::setModelMat(mat4& _modelMat){
modelMat = _modelMat;
}
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);
void saveModelMat();
- __declspec(deprecated)
- void setEnemy(bool isenemy);
- __declspec(deprecated)
- bool isEnemy();
-
operator btCollisionObject*() const;
operator btRigidBody*() const;
short getCollideGroup() const;