lever2->timeresistant = true;\r
lever2->setup(door1);\r
\r
- current_world->addObject(new Boar(translate(vec3(-5.f, 1.f, 3.f))));\r
+ current_world->addObject(new Boar(translate(vec3(-5.f, 1.f, 5.f))));\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
{
}
-//void Boar::update(float _deltaT)
-//{
-// SceneObject::update(_deltaT);
-//}
+void Boar::update(float _deltaT)
+{
+ SceneObject::update(_deltaT);
+
+ if (activated)
+ {
+ if (nextFrame)
+ activated = false;
+ else
+ nextFrame = true;
+ }
+}
void Boar::collides(SceneObject * _other, btPersistentManifold * _contactManifold, float _deltaT)
{
if (_other->collide_group != COL_MARVIN)
return;
+ if (activated)
+ {
+ nextFrame = false;
+ return;
+ }
+
int numContacts = _contactManifold->getNumContacts();
//For each contact point in that manifold
double pdist = (_contactManifold->getContactPoint(0).getDistance());
Message::info("Spiel Verloren!->" + std::to_string(pdist));
//Events::halt = true;
_other->movable = false;
+
+ activated = true;
}
Boar(const mat4& modelMat);
~Boar();
-// virtual void update(float) override;
+ virtual void update(float) override;
virtual void collides(SceneObject* other, btPersistentManifold* contactManifold, float deltaT = 1.f) override;
+
+protected:
+ bool activated = false;
+ bool nextFrame = true;
};
void EventBox::update(float _deltaT)
{
+ if (activated)
+ {
+ if (nextFrame)
+ activated = false;
+ else
+ nextFrame = true;
+ }
}
void EventBox::draw(drawTarget _target) const
void EventBox::collides(SceneObject* _other, btPersistentManifold* _contactManifold, float _deltaT)
{
+ if (activated)
+ {
+ nextFrame = false;
+ return;
+ }
+
switch (eb_type)
{
default:
((Lever*)_other)->trigger();
break;
}
+
+ activated = true;
}
protected:
eventBoxType eb_type;
+
+ bool activated = false;
+ bool nextFrame = true;
};