Difference between revisions of "Lovetoys"

(Example source updated)
(Adaption to new Love2d version 0.9.0)
Line 1: Line 1:
 
{{#set:Name=Lovetoys}}
 
{{#set:Name=Lovetoys}}
{{#set:LOVE Version=0.8.0}}
+
{{#set:LOVE Version=0.9.0}}
 
{{#set:Description= A neat Entity Component System for Lua and some nice manager for collisions and events}}
 
{{#set:Description= A neat Entity Component System for Lua and some nice manager for collisions and events}}
  
Line 20: Line 20:
 
     world:setCallbacks(beginContact, endContact)
 
     world:setCallbacks(beginContact, endContact)
  
     love.graphics.setMode(1000, 600, false, true, 0)
+
     love.window.setMode(1000, 600, {fullscreen=false, vsync=true, resizable=false})
  
 
     -- A new instance of an engine is beeing created
 
     -- A new instance of an engine is beeing created

Revision as of 01:55, 19 December 2013



Lovetoys is a small bundle of helper classes and libraries consisting of 3 packages.
The most important one is the Entity Component System which is based on Richard Lords Introduction to ECS's.
If you don't have any idea what this entity component stuff is all about, click that link and give it a read! It's totally worth it!

A simple example for implementation:

require(lovetoys/engine)

function love.load()

    -- Creation of a new world
    love.physics.setMeter(64)
    world = love.physics.newWorld(0, 9.81*80, true)
    -- Enabling the collision functions
    world:setCallbacks(beginContact, endContact)

    love.window.setMode(1000, 600, {fullscreen=false, vsync=true, resizable=false})

    -- A new instance of an engine is beeing created
    engine = Engine()
    -- A new instance of an eventmanager is beeing created
    eventmanager = EventManager()
    -- A new instance of a collisionmanager is beeing created
    collisionmanager = CollisionManager()

    -- The collisionmanager is beeing registered as a listener for the
    -- "BeginContact" event.
    eventmanager:addListener("BeginContact", {collisionmanager, collisionmanager.fireEvent})

    -- Logic (update) systems are beeing added to the engine
    engine:addSystem(ExampleSystem(), "logic", 1)

    -- Drawing systems are beeing added to the engine
    engine:addSystem(ExampleDrawSystem(), "draw")
end


function love.update(dt)
    -- Engine update function
    engine:update(dt)
end

function love.draw()
    -- Engine draw function
    engine:draw()
end
--Collision function
function beginContact(a, b, coll)
    -- Dynamic creation of a new instance of BeginContact and firing it to the Eventmanager
    stack:current().eventmanager:fireEvent(BeginContact(a, b, coll))
end



Grab it or give it a look on Github.

If you want to see a proper way of implementation or some nice examples for events and collisions, have a look at our Example-project or our Game.