]> git.lizzy.rs Git - dragonblocks3d-lua.git/blobdiff - modules/RenderEngine/src/init.lua
Added Movement
[dragonblocks3d-lua.git] / modules / RenderEngine / src / init.lua
index 1d6d888b58f48bbad74ccdf540fa9d6f1b8f6ab4..ceabab96debb1510c6dc0f028b5cfe0ccf1b0976 100644 (file)
@@ -1,9 +1,10 @@
-RenderEngine:run("camera")
+RenderEngine:run("inputhandler")
 RenderEngine:run("shaders")
 RenderEngine:run("textures")
 RenderEngine:run("window")
 
 RenderEngine.Mesh = RenderEngine:run("mesh")
+RenderEngine.camera = RenderEngine:run("camera")
 
 function RenderEngine:init()
        self:init_glfw()
@@ -20,7 +21,7 @@ end
 
 function RenderEngine:add_render_task()
        Dragonblocks:add_task(function()
-
+               self:render_loop()
        end)
 end
 
@@ -32,21 +33,27 @@ function RenderEngine:render_loop()
        until glfw.window_should_close(self.window)
 end
 
+function RenderEngine:update_projection_matrix(width, height)
+       gl.uniform_matrix4f(gl.get_uniform_location(self.shaders, "projection"), true, glm.perspective(math.rad(self.fov), width / height, 0.1, 100))
+end
+
+function RenderEngine:update_view_matrix()
+       gl.uniform_matrix4f(gl.get_uniform_location(self.shaders, "view"), true, self.camera:get_view_matrix())
+end
+
 function RenderEngine:render()
        local dtime = glfw.get_time() - self.last_time
        self.last_time = glfw.get_time()
        
+       self:process_input(dtime)
+       
        gl.clear_color(self.sky)
        gl.enable("depth test")
        gl.clear("color", "depth")
        
-       gl.use_program(self.shaders)
+       gl.use_program(self.shaders)    
        
-       local view_matrix = glm.translate(self.camera_pos)
-       local projection_matrix = glm.perspective(math.rad(self.fov), self.window_width / self.window_height, 0.1, 100) 
-       
-       gl.uniform_matrix4f(self.projection_matix_location, true, projection_matrix)
-       gl.uniform_matrix4f(self.view_matix_location, true, view_matrix)
+       RenderEngine:update_view_matrix()
        
        for _, mesh in ipairs(self.Mesh.list) do
                mesh:render(dtime)
@@ -56,20 +63,6 @@ function RenderEngine:render()
        glfw.poll_events()
 end
 
-
---[[
-function RenderEngine:clear_removed_meshes()
-       local remove_indices = {} 
-       for index, mesh in pairs(self.meshes) do
-               if mesh.removed then
-                       table.insert(remove_indices, index)
-               end
-       end
-       for i, index in pairs(remove_indices)
-               table.remove(self.meshes, index - i + 1)
-       end
-end
-]]--
 function RenderEngine:set_sky(htmlcolor)
        local r, g, b = hex2rgb(htmlcolor)
        self.sky = {r, g, b, 1.0}