mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-26 06:49:09 -06:00
Started work on alternate property definition to take Lua scripting into account
This commit is contained in:
Submodule ext/ghoul updated: f5f1f38f2f...d44211f170
@@ -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) \
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user