From 4d6bdf4857f7cc63392c65ec20339401dc5b3403 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sat, 3 Aug 2013 21:30:47 -0300 Subject: [PATCH] Added Source:getType --- src/modules/audio/Source.cpp | 5 +++++ src/modules/audio/Source.h | 2 ++ src/modules/audio/wrap_Source.cpp | 15 +++++++++++++++ src/modules/audio/wrap_Source.h | 1 + 4 files changed, 23 insertions(+) diff --git a/src/modules/audio/Source.cpp b/src/modules/audio/Source.cpp index fe95700d2..3fb18da68 100644 --- a/src/modules/audio/Source.cpp +++ b/src/modules/audio/Source.cpp @@ -34,6 +34,11 @@ Source::~Source() { } +Source::Type Source::getType() const +{ + return type; +} + bool Source::getConstant(const char *in, Type &out) { return types.find(in, out); diff --git a/src/modules/audio/Source.h b/src/modules/audio/Source.h index db9bed2b7..ea88eae93 100644 --- a/src/modules/audio/Source.h +++ b/src/modules/audio/Source.h @@ -96,6 +96,8 @@ public: virtual void setMaxDistance(float distance) = 0; virtual float getMaxDistance() const = 0; + virtual Type getType() const; + static bool getConstant(const char *in, Type &out); static bool getConstant(Type in, const char *&out); static bool getConstant(const char *in, Unit &out); diff --git a/src/modules/audio/wrap_Source.cpp b/src/modules/audio/wrap_Source.cpp index a18cbd354..5bd7501bf 100644 --- a/src/modules/audio/wrap_Source.cpp +++ b/src/modules/audio/wrap_Source.cpp @@ -289,6 +289,19 @@ int w_Source_getRolloff(lua_State *L) return 1; } +int w_Source_getType(lua_State *L) +{ + Source *t = luax_checksource(L, 1); + Source::Type stype = t->getType(); + const char *typestr; + + if (!Source::getConstant(stype, typestr)) + return luaL_error(L, "Unknown Source type."); + + lua_pushstring(L, typestr); + return 1; +} + static const luaL_Reg functions[] = { { "play", w_Source_play }, @@ -324,6 +337,8 @@ static const luaL_Reg functions[] = { "setRolloff", w_Source_setRolloff}, { "getRolloff", w_Source_getRolloff}, + { "getType", w_Source_getType }, + { 0, 0 } }; diff --git a/src/modules/audio/wrap_Source.h b/src/modules/audio/wrap_Source.h index 8ec0faebb..eceb56e80 100644 --- a/src/modules/audio/wrap_Source.h +++ b/src/modules/audio/wrap_Source.h @@ -59,6 +59,7 @@ int w_Source_setDistance(lua_State *L); int w_Source_getDistance(lua_State *L); int w_Source_setRolloff(lua_State *L); int w_Source_getRolloff(lua_State *L); +int w_Source_getType(lua_State *L); extern "C" int luaopen_source(lua_State *L); } // audio