#pragma once #include "fiko/core/temel.hpp" namespace fiko { class Cekirdek; class Sahne; class VulkanBaglam; struct UygulamaBaglam; namespace cam { class CamSistemi; } // CAM Simülasyon penceresi (tekil, ayrı yüzen/pinlenebilir ImGui `###cam_sim`). // DALGA 1: pencere iskeleti + transport (⏮◀⏸▶⏭) + renkli timeline (DrawList) + // göstergeler (op/hareket/takım/konum/hız/süre). Nokta modeli SimNokta üzerinden // CL noktalarından (CamIslem.yol) süre/renk/timeline üretir; yol yoksa demo yol. // // Kütük-simülasyon motorları (dexel/voxel/SDF/zbuffer + Vulkan compute) SONRAKİ // dalgalar (blueprint §9) — bu dalgada YOK. // // Açık/pin durumu bu modülün kendi statik değişkenlerinde tutulur (op penceresi kalıbı). // Simülasyon penceresini açar + programı (yeniden) üretir. // opKimlik==0 → tüm program (tüm CamIslem yolları ardışık). // opKimlik>0 → yalnız o CATIA operasyonu (yol yoksa demo yol). void camSimPencereAc(u32 opKimlik = 0); // Simülasyon penceresini çizer (açık değilse hiçbir şey yapmaz). // Ana çizim döngüsünden her kare çağrılır. b: sahne/cam/kamera (3B nokta-pick // kamera ışını ister). vb: kütük GPU backend'i için Vulkan bağlamı (GPU hazır // değilse fabrika CPU'ya düşer). void camSimPenceresiCiz(UygulamaBaglam& b, VulkanBaglam& vb); // Sim sahne görseli (yol + hareketli takım) açık mı ("cam.sim_sahne_gorsel"). // AyarSistemi ile kalıcı; sim penceresindeki checkbox canlı değiştirir. bool camSimSahneGorselAl(); void camSimSahneGorselAta(bool v); // Tüm yolu göster ("cam.sim_tum_yol"): açık = yolun tamamı hep çizili; // kapalı (varsayılan) = yalnız geçilen kısım (ilerlemeli açılma). bool camSimTumYolAl(); void camSimTumYolAta(bool v); // Yol / takım görünürlüğü ayrı ayrı ("cam.sim_yol_goster", "cam.sim_takim_goster"). // İkisi de kapalı = "Sadece Kütük" modu: sahnede yalnız oyulmuş kütük kalır. bool camSimYolGosterAl(); void camSimYolGosterAta(bool v); bool camSimTakimGosterAl(); void camSimTakimGosterAta(bool v); // Kütük perf ayarları: oyma bütçesi ms/kare ("cam.kutuk_batch_ms") + mesh çıkarma // aralığı ms ("cam.kutuk_mesh_ms"). Sim penceresindeki slider'lar canlı değiştirir. f32 camSimKutukBatchMsAl(); void camSimKutukBatchMsAta(f32 v); f32 camSimKutukMeshMsAl(); void camSimKutukMeshMsAta(f32 v); // İşleme sesi ("cam.sim_ses") + kamera takip ("cam.sim_kamera_takip") varsayılanları. bool camSimSesAl(); void camSimSesAta(bool v); bool camSimKameraTakipAl(); void camSimKameraTakipAta(bool v); // Sahne yolu renk eşiği ("cam.sim_renk_esik"): bu segment sayısı üstünde yol tek // renk çizilir (renk yerine PERF; büyük yolda kilitlenmeyi önler). u32 camSimRenkEsikAl(); void camSimRenkEsikAta(u32 v); // Kütük grid en uzun eksende maks hücre ("cam.kutuk_maks_hucre"): grid patlamasını // (devasa stok mesh → GB'larca buffer → donma) önler. Aşınca çözünürlük kabalaşır. u32 camSimKutukMaksHucreAl(); void camSimKutukMaksHucreAta(u32 v); // Takımı stok üstüne uzat ("cam.kutuk_takim_uzat"): kesici boyu dalış derinliğinden // kısaysa üstte "tavan" kalır (2-yüzey); açık → takım katısı stok üstüne kadar keser. bool camSimKutukTakimUzatAl(); void camSimKutukTakimUzatAta(bool v); // NOT: arka plan grid hücre boyu artık MERKEZÎ — Ayarlar → Pencere ("pencere.grid_adim", // ui::webSkinGridAdim). Pencere-yerel camSimGridAdimAl/Ata kaldırıldı. // Async kütük carve ("cam.kutuk_async"): talaş kaldırma worker thread'inde koşar → // oynatma ana thread'i bloklanmaz (gerçek-zamanlı). Kapalı = eski senkron yol. // GPU kütük motorunda otomatik devre dışı (Vulkan submit worker'da yasak). bool camSimKutukAsyncAl(); void camSimKutukAsyncAta(bool v); // Keskin kütük mesh ("cam.kutuk_keskin"): Dual Contouring — keskin kenar/köşe korunur // (MC yuvarlar). SDF+MC kipinde; cache'siz tam grid (yavaş; kalite). bool camSimKutukKeskinAl(); void camSimKutukKeskinAta(bool v); } // namespace fiko