Skip to content

Commit e97f2bd

Browse files
authored
Merge pull request #576 from neph1/Issue_575
add cylinder to New Geometry options
2 parents dc07c34 + 8890c8b commit e97f2bd

File tree

7 files changed

+590
-19
lines changed

7 files changed

+590
-19
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*
2+
* Copyright (c) 2009-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 com.jme3.gde.core.sceneexplorer.nodes.actions.impl;
33+
34+
import com.jme3.gde.core.sceneexplorer.nodes.actions.AbstractNewSpatialAction;
35+
import com.jme3.gde.core.sceneexplorer.nodes.actions.NewGeometryAction;
36+
import com.jme3.gde.core.sceneexplorer.nodes.primitives.CreateCylinderPanel;
37+
import com.jme3.scene.Geometry;
38+
import com.jme3.scene.Node;
39+
import com.jme3.scene.Spatial;
40+
import com.jme3.scene.shape.Cylinder;
41+
import org.openide.DialogDescriptor;
42+
import org.openide.DialogDisplayer;
43+
import org.openide.NotifyDescriptor;
44+
45+
/**
46+
* Action to create a new primitive (Cylinder)
47+
*
48+
* @author neph1
49+
*/
50+
@org.openide.util.lookup.ServiceProvider(service = NewGeometryAction.class)
51+
public class NewGeometryCylinderAction extends AbstractNewSpatialAction implements NewGeometryAction {
52+
53+
CreateCylinderPanel form;
54+
55+
public NewGeometryCylinderAction() {
56+
name = "Cylinder";
57+
form = new CreateCylinderPanel();
58+
}
59+
60+
@Override
61+
protected Spatial doCreateSpatial(Node parent) {
62+
Cylinder cylinder = new Cylinder(form.getZSamples(), form.getRadialSamples(), form.getRadius(), form.getCylinderHeight(), form.isClosed(), form.isInverted());
63+
Geometry geom = form.getNewGeomPanel().handleGeometry(pm, cylinder);
64+
return geom;
65+
}
66+
67+
@Override
68+
protected boolean prepareCreateSpatial() {
69+
String msg = "Create new Cylinder";
70+
DialogDescriptor dd = new DialogDescriptor(form, msg);
71+
Object result = DialogDisplayer.getDefault().notify(dd);
72+
return (result == NotifyDescriptor.OK_OPTION);
73+
}
74+
}

jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryQuadAction.java

+11-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2009-2019 jMonkeyEngine
2+
* Copyright (c) 2009-2024 jMonkeyEngine
33
* All rights reserved.
44
*
55
* Redistribution and use in source and binary forms, with or without
@@ -35,8 +35,10 @@
3535
import com.jme3.gde.core.sceneexplorer.nodes.actions.NewGeometryAction;
3636
import com.jme3.gde.core.sceneexplorer.nodes.primitives.CreateQuadPanel;
3737
import com.jme3.scene.Geometry;
38+
import com.jme3.scene.Mesh;
3839
import com.jme3.scene.Node;
3940
import com.jme3.scene.Spatial;
41+
import com.jme3.scene.shape.CenterQuad;
4042
import com.jme3.scene.shape.Quad;
4143
import org.openide.DialogDescriptor;
4244
import org.openide.DialogDisplayer;
@@ -60,8 +62,14 @@ public NewGeometryQuadAction() {
6062

6163
@Override
6264
protected Spatial doCreateSpatial(Node parent) {
63-
Quad q = new Quad(form.getQuadWidth(), form.getQuadHeight(), form.isFlipCoords());
64-
Geometry geom = form.getNewGeomPanel().handleGeometry(pm, q);
65+
Mesh mesh;
66+
if (form.isCentered()) {
67+
mesh = new CenterQuad(form.getQuadWidth(), form.getQuadHeight(), form.isFlipCoords());
68+
} else {
69+
mesh = new Quad(form.getQuadWidth(), form.getQuadHeight(), form.isFlipCoords());
70+
}
71+
72+
Geometry geom = form.getNewGeomPanel().handleGeometry(pm, mesh);
6573
// parent.attachChild(geom); // was present in previous code, but should neither be necessary nor correct
6674
return geom;
6775
}

jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/primitives/Bundle.properties

+12
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,15 @@ CreateLinePanel.lblStart.text=Start Point:
2626
CreateQuadPanel.lblHeight.text=height
2727
CreateQuadPanel.lblWidth.text=width
2828
CreateSpherePanel.lblRadialSamples.text=Radial Samples:
29+
CreateCylinderPanel.lblRadius.text=Radius:
30+
CreateCylinderPanel.lblZSamples.toolTipText=
31+
CreateCylinderPanel.lblZSamples.text=Z-Samples:
32+
CreateCylinderPanel.lblRadialSamples.text=Radial Samples:
33+
CreateCylinderPanel.jPanel1.border.title=Sphere Specific Settings
34+
CreateCylinderPanel.abstractNewGeometryPanel1.border.title=General Geometry Settings
35+
CreateCylinderPanel.lblRadius.toolTipText=
36+
CreateCylinderPanel.checkClosed.text=Closed
37+
CreateCylinderPanel.checkInverted.text=Inverted
38+
CreateQuadPanel.checkCentered.text=centered
39+
CreateCylinderPanel.lblHeight.toolTipText=
40+
CreateCylinderPanel.lblHeight.text=Height:

0 commit comments

Comments
 (0)