static duk_ret_t Terrain_SetAttribute_String_Variant_AttributeChange__Type(duk_context* ctx) { int numArgs = duk_get_top(ctx); Terrain* thisObj = GetThisWeakObject<Terrain>(ctx); String id = duk_require_string(ctx, 0); Variant value = GetVariant(ctx, 1); AttributeChange::Type change = numArgs > 2 ? (AttributeChange::Type)(int)duk_require_number(ctx, 2) : AttributeChange::Default; thisObj->SetAttribute(id, value, change); return 0; }