SFML 3 Wrapper

new topic     » topic index » view thread      » older message » newer message

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) 
 
new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu