Skip to content

Commit ff52d29

Browse files
committed
small improvements
1 parent 58760cd commit ff52d29

File tree

5 files changed

+32
-4
lines changed

5 files changed

+32
-4
lines changed

src/com/ss/editor/control/transform/SceneEditorControl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
public interface SceneEditorControl {
1717

18+
public static final String LOADED_MODEL_KEY = SceneEditorControl.class.getName() + ".loadedModel";
19+
1820
enum TransformType {
1921
MOVE_TOOL,
2022
ROTATE_TOOL,

src/com/ss/editor/state/editor/impl/model/ModelEditorUtils.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.ss.editor.state.editor.impl.model;
22

3+
import static com.ss.editor.control.transform.SceneEditorControl.LOADED_MODEL_KEY;
34
import static com.ss.editor.util.NodeUtils.findParent;
45

56
import com.jme3.scene.Geometry;
@@ -34,11 +35,19 @@ public static <T extends FileEditor & ModelChangeConsumer, M extends Spatial> Ob
3435
}
3536

3637
if (object instanceof Geometry) {
37-
final Spatial parent = NodeUtils.findParent((Spatial) object, 2);
38+
39+
final Spatial spatial = (Spatial) object;
40+
41+
Spatial parent = NodeUtils.findParent(spatial, 2);
42+
3843
final EditorLightNode lightNode = parent == null ? null : state.getLightNode(parent);
3944
if (lightNode != null) return lightNode;
45+
4046
final EditorAudioNode audioNode = parent == null ? null : state.getAudioNode(parent);
4147
if (audioNode != null) return audioNode;
48+
49+
parent = NodeUtils.findParent(spatial, p -> p.getUserData(LOADED_MODEL_KEY) == Boolean.TRUE);
50+
if (parent != null) return parent;
4251
}
4352

4453
if (object instanceof Spatial && !((Spatial) object).isVisible()) {

src/com/ss/editor/ui/component/editor/impl/scene/AbstractSceneFileEditor.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@
1414
import com.jme3.light.Light;
1515
import com.jme3.material.Material;
1616
import com.jme3.math.Vector3f;
17+
import com.jme3.renderer.Camera;
1718
import com.jme3.scene.Geometry;
1819
import com.jme3.scene.Node;
1920
import com.jme3.scene.Spatial;
2021
import com.ss.editor.FileExtensions;
2122
import com.ss.editor.Messages;
2223
import com.ss.editor.annotation.FXThread;
2324
import com.ss.editor.annotation.FromAnyThread;
25+
import com.ss.editor.control.transform.SceneEditorControl;
2426
import com.ss.editor.control.transform.SceneEditorControl.TransformType;
2527
import com.ss.editor.manager.WorkspaceManager;
2628
import com.ss.editor.model.undo.EditorOperation;
@@ -584,22 +586,34 @@ public void selectNodeFromTree(@Nullable final Object object) {
584586

585587
updateSelection(spatial);
586588

587-
if (spatial != null && !isIgnoreCameraMove()) {
589+
if (spatial != null && !isIgnoreCameraMove() && !isVisibleOnEditor(spatial)) {
588590
editorAppState.moveCameraTo(spatial.getWorldTranslation());
589591
}
590592

591593
final ModelPropertyEditor modelPropertyEditor = getModelPropertyEditor();
592594
modelPropertyEditor.buildFor(element, parent);
593595
}
594596

597+
protected boolean isVisibleOnEditor(@NotNull final Spatial spatial) {
598+
599+
final Camera camera = EDITOR.getCamera();
600+
601+
final Vector3f position = spatial.getWorldTranslation();
602+
final Vector3f coordinates = camera.getScreenCoordinates(position, new Vector3f());
603+
604+
boolean invisible = coordinates.getZ() < 0;
605+
invisible = invisible || !isInside(coordinates.getX(), camera.getHeight() - coordinates.getY());
606+
607+
return !invisible;
608+
}
609+
595610
/**
596611
* Update selection to 3D state.
597612
*
598613
* @param spatial the new selected object.
599614
*/
600615
protected void updateSelection(@Nullable final Spatial spatial) {
601616

602-
//FIXME
603617
final Array<Spatial> selection = ArrayFactory.newArray(Spatial.class);
604618
if (spatial != null) selection.add(spatial);
605619

@@ -826,6 +840,7 @@ protected void dragDropped(@NotNull final DragEvent dragEvent) {
826840
EXECUTOR_MANAGER.addEditorThreadTask(() -> {
827841

828842
final Spatial loadedModel = assetManager.loadModel(modelKey);
843+
loadedModel.setUserData(SceneEditorControl.LOADED_MODEL_KEY, true);
829844
loadedModel.setLocalTranslation(editorAppState.getCurrentCursorPosOnScene(sceneX, sceneY));
830845

831846
execute(new AddChildOperation(loadedModel, (Node) currentModel));

src/com/ss/editor/ui/control/model/property/builder/impl/SpatialPropertyBuilder.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.jme3.scene.Spatial;
1010
import com.jme3.scene.Spatial.CullHint;
1111
import com.ss.editor.Messages;
12+
import com.ss.editor.control.transform.SceneEditorControl;
1213
import com.ss.editor.model.undo.editor.ModelChangeConsumer;
1314
import com.ss.editor.model.undo.editor.SceneChangeConsumer;
1415
import com.ss.editor.ui.control.model.property.control.BooleanModelPropertyControl;
@@ -140,6 +141,7 @@ protected void buildForImpl(@NotNull final Object object, @Nullable final Object
140141

141142
for (final String key : sortedKeys) {
142143
if (SceneLayer.KEY.equals(key)) continue;
144+
if (SceneEditorControl.LOADED_MODEL_KEY.equals(key)) continue;
143145

144146
final Object data = spatial.getUserData(key);
145147

src/com/ss/editor/ui/control/tree/AbstractNodeTree.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ public void notifyAdded(@Nullable final ModelNode<?> parent, @Nullable final Mod
353353
parentItem.setExpanded(true);
354354
parent.notifyChildAdded(child);
355355

356-
fill(childItem, true, -1);
356+
fill(childItem, false, -1);
357357
}
358358

359359
/**

0 commit comments

Comments
 (0)