Interpreter skryptów w C++ (Qt)


(Razi) #1

Piszę engine prezentacji, taka mała konkurencja dla PowerPoint i Impress:p Chciałbym, aby każdy mógł sobie sam napisać animację bez konieczności pobierania źródeł programu, szukania odpowiedniego pliku itd.

Pierwotnie pomysł był taki:

Kilka schematów prezentacji w których można ustawić parametry i klatki. Później stwierdziłem że każdy user mógłby se sam jakąś animację niestandardową napisać. Próbowałem coś w QScript. ale nie umiem wywołać funkcji rysującej do OpenGLa

Jaki język skryptowy polecacie i czy moglibyście mi napisać jakiegoś poradnika prostego do przekazywania funkcji?

Skrypt na podstawie otrzymanego czasu powinien wywołać funkcje rysujące. Nie wiem czy się coś takiego może udać, ale zadeklarowałbym w klasie wskaźniki typu void na tablice wielowymiarowe, żeby skrypt mógł z nich korzystać. Wtedy skrypt musiałby się składać z 2 funkcji: rysująca i inicjująca.

Skrypty byłyby dodawane do archiwum z prezentacją (plik prezentacji to zip zawierający skrypty, obrazki, teksty, oraz pliki XML).

Ostateczny format XMLów nie jest jeszcze ustalony, co nieco "zatrzymało" pisanie dalszego kodu.

Co do samego projektu, to na razie stworzyłem okienko, kilka klas (bez funkcji jeszcze) i szablon prezentacji z 1 slajdem i 1 obrazkiem. Problem tekstu załatwiłbym WebKitem, który z HTMLa zrobiłby obrazek, z obrazka teksturę i OGL se z tym poradzi. Jedyną wadą byłby brak możliwości animowania pojedynczych akapitów i znaków, ale raczej nikt z tego nie korzysta. Może bym dał radę rozwiązać kiedyś ten problem.


(Fiołek) #2

AngelScript - statycznie typowany.

Lua - dynamicznie typowany(dlatego nie używam go zbyt często).

Wystarczy zbindować funkcje odpowiedzialne za rysowanie.


(Razi) #3

A czym się różni statyczne, od dynamicznego typowania? Przeglądam tak manuala z AngelScript i wydaje się być dość wygodny i szybki. Da radę się wykonać 100 razy w ciągu sekundy?

Mam nadzieję że dam se radę z kompilacją:stuck_out_tongue:


(Fiołek) #4

Dynamiczne typowanie

To, czy się wykona 100 razy w ciągu sekundy zależy od tego co ładujesz, jak ladujesz, na jakim sprzęcie, etc. Wiele gier używa języków skryptowych i jakoś sobie radzą(ale nie interpretują pliku 100 razy na sekundę, tylko interpretują raz, a potem tylko wywołują odpowiednie funkcje).