require 'honey.std' local gl = honey.gl -- initialize honey honey.init() local db = honey.ecs.EntityDb() local systems = honey.ecs.SystemDb(db) systems:addSystems(honey.ecs.node.system) systems:addSystems(honey.ecs.render.system) systems:addSystems(honey.ecs.script.system) -- camera db:createEntityWithComponents{ node = { matrix = Mat4() :identity() :translate(Vec3{0,0,10}), }, camera = { projection = Mat4() :perspective(90, 640/480, 0.1, 1000) }, } -- skybox db:createEntityWithComponents{ node = { matrix = Mat4() :identity(), }, renderMesh = { mesh = { filename = "assets/skybox.obj", index = 1, }, uniforms = { textures = { surface = { filename = "starfield2.png" }, }, }, shader = { vertex = "builtin.basic3d.vert", fragment = "builtin.flat.frag" }, }, } -- mesh db:createEntityWithComponents{ node = { matrix = Mat4() :identity(), }, renderMesh = { mesh = { filename = "assets/dodecahedron.obj", index = 1, }, uniforms = { textures = { ourTexture = { filename = "assets/green-grass.jpg" }, }, }, shader = { vertex="vertex.glsl", fragment="fragment.glsl" }, }, } honey.loop(function(dt) gl.ClearColor(0xa/0xff, 0x10/0xff, 0x1f/0xff, 1.0) gl.Clear(gl.COLOR_BUFFER_BIT + gl.DEPTH_BUFFER_BIT + gl.STENCIL_BUFFER_BIT) systems:update(dt) end) -- clean up honey.terminate()