#include "belge.hpp" #include "cam_takim_ekseni_penceresi.hpp" #include "fiko/platform/sistem.hpp" #include "istakip_servis.hpp" #include "fiko/render/vulkan_baglam.hpp" #include "fiko/zeka/dedektorler.hpp" namespace fiko { Belge::Belge(VulkanBaglam& vulkan, const std::string& shaderDizin) : secim(vulkan, shaderDizin), cekirdek(), sahne(vulkan, cekirdek.dunya(), cekirdek.olaylar()), secimSis(sahne, secim, cekirdek.olaylar()), olcum(sahne, cekirdek.olaylar()), alan(sahne, cekirdek.olaylar()), makro(cekirdek, sahne), eklentiler(cekirdek, sahne), camSis(cekirdek, sahne), partD(cekirdek, sahne), gsdSis(cekirdek, sahne), analizSis(cekirdek, sahne), dokumSis(cekirdek, sahne), baglamMotoru(sahne, cekirdek) { // PMI köprüsü: çözücü = OlcumSistemi::refCoz (TEK KYA/ordinal çözüm kaynağı) + olay bağı. // olcum değer-üyedir, adresi Belge ömrünce sabittir (Belge kopyalanmaz/taşınmaz). pmiSis.cozucuAta([o = &olcum](const OlcumBaglanti& l, OlcumRef& r) { return o->refCoz(l, r); }); pmiSis.bagla(cekirdek.olaylar()); makro.camAyarla(&camSis); makro.alanAyarla(&alan); makro.malzemeAyarla(&malzemeKut, &malzemeAta); // fiko.malzeme.* (makro erişimi) makro.parcaAyarla(&partD); // fiko.sketch.* + fiko.parca.* (parametrik modelleme) makro.gsdAyarla(&gsdSis); // fiko.gsd.* (wireframe + yüzey) makro.analizAyarla(&analizSis); // fiko.analiz.* (draft/undercut/kalinlik/kurvatur…) makro.kinematikAyarla(&mekanizma); // fiko.kinematik.* (belge verisi → kaydedilir) makro.caeKurulumAyarla(&caeKurulumlar); // fiko.cae.kurulum* (v1.19 CAEK) makro.zekaAyarla(&zekaSis); // fiko.zeka.* (graf sorgu/pipeline — MCP de bu kanaldan) // fiko.istakip.* — app-global servise callback köprüsü (MCP de bu kanaldan). makro.istakipAyarla([] { return g_istakipServis.veri(); }, [](const istakip::IsKayit& k, u64 beklenen) { return g_istakipServis.yaz(k, beklenen); }); // UI pencere-aç köprüsü (motor katmanı UI-nötr; app dispatch verir). makro.pencereAcCbAyarla([](const std::string& ad, u32 kimlik) { if (ad == "takimEkseni") camTakimEkseniPencereAc(kimlik); }); dokumSis.refSecim = &refSecim; // kurulum 🎯 sahneden-seç düğmeleri dokumSis.vulkan = &vulkan; // GPU katılaşma/SPH (Vulkan compute) ana-iplik köprüsü dokumSis.kameraOdak = [this](Vec3d m, f64 r) { // porozite bölgesi tıkla → kamera uçuşu kamera.sigdir({(f32)m.x, (f32)m.y, (f32)m.z}, (f32)r); }; analizSis.kameraOdak = [this](Vec3d m, f64 r) { // rapor satırı tıkla → yüze uçuş kamera.sigdir({(f32)m.x, (f32)m.y, (f32)m.z}, (f32)r); }; // Zekâ Motoru köprüsü: dedektörler + olay bağı. Hesap YALNIZ istekte (govdeCoz — // "Zekâ Analizi" komutu) koşar; BrepDegisti yalnız bayat işaretler (sıcak yola iş yok). zeka::varsayilanDedektorler(zekaSis); zekaSis.grafGuncellendi = [this](u64 v) { cekirdek.olaylar().yayinla(ZekaGrafGuncellendi{(u32)v}, "zekâ grafı güncellendi"); }; cekirdek.olaylar().abone( [z = &zekaSis](const BrepDegisti& e) { z->govdeBayatla(e.varlik); }); eklentiler.tara(sistem::calistirilabilirDizin() + "eklentiler"); // NOT: Lisans gate/takip app-GLOBAL (g_lisans, main.cpp) — belgeye bağlı değil (lisans // uygulama-geneli, belge-başına değil). Her belge penceresi kur()'da g_lisans.bagla(cekirdek). } } // namespace fiko