text: #include "Runtime/GuiSys/CTargetingManager.hpp"
  
  #include "Runtime/CStateManager.hpp"
  #include "Runtime/GameGlobalObjects.hpp"
  #include "Runtime/Camera/CGameCamera.hpp"
  #include "Runtime/Graphics/CBooRenderer.hpp"
  
  namespace metaforce {
  
  CTargetingManager::CTargetingManager(const CStateManager& mgr) : x0_targetReticule(mgr) {}
  
  bool CTargetingManager::CheckLoadComplete() const {
    return x0_targetReticule.CheckLoadComplete() && x21c_orbitPointMarker.CheckLoadComplete();
  }
  
  void CTargetingManager::Update(float dt, const CStateManager& stateMgr) {
    x0_targetReticule.Update(dt, stateMgr);
    x21c_orbitPointMarker.Update(dt, stateMgr);
  }
  
  void CTargetingManager::Draw(const CStateManager& mgr, bool hideLockon) {
    CGraphics::SetAmbientColor(zeus::skWhite);
    CGraphics::DisableAllLights();
    x21c_orbitPointMarker.Draw(mgr);
    const CGameCamera* curCam = mgr.GetCameraManager()->GetCurrentCamera(mgr);
    zeus::CTransform camXf = mgr.GetCameraManager()->GetCurrentCameraTransform(mgr);
    CGraphics::SetViewPointMatrix(camXf);
    zeus::CFrustum frustum;
    frustum.updatePlanes(camXf, zeus::SProjPersp(zeus::degToRad(curCam->GetFov()),
                                                 g_Viewport.aspect, 1.f, 100.f));
    g_Renderer->SetClippingPlanes(frustum);
    g_Renderer->SetPerspective(curCam->GetFov(), g_Viewport.x8_width, g_Viewport.xc_height, curCam->GetNearClipDistance(),
                               curCam->GetFarClipDistance());
    x0_targetReticule.Draw(mgr, hideLockon);
  }
  
  void CTargetingManager::Touch() { x0_targetReticule.Touch(); }
  
  } // namespace metaforce
  