Skip to content

Commit 781f6ac

Browse files
Hide extra settings behind "Advanced" checkbox in materials & "Enable emitters" in lighting
1 parent 6d813a9 commit 781f6ac

3 files changed

Lines changed: 52 additions & 18 deletions

File tree

chunky/src/java/se/llbit/chunky/ui/render/tabs/LightingTab.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import javafx.scene.control.*;
2626
import javafx.scene.control.Alert.AlertType;
2727
import javafx.scene.control.ButtonBar.ButtonData;
28+
import javafx.scene.layout.VBox;
2829
import javafx.scene.paint.Color;
2930
import se.llbit.chunky.renderer.EmitterMappingType;
3031
import se.llbit.chunky.renderer.EmitterSamplingStrategy;
@@ -53,6 +54,7 @@ public class LightingTab extends ScrollPane implements RenderControlsTab, Initia
5354
@FXML private DoubleAdjuster skyIntensity;
5455
@FXML private DoubleAdjuster apparentSkyBrightness;
5556
@FXML private DoubleAdjuster emitterIntensity;
57+
@FXML private VBox emitterSettings;
5658
@FXML private ComboBox<EmitterMappingType> emitterMappingType;
5759
@FXML private DoubleAdjuster emitterMappingExponent;
5860
@FXML private DoubleAdjuster sunIntensity;
@@ -104,7 +106,21 @@ public LightingTab() throws IOException {
104106

105107
enableEmitters.setTooltip(new Tooltip("Allow blocks to emit light based on their material settings."));
106108
enableEmitters.selectedProperty().addListener(
107-
(observable, oldValue, newValue) -> scene.setEmittersEnabled(newValue));
109+
(observable, oldValue, newValue) -> {
110+
scene.setEmittersEnabled(newValue);
111+
emitterSettings.setVisible(newValue);
112+
emitterSettings.setManaged(newValue);
113+
});
114+
boolean showEmitterSettings = scene != null && scene.getEmittersEnabled();
115+
emitterSettings.setVisible(showEmitterSettings);
116+
emitterSettings.setManaged(showEmitterSettings);
117+
118+
// fancierTranslucency.selectedProperty()
119+
// .addListener((observable, oldValue, newValue) -> {
120+
// scene.setFancierTranslucency(newValue);
121+
// transmissivityCap.setVisible(newValue);
122+
// transmissivityCap.setManaged(newValue);
123+
// });
108124

109125
emitterIntensity.setName("Emitter intensity");
110126
emitterIntensity.setTooltip("Modifies the intensity of emitter light.");

chunky/src/java/se/llbit/chunky/ui/render/tabs/MaterialsTab.java

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ public class MaterialsTab extends HBox implements RenderControlsTab, Initializab
5757
private final DoubleAdjuster ior = new DoubleAdjuster();
5858
private final DoubleAdjuster perceptualSmoothness = new DoubleAdjuster();
5959
private final DoubleAdjuster metalness = new DoubleAdjuster();
60+
private final CheckBox advanced = new CheckBox();
61+
private final VBox advancedSettings = new VBox();
6062
private final ListView<String> listView;
6163

