diff --git a/Runtime/MP1/World/CDroneLaser.cpp b/Runtime/MP1/World/CDroneLaser.cpp index 22a400929..848eb7a8c 100644 --- a/Runtime/MP1/World/CDroneLaser.cpp +++ b/Runtime/MP1/World/CDroneLaser.cpp @@ -71,6 +71,19 @@ void CDroneLaser::SetScannerLightActive(CStateManager& mgr, bool activate) { activate ? EScriptObjectMessage::Activate : EScriptObjectMessage::Deactivate); } -void CDroneLaser::RenderBeam(u32 w, float f, const zeus::CColor& col, bool) const {} +void CDroneLaser::RenderBeam(u32 w, float f, const zeus::CColor& col, bool) const { + // TODO +} + +void CDroneLaser::sub_80167754(CStateManager& mgr, const zeus::CVector3f& pos, const zeus::CVector3f& look) { + xe8_ = pos; + if (xf4_scannerLight != kInvalidUniqueId) { + if (TCastToPtr light = mgr.ObjectById(xf4_scannerLight)) { + light->SetTranslation(pos - 0.5f * (pos - GetTranslation())); + } + } + x104_beamParticle->SetOrientation(zeus::lookAt(zeus::skZero3f, look)); + x104_beamParticle->SetTranslation(pos); +} } // namespace urde::MP1 diff --git a/Runtime/MP1/World/CDroneLaser.hpp b/Runtime/MP1/World/CDroneLaser.hpp index cb83b5da1..e415025f6 100644 --- a/Runtime/MP1/World/CDroneLaser.hpp +++ b/Runtime/MP1/World/CDroneLaser.hpp @@ -21,6 +21,8 @@ public: void AddToRenderer(const zeus::CFrustum& frustum, CStateManager& mgr) override; void Render(CStateManager& mgr) override; void CalculateRenderBounds() override; + + void sub_80167754(CStateManager& mgr, const zeus::CVector3f& pos, const zeus::CVector3f& look); }; } // namespace MP1 } // namespace urde