- // FIXME: This needs a lot of work.
- Effect *effect1 = (Effect *)luaL_checkudata(L, 2, "WhiteBalanceEffect");
- LiveInputWrapper *effect2 = (LiveInputWrapper *)luaL_checkudata(L, 3, "LiveInputWrapper");
- chain->add_effect(effect1, effect2->get_input());
+ // TODO: Better error reporting.
+ Effect *effect1 = get_effect(L, 2);
+ if (luaL_testudata(L, 3, "LiveInputWrapper")) {
+ LiveInputWrapper *effect2 = (LiveInputWrapper *)lua_touserdata(L, 3);
+ chain->add_effect(effect1, effect2->get_input());
+ } else {
+ Effect *effect2 = get_effect(L, 3);
+ chain->add_effect(effect1, effect2);
+ }