Skip to content

Commit e80e198

Browse files
authored
jme3-examples: add the TestIssue2209 class (#2214)
1 parent 88d94b7 commit e80e198

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/*
2+
* Copyright (c) 2024 jMonkeyEngine
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions are
7+
* met:
8+
*
9+
* * Redistributions of source code must retain the above copyright
10+
* notice, this list of conditions and the following disclaimer.
11+
*
12+
* * Redistributions in binary form must reproduce the above copyright
13+
* notice, this list of conditions and the following disclaimer in the
14+
* documentation and/or other materials provided with the distribution.
15+
*
16+
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
17+
* may be used to endorse or promote products derived from this software
18+
* without specific prior written permission.
19+
*
20+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22+
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23+
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26+
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28+
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29+
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31+
*/
32+
package jme3test.light;
33+
34+
import com.jme3.app.SimpleApplication;
35+
import com.jme3.light.DirectionalLight;
36+
import com.jme3.renderer.queue.RenderQueue;
37+
import com.jme3.scene.Node;
38+
import com.jme3.shadow.DirectionalLightShadowRenderer;
39+
import java.util.logging.Logger;
40+
import jme3test.bullet.TestIssue1125;
41+
42+
/**
43+
* Test case for JME issue #2209: AssertionError caused by shadow renderer.
44+
*
45+
* <p>For a valid test, assertions must be enabled.
46+
*
47+
* <p>If successful, the Oto model will appear. If unsuccessful, the application
48+
* with crash with an {@code AssertionError} in {@code GLRenderer}.
49+
*
50+
* @author Stephen Gold [email protected]
51+
*/
52+
public class TestIssue2209 extends SimpleApplication {
53+
/**
54+
* message logger for debugging this class
55+
*/
56+
final public static Logger logger
57+
= Logger.getLogger(TestIssue1125.class.getName());
58+
59+
/**
60+
* Main entry point for the TestIssue2209 application.
61+
*/
62+
public static void main(String[] args) {
63+
new TestIssue2209().start();
64+
}
65+
66+
/**
67+
* Initializes this application, adding Oto, a light, and a shadow renderer.
68+
*/
69+
@Override
70+
public void simpleInitApp() {
71+
if (!areAssertionsEnabled()) {
72+
throw new IllegalStateException(
73+
"For a valid test, assertions must be enabled.");
74+
}
75+
76+
DirectionalLight dl = new DirectionalLight();
77+
rootNode.addLight(dl);
78+
79+
DirectionalLightShadowRenderer dlsr
80+
= new DirectionalLightShadowRenderer(assetManager, 4_096, 3);
81+
dlsr.setLight(dl);
82+
viewPort.addProcessor(dlsr);
83+
84+
Node player = (Node) assetManager.loadModel("Models/Oto/Oto.mesh.xml");
85+
player.setShadowMode(RenderQueue.ShadowMode.Cast);
86+
rootNode.attachChild(player);
87+
}
88+
89+
/**
90+
* Tests whether assertions are enabled.
91+
*
92+
* @return true if enabled, otherwise false
93+
*/
94+
private static boolean areAssertionsEnabled() {
95+
boolean enabled = false;
96+
assert enabled = true; // Note: intentional side effect.
97+
98+
return enabled;
99+
}
100+
}

0 commit comments

Comments
 (0)