#pragma once

#include <cstdint>

#include "adapters/unity/bindings/UnityTypes.h"
#include "external/il2cpp/il2cpp-api-types.h"
#include "foundation/math/CameraFrame.h"

namespace ta::adapters::unity::graphics
{
    class UnityCameraFrameSource final
    {
    public:
        [[nodiscard]] static Il2CppObject* current() noexcept;
        [[nodiscard]] static bool capture(ta::foundation::math::CameraFrame& frame,
                                          std::uint64_t revision) noexcept;
        [[nodiscard]] static bool project_visible(Il2CppObject* camera,
                                                  const ta::adapters::unity::vector3& world_position,
                                                  ta::adapters::unity::vector3& out_screen_position) noexcept;
    };
}