6264
public MaterialsTab() {
@@ -80,6 +82,20 @@ public MaterialsTab() {
8082
metalness.setName("Metalness");
8183
metalness.setRange(0, 1);
8284
metalness.setTooltip("Metalness (texture-tinted reflectivity) of the selected material.");
85+
advanced.setText("Advanced settings");
86+
advanced.setTooltip(new Tooltip("Show advanced settings"));
87+
advanced.selectedProperty().addListener((observable, oldValue, newValue) -> {
88+
advancedSettings.setVisible(newValue);
89+
advancedSettings.setManaged(newValue);
90+
});
91+
HBox emt = new HBox();
92+
emt.setSpacing(10);
93+
emt.setAlignment(Pos.CENTER_LEFT);
94+
emt.getChildren().addAll(new Label("Emitter mapping type:"), emitterMappingType);
95+
advancedSettings.setSpacing(10);
96+
advancedSettings.getChildren().addAll(emitterMappingOffset, emt);
97+
advancedSettings.setVisible(false);
98+
advancedSettings.setManaged(false);
8399
ObservableList<String> blockIds = FXCollections.observableArrayList();
84100
blockIds.addAll(MaterialStore.collections.keySet());
85101
blockIds.addAll(ExtraMaterials.idMap.keySet());
@@ -91,16 +107,14 @@ public MaterialsTab() {
91107
listView.getSelectionModel().selectedItemProperty().addListener(
92108
(observable, oldValue, materialName) -> updateSelectedMaterial(materialName)
93109
);
94-
HBox emt = new HBox();
95-
emt.setSpacing(10);
96-
emt.setAlignment(Pos.CENTER_LEFT);
97-
emt.getChildren().addAll(new Label("Emitter mapping type:"), emitterMappingType);
98110
VBox settings = new VBox();
99111
settings.setSpacing(10);
100112
settings.getChildren().addAll(
101113
new Label("Material Properties"),
102-
emittance, emitterMappingOffset, emt, specular, perceptualSmoothness, ior, metalness,
103-
new Label("(set to zero to disable)"));
114+
emittance, specular, perceptualSmoothness, ior, metalness,
115+
new Label("(set to zero to disable)"),
116+
advanced, advancedSettings
117+
);
104118
setPadding(new Insets(10));
105119
setSpacing(15);
106120
TextField filterField = new TextField();
@@ -176,7 +190,9 @@ private void updateSelectedMaterial(String materialName) {
176190
materialExists = true;
177191
}
178192
if (materialExists) {
179-
emittance.onValueChange(value -> scene.setEmittance(materialName, value.floatValue()));
193+
emittance.onValueChange(value -> {
194+
scene.setEmittance(materialName, value.floatValue());
195+
});
180196
emitterMappingOffset.onValueChange(value -> scene.setEmitterMappingOffset(materialName, value.floatValue()));
181197
emtListener = (observable, oldValue, newValue) -> scene.setEmitterMappingTypeOverride(materialName, newValue);
182198
emitterMappingType.getSelectionModel().selectedItemProperty().addListener(emtListener);

chunky/src/res/se/llbit/chunky/ui/render/tabs/LightingTab.fxml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,18 @@
2020
<DoubleAdjuster fx:id="apparentSkyBrightness" maxWidth="1.7976931348623157E308" />
2121
<Separator />
2222
<CheckBox fx:id="enableEmitters" mnemonicParsing="false" text="Enable emitters" />
23-
<DoubleAdjuster fx:id="emitterIntensity" maxWidth="1.7976931348623157E308" />
24-
<HBox alignment="CENTER_LEFT" spacing="10.0">
25-
<Label text="Emitter mapping type:" />
26-
<ComboBox fx:id="emitterMappingType" />
27-
</HBox>
28-
<DoubleAdjuster fx:id="emitterMappingExponent" maxWidth="1.7976931348623157E308" />
29-
<HBox alignment="CENTER_LEFT" spacing="10.0">
30-
<Label text="Emitter sampling strategy:" />
31-
<ChoiceBox fx:id="emitterSamplingStrategy" />
32-
</HBox>
23+
<VBox fx:id="emitterSettings" spacing="10.0">
24+
<DoubleAdjuster fx:id="emitterIntensity" maxWidth="1.7976931348623157E308" />
25+
<HBox alignment="CENTER_LEFT" spacing="10.0">
26+
<Label text="Emitter mapping type:" />
27+
<ComboBox fx:id="emitterMappingType" />
28+
</HBox>
29+
<DoubleAdjuster fx:id="emitterMappingExponent" maxWidth="1.7976931348623157E308" />
30+
<HBox alignment="CENTER_LEFT" spacing="10.0">
31+
<Label text="Emitter sampling strategy:" />
32+
<ChoiceBox fx:id="emitterSamplingStrategy" />
33+
</HBox>
34+
</VBox>
3335
<Separator />
3436
<CheckBox fx:id="drawSun" mnemonicParsing="false" text="Draw sun" />
3537
<HBox alignment="CENTER_LEFT" spacing="10.0">

0 commit comments

Comments
 (0)