浏览代码

Deprecated light node - #1033 (#1042)

* Deprecated light node

* Deleted TestLightNode

* Cleanup of this... mess.

* Removed LightNode usage from TestManyLightsSingle.java

* TestConeVSFrustum: use LightControl, revert some non-essential changes

* TestManyLightsSingle: revert a non-essential change

Co-authored-by: Stephen Gold <[email protected]>
grizeldi 4 年之前
父节点
当前提交
2c91e14c8b

+ 2 - 0
jme3-core/src/main/java/com/jme3/scene/LightNode.java

@@ -44,7 +44,9 @@ import java.io.IOException;
  * with a {@link Node} object.
  *
  * @author Tim8Dev
+ * @deprecated Use a {@link LightControl} attached to a {@link Node} directly.
  */
+@Deprecated
 public class LightNode extends Node {
 
     private LightControl lightControl;

+ 6 - 2
jme3-examples/src/main/java/jme3test/light/TestConeVSFrustum.java

@@ -47,9 +47,9 @@ import com.jme3.material.Material;
 import com.jme3.math.*;
 import com.jme3.renderer.Camera;
 import com.jme3.scene.Geometry;
-import com.jme3.scene.LightNode;
 import com.jme3.scene.Node;
 import com.jme3.scene.Spatial;
+import com.jme3.scene.control.LightControl;
 import com.jme3.scene.debug.Grid;
 import com.jme3.scene.debug.WireFrustum;
 import com.jme3.scene.shape.Box;
@@ -108,8 +108,12 @@ public class TestConeVSFrustum extends SimpleApplication {
         geom.getMaterial().setColor("Diffuse", ColorRGBA.White);
         geom.getMaterial().setColor("Ambient", ColorRGBA.DarkGray);
         geom.getMaterial().setBoolean("UseMaterialColors", true);
-        final LightNode ln = new LightNode("lb", spotLight);
+
+        final Node ln = new Node("lb");
+        LightControl lightControl = new LightControl(spotLight);
+        ln.addControl(lightControl);
         ln.attachChild(geom);
+
         geom.setLocalTranslation(0, -spotLight.getSpotRange() / 2f, 0);
         geom.rotate(-FastMath.HALF_PI, 0, 0);
         rootNode.attachChild(ln);

+ 0 - 111
jme3-examples/src/main/java/jme3test/light/TestLightNode.java

@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2009-2021 jMonkeyEngine
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
- *   may be used to endorse or promote products derived from this software
- *   without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package jme3test.light;
-
-import com.jme3.app.SimpleApplication;
-import com.jme3.light.DirectionalLight;
-import com.jme3.light.PointLight;
-import com.jme3.material.Material;
-import com.jme3.math.ColorRGBA;
-import com.jme3.math.FastMath;
-import com.jme3.math.Vector3f;
-import com.jme3.scene.Geometry;
-import com.jme3.scene.LightNode;
-import com.jme3.scene.Node;
-import com.jme3.scene.shape.Sphere;
-import com.jme3.scene.shape.Torus;
-
-public class TestLightNode extends SimpleApplication {
-
-    private float angle;
-    private Node movingNode;
-
-    public static void main(String[] args){
-        TestLightNode app = new TestLightNode();
-        app.start();
-    }
-
-    @Override
-    public void simpleInitApp() {
-        Torus torus = new Torus(10, 6, 1, 3);
-//        Torus torus = new Torus(50, 30, 1, 3);
-        Geometry g = new Geometry("Torus Geom", torus);
-        g.rotate(-FastMath.HALF_PI, 0, 0);
-        g.center();
-//        g.move(0, 1, 0);
-        
-        Material mat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
-        mat.setFloat("Shininess", 32f);
-        mat.setBoolean("UseMaterialColors", true);
-        mat.setColor("Ambient",  ColorRGBA.Black);
-        mat.setColor("Diffuse",  ColorRGBA.White);
-        mat.setColor("Specular", ColorRGBA.White);
-//        mat.setBoolean("VertexLighting", true);
-//        mat.setBoolean("LowQuality", true);
-        g.setMaterial(mat);
-
-        rootNode.attachChild(g);
-
-        Geometry lightMdl = new Geometry("Light", new Sphere(10, 10, 0.1f));
-        lightMdl.setMaterial(assetManager.loadMaterial("Common/Materials/RedColor.j3m"));
-        
-        movingNode=new Node("lightParentNode");
-        movingNode.attachChild(lightMdl);  
-        rootNode.attachChild(movingNode);
-
-        PointLight pl = new PointLight();
-        pl.setColor(ColorRGBA.Green);
-        pl.setRadius(4f);
-        rootNode.addLight(pl);
-        
-        LightNode lightNode=new LightNode("pointLight", pl);
-        movingNode.attachChild(lightNode);
-
-        DirectionalLight dl = new DirectionalLight();
-        dl.setColor(ColorRGBA.Red);
-        dl.setDirection(new Vector3f(0, 1, 0));
-        rootNode.addLight(dl);
-    }
-
-    @Override
-    public void simpleUpdate(float tpf){
-//        cam.setLocation(new Vector3f(5.0347548f, 6.6481347f, 3.74853f));
-//        cam.setRotation(new Quaternion(-0.19183293f, 0.80776674f, -0.37974006f, -0.40805697f));
-
-        angle += tpf;
-        angle %= FastMath.TWO_PI;
-
-        movingNode.setLocalTranslation(new Vector3f(FastMath.cos(angle) * 3f, 2, FastMath.sin(angle) * 3f));
-    }
-
-}

+ 1 - 10
jme3-examples/src/main/java/jme3test/light/TestManyLightsSingle.java

@@ -52,7 +52,6 @@ import com.jme3.math.Vector3f;
 import com.jme3.renderer.RenderManager;
 import com.jme3.renderer.ViewPort;
 import com.jme3.scene.Geometry;
-import com.jme3.scene.LightNode;
 import com.jme3.scene.Node;
 import com.jme3.scene.Spatial;
 import com.jme3.scene.control.AbstractControl;
@@ -105,27 +104,19 @@ public class TestManyLightsSingle extends SimpleApplication {
             if (nb > 60) {
                 n.removeLight(light);
             } else {
-
-                LightNode ln = new LightNode("l", light);
-                n.attachChild(ln);
-                ln.setLocalTranslation(p.getPosition());
                 int rand = FastMath.nextRandomInt(0, 3);
                 switch (rand) {
                     case 0:
                         light.setColor(ColorRGBA.Red);
-                        //   ln.addControl(new MoveControl(5f));
                         break;
                     case 1:
                         light.setColor(ColorRGBA.Yellow);
-                        //    ln.addControl(new MoveControl(5f));
                         break;
                     case 2:
                         light.setColor(ColorRGBA.Green);
-                        //ln.addControl(new MoveControl(-5f));
                         break;
                     case 3:
                         light.setColor(ColorRGBA.Orange);
-                        //ln.addControl(new MoveControl(-5f));
                         break;
                 }
             }
@@ -278,4 +269,4 @@ public class TestManyLightsSingle extends SimpleApplication {
         protected void controlRender(RenderManager rm, ViewPort vp) {
         }
     }
-}
+}