Particle fountain: Difference between revisions
Content added Content deleted
(Created Nim solution.) |
(Added Lua version) |
||
Line 385: | Line 385: | ||
fountain() |
fountain() |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
=={{header|Lua}}== |
|||
{{libheader|LÖVE}} |
|||
<syntaxhighlight lang="lua">-- Returns canvas of given width and height containing a circle |
|||
function initCanvas (width, height) |
|||
local c = love.graphics.newCanvas(width, height) |
|||
love.graphics.setCanvas(c) -- Switch to drawing on canvas 'c' |
|||
love.graphics.circle("fill", width / 2, height / 2, 2, 100) |
|||
love.graphics.setCanvas() -- Switch back to drawing on main screen |
|||
return c |
|||
end |
|||
-- Returns particle system with given canvas |
|||
function initPartSys (image, maxParticles) |
|||
local ps = love.graphics.newParticleSystem(image, maxParticles) |
|||
ps:setParticleLifetime(3, 5) -- (min, max) |
|||
ps:setDirection(math.pi * 1.5) |
|||
ps:setSpeed(700) |
|||
ps:setLinearAcceleration(-100, 500, 100, 700) -- (minX, minY, maxX, maxY) |
|||
ps:setEmissionRate(1000) |
|||
ps:setPosition(400, 550) |
|||
ps:setColors(1, 1, 1, 1, 0, 0, 1, 0) -- Start solid white, fade to transluscent blue |
|||
return ps |
|||
end |
|||
-- LÖVE callback that runs on program start |
|||
function love.load () |
|||
love.window.setTitle("Lua particle fountain") |
|||
local canvas = initCanvas(10, 10) |
|||
psystem = initPartSys(canvas, 10000) |
|||
end |
|||
-- LÖVE callback to update values before each frame |
|||
function love.update (dt) |
|||
psystem:update(dt) |
|||
end |
|||
-- LÖVE callback to draw each frame to the screen |
|||
function love.draw () |
|||
love.graphics.draw(psystem) |
|||
end</syntaxhighlight> |
|||
=={{header|Nim}}== |
=={{header|Nim}}== |