Skip to content

Commit

Permalink
Merge pull request #576 from neph1/Issue_575
Browse files Browse the repository at this point in the history
add cylinder to New Geometry options
  • Loading branch information
neph1 authored Mar 5, 2024
2 parents dc07c34 + 8890c8b commit e97f2bd
Show file tree
Hide file tree
Showing 7 changed files with 590 additions and 19 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
/*
* Copyright (c) 2009-2024 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 com.jme3.gde.core.sceneexplorer.nodes.actions.impl;

import com.jme3.gde.core.sceneexplorer.nodes.actions.AbstractNewSpatialAction;
import com.jme3.gde.core.sceneexplorer.nodes.actions.NewGeometryAction;
import com.jme3.gde.core.sceneexplorer.nodes.primitives.CreateCylinderPanel;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import com.jme3.scene.shape.Cylinder;
import org.openide.DialogDescriptor;
import org.openide.DialogDisplayer;
import org.openide.NotifyDescriptor;

/**
* Action to create a new primitive (Cylinder)
*
* @author neph1
*/
@org.openide.util.lookup.ServiceProvider(service = NewGeometryAction.class)
public class NewGeometryCylinderAction extends AbstractNewSpatialAction implements NewGeometryAction {

CreateCylinderPanel form;

public NewGeometryCylinderAction() {
name = "Cylinder";
form = new CreateCylinderPanel();
}

@Override
protected Spatial doCreateSpatial(Node parent) {
Cylinder cylinder = new Cylinder(form.getZSamples(), form.getRadialSamples(), form.getRadius(), form.getCylinderHeight(), form.isClosed(), form.isInverted());
Geometry geom = form.getNewGeomPanel().handleGeometry(pm, cylinder);
return geom;
}

@Override
protected boolean prepareCreateSpatial() {
String msg = "Create new Cylinder";
DialogDescriptor dd = new DialogDescriptor(form, msg);
Object result = DialogDisplayer.getDefault().notify(dd);
return (result == NotifyDescriptor.OK_OPTION);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2019 jMonkeyEngine
* Copyright (c) 2009-2024 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
Expand Down Expand Up @@ -35,8 +35,10 @@
import com.jme3.gde.core.sceneexplorer.nodes.actions.NewGeometryAction;
import com.jme3.gde.core.sceneexplorer.nodes.primitives.CreateQuadPanel;
import com.jme3.scene.Geometry;
import com.jme3.scene.Mesh;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import com.jme3.scene.shape.CenterQuad;
import com.jme3.scene.shape.Quad;
import org.openide.DialogDescriptor;
import org.openide.DialogDisplayer;
Expand All @@ -60,8 +62,14 @@ public NewGeometryQuadAction() {

@Override
protected Spatial doCreateSpatial(Node parent) {
Quad q = new Quad(form.getQuadWidth(), form.getQuadHeight(), form.isFlipCoords());
Geometry geom = form.getNewGeomPanel().handleGeometry(pm, q);
Mesh mesh;
if (form.isCentered()) {
mesh = new CenterQuad(form.getQuadWidth(), form.getQuadHeight(), form.isFlipCoords());
} else {
mesh = new Quad(form.getQuadWidth(), form.getQuadHeight(), form.isFlipCoords());
}

Geometry geom = form.getNewGeomPanel().handleGeometry(pm, mesh);
// parent.attachChild(geom); // was present in previous code, but should neither be necessary nor correct
return geom;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,15 @@ CreateLinePanel.lblStart.text=Start Point:
CreateQuadPanel.lblHeight.text=height
CreateQuadPanel.lblWidth.text=width
CreateSpherePanel.lblRadialSamples.text=Radial Samples:
CreateCylinderPanel.lblRadius.text=Radius:
CreateCylinderPanel.lblZSamples.toolTipText=
CreateCylinderPanel.lblZSamples.text=Z-Samples:
CreateCylinderPanel.lblRadialSamples.text=Radial Samples:
CreateCylinderPanel.jPanel1.border.title=Sphere Specific Settings
CreateCylinderPanel.abstractNewGeometryPanel1.border.title=General Geometry Settings
CreateCylinderPanel.lblRadius.toolTipText=
CreateCylinderPanel.checkClosed.text=Closed
CreateCylinderPanel.checkInverted.text=Inverted
CreateQuadPanel.checkCentered.text=centered
CreateCylinderPanel.lblHeight.toolTipText=
CreateCylinderPanel.lblHeight.text=Height:
Loading

0 comments on commit e97f2bd

Please sign in to comment.