Stephen Gutekanst
5bd33af68f
mach: update libmach to use new mach/gpu API
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-08-12 00:43:43 -07:00
Stephen Gutekanst
2b354f9226
mach: add missing errdefer if GLFW window creation fails
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-08-12 00:43:43 -07:00
Stephen Gutekanst
85ddeeed5c
mach: update to latest mach/gpu API
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-08-12 00:43:43 -07:00
LeRoyce Pearson
f4611e1414
mach: add headless option ( #450 )
...
Co-authored-by: Stephen Gutekanst <stephen.gutekanst@gmail.com>
2022-08-06 19:38:04 -07:00
PiergiorgioZagaria
6eaacde444
gamemode: Add linux_gamemode_is_active field to Platform
2022-07-28 04:12:25 -07:00
PiergiorgioZagaria
d84a32363c
gamemode: add check for GAMEMODE env var equal false
2022-07-28 04:12:25 -07:00
PiergiorgioZagaria
76bf493a86
gamemode: Small fix for initLinuxGamemode()
2022-07-28 04:12:25 -07:00
PiergiorgioZagaria
80270a5cfc
gamemode: Move gamemode init and deinit into their own functions
2022-07-28 04:12:25 -07:00
PiergiorgioZagaria
509ebd13ab
mach: Initial commit for gamemode
2022-07-28 04:12:25 -07:00
Ali Chraghi
b500b04c41
all: build: install tests exe
2022-07-25 11:21:37 -07:00
Stephen Gutekanst
1356cdd838
all: zig fmt
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-07-22 19:43:41 -07:00
Zachary Huang
8f6273c0d0
libmach: fix small issues and naming conventions
2022-07-20 18:59:29 -07:00
Zachary Huang
5d86314fbb
libmach: update API again, factors out init/update/deinit from native.zig main function
2022-07-20 18:59:29 -07:00
Zachary Huang
77aecbe806
libmach: update API, exposes init, update, and deinit functions
2022-07-19 09:32:52 -07:00
Zachary Huang
9ece370059
libmach: initial API bindings for mach core
2022-07-14 22:44:44 -07:00
iddev5
dd0a6064fb
mach: Cast window positions (i64) to i32 on window resize
2022-07-09 15:07:55 -07:00
iddev5
34514699a1
mach: wasm: Use default log level
2022-07-06 05:55:04 -07:00
Stephen Gutekanst
6ec27861b4
mach: initial support for high-level ECS applications
...
Adds experimental support for high-level ECS-based applications
following hexops/mach#349
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-07-04 22:25:39 -07:00
Stephen Gutekanst
72ea652dca
mach: require a 'pub const App' to be exposed
...
This requires apps expose a `pub const App` from their `main.zig`, effectively adopting
the high-level/low-level application API outlined in hexops/mach#349
If `pub const App` does not exist, a clear compiler error is produced:
```
./src/platform/common.zig:5:9: error: expected e.g. `pub const App = mach.App(modules, init)' (App definition missing in your main Zig file)
@compileError("expected e.g. `pub const App = mach.App(modules, init)' (App definition missing in your main Zig file)");
^
./src/platform/native.zig:13:28: note: called from here
common.checkApplication(app_pkg);
^
./src/platform/native.zig:12:10: note: called from here
comptime {
^
./src/platform/native.zig:15:20: error: container '.app' has no member called 'App'
const App = app_pkg.App;
^
```
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-07-04 21:32:38 -07:00
Stephen Gutekanst
e79c9e075a
mach: rename mach.Engine -> mach.Core
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-07-04 20:14:27 -07:00
Ayush
858c14bbae
{mach,examples}: Fix memory leaks ( #384 )
2022-07-03 08:47:47 -07:00
dweiller
0893c14893
mach: native: deinit gpa for leak detection in debug builds
2022-07-01 16:48:35 -07:00
Jamie Brandon
5bb740f89e
mach: flesh out mach.Event ( #377 )
...
* Flesh out mach.Event
2022-07-01 16:47:06 -07:00
iddev5
f80161bc72
mach: Use math.inf instead of math.floatMax for indefinite wait of events
2022-06-25 08:26:13 -07:00
Ali Chraghi
ff69efea52
mach: check application signature
2022-06-25 08:25:28 -07:00
Ali Chraghi
c831840094
wasm: Arrange key codes in numberical order of value
2022-06-25 08:25:28 -07:00
dweiller
1b32552e73
mach: re-export log_level and scope_levels from App
2022-06-24 12:58:07 -07:00
iddev5
71b25dc2a6
mach: ResourceManager: implement auto convertion of files into assets based on given info
2022-06-24 10:07:16 -07:00
iddev5
b0a00c5581
mach: ResourceManager: implement storage and unload of resources
2022-06-24 10:07:16 -07:00
iddev5
e58fd44ec0
mach: Implement basic resource loading system
...
Curently no real management has been implemented. It just loads the
resource from the list of paths present and provides the raw data from
it.
2022-06-24 10:07:16 -07:00
iddev5
6ed04c1e65
mach: Implement basic URI parser for resource system
2022-06-24 10:07:16 -07:00
David Vanderson
43bff35d2c
mach: mouse cursor support ( #352 )
...
adds mouse cursor support for standard cursors
Co-authored-by: Stephen Gutekanst <stephen.gutekanst@gmail.com>
2022-06-15 21:53:55 -07:00
iddev5
47286508e3
mach: wasm: Implement fullscreen support for browser platform
2022-06-11 16:00:02 -07:00
iddev5
3dc131d4fa
mach: Implement fullscreen window support for native platforms (glfw)
...
This feature remembers the last position of window before turning to
fullscreen.
2022-06-11 16:00:02 -07:00
Stephen Gutekanst
c5432a9353
mach: zig fmt
...
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2022-06-10 16:56:40 -07:00
David Vanderson
ade26b24b1
ditch setTimeout
2022-06-10 12:57:31 -07:00
David Vanderson
4eb872944a
wait event stuff for wasm backend
2022-06-10 12:57:31 -07:00
David Vanderson
0f7c34a5ad
review updates
2022-06-10 12:57:31 -07:00
David Vanderson
9354c178eb
native: switch to setWaitEvent()
2022-06-10 12:57:31 -07:00
iddev5
772a821ce1
mach: wasm: Implement setShouldClose for wasm
2022-06-08 07:31:53 -07:00
iddev5
40c0659cc9
mach: App.update will now return !void instead of !bool
...
In order to close the application, there is already
Engine.setShouldClose() which would roughly do the same thing.
2022-06-08 07:31:53 -07:00
iddev5
db377459c4
mach: Listen to resize event for canvas and thus store window and
...
framebuffer size
2022-06-06 00:37:38 -07:00
iddev5
99dc10e58a
mach: wasm: Implement mouse press, release, motion and scroll events
2022-06-05 13:34:24 -07:00
iddev5
efe90fc64f
mach: Rename scroll -> mouse_scroll and use f32 for offsets
2022-06-05 13:34:24 -07:00
David Vanderson
a2a6c2a288
mach: add mouse motion and mouse button events ( #325 )
...
* add mouse motion and mouse button events
* add scroll events
* switch from button/action to mouse_press and mouse_release events
2022-06-04 06:29:23 -07:00
iddev5
176554fe4d
mach: Make size limits part of runtime options (mach.Options)
...
Removed method Engine.setSizeLimits and added two new fields to
mach.Options called ``size_min`` and ``size_max`` which does the same
thing.
2022-06-01 23:45:56 -07:00
iddev5
ed0e6f5c61
mach: Added runtime application options
...
Reused mach.Options for run time options. It is set with
Engine.setOptions function. ``pub const options`` on top level App has
no effect and will be ignored completely.
Added a blank struct StartupOptions which would be used for startup time
options in future. Currently they aren't used for anything.
2022-06-01 23:45:56 -07:00
iddev5
50fe649ab1
mach: merge and remove the extra layer of indirection caused by Core and
...
GpuDriver
Core and GpuDriver both are merged into one type called Platform. Also
previously the fields and methods which were called as
``engine.core.field`` will now be ``engine.field`` i.e an extra layer is
removed.
2022-06-01 23:45:56 -07:00
David Vanderson
3961073084
{mach,examples}: followups to getWindowSize / getFramebufferSize ( #322 )
...
* followup to window size saving, getWindowSize and getFramebufferSize no longer return errors
* updated the examples
2022-05-31 11:39:53 -07:00
David Vanderson
c0e0b7c686
mach: save window and framebuffer size from glfw callbacks
...
Previously if user code called core.getWindowSize() (or
getFramebufferSize) during their update they could get sizes that did
not match engine.gpu_driver.target_desc because the window had changed
size.
Now core.getWindowSize() returns the last size we got from a glfw
callback instead of directly querying the window. So all sizes should
agree during a single frame.
This relies on glfw callbacks only happening when we call
glfw.pollEvents(). This isn't strictly true - a callback could happen
during any glfw call. Might have to revisit this later.
2022-05-30 12:17:04 -07:00