Started work on alternate property definition to take Lua scripting into account

This commit is contained in:
Alexander Bock
2014-09-01 18:02:59 +02:00
parent e7697a4ce0
commit 667dc6a3fc
3 changed files with 60 additions and 14 deletions

View File

@@ -33,7 +33,7 @@ using std::numeric_limits;
namespace openspace {
namespace properties {
#define DEFAULT_FROM_LUA_LAMBDA(TYPE, DEFAULT_VALUE) \
#define DEFAULT_FROM_LUA_LAMBDA(TYPE, DEFAULT_VALUE, FUNCTION) \
[](lua_State* state, bool& success) -> TYPE { \
success = (lua_isnumber(state, -1) == 1); \
if (success) \

View File

@@ -24,6 +24,10 @@
#include "openspace/properties/vectorproperty.h"
#include <ghoul/lua/ghoul_lua.h>
#include <glm/glm.hpp>
#include <limits>
using std::numeric_limits;
@@ -31,46 +35,88 @@ using std::numeric_limits;
namespace openspace {
namespace properties {
#define DEFAULT_FROM_LUA_LAMBDA_2(TYPE, DEFAULT_VALUE) \
[](lua_State* state, bool& success) -> TYPE { \
success = (lua_isnumber(state, -1) == 1) && (lua_isnumber(state, -2) == 1); \
if (success) { \
}
#define DEFAULT_TO_LUA_LAMBDA(TYPE) \
[](lua_State* state, TYPE value) -> bool { \
\
}
REGISTER_TEMPLATEPROPERTY_SOURCE(BVec2Property, glm::bvec2, glm::bvec2(false));
REGISTER_TEMPLATEPROPERTY_SOURCE(BVec3Property, glm::bvec3, glm::bvec3(false));
REGISTER_TEMPLATEPROPERTY_SOURCE(BVec4Property, glm::bvec4, glm::bvec4(false));
REGISTER_NUMERICALPROPERTY_SOURCE(Vec2Property, glm::vec2, glm::vec2(0),
glm::vec2(numeric_limits<float>::lowest()), glm::vec2(numeric_limits<float>::max()),
glm::vec2(0.01f));
glm::vec2(0.01f), DEFAULT_FROM_LUA_LAMBDA(glm::vec2, glm::vec2(0)),
DEFAULT_TO_LUA_LAMBDA(glm::vec2));
REGISTER_NUMERICALPROPERTY_SOURCE(Vec3Property, glm::vec3, glm::vec3(0),
glm::vec3(numeric_limits<float>::lowest()), glm::vec3(numeric_limits<float>::max()),
glm::vec3(0.01f));
glm::vec3(0.01f), DEFAULT_FROM_LUA_LAMBDA(glm::vec3, glm::vec3(0)),
DEFAULT_TO_LUA_LAMBDA(glm::vec3));
REGISTER_NUMERICALPROPERTY_SOURCE(Vec4Property, glm::vec4, glm::vec4(0),
glm::vec4(numeric_limits<float>::lowest()), glm::vec4(numeric_limits<float>::max()),
glm::vec4(0.01f));
glm::vec4(0.01f), DEFAULT_FROM_LUA_LAMBDA(glm::vec4, glm::vec4(0)),
DEFAULT_TO_LUA_LAMBDA(glm::vec4));
REGISTER_NUMERICALPROPERTY_SOURCE(DVec2Property, glm::dvec2, glm::dvec2(0),
glm::dvec2(numeric_limits<double>::lowest()),
glm::dvec2(numeric_limits<double>::max()), glm::dvec2(0.01));
glm::dvec2(numeric_limits<double>::max()), glm::dvec2(0.01),
DEFAULT_FROM_LUA_LAMBDA(glm::dvec2, glm::dvec2(0)),
DEFAULT_TO_LUA_LAMBDA(glm::dvec2));
REGISTER_NUMERICALPROPERTY_SOURCE(DVec3Property, glm::dvec3, glm::dvec3(0),
glm::dvec3(numeric_limits<double>::lowest()),
glm::dvec3(numeric_limits<double>::max()), glm::dvec3(0.01));
glm::dvec3(numeric_limits<double>::max()), glm::dvec3(0.01),
DEFAULT_FROM_LUA_LAMBDA(glm::dvec3, glm::dvec3(0)),
DEFAULT_TO_LUA_LAMBDA(glm::dvec3));
REGISTER_NUMERICALPROPERTY_SOURCE(DVec4Property, glm::dvec4, glm::dvec4(0),
glm::dvec4(numeric_limits<double>::lowest()),
glm::dvec4(numeric_limits<double>::max()), glm::dvec4(0.01));
glm::dvec4(numeric_limits<double>::max()), glm::dvec4(0.01),
DEFAULT_FROM_LUA_LAMBDA(glm::dvec4, glm::dvec4(0)),
DEFAULT_TO_LUA_LAMBDA(glm::dvec4));
REGISTER_NUMERICALPROPERTY_SOURCE(IVec2Property, glm::ivec2, glm::ivec2(0),
glm::ivec2(numeric_limits<int>::lowest()), glm::ivec2(numeric_limits<int>::max()),
glm::ivec2(1));
glm::ivec2(1), DEFAULT_FROM_LUA_LAMBDA(glm::ivec2, glm::ivec2(0)),
DEFAULT_TO_LUA_LAMBDA(glm::ivec2));
REGISTER_NUMERICALPROPERTY_SOURCE(IVec3Property, glm::ivec3, glm::ivec3(0),
glm::ivec3(numeric_limits<int>::lowest()), glm::ivec3(numeric_limits<int>::max()),
glm::ivec3(1));
glm::ivec3(1), DEFAULT_FROM_LUA_LAMBDA(glm::ivec3, glm::ivec3(0)),
DEFAULT_TO_LUA_LAMBDA(glm::ivec3));
REGISTER_NUMERICALPROPERTY_SOURCE(IVec4Property, glm::ivec4, glm::ivec4(0),
glm::ivec4(numeric_limits<int>::lowest()), glm::ivec4(numeric_limits<int>::max()),
glm::ivec4(1));
glm::ivec4(1), DEFAULT_FROM_LUA_LAMBDA(glm::ivec4, glm::ivec4(0)),
DEFAULT_TO_LUA_LAMBDA(glm::ivec4));
REGISTER_NUMERICALPROPERTY_SOURCE(UVec2Property, glm::uvec2, glm::uvec2(0),
glm::uvec2(numeric_limits<unsigned int>::lowest()),
glm::uvec2(numeric_limits<unsigned int>::max()), glm::uvec2(1));
glm::uvec2(numeric_limits<unsigned int>::max()), glm::uvec2(1),
DEFAULT_FROM_LUA_LAMBDA(glm::uvec2, glm::uvec2(0)),
DEFAULT_TO_LUA_LAMBDA(glm::uvec2));
REGISTER_NUMERICALPROPERTY_SOURCE(UVec3Property, glm::uvec3, glm::uvec3(0),
glm::uvec3(numeric_limits<unsigned int>::lowest()),
glm::uvec3(numeric_limits<unsigned int>::max()), glm::uvec3(1));
glm::uvec3(numeric_limits<unsigned int>::max()), glm::uvec3(1),
DEFAULT_FROM_LUA_LAMBDA(glm::uvec3, glm::uvec3(0)),
DEFAULT_TO_LUA_LAMBDA(glm::uvec3));
REGISTER_NUMERICALPROPERTY_SOURCE(UVec4Property, glm::uvec4, glm::uvec4(0),
glm::uvec4(numeric_limits<unsigned int>::lowest()),
glm::uvec4(numeric_limits<unsigned int>::max()), glm::uvec4(1));
glm::uvec4(numeric_limits<unsigned int>::max()), glm::uvec4(1),
DEFAULT_FROM_LUA_LAMBDA(glm::uvec4, glm::uvec4(0)),
DEFAULT_TO_LUA_LAMBDA(glm::uvec4));
} // namespace properties
} // namespace openspace