#pragma once

#include "imgui.h"

namespace fn {

// Configuracion para scatter_3d.
//
// `xs`, `ys`, `zs` son arrays de tamano `n`. `sizes` y `colors` son
// opcionales: si se pasan, se usan por punto (size en pixeles, color como
// ImU32 RGBA). Si son nullptr, ImPlot3D usa los valores por defecto del
// estilo activo.
struct Scatter3DConfig {
    const float* xs = nullptr;
    const float* ys = nullptr;
    const float* zs = nullptr;
    const float* sizes = nullptr;   // opcional, length = n
    const ImU32* colors = nullptr;  // opcional, length = n
    int n = 0;
    ImVec2 size = ImVec2(-1.f, 400.f);
};

// Renderiza un scatter 3D usando ImPlot3D::PlotScatter.
//
// Llamar dentro de un frame ImGui activo. Si xs / ys / zs son nullptr o
// n < 1, renderiza un mensaje informativo.
void scatter_3d(const char* title, const Scatter3DConfig& cfg);

} // namespace fn
