Skip to content

Commit 7dd8693

Browse files
authored
Merge branch 'jMonkeyEngine:master' into master
2 parents f25ce69 + 951b430 commit 7dd8693

File tree

61 files changed

+2615
-555
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+2615
-555
lines changed

.github/workflows/format.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
jobs:
66
format:
77
runs-on: ubuntu-latest
8-
if: github.repository != 'jMonkeyEngine/jmonkeyengine'
8+
if: ${{ false }}
99
steps:
1010
- name: Checkout
1111
uses: actions/checkout@v4

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,5 @@ appveyor.yml
4848
javadoc_deploy
4949
javadoc_deploy.pub
5050
!.vscode/settings.json
51-
!.vscode/JME_style.xml
51+
!.vscode/JME_style.xml
52+
!.vscode/extensions.json

.vscode/extensions.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"recommendations": [
3+
"vscjava.vscode-java-pack",
4+
"slevesque.shader"
5+
]
6+
}

.vscode/settings.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
{
22
"java.configuration.updateBuildConfiguration": "automatic",
3+
"java.compile.nullAnalysis.mode": "automatic",
34
"java.refactor.renameFromFileExplorer": "prompt",
45
"java.format.settings.url": "./.vscode/JME_style.xml",
56
"editor.formatOnPaste": true,
6-
"editor.formatOnType": true
7+
"editor.formatOnType": false,
8+
"editor.formatOnSave": true,
9+
"editor.formatOnSaveMode": "modifications" ,
10+
11+
"prettier.tabWidth": 4,
12+
"prettier.printWidth": 110,
13+
"prettier.enable": true,
14+
"prettier.resolveGlobalModules": true
715
}

common.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ tasks.withType(JavaCompile) { // compile-time options:
2828
}
2929

3030
ext {
31-
lwjgl3Version = '3.3.2' // used in both the jme3-lwjgl3 and jme3-vr build scripts
31+
lwjgl3Version = '3.3.3' // used in both the jme3-lwjgl3 and jme3-vr build scripts
3232
niftyVersion = '1.4.3' // used in both the jme3-niftygui and jme3-examples build scripts
3333
}
3434

gradle/wrapper/gradle-wrapper.jar

50 Bytes
Binary file not shown.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-bin.zip
44
networkTimeout=10000
55
zipStoreBase=GRADLE_USER_HOME
66
zipStorePath=wrapper/dists

jme3-core/src/main/java/com/jme3/export/FormatVersion.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,16 @@
3939
public final class FormatVersion {
4040

4141
/**
42-
* Version number of the format
42+
* Version number of the format.
43+
* <p>
44+
* Changes for each version:
45+
* <ol>
46+
* <li>Undocumented
47+
* <li>Undocumented
48+
* <li>XML prefixes "jme-" to all key names
49+
* </ol>
4350
*/
44-
public static final int VERSION = 2;
51+
public static final int VERSION = 3;
4552

4653
/**
4754
* Signature of the format: currently, "JME3" as ASCII.

jme3-core/src/main/java/com/jme3/input/FlyByCamera.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2009-2021 jMonkeyEngine
2+
* Copyright (c) 2009-2023 jMonkeyEngine
33
* All rights reserved.
44
*
55
* Redistribution and use in source and binary forms, with or without
@@ -383,9 +383,24 @@ protected void rotateCamera(float value, Vector3f axis) {
383383
* @param value zoom amount
384384
*/
385385
protected void zoomCamera(float value) {
386-
float newFov = cam.getFov() + value * 0.1F * zoomSpeed;
387-
if (newFov > 0) {
388-
cam.setFov(newFov);
386+
if (cam.isParallelProjection()) {
387+
float zoomFactor = 1.0F + value * 0.01F * zoomSpeed;
388+
if (zoomFactor > 0F) {
389+
float left = zoomFactor * cam.getFrustumLeft();
390+
float right = zoomFactor * cam.getFrustumRight();
391+
float top = zoomFactor * cam.getFrustumTop();
392+
float bottom = zoomFactor * cam.getFrustumBottom();
393+
394+
float near = cam.getFrustumNear();
395+
float far = cam.getFrustumFar();
396+
cam.setFrustum(near, far, left, right, top, bottom);
397+
}
398+
399+
} else { // perspective projection
400+
float newFov = cam.getFov() + value * 0.1F * zoomSpeed;
401+
if (newFov > 0) {
402+
cam.setFov(newFov);
403+
}
389404
}
390405
}
391406

jme3-core/src/main/java/com/jme3/material/Material.java

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -890,16 +890,37 @@ private boolean isBO(final VarType type) {
890890
return type == VarType.BufferObject;
891891
}
892892

893-
private void updateRenderState(RenderManager renderManager, Renderer renderer, TechniqueDef techniqueDef) {
893+
private void updateRenderState(Geometry geometry, RenderManager renderManager, Renderer renderer, TechniqueDef techniqueDef) {
894894
if (renderManager.getForcedRenderState() != null) {
895-
renderer.applyRenderState(renderManager.getForcedRenderState());
895+
mergedRenderState.copyFrom(renderManager.getForcedRenderState());
896+
} else if (techniqueDef.getRenderState() != null) {
897+
mergedRenderState.copyFrom(RenderState.DEFAULT);
898+
techniqueDef.getRenderState().copyMergedTo(additionalState, mergedRenderState);
896899
} else {
897-
if (techniqueDef.getRenderState() != null) {
898-
renderer.applyRenderState(techniqueDef.getRenderState().copyMergedTo(additionalState, mergedRenderState));
899-
} else {
900-
renderer.applyRenderState(RenderState.DEFAULT.copyMergedTo(additionalState, mergedRenderState));
901-
}
900+
mergedRenderState.copyFrom(RenderState.DEFAULT);
901+
RenderState.DEFAULT.copyMergedTo(additionalState, mergedRenderState);
902902
}
903+
// test if the face cull mode should be flipped before render
904+
if (mergedRenderState.isFaceCullFlippable() && isNormalsBackward(geometry.getWorldScale())) {
905+
mergedRenderState.flipFaceCull();
906+
}
907+
renderer.applyRenderState(mergedRenderState);
908+
}
909+
910+
/**
911+
* Returns true if the geometry world scale indicates that normals will be backward.
912+
* @param scalar geometry world scale
913+
* @return
914+
*/
915+
private boolean isNormalsBackward(Vector3f scalar) {
916+
// count number of negative scalar vector components
917+
int n = 0;
918+
if (scalar.x < 0) n++;
919+
if (scalar.y < 0) n++;
920+
if (scalar.z < 0) n++;
921+
// An odd number of negative components means the normal vectors
922+
// are backward to what they should be.
923+
return n == 1 || n == 3;
903924
}
904925

905926
/**
@@ -1028,7 +1049,7 @@ public void render(Geometry geometry, LightList lights, RenderManager renderMana
10281049
}
10291050

10301051
// Apply render state
1031-
updateRenderState(renderManager, renderer, techniqueDef);
1052+
updateRenderState(geometry, renderManager, renderer, techniqueDef);
10321053

10331054
// Get world overrides
10341055
SafeArrayList<MatParamOverride> overrides = geometry.getWorldMatParamOverrides();

0 commit comments

Comments
 (0)