提交 c7897acd 编写于 作者: J jp9000

UI: Use vector value for nudge callback

上级 4fd22f13
...@@ -5604,44 +5604,40 @@ void OBSBasic::TogglePreview() ...@@ -5604,44 +5604,40 @@ void OBSBasic::TogglePreview()
EnablePreviewDisplay(previewEnabled); EnablePreviewDisplay(previewEnabled);
} }
void OBSBasic::Nudge(int dist, MoveDir dir) static bool nudge_callback(obs_scene_t*, obs_sceneitem_t *item, void *param)
{ {
if (ui->preview->Locked()) if (obs_sceneitem_locked(item))
return; return true;
struct MoveInfo {
float dist;
MoveDir dir;
} info = {(float)dist, dir};
auto func = [] (obs_scene_t*, obs_sceneitem_t *item, void *param) struct vec2 &offset = *reinterpret_cast<struct vec2*>(param);
{ struct vec2 pos;
if (obs_sceneitem_locked(item))
return true;
MoveInfo *info = reinterpret_cast<MoveInfo*>(param); if (!obs_sceneitem_selected(item)) {
struct vec2 dir; return true;
struct vec2 pos; }
vec2_set(&dir, 0.0f, 0.0f); obs_sceneitem_get_pos(item, &pos);
vec2_add(&pos, &pos, &offset);
obs_sceneitem_set_pos(item, &pos);
return true;
}
if (!obs_sceneitem_selected(item)) void OBSBasic::Nudge(int dist, MoveDir dir)
return true; {
if (ui->preview->Locked())
return;
switch (info->dir) { struct vec2 offset;
case MoveDir::Up: dir.y = -info->dist; break; vec2_set(&offset, 0.0f, 0.0f);
case MoveDir::Down: dir.y = info->dist; break;
case MoveDir::Left: dir.x = -info->dist; break;
case MoveDir::Right: dir.x = info->dist; break;
}
obs_sceneitem_get_pos(item, &pos); switch (dir) {
vec2_add(&pos, &pos, &dir); case MoveDir::Up: offset.y = (float)-dist; break;
obs_sceneitem_set_pos(item, &pos); case MoveDir::Down: offset.y = (float) dist; break;
return true; case MoveDir::Left: offset.x = (float)-dist; break;
}; case MoveDir::Right: offset.x = (float) dist; break;
}
obs_scene_enum_items(GetCurrentScene(), func, &info); obs_scene_enum_items(GetCurrentScene(), nudge_callback, &offset);
} }
void OBSBasic::NudgeUp() {Nudge(1, MoveDir::Up);} void OBSBasic::NudgeUp() {Nudge(1, MoveDir::Up);}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册