统一'当前操作对象':优先取编辑器里的选择(用户在层级面板选),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() {
|
wire(loader, delete, new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (state.target == null) {
|
if (currentTarget(state) == null) {
|
||||||
setStatus(state, "Delete: select an object first.");
|
setStatus(state, "Delete: select an object first.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Object victim = state.target;
|
Object victim = currentTarget(state);
|
||||||
String what = SceneObjects.kind(victim) + " " + SceneObjects.nameOf(victim);
|
String what = SceneObjects.kind(victim) + " " + SceneObjects.nameOf(victim);
|
||||||
state.target = null;
|
state.target = null;
|
||||||
boolean ok = SceneActions.delete(state.loader, victim);
|
boolean ok = SceneActions.delete(state.loader, victim);
|
||||||
@@ -212,12 +212,13 @@ public final class ObjectPanel {
|
|||||||
wire(loader, rename, new Runnable() {
|
wire(loader, rename, new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (state.target == null) {
|
Object target = currentTarget(state);
|
||||||
|
if (target == null) {
|
||||||
setStatus(state, "Rename: select an object first.");
|
setStatus(state, "Rename: select an object first.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String name = textFieldText(state.nameField);
|
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);
|
setStatus(state, (ok ? "Renamed to " : "Rename failed: ") + name);
|
||||||
refreshList(state);
|
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) {
|
private static void selectTarget(final State state, final Object object) {
|
||||||
state.target = object;
|
state.target = object;
|
||||||
@@ -628,13 +640,7 @@ public final class ObjectPanel {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
// 父级取"编辑器里的当前选择"(用户是在层级面板里选的,不是点我们列表行)
|
// 父级取"编辑器里的当前选择"(用户是在层级面板里选的,不是点我们列表行)
|
||||||
Object parent = null;
|
Object parent = currentTarget(state);
|
||||||
try {
|
|
||||||
parent = SceneObjects.selected(state.loader);
|
|
||||||
} catch (Throwable error) {
|
|
||||||
System.err.println("[panel] 读当前选择失败: " + error);
|
|
||||||
}
|
|
||||||
if (parent == null) parent = state.target;
|
|
||||||
if (parent == null) {
|
if (parent == null) {
|
||||||
setStatus(state, "+10 Red Bones: select a parent bone first.");
|
setStatus(state, "+10 Red Bones: select a parent bone first.");
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in new issue
Block a user