Kedvenceink a(z):
emók....
Miután a modell és resourcekezelés működőképesnek tekinthető itt az ideje reformálni az editor nyelvezetét. Az OpenGL-hez hasonlóan az argumentumok target, param, value csoportokba oszthatók, amelyekből a target a kiemelt fontosságú.
A mesh importálás:
SK_EDITOR targettel hívott skParameter beállítja:
Ezután ha az skImportot
Pár hetes "szenvedélyes" fejlesztés után úgy tünik, hogy végre használható formát öltött a resource kezelés. Alapvető változás, hogy a resource leírók és a hozzájuk tartozó resource-k egy egységbe vannak foglalva (hogy eddig miért nem így volt, nincs rá magyarázat). Ez a megoldás okozott pár nehézséget mivel a leírók és a resource-k között sok réteg távolság lehet így a kiírást, törlést stb magas szinten kellett megoldani ugy, hogy alacsony szintről is elérhető legyen.
Változás még az is, hogy nemcsak kulcs/index, hanem név alapján is lehet keresni és tárolni resource-okat jóval kényelmesebbé téve a használatot. Ellenben minden esetben - egy resource használata előtta - létre kell hozni a resource leíróját. Ekkor készül el a neve és/vagy hash kulcsa attól függ, mi(k) alapján hozzuk létre azt.
Resource-t létrehozhatunk file-ból, memória területből ill. importálással. Lehetőség van késleltett betöltésre is mivel sokszor nem a létrehozáskor akarjuk betölteni a resource-t. A törlés is nagyon egyszerű hiszen nem igényel keresést mivel egyértelmű az összefüggés a resource és leírója között.
Jelenleg még nem megoldott a referencia számlálás, de a kód már képes kezelni.
Remélem ez a rész már nem igényel későbbi újraírást... ééés esik az eső végre....
Minap elmélyedtem/elsüllyedtem ismét az osztály függvények rejtelmeiben és ismét találkoztam a c++ fordítók titkaival.
Az oop szellemében minden osztályt és azok lehetséges kapcsolatotait és működésüket előre megtervezve viszonylag sokszor előkerül az öröklés és azon belül a virtuális függvények. Arról általában felvilágosítják az embereket, hogy ezek a virtuális függvények valójában függvénypointerek azt már kevésbé reklámozzák, hogy ezen függvények hívását számos lépés előzi meg, amelyet a fordító teljesen elrejt előlünk.
A legtöbb programozónak a pointerek (32 bites rendszeren védett módban) 4 byte hosszú típust juttatnak az eszébe, amely egy memóriadeszkriptort jelent. Ez egyaránt igaz az adat és függvénypointerekre is. Azonban ha lekérdezzük egy osztály egyik függvényének címét, akkor "bonyolultságtól" és fordítótól függően nem a várt 4-t kapunk.
Ennek oka az, hogy a fordítók eltérő módon kezelik az ilyen függvényeket és a rájuk mutató pointert kissé átértelmezik oly módon, hogy a valós címük helyütt azt egy 4-20 byte hosszuságú strukturáként tárolják, amely egyéb adatokat is tartalmazhat (ilyen pl. a this pointer).
Ez még önmagában nem jelentene tulzott bonyodalmat, hanem a fordítók különböző címszámításokat és feltételeket hajtanak végre mielőtt egyáltalán a függvényhívásra kerülne a sor. Így tehát jó pár órajelet elveszthetünk eme apróság miatt, amely sebességkritikus helyeknél igencsak értelmetlen veszteség.
Amennyiben függvénypointereket akarunk létrehozni és azoknak értéket adni, kaphatunk némi bónuszt is miszerint bizonyos fordítóknál az értékadás nem fog lefutni az eltérő pointerek miatt. Ez leginkább msvc alatt jelentkezik, ahol a /vmg kapcsolóval elérhetjük, hogy minden függvénypointer ugyanolyan méretű legyen elkerülve a kompatibilitási hibákat.
Szóval csak óvatosan az öröklődéssel...
Miután ismét elakadtam a fejlesztésben, ideje volt átgondolni mi vezetett zsákutcához. A probléma a materialok importálás közbeni szerkesztésekor jelentkezett. Szerettem volna a material szerkesztőt felkészíteni a tetszőleges felhasználhatóságra, de ezt a jelenlegi állapotban egy igen körülményes módon tudtam volna megtenni.
Visszafejtve a problémát, ismét a resource-knál kötöttem ki, pontosabban a nehézkes és rugalmatlan felhasználásukra.
És mi az üdvösséghez vezető út....
A resource locationök megmaradnak ill. a type-ok is viszont a dinamikus tömb helyett listaként kerülnek megvalósításra az assetek. Valamint minden resource tartalmazni fogja a betöltés utáni file felhasználható binárisát és így nem kell külön gyüjtögetni a különböző típusu resource-okat...
A resource-k leírói és a betöltött adat pointere alacsony szinten gyűjtetnek össze azonban a betöltés/törlés/kiírás az adott resource szintjén lesz megvalósítva.
A leírók resource specifikusan tartalmazzák a szükséges adatokat valamint egy hash-t.
Elvileg minden resource-n végzett művelet így figyelemmel kísérhető és kontrollálható lesz...
Sikerült még egy lapáttal bonyolítani a modellkonvertálást a szálazással. Szerencsére a szálak a belőlük hívott return-nel együtt megszűnnek létezni így a szálak megállításával külön nincs gond. Legalábbis win32 alatt... bár érzésem szerint ez a tulajdonság os független.
Úgy tűnik madonna (bár vitathatatlanul rendkívüli személyiség) kezd igencsak kifulladni és feldolgozásokon és tucatzenéken kívül másra nem futja. Vagy egyszerűen csak a modern kor modern zenei ízléséhez igazodik?
Mindenesetre az eredmény látványosan szar:
Már tavaly is bebizonyították a homo sapiens faj bizonyos példányai, hogy leleményességük bizony nem ismer határokat. A kerék, az atombomba és a vattacukor feltalálása után egy meglehetősen izgalmas vállalkozás következett: a 100 méteres női rövidtávfutás hagyományait értelmezték át az új évezred trendje alapján. Röviden és tömören: minél gyorsabban elmenekülni a rajtpisztolytól tűsarkúban, trendi harci díszben és egy újsággal a kezedben. A nyaktörő vállalkozás kizárólag nagykorú hölgyek részére szólt, amelynek jutalma akár többévi gyantázásra is elegendő.
A versenyszám két részben került megrendezésre. Egy rövid bemelegítés után elsőként a magyarországi (de)celebek futották/tipegték/kacsázták végig a távot; mindenki a neki megfelelő stílusban és persze sebességgel. A legveszélyesebb esemény egy melltartó pántjának megvadulása volt.
Az eredmény kihirdetése után némi átvezető szöveget követően 100 darab szerencsé(tlen)s kiválasztott tehette kockára testi épségét intelligenciát nem kímélő bátorsággal. A szakértők csak kisebb csoportokban merték a versenyzőket szélnek ereszteni, amely kiváló ötletnek bizonyult a későbbiekben. Sokan sokféle módon probálkoztak a 100 méteres táv leküzdésével. Voltak akik egy birodalmi lépegető sebességével vágtak neki az útnak míg mások struccalázó sebességgel szublimáltak el a rajttól a célig. Sajnos néhányan már az elején esélytelennek látták a többévi ingyen gyantázás megszerzésének lehetőségét így visszafordultak vagy kisebb baleset után kénytelenek voltak elhessegetni a főnyeremény ábrándját.
Az eseményi utáni tabletta összesítést ill. rehabilitációt viszont már nem vártam meg.
Végül következzen a képes beszámoló:
a rajt előtti feszült pillanatok
hol a cél, segítség
a birodalmi lépegető taktika egyik
és másik követője
az egyiknek sikerül (egy repülő vattacukor képében)
másiknak nem
egy túl gyors versenyző hűlt helye
egy épp szublimálni készülő reményteli hölgy
van aki nem figyelt a bemelegítéskor
van aki inkább megfontolt
és persze voltak olyanok is akik a sebesség és a nyeremény megszállottjai
A sors fintora, hogy megfájdult a bal sarkam...