From f3e2debaa586874bc403a1dfb01709433627f9cd Mon Sep 17 00:00:00 2001 From: Javier Sancho Date: Thu, 26 Mar 2020 08:45:35 +0100 Subject: [PATCH] make-material --- Makefile.am | 1 + src/guile-irrlicht.cpp | 2 ++ src/material.cpp | 58 ++++++++++++++++++++++++++++++++++++++++++ src/material.h | 42 ++++++++++++++++++++++++++++++ 4 files changed, 103 insertions(+) create mode 100644 src/material.cpp create mode 100644 src/material.h diff --git a/Makefile.am b/Makefile.am index 968673b..1e1e331 100644 --- a/Makefile.am +++ b/Makefile.am @@ -40,6 +40,7 @@ libguile_irrlicht_la_SOURCES = \ src/gui-static-text.cpp \ src/guile-irrlicht.cpp \ src/keymap.cpp \ + src/material.cpp \ src/material-flags.cpp \ src/mesh.cpp \ src/mesh-scene-node.cpp \ diff --git a/src/guile-irrlicht.cpp b/src/guile-irrlicht.cpp index 1cc0503..c825029 100644 --- a/src/guile-irrlicht.cpp +++ b/src/guile-irrlicht.cpp @@ -33,6 +33,7 @@ #include "gui-environment.h" #include "gui-static-text.h" #include "keymap.h" +#include "material.h" #include "material-flags.h" #include "mesh.h" #include "mesh-scene-node.h" @@ -62,6 +63,7 @@ extern "C" { init_gui_environment (); init_gui_static_text (); init_keymap (); + init_material (); init_material_flag (); init_mesh (); init_mesh_scene_node (); diff --git a/src/material.cpp b/src/material.cpp new file mode 100644 index 0000000..b412256 --- /dev/null +++ b/src/material.cpp @@ -0,0 +1,58 @@ +/* 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 "material.h" +#include "wrapped.h" + +extern "C" { + + void + init_material (void) + { + init_material_type (); + scm_c_define_gsubr ("make-material", 0, 0, 1, (scm_t_subr)make_material); + scm_c_export ("make-material", NULL); + } + + DEFINE_WRAPPED_TYPE (irr::video::SMaterial*, "material", + init_material_type, material_p, + wrap_material, unwrap_material); + + SCM + make_material (SCM rest) + { + SCM wireframe = scm_from_bool (0); + SCM lighting = scm_from_bool (1); + + scm_c_bind_keyword_arguments ("make-material", rest, (scm_t_keyword_arguments_flags)0, + scm_from_utf8_keyword ("wireframe"), &wireframe, + scm_from_utf8_keyword ("lighting"), &lighting, + SCM_UNDEFINED); + + irr::video::SMaterial* material = new irr::video::SMaterial (); + material->Wireframe = wireframe; + material->Lighting = lighting; + return wrap_material (material); + } + +} diff --git a/src/material.h b/src/material.h new file mode 100644 index 0000000..a35b831 --- /dev/null +++ b/src/material.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_MATERIAL_H_INCLUDED__ +#define __GUILE_IRRLICHT_MATERIAL_H_INCLUDED__ + +#include +#include +#include "wrapped.h" + +extern "C" { + + void + init_material (void); + + DECLARE_WRAPPED_TYPE (irr::video::SMaterial*, init_material_type, + material_p, wrap_material, unwrap_material); + + SCM + make_material (SCM rest); + +} + +#endif -- 2.39.5