|
@@ -1516,6 +1516,17 @@ class SceneEditor {
|
|
|
}
|
|
|
|
|
|
function focusSelection() {
|
|
|
+ function is(p : hrt.prefab.Prefab, filter : (p : hrt.prefab.Prefab) -> Bool) {
|
|
|
+ var res = filter(p);
|
|
|
+ var parent = p.parent;
|
|
|
+ while (parent != null) {
|
|
|
+ res = res && filter(parent);
|
|
|
+ parent = parent.parent;
|
|
|
+ }
|
|
|
+
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+
|
|
|
var arr = [];
|
|
|
for (pref in sceneTree.getSelectedItems()) {
|
|
|
var local3d = pref.getLocal3d();
|
|
@@ -1524,11 +1535,23 @@ class SceneEditor {
|
|
|
local3d = @:privateAccess mat.previewSphere;
|
|
|
if (local3d != null) {
|
|
|
arr.push(local3d);
|
|
|
+ var isRevealed = true;
|
|
|
+ var p = pref.parent;
|
|
|
+ while (p != null) {
|
|
|
+ var data = @:privateAccess sceneTree.itemMap.get(p);
|
|
|
+ if (data == null)
|
|
|
+ break;
|
|
|
|
|
|
- var parent = pref.parent;
|
|
|
- while(parent != null) {
|
|
|
- sceneTree.openItem(parent);
|
|
|
- parent = parent.parent;
|
|
|
+ isRevealed = isRevealed && @:privateAccess sceneTree.isOpen(data);
|
|
|
+ p = p.parent;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!isRevealed) {
|
|
|
+ var parent = pref.parent;
|
|
|
+ while(parent != null) {
|
|
|
+ sceneTree.openItem(parent, true);
|
|
|
+ parent = parent.parent;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|