local ecs = require "ecs" -- local test = require "ecs_test" local Position = require "ecs.Position" local Velocity = require "ecs.Velocity" local Meta = require "ecs.Meta" local Wrapper = require 'ecs.Wrapper' manager = get_manager() ent = manager:create_entity() ent:add_component(Position.new(1.9, 9.7)) ent:add_component(Velocity.new(0.2, 0.3)) ent:add_component(Meta.new("Soldier")) data = { speed = 10, something = "Hello, World!", alive = true } ent:add_component(Wrapper.new("LuaData", data)) ent:add_component(Wrapper.new("TestThing", { test = 1.23563 })) -- @todo Make this happen... -- stats = { -- hp = 100, -- magic = 30 -- } -- -- ent:add_component(ecs.Wrapper.new("Stats", stats)) print(ent:has_components("Position", "Velocity")) pos = ent:get_component("Position") print("x: " .. pos.x) print("y: " .. pos.y) vel = ent:get_component("Velocity") print("v_x: " .. vel.x) print("v_y: " .. vel.y) print("View test") manager:view("Position", "Velocity"):for_each(function(ent) pos = ent:get_component("Position") vel = ent:get_component("Velocity") pos.x = pos.x + vel.x pos.y = pos.y + vel.y print(ent) print("x: " .. pos.x) print("y: " .. pos.y) print("v_x: " .. vel.x) print("v_y: " .. vel.y) if ent:has_components("Meta") then meta = ent:get_component("Meta") print("name: " .. meta.name) end end) -- @todo Implement this -- for uuid,entity in pairs(view) do -- print "TEST" -- end manager:view("LuaData"):for_each(function(ent) d = ent:get_component("LuaData") print(d.speed) d.speed = 11 print(d.speed) print(data.speed) data.speed = 20 print(d.speed) print(data.speed) print(d.alive) d.alive = false print(d.alive) print(d.something) end) manager:view("TestThing"):for_each(function(ent) t = ent:get_component("TestThing") print(t.test) end)