summaryrefslogtreecommitdiff
path: root/demo/main.lua
diff options
context:
space:
mode:
authorsanine-a <sanine.not@pm.me>2020-11-07 13:14:30 -0600
committersanine-a <sanine.not@pm.me>2020-11-07 13:14:30 -0600
commit94572182ea873d5dadbc8428330d4c00eead2c80 (patch)
treeb9152a7d474c236c29d42e133300b8513690bfef /demo/main.lua
parent8bb877ad57e7e41d928408e81f4e8cca63e171f7 (diff)
add basic Node transform functions and implement transform cascading
Diffstat (limited to 'demo/main.lua')
-rw-r--r--demo/main.lua35
1 files changed, 22 insertions, 13 deletions
diff --git a/demo/main.lua b/demo/main.lua
index 1ae1e0e..dea393c 100644
--- a/demo/main.lua
+++ b/demo/main.lua
@@ -2,6 +2,7 @@ local Vector = require('Vector')
local Matrix = require('Matrix')
local FPSCamera = require('FPSCamera')
local ScreenQuad = require('ScreenQuad')
+local MeshInstance = require('MeshInstance')
FPSCamera.movement_speed = 5
local model = Matrix.Mat4.eye()
@@ -57,12 +58,23 @@ void main() {
} ]]
local shader = honey.shader.new(vertex_shader, fragment_shader)
-local suzanne = honey.mesh.load('Suzanne.obj')[1]
-local plane = honey.primitives.plane(4,4)
-
-local color1 = Vector.Vec4.new{1,0,0,1}
-local color2 = Vector.Vec4.new{0,0,1,1}
-local color = Vector.Vec4.new()
+local suzanne = MeshInstance.new(nil,
+ Vector.Vec3.new{0,0,-3},
+ Vector.Vec3.new{0,math.pi,0},
+ Vector.Vec3.new{1,1,1},
+ honey.mesh.load('Suzanne.obj')[1])
+local plane = MeshInstance.new(suzanne,
+ Vector.Vec3.new{-2,5,0},
+ Vector.Vec3.new{0,0,0},
+ Vector.Vec3.new{1,1,1},
+ honey.primitives.plane(4,4))
+suzanne.update = function(self, dt)
+ local movement = Vector.Vec3.new()
+ movement:add(Vector.Vec3.X_UNIT, movement)
+ movement:muls(dt, movement)
+ self:translate(movement)
+ self:updateTransform()
+end
local total_frames = 0
local total_time = 0
@@ -72,6 +84,7 @@ honey.window.set_size(640, 480)
function honey.update(dt)
total_time = total_time + dt
FPSCamera:update(dt)
+ suzanne:update(dt)
if total_time > 1 then
print('FPS: '..tostring(total_frames/total_time))
total_time = 0
@@ -81,12 +94,8 @@ end
function draw_suzanne()
honey.texture.use(tex, 0)
- honey.shader.set_mat4(shader, 'model', model.array)
- honey.shader.set_mat4(shader, 'view', FPSCamera.view.array)
- honey.shader.set_mat4(shader, 'projection', FPSCamera.projection.array)
- honey.shader.set_float(shader, 'time', total_time)
- honey.mesh.draw(suzanne, shader)
- honey.mesh.draw(plane, shader)
+ suzanne:draw(shader, FPSCamera)
+ plane:draw(shader, FPSCamera)
end
function honey.draw()
@@ -94,7 +103,7 @@ function honey.draw()
if buffer then
honey.set_framebuffer(ScreenQuad.fb)
- honey.set_viewport_size(640,640)
+ honey.set_viewport_size(480,640)
honey.clear_color(Vector.Vec4.new().array, true, true, false)
honey.enable_depth_test(true)
draw_suzanne()