Skip to content

Commit 2580cc7

Browse files
committed
implemented painting textures on terrain only when selected terrain node.
1 parent f298216 commit 2580cc7

File tree

2 files changed

+150
-77
lines changed

2 files changed

+150
-77
lines changed

src/main/java/com/ss/editor/ui/component/painting/terrain/TerrainPaintingComponent.java

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import com.ss.rlib.util.dictionary.DictionaryFactory;
3434
import com.ss.rlib.util.dictionary.ObjectDictionary;
3535
import javafx.collections.ObservableList;
36-
import javafx.event.ActionEvent;
3736
import javafx.geometry.Insets;
3837
import javafx.geometry.Pos;
3938
import javafx.scene.control.CheckBox;
@@ -538,22 +537,22 @@ protected void createComponents() {
538537
super.createComponents();
539538

540539
raiseLowerButton = new ToggleButton(StringUtils.EMPTY, new ImageView(Icons.TERRAIN_UP_32));
541-
raiseLowerButton.setOnAction(this::switchMode);
540+
raiseLowerButton.setOnAction(event -> switchMode((ToggleButton) event.getSource()));
542541

543542
smoothButton = new ToggleButton(StringUtils.EMPTY, new ImageView(Icons.TERRAIN_SMOOTH_32));
544-
smoothButton.setOnAction(this::switchMode);
543+
smoothButton.setOnAction(event -> switchMode((ToggleButton) event.getSource()));
545544

546545
roughButton = new ToggleButton(StringUtils.EMPTY, new ImageView(Icons.TERRAIN_ROUGH_32));
547-
roughButton.setOnAction(this::switchMode);
546+
roughButton.setOnAction(event -> switchMode((ToggleButton) event.getSource()));
548547

549548
levelButton = new ToggleButton(StringUtils.EMPTY, new ImageView(Icons.TERRAIN_LEVEL_32));
550-
levelButton.setOnAction(this::switchMode);
549+
levelButton.setOnAction(event -> switchMode((ToggleButton) event.getSource()));
551550

552551
slopeButton = new ToggleButton(StringUtils.EMPTY, new ImageView(Icons.TERRAIN_SLOPE_32));
553-
slopeButton.setOnAction(this::switchMode);
552+
slopeButton.setOnAction(event -> switchMode((ToggleButton) event.getSource()));
554553

555554
paintButton = new ToggleButton(StringUtils.EMPTY, new ImageView(Icons.TERRAIN_PAINT_32));
556-
paintButton.setOnAction(this::switchMode);
555+
paintButton.setOnAction(event -> switchMode((ToggleButton) event.getSource()));
557556

558557
final GridPane buttonsContainer = new GridPane();
559558
buttonsContainer.setAlignment(Pos.CENTER);
@@ -1133,9 +1132,7 @@ private void changeBrushPower(@NotNull final Float power) {
11331132
* Switch editing mode.
11341133
*/
11351134
@FxThread
1136-
private void switchMode(@NotNull final ActionEvent event) {
1137-
1138-
final ToggleButton source = (ToggleButton) event.getSource();
1135+
private void switchMode(@NotNull final ToggleButton source) {
11391136

11401137
if (!source.isSelected()) {
11411138
source.setSelected(true);
@@ -1161,7 +1158,9 @@ private void switchMode(@NotNull final ActionEvent event) {
11611158

11621159
setToolControl(toolControl);
11631160

1164-
if (!isShowed()) return;
1161+
if (!isShowed()) {
1162+
return;
1163+
}
11651164

11661165
EXECUTOR_MANAGER.addJmeTask(() -> {
11671166
final Node cursorNode = getCursorNode();
@@ -1175,23 +1174,42 @@ private void switchMode(@NotNull final ActionEvent event) {
11751174
public void startPainting(@NotNull final Object object) {
11761175
super.startPainting(object);
11771176

1177+
refreshProperties();
1178+
11781179
final TextureLayerSettings settings = getTextureLayerSettings();
1180+
final ToggleButton paintButton = getPaintButton();
11791181

1180-
final Terrain terrain = (Terrain) object;
1181-
final Material material = terrain.getMaterial();
1182-
final MaterialDef materialDef = material.getMaterialDef();
1182+
if (object instanceof Terrain) {
11831183

1184-
if (materialDef.getAssetName().equals("Common/MatDefs/Terrain/TerrainLighting.j3md")) {
1185-
settings.setLayerToScaleName(LAYER_TO_SCALE_NAME);
1186-
settings.setLayerToAlphaName(LAYER_TO_ALPHA_NAME);
1187-
settings.setLayerToDiffuseName(LAYER_TO_DIFFUSE_NAME);
1188-
settings.setLayerToNormalName(LAYER_TO_NORMAL_NAME);
1189-
settings.setMaxLevels(12);
1190-
}
1184+
final Terrain terrain = (Terrain) object;
1185+
final Material material = terrain.getMaterial();
1186+
final MaterialDef materialDef = material.getMaterialDef();
11911187

1192-
refreshProperties();
1188+
if (materialDef.getAssetName().equals("Common/MatDefs/Terrain/TerrainLighting.j3md")) {
1189+
settings.setLayerToScaleName(LAYER_TO_SCALE_NAME);
1190+
settings.setLayerToAlphaName(LAYER_TO_ALPHA_NAME);
1191+
settings.setLayerToDiffuseName(LAYER_TO_DIFFUSE_NAME);
1192+
settings.setLayerToNormalName(LAYER_TO_NORMAL_NAME);
1193+
settings.setMaxLevels(12);
1194+
}
11931195

1194-
settings.refresh();
1196+
settings.refresh();
1197+
settings.setVisible(true);
1198+
paintButton.setVisible(true);
1199+
1200+
} else {
1201+
1202+
settings.setVisible(false);
1203+
paintButton.setVisible(false);
1204+
1205+
if (paintButton.isSelected()) {
1206+
1207+
final ToggleButton raiseLowerButton = getRaiseLowerButton();
1208+
raiseLowerButton.setSelected(true);
1209+
1210+
switchMode(raiseLowerButton);
1211+
}
1212+
}
11951213
}
11961214

11971215
/**

0 commit comments

Comments
 (0)