SFML 3 Wrapper
- Posted by Icy_Viking 2 days ago
- 87 views
Hi all,
I've wrote a wrapper for SFML 3. I haven't uploaded it yet. However I have a few examples written. I'm wondering how much interest there'd be in it.
include std/ffi.e include sfml_window.e include sfml_graphics.e include sfml_system.e -- video mode sequence mode = {{800,600},32} -- create window atom win = sfRenderWindow_create( mode, "SFML Bounce Test", sfClose, sfWindowed, NULL ) if win = 0 then puts(1,"Failed to create window!\n") abort(0) end if -- load texture atom tex = sfTexture_createFromFile("sfml_logo.png", NULL) if tex = 0 then puts(1,"Failed to load texture!\n") abort(0) end if -- create sprite atom sprite = sfSprite_create(tex) --sfSprite_setTexture(sprite, tex, 1) -- sprite position sequence spritePos = {200, 200} sfSprite_setPosition(sprite, spritePos) -- sizes sequence winSize = {800, 600} sequence texSize = sfTexture_getSize(tex) -- velocity (pixels per second) sequence velocity = {200, 150} -- clock for delta time atom clock = sfClock_create() -- event handling atom evt = allocate_struct(sfEvent) atom evt_type = 0 while sfRenderWindow_isOpen(win) do -- events while sfRenderWindow_pollEvent(win, evt) do evt_type = peek_type(evt, C_INT) if evt_type = sfEvtClosed then sfRenderWindow_close(win) end if if evt_type = sfEvtKeyPressed then if sfKeyboard_isKeyPressed(sfKeyEscape) then sfRenderWindow_close(win) end if end if end while -- delta time (seconds) atom dt = sfTime_asSeconds(sfClock_restart(clock)) -- move sprite (time-based) spritePos[1] += velocity[1] * dt spritePos[2] += velocity[2] * dt if dt > 0.05 then dt = 0.05 end if -- bounce left/right if spritePos[1] <= 0 then spritePos[1] = 0 velocity[1] = -velocity[1] elsif spritePos[1] + texSize[1] >= winSize[1] then spritePos[1] = winSize[1] - texSize[1] velocity[1] = -velocity[1] end if -- bounce top/bottom if spritePos[2] <= 0 then spritePos[2] = 0 velocity[2] = -velocity[2] elsif spritePos[2] + texSize[2] >= winSize[2] then spritePos[2] = winSize[2] - texSize[2] velocity[2] = -velocity[2] end if sfSprite_setPosition(sprite, spritePos) -- render sfRenderWindow_clear(win, {0,0,0,255}) sfRenderWindow_drawSprite(win, sprite, NULL) sfRenderWindow_display(win) end while -- cleanup sfClock_destroy(clock) sfSprite_destroy(sprite) sfTexture_destroy(tex) sfRenderWindow_destroy(win)

