intermediate state

This commit is contained in:
Hartmut Seichter 2019-01-09 17:50:18 +01:00
parent dfe26d9424
commit f840d51f4f
10 changed files with 146 additions and 130 deletions

View file

@ -4,6 +4,8 @@
#include "pw/core/quaternion.hpp"
#include "pw/core/axisangle.hpp"
#include "pw/core/debug.hpp"
#include "pw/core/size.hpp"
#include "pw/core/point.hpp"
namespace pw {
@ -11,52 +13,69 @@ namespace pw {
void script_core::load(sol::table &ns)
{
typedef double Scalar;
typedef real_t Scalar;
ns.set("pi",pw::pi<Scalar>());
ns.set("pi",pw::pi<Scalar>());
ns.new_usertype<vector3d>("vector3",
sol::constructors<vector3d(), vector3d(Scalar,Scalar,Scalar)>(),
"set",&vector3d::set,
"x", scripting::property(scripting::resolve<const Scalar&() const>(&vector3d::x), &vector3d::set_x),
"y", scripting::property(scripting::resolve<const Scalar&() const>(&vector3d::y), &vector3d::set_y),
"z", scripting::property(scripting::resolve<const Scalar&() const>(&vector3d::z), &vector3d::set_z),
"norm",&vector3d::norm,
"cross",&vector3d::cross,
"dot",&vector3d::dot,
// sol::meta_function::addition, sol::resolve<vector3d(const vector3d&, const vector3d&)>(::operator+),
// sol::meta_function::subtraction, &vector3d::operator-
// "v",&vector3d::values,
"clone",&vector3d::clone
);
ns.new_usertype<vector3>("vector3",
sol::constructors<vector3(), vector3(Scalar,Scalar,Scalar)>(),
"set",&vector3::set,
"x", scripting::property(scripting::resolve<const Scalar&() const>(&vector3::x), &vector3::set_x),
"y", scripting::property(scripting::resolve<const Scalar&() const>(&vector3::y), &vector3::set_y),
"z", scripting::property(scripting::resolve<const Scalar&() const>(&vector3::z), &vector3::set_z),
"norm",&vector3::norm,
"cross",&vector3::cross,
"dot",&vector3::dot,
// sol::meta_function::addition, sol::resolve<vector3(const vector3&, const vector3&)>(::operator+),
// sol::meta_function::subtraction, &vector3::operator-
// "v",&vector3::values,
"clone",&vector3::clone
);
ns.new_usertype<quaterniond>("quaternion",
sol::constructors<quaterniond(), quaterniond(Scalar,Scalar,Scalar,Scalar)>(),
"set",&quaterniond::set,
"x", scripting::property(scripting::resolve<const Scalar&() const>(&quaterniond::x), &quaterniond::set_x),
"y", scripting::property(scripting::resolve<const Scalar&() const>(&quaterniond::y), &quaterniond::set_y),
"z", scripting::property(scripting::resolve<const Scalar&() const>(&quaterniond::z), &quaterniond::set_z),
"w", scripting::property(scripting::resolve<const Scalar&() const>(&quaterniond::w), &quaterniond::set_w),
"dot",&quaterniond::dot,
"inverse",scripting::readonly_property(&quaterniond::inverse),
"normalized",&quaterniond::normalized,
"lerp",&quaterniond::lerp
// "v",&vector3d::values,
// "clone",&vector3d::clone
);
ns.new_usertype<quaternion>("quaternion",
sol::constructors<quaternion(), quaternion(Scalar,Scalar,Scalar,Scalar)>(),
"set",&quaternion::set,
"x", scripting::property(scripting::resolve<const Scalar&() const>(&quaternion::x), &quaternion::set_x),
"y", scripting::property(scripting::resolve<const Scalar&() const>(&quaternion::y), &quaternion::set_y),
"z", scripting::property(scripting::resolve<const Scalar&() const>(&quaternion::z), &quaternion::set_z),
"w", scripting::property(scripting::resolve<const Scalar&() const>(&quaternion::w), &quaternion::set_w),
"dot",&quaternion::dot,
"inverse",scripting::readonly_property(&quaternion::inverse),
"normalized",&quaternion::normalized,
"lerp",&quaternion::lerp,
"slerp",&quaternion::slerp
// "v",&vector3d::values,
// "clone",&vector3d::clone
);
ns.new_usertype<axisangled>("axisangle",
sol::constructors<axisangled(), axisangled(vector3d,Scalar)>(),
"axis",scripting::property(&axisangled::axis,&axisangled::set_axis),
"angle",scripting::property(&axisangled::angle,&axisangled::set_angle)
);
ns.new_usertype<axisangle>("axisangle",
sol::constructors<axisangle(), axisangle(vector3,Scalar)>(),
"axis",scripting::property(&axisangle::axis,&axisangle::set_axis),
"angle",scripting::property(&axisangle::angle,&axisangle::set_angle)
);
ns.new_usertype<debug>("debug",
"new",sol::no_constructor,
"get",&debug::get
);
ns.new_usertype<size>("size",
sol::constructors<size(),size(Scalar,Scalar)>(),
"width",&size::width,
"height",&size::height
// "none",sol::debug::level::none
);
ns.new_usertype<point>("point",
sol::constructors<point(),point(Scalar,Scalar)>(),
"x",&point::x,
"y",&point::y
);
ns.new_usertype<debug>("debug",
"new",sol::no_constructor,
"get",&debug::get,
"write",&debug::write
// "none",sol::debug::level::none
);
}

View file

@ -8,16 +8,16 @@ namespace pw {
void script_system::load(sol::table &ns)
{
ns.new_usertype<window>("window",
"update",&window::update,
"title",sol::writeonly_property(&window::set_title),
"set_size",&window::set_size
);
ns.new_usertype<window>("window",
"update",&window::update,
"title",sol::writeonly_property(&window::set_title),
"size",sol::property(&window::size,&window::set_size)
);
// ns.new_usertype<input>("input",
// "new", sol::no_constructor,
// "get",&input::get
// );
ns.new_usertype<input>("input",
"new", sol::no_constructor,
"get",&input::get
);
}