Skip to content

Commit

Permalink
Rename Skymap modes and fix scene loading issue (#1502)
Browse files Browse the repository at this point in the history
* Rename Skymap modes; fix scene loading issue

- Renamed `Skymap (panoramic)` to `Skymap (equirectangular)`.
- Renamed `Skymap (spherical)` to `Skymap (angular)`.
- Fixed failure to load an angular skymap of a saved scene.
- Retain backwards-compatibility with scenes saved in older versions of Chunky.

* Use just `.equals` instead of `Objects.equals`
  • Loading branch information
Peregrine05 authored Nov 25, 2022
1 parent 8facec8 commit c007e5b
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 17 deletions.
37 changes: 22 additions & 15 deletions chunky/src/java/se/llbit/chunky/renderer/scene/Sky.java
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,11 @@ public enum SkyMode {
/** Color gradient. */
GRADIENT("Color Gradient"),

/** Panormaic skymap. */
SKYMAP_PANORAMIC("Skymap (panoramic)"),
/** Equirectangular skymap. */
SKYMAP_EQUIRECTANGULAR("Skymap (equirectangular)"),

/** Light probe skymap. */
SKYMAP_SPHERICAL("Skymap (spherical)"),
/** Light probe (angular fisheye) skymap. */
SKYMAP_ANGULAR("Skymap (angular)"),

/** Skybox. */
SKYBOX("Skybox"),
Expand Down Expand Up @@ -196,8 +196,8 @@ public Sky(Scene sceneDescription) {
*/
public void loadSkymap() {
switch (mode) {
case SKYMAP_PANORAMIC:
case SKYMAP_SPHERICAL:
case SKYMAP_EQUIRECTANGULAR:
case SKYMAP_ANGULAR:
if (!skymapFileName.isEmpty()) {
loadSkymap(skymapFileName);
}
Expand Down Expand Up @@ -291,7 +291,7 @@ public void getSkyDiffuseColorInner(Ray ray) {
ray.color.set(color.x, color.y, color.z, 1);
break;
}
case SKYMAP_PANORAMIC: {
case SKYMAP_EQUIRECTANGULAR: {
double x = rotation.transformX(ray.d);
double y = rotation.transformY(ray.d);
double z = rotation.transformZ(ray.d);
Expand All @@ -311,7 +311,7 @@ public void getSkyDiffuseColorInner(Ray ray) {
}
break;
}
case SKYMAP_SPHERICAL: {
case SKYMAP_ANGULAR: {
double x = rotation.transformX(ray.d);
double y = rotation.transformY(ray.d);
double z = rotation.transformZ(ray.d);
Expand Down Expand Up @@ -381,7 +381,7 @@ public void getApparentSkyColor(Ray ray, boolean drawSun) {
*/
public void getSkyColorInterpolated(Ray ray) {
switch (mode) {
case SKYMAP_PANORAMIC: {
case SKYMAP_EQUIRECTANGULAR: {
double x = rotation.transformX(ray.d);
double y = rotation.transformY(ray.d);
double z = rotation.transformZ(ray.d);
Expand All @@ -400,7 +400,7 @@ public void getSkyColorInterpolated(Ray ray) {
}
break;
}
case SKYMAP_SPHERICAL: {
case SKYMAP_ANGULAR: {
double x = rotation.transformX(ray.d);
double y = rotation.transformY(ray.d);
double z = rotation.transformZ(ray.d);
Expand Down Expand Up @@ -566,7 +566,7 @@ public boolean isMirrored() {
public void setSkyMode(SkyMode newMode) {
if (this.mode != newMode) {
this.mode = newMode;
if (newMode != SkyMode.SKYMAP_PANORAMIC && newMode != SkyMode.SKYMAP_SPHERICAL) {
if (newMode != SkyMode.SKYMAP_EQUIRECTANGULAR && newMode != SkyMode.SKYMAP_ANGULAR) {
skymapFileName = "";
skymap = Texture.EMPTY_TEXTURE;
}
Expand Down Expand Up @@ -645,8 +645,8 @@ public void setSkyCacheResolution(int resolution) {
sky.add("color", colorObj);

switch (mode) {
case SKYMAP_PANORAMIC:
case SKYMAP_SPHERICAL: {
case SKYMAP_EQUIRECTANGULAR:
case SKYMAP_ANGULAR: {
if (!skymap.isEmptyTexture()) {
sky.add("skymap", skymapFileName);
}
Expand Down Expand Up @@ -685,7 +685,13 @@ public void importFromJson(JsonObject json) {
skyExposure = json.get("skyExposure").doubleValue(skyExposure);
skyLightModifier = json.get("skyLight").doubleValue(skyLightModifier);
apparentSkyLightModifier = json.get("apparentSkyLight").doubleValue(apparentSkyLightModifier);
mode = SkyMode.get(json.get("mode").stringValue(mode.name()));
if (!(json.get("mode").stringValue(mode.name()).equals("SKYMAP_PANORAMIC") || json.get("mode").stringValue(mode.name()).equals("SKYMAP_SPHERICAL"))) {
mode = SkyMode.get(json.get("mode").stringValue(mode.name()));
} else if (json.get("mode").stringValue(mode.name()).equals("SKYMAP_PANORAMIC")) {
mode = SkyMode.SKYMAP_EQUIRECTANGULAR;
} else if (json.get("mode").stringValue(mode.name()).equals("SKYMAP_SPHERICAL")) {
mode = SkyMode.SKYMAP_ANGULAR;
}
horizonOffset = json.get("horizonOffset").doubleValue(horizonOffset);
cloudsEnabled = json.get("cloudsEnabled").boolValue(cloudsEnabled);
cloudSize = json.get("cloudSize").doubleValue(cloudSize);
Expand All @@ -711,7 +717,8 @@ public void importFromJson(JsonObject json) {
}

switch (mode) {
case SKYMAP_PANORAMIC: {
case SKYMAP_EQUIRECTANGULAR:
case SKYMAP_ANGULAR: {
skymapFileName = json.get("skymap").stringValue(skymapFileName);
if (skymapFileName.isEmpty()) {
skymapFileName = json.get("skymapFileName").stringValue(skymapFileName);
Expand Down
4 changes: 2 additions & 2 deletions chunky/src/java/se/llbit/chunky/ui/render/tabs/SkyTab.java
Original file line number Diff line number Diff line change
Expand Up @@ -181,11 +181,11 @@ public SimulatedSky fromString(String string) {
case SKYBOX:
skyModeSettings.getChildren().setAll(skyboxSettings);
break;
case SKYMAP_PANORAMIC:
case SKYMAP_EQUIRECTANGULAR:
skyModeSettings.getChildren().setAll(skymapSettings);
skymapSettings.setPanoramic(true);
break;
case SKYMAP_SPHERICAL:
case SKYMAP_ANGULAR:
skyModeSettings.getChildren().setAll(skymapSettings);
skymapSettings.setPanoramic(false);
break;
Expand Down

0 comments on commit c007e5b

Please sign in to comment.