From cd49e4a702e5cd248d7b36dfd12f5a9620576704 Mon Sep 17 00:00:00 2001 From: immibis Date: Mon, 27 Jan 2020 21:20:43 +0100 Subject: [PATCH] Animate the new building --- src/object/subclass/water_pump.cpp | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/object/subclass/water_pump.cpp b/src/object/subclass/water_pump.cpp index e947d6b8..6804c6d7 100644 --- a/src/object/subclass/water_pump.cpp +++ b/src/object/subclass/water_pump.cpp @@ -38,6 +38,24 @@ #include + +struct CAutoWaterPump : public CAuto +{ + CAutoWaterPump(CWaterPump* object) : CAuto(object) {} + ~CAutoWaterPump() {} + + bool EventProcess(const Event &event) override { + CAuto::EventProcess(event); + if (event.type == EVENT_FRAME && !m_engine->GetPause()) { + float angle = m_object->GetPartRotationY(1); + angle += event.rTime*0.5f; + m_object->SetPartRotationY(1, fmodf(angle, Math::PI*2.0f)); + m_object->SetPartPosition(1, Math::Vector(0.0f, 2.0f + sinf(angle), 0.0f)); + } + return true; // XXX what does this mean? + } +}; + CWaterPump::CWaterPump(int id) : CBaseBuilding(id, OBJECT_WATERPUMP) {} @@ -59,13 +77,13 @@ std::unique_ptr CWaterPump::Create( obj->SetRotationY(params.angle); obj->SetFloorHeight(0.0f); - /*rank = engine->CreateObject(); + rank = engine->CreateObject(); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); obj->SetObjectRank(1, rank); obj->SetObjectParent(1, 0); modelManager->AddModelReference("info1.mod", false, rank); obj->SetPartPosition(1, Math::Vector(0.0f, 1.0f, 0.0f)); - obj->SetPartRotationY(1, 0.0f);*/ + obj->SetPartRotationY(1, 0.0f); /* rank = engine->CreateObject(); engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_DESCENDANT); @@ -103,9 +121,9 @@ std::unique_ptr CWaterPump::Create( pos.y += params.height; obj->SetPosition(pos); // to display the shadows immediately - /*auto objAuto = MakeUnique(obj.get()); + auto objAuto = MakeUnique(obj.get()); objAuto->Init(); - obj->SetAuto(std::move(objAuto));*/ + obj->SetAuto(std::move(objAuto)); engine->LoadAllTextures();