From 56bdd24ab9463c0bba4d5be87b2933e6a817ccee Mon Sep 17 00:00:00 2001 From: Javier Sancho Date: Sun, 12 Apr 2020 18:42:44 +0200 Subject: [PATCH] get-timer get-time --- Makefile.am | 1 + src/device.cpp | 9 ++++++++ src/device.h | 3 +++ src/guile-irrlicht.cpp | 2 ++ src/timer.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++ src/timer.h | 42 ++++++++++++++++++++++++++++++++++++ 6 files changed, 105 insertions(+) create mode 100644 src/timer.cpp create mode 100644 src/timer.h diff --git a/Makefile.am b/Makefile.am index c99cd47..c47bdfc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -58,6 +58,7 @@ libguile_irrlicht_la_SOURCES = \ src/scene-node.cpp \ src/scene-node-animator.cpp \ src/texture.cpp \ + src/timer.cpp \ src/vector2d.cpp \ src/vector3d.cpp \ src/vertex3d.cpp \ diff --git a/src/device.cpp b/src/device.cpp index f9c0d6a..96442c7 100644 --- a/src/device.cpp +++ b/src/device.cpp @@ -27,6 +27,7 @@ #include "driver-types.h" #include "event-receiver.h" #include "gsubr.h" +#include "timer.h" #include "wchar.h" #include "wrapped.h" @@ -37,6 +38,7 @@ extern "C" { { init_device_type (); DEFINE_GSUBR ("create-device", 0, 0, 1, irr_createDevice); + DEFINE_GSUBR ("get-timer", 1, 0, 0, irr_getTimer); DEFINE_GSUBR ("is-window-active?", 1, 0, 0, irr_isWindowActive); DEFINE_GSUBR ("run", 1, 0, 0, irr_run); DEFINE_GSUBR ("set-window-caption!", 2, 0, 0, irr_setWindowCaption); @@ -80,6 +82,13 @@ extern "C" { return wrap_device (device); } + SCM + irr_getTimer (SCM wrapped_device) + { + irr::IrrlichtDevice* device = unwrap_device (wrapped_device); + return wrap_timer (device->getTimer ()); + } + SCM irr_isWindowActive (SCM wrapped_device) { diff --git a/src/device.h b/src/device.h index ec5875a..1a9046d 100644 --- a/src/device.h +++ b/src/device.h @@ -37,6 +37,9 @@ extern "C" { SCM irr_createDevice (SCM rest); + SCM + irr_getTimer (SCM wrapped_device); + SCM irr_isWindowActive (SCM wrapped_device); diff --git a/src/guile-irrlicht.cpp b/src/guile-irrlicht.cpp index 99b9928..29fb2fb 100644 --- a/src/guile-irrlicht.cpp +++ b/src/guile-irrlicht.cpp @@ -47,6 +47,7 @@ #include "scene-node.h" #include "scene-node-animator.h" #include "texture.h" +#include "timer.h" #include "vertex3d.h" #include "video-driver.h" #include "wchar.h" @@ -81,6 +82,7 @@ extern "C" { init_scene_node (); init_scene_node_animator (); init_texture (); + init_timer (); init_vertex3d (); init_video_driver (); diff --git a/src/timer.cpp b/src/timer.cpp new file mode 100644 index 0000000..0022f10 --- /dev/null +++ b/src/timer.cpp @@ -0,0 +1,48 @@ +/* guile-irrlicht --- GNU Guile bindings for Irrlicht Engine + + Copyright (C) 2020 Javier Sancho + + This file is part of guile-irrlicht. + + guile-irrlicht is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 3 of the + License, or (at your option) any later version. + + guile-irrlicht is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with guile-irrlicht. If not, see + . +*/ + +#include +#include + +#include "gsubr.h" +#include "timer.h" +#include "wrapped.h" + +extern "C" { + + void + init_timer (void) + { + init_timer_type (); + DEFINE_GSUBR ("get-time", 1, 0, 0, irr_getTime); + } + + DEFINE_WRAPPED_TYPE (irr::ITimer*, "timer", + init_timer_type, timer_p, + wrap_timer, unwrap_timer); + + SCM + irr_getTime (SCM wrapped_timer) + { + return scm_from_uint32 (unwrap_timer (wrapped_timer)->getTime()); + } + +} diff --git a/src/timer.h b/src/timer.h new file mode 100644 index 0000000..0187e94 --- /dev/null +++ b/src/timer.h @@ -0,0 +1,42 @@ +/* guile-irrlicht --- GNU Guile bindings for Irrlicht Engine + + Copyright (C) 2020 Javier Sancho + + This file is part of guile-irrlicht. + + guile-irrlicht is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 3 of the + License, or (at your option) any later version. + + guile-irrlicht is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with guile-irrlicht. If not, see + . +*/ + +#ifndef __GUILE_IRRLICHT_TIMER_H_INCLUDED__ +#define __GUILE_IRRLICHT_TIMER_H_INCLUDED__ + +#include +#include +#include "wrapped.h" + +extern "C" { + + void + init_timer (void); + + DECLARE_WRAPPED_TYPE (irr::ITimer*, init_timer_type, + timer_p, wrap_timer, unwrap_timer); + + SCM + irr_getTime (SCM wrapped_timer); + +} + +#endif -- 2.39.5