#include "fiko/sahne/referans_nesne.hpp" #include namespace fiko { // ---- ReferansNesnesi ---- const char* ReferansNesnesi::turAdi() const { const Dugum* d = dugum(); if (!d) return "Düzlem"; if (d->tip == DugumTip::EksenSistemi) return "Eksen Sistemi"; if (d->tip == DugumTip::Nokta) return "Nokta"; if (d->tip == DugumTip::Cizgi) return "Çizgi"; return (d->tip == DugumTip::Eksen) ? "Eksen" : "Düzlem"; } std::string ReferansNesnesi::ad() const { const Dugum* d = dugum(); return d ? d->ad : std::string(); } void ReferansNesnesi::adAyarla(const std::string& yeni) { if (Dugum* d = dugum()) d->ad = yeni; } OzellikSeti ReferansNesnesi::ozellikler(Dunya& dunya) { OzellikSeti s; const Varlik k = kimlik_; Dugum* d = dunya.bul(k); if (!d) return s; // Görünür (Bayrak) s.push_back(Ozellik::bayrak( "Görünür", [&dunya, k] { Dugum* d = dunya.bul(k); return d ? d->gorunur : false; }, [&dunya, k](bool g) { if (Dugum* d = dunya.bul(k)) d->gorunur = g; })); // Renk (düzenlenebilir — düğüm başına referans rengi) s.push_back(Ozellik::renk( "Renk", [&dunya, k] { Dugum* d = dunya.bul(k); return d ? d->renk : Vec3f{}; }, [&dunya, k](Vec3f c) { if (Dugum* d = dunya.bul(k)) d->renk = c; })); // Boyut Katsayısı (0.1–5.0): düğüm başına görsel ölçek çarpanı (render her kare // okur → anında güncellenir). NOT: D1 parametre dalgasında merkezi parametreye taşınacak. s.push_back(Ozellik::sayi( "Boyut Katsayısı", [&dunya, k] { Dugum* d = dunya.bul(k); return d ? (f64)d->gorselOran : 1.0; }, [&dunya, k](f64 v) { if (Dugum* d = dunya.bul(k)) d->gorselOran = (f32)std::clamp(v, 0.1, 5.0); })); return s; } // ---- ReferansGorunum ---- bool ReferansGorunum::gorunur() const { const Dugum* d = dugum(); return d ? d->gorunur : false; } void ReferansGorunum::gorunurAyarla(bool g) { if (Dugum* d = dugum()) d->gorunur = g; } const char* ReferansGorunum::agacSimgesi() const { const Dugum* d = dugum(); if (!d) return "◱"; if (d->tip == DugumTip::EksenSistemi) return "✛"; // CATIA eksen sistemi ikonu if (d->tip == DugumTip::Nokta) return "•"; if (d->tip == DugumTip::Cizgi) return "╱"; return (d->tip == DugumTip::Eksen) ? "⊥" : "◱"; } Vec3f ReferansGorunum::agacRengi() const { const Dugum* d = dugum(); return d ? d->renk : Vec3f{0.6f, 0.6f, 0.6f}; } } // namespace fiko