util = require "util" local player = require "classes.player" local Vector3 = require "types.vector3" local Feed = require "classes.feed" local feed = {} local function create_feed(position, direction) table.insert(feed, Feed.new(position, direction)) end -- called every frame, with constant delta time function game_tick() -- ctx.initialization_needed is true first frame and every time dynamic reload is performed if ctx.initialization_needed then -- ctx.udata persists on reload ctx.udata = { capture = false, } player.ThrowPressed:connect(create_feed) end ctx.mouse_capture = ctx.udata.capture input_action{name = "toggle_mouse", control = "ESCAPE"} if input_action_just_pressed{name = "toggle_mouse"} then ctx.udata.capture = not ctx.udata.capture end for _, v in pairs(feed) do v:tick(ctx) end player:tick(ctx) -- draw_camera{position = Vector3(0, 1, 0), direction = Vector3.FORWARD} -- draw ground local q = util.create_plane_quad(Vector3(0, 0, 0), Vector3.UP, 20) local params = { texture = "images/measure001a.png", texture_region = { x = 0, y = 0, w = 512, h = 512 }, } draw_quad(util.merge(q, params)) end