Converting codebase to SOL3
Signed-off-by: Hartmut Seichter <hartmut@technotecture.com>
This commit is contained in:
parent
874c87cedf
commit
0c8748befe
5 changed files with 137 additions and 92 deletions
|
@ -17,6 +17,7 @@
|
|||
namespace sol {
|
||||
template <> struct is_automagical<pw::matrix4x4> : std::false_type {};
|
||||
template <> struct is_automagical<pw::vector3> : std::false_type {};
|
||||
template <> struct is_automagical<pw::vector2> : std::false_type {};
|
||||
template <> struct is_automagical<pw::vector4> : std::false_type {};
|
||||
template <> struct is_automagical<pw::quaternion> : std::false_type {};
|
||||
template <> struct is_automagical<pw::rectangle> : std::false_type {};
|
||||
|
@ -24,22 +25,22 @@ template <> struct is_automagical<pw::rectangle> : std::false_type {};
|
|||
|
||||
namespace pw {
|
||||
|
||||
|
||||
rectangle from_lua_table(sol::table t)
|
||||
vector3 table_to_vector3(sol::table t)
|
||||
{
|
||||
float v[4];
|
||||
return vector3(t[0],t[1],t[2]);
|
||||
}
|
||||
|
||||
for (std::size_t i {1}; i <= t.size();i++){
|
||||
v[i-1] = t[i];
|
||||
template <typename elementType>
|
||||
std::vector<elementType> convert_sequence(sol::table t)
|
||||
{
|
||||
const std::size_t sz = t.size();
|
||||
std::vector<elementType> res(sz);
|
||||
for (std::size_t i = 1; i <= sz; i++) {
|
||||
res[i - 1] = t[i];
|
||||
}
|
||||
return rectangle(v);
|
||||
return res;
|
||||
}
|
||||
|
||||
vector3 vector3_from_lua_table(sol::table t)
|
||||
{
|
||||
|
||||
return vector3();
|
||||
}
|
||||
|
||||
|
||||
void register_core_function(sol::state& lua,sol::table& ns)
|
||||
|
@ -51,16 +52,25 @@ void register_core_function(sol::state& lua,sol::table& ns)
|
|||
|
||||
|
||||
ns.new_usertype<matrix4x4>("matrix4x4"
|
||||
, sol::constructors<matrix4x4()>()
|
||||
, sol::call_constructor,sol::constructors<matrix4x4()>()
|
||||
, "row",&matrix4x4::row
|
||||
, "column",&matrix4x4::column
|
||||
, "set_identity",&matrix4x4::set_identity
|
||||
, "inverse",&matrix4x4::inverse
|
||||
, "identity", &matrix4x4::identity
|
||||
, "identity",sol::readonly_property(matrix4x4::identity)
|
||||
// , "set",[](sol::this_state s,sol::table t) { for (int i = 0;i < t.size();i++) s.Ldata[i] = t[i-1]; })
|
||||
// , "get",[]() ->sol::table { return sol::table(); }
|
||||
|
||||
);
|
||||
|
||||
ns.new_usertype<vector2>("vector2"
|
||||
,sol::call_constructor,sol::constructors<vector2(),vector2(Scalar,Scalar)>()
|
||||
,"x", sol::property(sol::resolve<const vector2::value_type&() const>(&vector2::x), [](vector2& v,vector2::value_type val){ v.x() = val;})
|
||||
,"y", sol::property(sol::resolve<const vector2::value_type&() const>(&vector2::y), [](vector2& v,vector2::value_type val){ v.y() = val;})
|
||||
);
|
||||
|
||||
ns.new_usertype<vector3>("vector3"
|
||||
,sol::constructors<vector3(),vector3(Scalar,Scalar,Scalar)>()
|
||||
,sol::call_constructor,sol::constructors<vector3(),vector3(Scalar,Scalar,Scalar)>()
|
||||
,"x", sol::property(sol::resolve<const vector3::value_type&() const>(&vector3::x), [](vector3& v,vector3::value_type val){ v.x() = val;})
|
||||
,"y", sol::property(sol::resolve<const vector3::value_type&() const>(&vector3::y), [](vector3& v,vector3::value_type val){ v.y() = val;})
|
||||
,"z", sol::property(sol::resolve<const vector3::value_type&() const>(&vector3::z), [](vector3& v,vector3::value_type val){ v.z() = val;})
|
||||
|
@ -79,29 +89,29 @@ void register_core_function(sol::state& lua,sol::table& ns)
|
|||
);
|
||||
|
||||
ns.new_usertype<vector4>("vector4"
|
||||
,sol::constructors<vector4(),vector4(vector4::value_type,vector4::value_type,vector4::value_type,vector4::value_type)>()
|
||||
,sol::call_constructor,sol::constructors<vector4(),vector4(vector4::value_type,vector4::value_type,vector4::value_type,vector4::value_type)>()
|
||||
,"x", sol::property(sol::resolve<const vector4::value_type&() const>(&vector4::x), [](vector4& v,vector4::value_type val){ v.x() = val;})
|
||||
,"y", sol::property(sol::resolve<const vector4::value_type&() const>(&vector4::y), [](vector4& v,vector4::value_type val){ v.y() = val;})
|
||||
,"z", sol::property(sol::resolve<const vector4::value_type&() const>(&vector4::z), [](vector4& v,vector4::value_type val){ v.z() = val;})
|
||||
,"w", sol::property(sol::resolve<const vector4::value_type&() const>(&vector4::w), [](vector4& v,vector4::value_type val){ v.w() = val;})
|
||||
,"project",&vector4::project
|
||||
);
|
||||
,"y", sol::property(sol::resolve<const vector4::value_type&() const>(&vector4::y), [](vector4& v,vector4::value_type val){ v.y() = val;})
|
||||
,"z", sol::property(sol::resolve<const vector4::value_type&() const>(&vector4::z), [](vector4& v,vector4::value_type val){ v.z() = val;})
|
||||
,"w", sol::property(sol::resolve<const vector4::value_type&() const>(&vector4::w), [](vector4& v,vector4::value_type val){ v.w() = val;})
|
||||
,"project",&vector4::project
|
||||
);
|
||||
|
||||
|
||||
ns.new_usertype<quaternion>("quaternion"
|
||||
,sol::constructors<quaternion(), quaternion(quaternion::value_type,quaternion::value_type,quaternion::value_type,quaternion::value_type)>()
|
||||
,"x", sol::property(sol::resolve<const quaternion::value_type&() const>(&quaternion::x), [](quaternion& v,quaternion::value_type val){ v.x() = val;})
|
||||
,"y", sol::property(sol::resolve<const quaternion::value_type&() const>(&quaternion::y), [](quaternion& v,quaternion::value_type val){ v.y() = val;})
|
||||
,"z", sol::property(sol::resolve<const quaternion::value_type&() const>(&quaternion::z), [](quaternion& v,quaternion::value_type val){ v.z() = val;})
|
||||
,"w", sol::property(sol::resolve<const quaternion::value_type&() const>(&quaternion::w), [](quaternion& v,quaternion::value_type val){ v.w() = val;})
|
||||
,"identity",sol::readonly_property(&quaternion::identity)
|
||||
,"dot",&quaternion::dot
|
||||
,"inverse",sol::readonly_property(&quaternion::inverse)
|
||||
,"normalized",&quaternion::normalized
|
||||
,"lerp",&quaternion::lerp
|
||||
,"slerp",&quaternion::slerp
|
||||
,"matrix",&quaternion::to_matrix
|
||||
);
|
||||
,"y", sol::property(sol::resolve<const quaternion::value_type&() const>(&quaternion::y), [](quaternion& v,quaternion::value_type val){ v.y() = val;})
|
||||
,"z", sol::property(sol::resolve<const quaternion::value_type&() const>(&quaternion::z), [](quaternion& v,quaternion::value_type val){ v.z() = val;})
|
||||
,"w", sol::property(sol::resolve<const quaternion::value_type&() const>(&quaternion::w), [](quaternion& v,quaternion::value_type val){ v.w() = val;})
|
||||
,"identity",sol::readonly_property(&quaternion::identity)
|
||||
,"dot",&quaternion::dot
|
||||
,"inverse",sol::readonly_property(&quaternion::inverse)
|
||||
,"normalized",&quaternion::normalized
|
||||
,"lerp",&quaternion::lerp
|
||||
,"slerp",&quaternion::slerp
|
||||
,"matrix",&quaternion::to_matrix
|
||||
);
|
||||
|
||||
ns.new_usertype<axisangle>
|
||||
("axisangle",
|
||||
|
@ -114,18 +124,18 @@ void register_core_function(sol::state& lua,sol::table& ns)
|
|||
|
||||
|
||||
ns.new_usertype<size>("size"
|
||||
, sol::call_constructor,sol::constructors<size(),size(Scalar,Scalar)>()
|
||||
, sol::call_constructor, sol::constructors<size(),size(Scalar,Scalar)>()
|
||||
, "width",&size::width
|
||||
, "height",&size::height
|
||||
, "cast_to_float",&size::cast<float>
|
||||
);
|
||||
|
||||
ns.new_usertype<sizef>("sizef"
|
||||
, sol::constructors<sizef(),sizef(Scalar,Scalar)>()
|
||||
, "width",&sizef::width
|
||||
, "height",&sizef::height
|
||||
, "cast_to_int",&sizef::cast<int>
|
||||
);
|
||||
, sol::call_constructor, sol::constructors<sizef(),sizef(Scalar,Scalar)>()
|
||||
, "width",&sizef::width
|
||||
, "height",&sizef::height
|
||||
, "cast_to_int",&sizef::cast<int>
|
||||
);
|
||||
|
||||
ns.new_usertype<point>("point",
|
||||
sol::constructors<point(),point(Scalar,Scalar)>(),
|
||||
|
@ -151,14 +161,16 @@ void register_core_function(sol::state& lua,sol::table& ns)
|
|||
ns.new_usertype<geometry>("geometry"
|
||||
, sol::constructors<geometry(),geometry(geometry::primitive_topology_type,vector3_array,geometry::indices_t)>()
|
||||
, "primitive_topology", sol::property(&geometry::primitive_topology,&geometry::set_primitive_topology)
|
||||
, "vertices", sol::property(&geometry::vertices,&geometry::set_vertices)
|
||||
, "indices", sol::property(&geometry::indices,&geometry::set_indices)
|
||||
, "vertices", sol::property(&geometry::ref_vertices,&geometry::ref_vertices)
|
||||
, "indices", sol::property(&geometry::ref_indices,&geometry::ref_indices)
|
||||
, "add_texture_coordinates",&geometry::add_texture_coordinates
|
||||
// , "texture_coordinates",&geometry::texture_coordinates
|
||||
, "compute_normals", &geometry::compute_normals);
|
||||
|
||||
ns.new_enum<false>("primitive_topology_type"
|
||||
,"point_list", geometry::primitive_topology_type::point_list
|
||||
,"line_list", geometry::primitive_topology_type::line_list
|
||||
,"triangle_list", geometry::primitive_topology_type::triangle_list);
|
||||
,"line_list", geometry::primitive_topology_type::line_list
|
||||
,"triangle_list", geometry::primitive_topology_type::triangle_list);
|
||||
|
||||
|
||||
ns.new_usertype<matrix_transform<real_t>>("matrixtransform"
|
||||
|
@ -166,11 +178,11 @@ void register_core_function(sol::state& lua,sol::table& ns)
|
|||
,"look_at",&matrix_transform<real_t>::look_at
|
||||
,"perspective_projection",&matrix_transform<real_t>::perspective_projection);
|
||||
// SOL3
|
||||
// geoom_type["type"] = lua.create_table_with(
|
||||
// "points", geometry::topology_type::points
|
||||
// , "lines", geometry::topology_type::lines
|
||||
// , "line_strip", geometry::topology_type::line_strip
|
||||
// );
|
||||
// geoom_type["type"] = lua.create_table_with(
|
||||
// "points", geometry::topology_type::points
|
||||
// , "lines", geometry::topology_type::lines
|
||||
// , "line_strip", geometry::topology_type::line_strip
|
||||
// );
|
||||
|
||||
|
||||
|
||||
|
@ -182,21 +194,21 @@ void register_core_function(sol::state& lua,sol::table& ns)
|
|||
,"change_count",sol::property(&image::change_count,&image::set_change_count)
|
||||
);
|
||||
|
||||
image_type.create_named("pixel_layout"
|
||||
,"rgb8", image::RGB8
|
||||
,"rgb32", image::RGBA8
|
||||
,"gray", image::LUM
|
||||
);
|
||||
ns.create_named("pixel_layout"
|
||||
,"rgb8", image::RGB8
|
||||
,"rgb32", image::RGBA8
|
||||
,"gray", image::LUM
|
||||
);
|
||||
|
||||
// image_type["layout"] = lua.create_table_with(
|
||||
// "rgb8", image::RGB8
|
||||
// ,"rgb32", image::RGBA8
|
||||
// ,"gray", image::LUM);
|
||||
// image_type["layout"] = lua.create_table_with(
|
||||
// "rgb8", image::RGB8
|
||||
// ,"rgb32", image::RGBA8
|
||||
// ,"gray", image::LUM);
|
||||
|
||||
|
||||
ns.new_usertype<rectangle>("rectangle"
|
||||
,sol::constructors<rectangle(),rectangle(const point_<float>&,const size_<float>&)>()
|
||||
);
|
||||
);
|
||||
|
||||
auto mathf_table = ns.create_named("mathf");
|
||||
mathf_table.set_function("ping_pong",ping_pong<real_t>);
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
namespace pw {
|
||||
|
||||
void register_visual_function(sol::state&,sol::table &ns)
|
||||
void register_visual_function(sol::state& lua,sol::table &ns)
|
||||
{
|
||||
|
||||
ns.new_usertype<pipeline>("pipeline"
|
||||
|
@ -36,16 +36,21 @@ void register_visual_function(sol::state&,sol::table &ns)
|
|||
,"set_uniform_vec4",&shader::set_uniform<vector4&>
|
||||
,"set_uniform_texture",&shader::set_uniform<texture&>
|
||||
|
||||
).new_enum<false>("shader_type"
|
||||
);
|
||||
|
||||
|
||||
ns["shader_type"] = ns.create_named("shader_type"
|
||||
,"fragment",shader::code_type::fragment
|
||||
,"vertex",shader::code_type::vertex
|
||||
,"geometry",shader::code_type::geometry
|
||||
,"compute",shader::code_type::compute);
|
||||
,"vertex",shader::code_type::vertex
|
||||
,"geometry",shader::code_type::geometry
|
||||
,"compute",shader::code_type::compute);
|
||||
|
||||
// new_enum<false>(
|
||||
|
||||
|
||||
ns.new_usertype<render_pass>("render_pass"
|
||||
,"submit",&render_pass::submit
|
||||
);
|
||||
// ns.new_usertype<render_pass>("render_pass"
|
||||
// ,"submit",&render_pass::submit
|
||||
// );
|
||||
|
||||
|
||||
ns.new_usertype<renderer>("renderer"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue