Commit graph

474 commits

Author SHA1 Message Date
iddev5
f1e7c10fbb mach: remove Action enum and all references to it 2022-05-20 09:14:32 -07:00
iddev5
7486b0ebea mach: Implement key input handling as event loop
This commit changes the former callback based design to handle key input
(GLFW-like) to an event loop based design (SDL-like). This uses a
TailQueue to store the events from inside of standard glfw callbacks.
This Queue is then popped while polling, thereby emulating event loop.

Removes from Engine the function: ``setKeyCallback`` and adds the
function: ``pollEvent`` which may return an event or null.

This change was done for two reasons:
1) Removing dependence of Engine on App. This was a circular dependency
   and a genuine bad design.
2) Solve the recent regression due to the same which was (i) preventing
   using types declared in Engine.zig and (ii) preventing usage of
   multiple source files in an application.

Currently only key press and release events are implemented as these are
the ones currently used in examples.
2022-05-20 09:14:32 -07:00
iddev5
3bb45c75a1 mach: introduce cross platform Timer abstraction
This Timer uses std.time.Timer as backing timer in native platforms, and
will use custom timers for special platforms (wasm, android?, ios?).

Unlike std.time.Timer, its primary API is focused on floats. Also meant
to provides some convenient functions alongside base ones.

Follows std.time.Timer API, but methods by default return f32 i.e
non-precise variant with precise variants available returning u64.
2022-05-17 23:56:41 -07:00
iddev5
657091ed65 mach: Reorganised native backend files, moved structs and fixed circular
dependency
2022-05-15 10:36:08 -07:00
iddev5
8b46f46cf8 mach: Create binding methods for all glfw methods in use and update
examples
2022-05-13 16:17:18 -07:00
iddev5
5396769227 mach: implement all glfw -> mach key mappings 2022-05-09 08:08:01 -07:00
iddev5
71b7473ee7 mach: implement key press/release callback 2022-05-09 08:08:01 -07:00
iddev5
7a392b2780 mach: Add enums for keys and actions 2022-05-09 08:08:01 -07:00
iddev5
8904536632 mach: comptime interface-like implementation of engine cores 2022-05-01 17:07:29 -07:00
iddev5
5c984d9795 mach: finalizing changes for now 2022-04-29 12:48:47 -07:00
iddev5
5249e72408 example: finalize triangle example to new API 2022-04-29 12:48:47 -07:00
iddev5
60fd89ec45 mach: make App.options optional 2022-04-29 12:48:47 -07:00
iddev5
7598c2d7b8 mach: Enable App.resize() and verify if all necessary functions are exported by App 2022-04-29 12:48:47 -07:00
iddev5
2aedc4ca01 mach: implement App struct in terms of unified entry point 2022-04-29 12:48:47 -07:00
iddev5
d99359421e mach: begin unified entry point interface 2022-04-29 12:48:47 -07:00
d3m1gd
ce1aeafa84
choose first adapter (#251)
Related to hexops/mach#216

Co-authored-by: d3m1gd <mach+d3m1gd@users.noreply.github.com>
2022-04-22 18:50:42 -07:00
iddev5
a922b4b29b mach: set error message to be shown on glfw error
This uses glfw.setErrorCallback to set a global callback in mach's App
which would work across all mach applications
2022-04-17 11:50:33 -07:00
Stephen Gutekanst
305c446aa2 add delta time calculation for frame-rate independent movement
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-04-17 10:06:56 -07:00
Stephen Gutekanst
5883a50d92 add high-level vsync modes
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-04-16 11:52:47 -07:00
Silver
614322edc7 gpu: convert Texture.Usage to packed struct 2022-04-08 11:03:00 -07:00
Silver
adf5332969 app: add resize callback function 2022-04-08 11:03:00 -07:00
Stephen Gutekanst
49f80de6ab add higher-level app library
Fixes hexops/mach#190

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-04-05 00:16:51 -07:00
Stephen Gutekanst
2bb3b934e1 glfw: add terminate function
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2021-07-16 15:24:45 -07:00
Stephen Gutekanst
7fcd051870 add main engine library + minimal glfw linking example
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2021-07-06 20:58:46 -07:00