@@ -284,10 +284,22 @@ EMSCRIPTEN_BINDINGS(f3d)
284284 .function (" render" , &f3d::window::render)
285285 .function (" renderToImage" , &f3d::window::renderToImage)
286286 .function (" setSize" , &f3d::window::setSize, emscripten::return_value_policy::reference ())
287- .function (" getWidth" , &f3d::window::getWidth)
288- .function (" getHeight" , &f3d::window::getHeight)
289- .function (" getWorldFromDisplay" , &f3d::window::getWorldFromDisplay)
290- .function (" getDisplayFromWorld" , &f3d::window::getDisplayFromWorld);
287+ .property (" width" , &f3d::window::getWidth)
288+ .property (" height" , &f3d::window::getHeight)
289+ .function (
290+ " getWorldFromDisplay" ,
291+ +[](const f3d::window& win, emscripten::val jsArray) -> emscripten::val
292+ {
293+ return containerToJSArray (win.getWorldFromDisplay (
294+ { jsArray[0 ].as <float >(), jsArray[1 ].as <float >(), jsArray[2 ].as <float >() }));
295+ })
296+ .function (
297+ " getDisplayFromWorld" ,
298+ +[](const f3d::window& win, emscripten::val jsArray) -> emscripten::val
299+ {
300+ return containerToJSArray (win.getDisplayFromWorld (
301+ { jsArray[0 ].as <float >(), jsArray[1 ].as <float >(), jsArray[2 ].as <float >() }));
302+ });
291303
292304 // f3d::interactor
293305 // Not bound on purpose because usually used for external interactors:
@@ -298,11 +310,24 @@ EMSCRIPTEN_BINDINGS(f3d)
298310 .function (
299311 " initCommands" , &f3d::interactor::initCommands, emscripten::return_value_policy::reference ())
300312 .function (
301- " addCommand" , &f3d::interactor::addCommand, emscripten::return_value_policy::reference ())
313+ " addCommand" ,
314+ +[](f3d::interactor& interactor, const std::string& action,
315+ const emscripten::val& callback) -> f3d::interactor&
316+ {
317+ auto wrapCallback = [=](const std::vector<std::string>& args)
318+ { callback (containerToJSArray (args)); };
319+ return interactor.addCommand (action, wrapCallback);
320+ },
321+ emscripten::return_value_policy::reference ())
302322 .function (" removeCommand" , &f3d::interactor::removeCommand,
303323 emscripten::return_value_policy::reference ())
304- .function (" getCommandActions" , &f3d::interactor::getCommandActions)
305- .function (" triggerCommand" , &f3d::interactor::triggerCommand)
324+ .function (
325+ " getCommandActions" , +[](const f3d::interactor& interactor) -> emscripten::val
326+ { return containerToJSArray (interactor.getCommandActions ()); })
327+ .function (
328+ " triggerCommand" ,
329+ +[](f3d::interactor& interactor, const std::string& command, bool keepComments) -> bool
330+ { return interactor.triggerCommand (command, keepComments); })
306331 .function (" toggleAnimation" , &f3d::interactor::toggleAnimation,
307332 emscripten::return_value_policy::reference ())
308333 .function (" startAnimation" , &f3d::interactor::startAnimation,
@@ -314,8 +339,6 @@ EMSCRIPTEN_BINDINGS(f3d)
314339 emscripten::return_value_policy::reference ())
315340 .function (" disableCameraMovement" , &f3d::interactor::disableCameraMovement,
316341 emscripten::return_value_policy::reference ())
317- .function (" playInteraction" , &f3d::interactor::playInteraction)
318- .function (" recordInteraction" , &f3d::interactor::recordInteraction)
319342 .function (
320343 " start" , +[](f3d::interactor& interactor) -> f3d::interactor& { return interactor.start (); },
321344 emscripten::return_value_policy::reference ())
0 commit comments