Budujemy edytor: wymiana informacji
02.01.2009 01:04 in silnik, grafika 3D, programowanie, edytor
Jak można wygodnie wymieniać informacje między silnikiem a edytorem? Ja uznałem, że najwygodniej będzie wymieniać się strukturami danych odpowiedni interpretowanymi przez silnik. W komunikacji socketowej wygląda to tak:
GFX MATERIALLIST
OK road car sky ...
GFX MATERIAL road
OK 0 0 1 0 1 0 0 0 0 2 ...
Doszedłem do wniosku, że zamiast implementować jakiś wyszukany (zwłaszcza po stronie C++, czyli silnika) system refleksji, najprościej będzie stworzyć generator kodu na podstawie struktury. Tak więc, na podstawie struktury materiału (po lewej) generowany jest:
- formularz do edycji struktury (czemu nie użyłem PropertyGrid? sam nie wiem, ale mam wrażenie, że moje rozwiązanie jest bardziej ,,przyjazne'' dla docelowego użytkownika [grafik, map designer])
- kod importujący/eksportujący strukturę zarówno po stronie silnika jak i edytora
Słowem - prawie jak automatyzacja. I prawie jak LINQ. ;)
Comments:
-
Oczywiście w myśl zasady "pisz a potem myśl" kontrolkę dawno wymieniłem na PropertyGrida. ;)
08.06.2009 03:23:26