统一'当前操作对象':优先取编辑器里的选择(用户在层级面板选),New/Delete/Rename/+10 全部改用 currentTarget()

This commit is contained in:
tianmo committed 2026-10-16 17:55:50 +08:00
1 parent dd520655f0
commit b09a7e0659
1 file changed
+17 -11
+17 -11
View File
@@ -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;