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.
This commit is contained in:
parent
be935c64ef
commit
3bb45c75a1
9 changed files with 63 additions and 20 deletions
|
|
@ -10,7 +10,7 @@ const UniformBufferObject = struct {
|
|||
mat: zm.Mat,
|
||||
};
|
||||
|
||||
var timer: std.time.Timer = undefined;
|
||||
var timer: mach.Timer = undefined;
|
||||
|
||||
pipeline: gpu.RenderPipeline,
|
||||
queue: gpu.Queue,
|
||||
|
|
@ -22,7 +22,7 @@ bind_group2: gpu.BindGroup,
|
|||
const App = @This();
|
||||
|
||||
pub fn init(app: *App, engine: *mach.Engine) !void {
|
||||
timer = try std.time.Timer.start();
|
||||
timer = try mach.Timer.start();
|
||||
|
||||
engine.core.setKeyCallback(struct {
|
||||
fn callback(_: *App, eng: *mach.Engine, key: mach.Key, action: mach.Action) void {
|
||||
|
|
@ -189,7 +189,7 @@ pub fn update(app: *App, engine: *mach.Engine) !bool {
|
|||
};
|
||||
|
||||
{
|
||||
const time = @intToFloat(f32, timer.read()) / @as(f32, std.time.ns_per_s);
|
||||
const time = timer.read();
|
||||
const rotation1 = zm.mul(zm.rotationX(time * (std.math.pi / 2.0)), zm.rotationZ(time * (std.math.pi / 2.0)));
|
||||
const rotation2 = zm.mul(zm.rotationZ(time * (std.math.pi / 2.0)), zm.rotationX(time * (std.math.pi / 2.0)));
|
||||
const model1 = zm.mul(rotation1, zm.translation(-2, 0, 0));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue