#include "fiko/sahne/parametric_tree.hpp" #include #include // imgui.h'yi include et - ImVec2, ImDrawList gibi tipler için #define IMGUI_DEFINE_MATH_TYPES #include "imgui.h" #include "fiko/cekirdek/nesne.hpp" #include "fiko/parca/feature.hpp" #include "fiko/parametre/depo.hpp" // parametre::bagimliliklar #include "fiko/sahne/sahne.hpp" namespace fiko { std::vector cikartParametrikBaglantilar(Sahne& sahne, Dunya& dunya) { std::vector baglantilar; // 1. Tüm Feature'ları bul ve bağlı olduklarını ekle auto& depo = dunya.depo(); for (auto [v, kok] : depo) { if (!kok) continue; // Feature ise bağlı sketch/parametreleri çıkar if (auto* feature = dynamic_cast(kok.get())) { AgacBaglanti baglanti; baglanti.ana_oge = v; // Feature'in varlık kimliği // Sketch bağlantısı if (feature->sketch() != VARLIK_YOK) { baglanti.bagli_ogeler.push_back(feature->sketch()); } // Parametre formül bağlantıları for (const auto& [anahtar, ifade] : feature->formuller()) { if (ifade.empty()) continue; // Formüldeki parametre isimlerini çöz std::vector param_adlari = parametre::bagimliliklar(ifade); for (const auto& ad : param_adlari) { const u32 param_varlik = sahne.parametreVarlik(ad); if (param_varlik != 0 && std::find(baglanti.bagli_ogeler.begin(), baglanti.bagli_ogeler.end(), param_varlik) == baglanti.bagli_ogeler.end()) { baglanti.bagli_ogeler.push_back(param_varlik); } } } // Sadece bir bağlantı varsa ekle (öncesinde filtreleme yapabilir) if (!baglanti.bagli_ogeler.empty()) { baglantilar.push_back(baglanti); } } } return baglantilar; } } // namespace fiko