统一'当前操作对象':优先取编辑器里的选择(用户在层级面板选),New/Delete/Rename/+10 全部改用 currentTarget()
This commit is contained in:
1 parent
dd520655f0
commit
b09a7e0659
1 file changed
+17
-11
@@ -197,11 +197,11 @@ public final class ObjectPanel {
|
||||
wire(loader, delete, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (state.target == null) {
|
||||
if (currentTarget(state) == null) {
|
||||
setStatus(state, "Delete: select an object first.");
|
||||
return;
|
||||
}
|
||||
Object victim = state.target;
|
||||
Object victim = currentTarget(state);
|
||||
String what = SceneObjects.kind(victim) + " " + SceneObjects.nameOf(victim);
|
||||
state.target = null;
|
||||
boolean ok = SceneActions.delete(state.loader, victim);
|
||||
@@ -212,12 +212,13 @@ public final class ObjectPanel {
|
||||
wire(loader, rename, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (state.target == null) {
|
||||
Object target = currentTarget(state);
|
||||
if (target == null) {
|
||||
setStatus(state, "Rename: select an object first.");
|
||||
return;
|
||||
}
|
||||
String name = textFieldText(state.nameField);
|
||||
boolean ok = SceneActions.rename(state.loader, state.target, name);
|
||||
boolean ok = SceneActions.rename(state.loader, target, name);
|
||||
setStatus(state, (ok ? "Renamed to " : "Rename failed: ") + name);
|
||||
refreshList(state);
|
||||
}
|
||||
@@ -429,6 +430,17 @@ public final class ObjectPanel {
|
||||
});
|
||||
}
|
||||
|
||||
/** 当前的"操作对象":优先取**编辑器里的选择**(用户走层级面板),取不到才用我们列表的 target。 */
|
||||
private static Object currentTarget(State state) {
|
||||
try {
|
||||
Object selected = SceneObjects.selected(state.loader);
|
||||
if (selected != null) return selected;
|
||||
} catch (Throwable error) {
|
||||
System.err.println("[panel] 读当前选择失败: " + error);
|
||||
}
|
||||
return state.target;
|
||||
}
|
||||
|
||||
/** 点列表里的某一行:在编辑器层级树里选中它,并把它记成"当前操作对象"。 */
|
||||
private static void selectTarget(final State state, final Object object) {
|
||||
state.target = object;
|
||||
@@ -628,13 +640,7 @@ public final class ObjectPanel {
|
||||
@Override
|
||||
public void run() {
|
||||
// 父级取"编辑器里的当前选择"(用户是在层级面板里选的,不是点我们列表行)
|
||||
Object parent = null;
|
||||
try {
|
||||
parent = SceneObjects.selected(state.loader);
|
||||
} catch (Throwable error) {
|
||||
System.err.println("[panel] 读当前选择失败: " + error);
|
||||
}
|
||||
if (parent == null) parent = state.target;
|
||||
Object parent = currentTarget(state);
|
||||
if (parent == null) {
|
||||
setStatus(state, "+10 Red Bones: select a parent bone first.");
|
||||
return;
|
||||
|
||||
Reference in new issue
Block a user