use of com.ardor3d.math.ColorRGBA in project energy3d by concord-consortium.
the class Window method setSolarHeatGainCoefficient.
public void setSolarHeatGainCoefficient(final double shgc) {
solarHeatGainCoefficient = shgc;
setColor(new ColorRGBA(glassColor.getRed(), glassColor.getGreen(), glassColor.getBlue(), (float) (1.0 - shgc)));
}
use of com.ardor3d.math.ColorRGBA in project energy3d by concord-consortium.
the class Window method init.
@Override
protected void init() {
label1 = Annotation.makeNewLabel(1);
super.init();
if (Util.isZero(uValue)) {
uValue = 2;
}
if (Util.isZero(solarHeatGainCoefficient)) {
solarHeatGainCoefficient = 0.5;
} else if (solarHeatGainCoefficient > 1) {
solarHeatGainCoefficient *= 0.01;
}
if (Util.isZero(volumetricHeatCapacity)) {
volumetricHeatCapacity = 0.5;
}
if (Util.isZero(shutterLength)) {
shutterLength = 0.5;
}
if (glassColor == null) {
setColor(new ColorRGBA(0.3f, 0.3f, 0.5f, 0.5f));
}
if (shutterColor == null) {
shutterColor = ColorRGBA.DARK_GRAY;
}
mesh = new Mesh("Window");
mesh.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(6));
mesh.getMeshData().setNormalBuffer(BufferUtils.createVector3Buffer(6));
mesh.setModelBound(new BoundingBox());
mesh.getSceneHints().setAllPickingHints(false);
if (glassColor == null) {
glassColor = new ColorRGBA(0.3f, 0.3f, 0.5f, 0.5f);
}
mesh.setDefaultColor(glassColor);
final BlendState blend = new BlendState();
blend.setBlendEnabled(true);
// blend.setTestEnabled(true);
mesh.setRenderState(blend);
mesh.getSceneHints().setRenderBucketType(RenderBucketType.Transparent);
final MaterialState ms = new MaterialState();
ms.setColorMaterial(ColorMaterial.Diffuse);
mesh.setRenderState(ms);
root.attachChild(mesh);
collisionMesh = new Mesh("Window Collision");
collisionMesh.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(6));
collisionMesh.setVisible(false);
collisionMesh.setUserData(new UserData(this));
collisionMesh.setModelBound(new BoundingBox());
root.attachChild(collisionMesh);
label1.setAlign(Align.SouthWest);
root.attachChild(label1);
bars = new Line("Window (bars)");
bars.setLineWidth(3);
bars.setModelBound(new BoundingBox());
Util.disablePickShadowLight(bars);
bars.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(8));
root.attachChild(bars);
leftShutter = new Mesh("Left Shutter");
leftShutter.getMeshData().setIndexMode(IndexMode.Quads);
leftShutter.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(4));
leftShutter.getMeshData().setNormalBuffer(BufferUtils.createVector3Buffer(4));
leftShutter.setRenderState(ms);
leftShutter.setModelBound(new BoundingBox());
root.attachChild(leftShutter);
rightShutter = new Mesh("Right Shutter");
rightShutter.getMeshData().setIndexMode(IndexMode.Quads);
rightShutter.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(4));
rightShutter.getMeshData().setNormalBuffer(BufferUtils.createVector3Buffer(4));
rightShutter.setRenderState(ms);
rightShutter.setModelBound(new BoundingBox());
root.attachChild(rightShutter);
leftShutterOutline = new Line("Left Shutter (Outline)");
leftShutterOutline.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(12));
leftShutterOutline.setDefaultColor(ColorRGBA.BLACK);
leftShutterOutline.setModelBound(new BoundingBox());
root.attachChild(leftShutterOutline);
rightShutterOutline = new Line("Right Shutter (Outline)");
rightShutterOutline.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(12));
rightShutterOutline.setDefaultColor(ColorRGBA.BLACK);
rightShutterOutline.setModelBound(new BoundingBox());
root.attachChild(rightShutterOutline);
}
use of com.ardor3d.math.ColorRGBA in project energy3d by concord-consortium.
the class PopupMenuForMesh method getPopupMenu.
static JPopupMenu getPopupMenu() {
if (popupMenuForMesh == null) {
final JMenuItem miInfo = new JMenuItem("Mesh");
miInfo.setEnabled(false);
miInfo.setOpaque(true);
miInfo.setBackground(Config.isMac() ? Color.BLACK : Color.GRAY);
miInfo.setForeground(Color.WHITE);
final JMenuItem miMessThickness = new JMenuItem("Thickness...");
miMessThickness.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart instanceof Foundation) {
final Foundation f = (Foundation) selectedPart;
final Mesh m = f.getSelectedMesh();
if (m != null) {
final Node n = m.getParent();
final String title = "<html>Adjust the distance between two mesh faces to create some thickness<br>A larger thickness also mitigates the z-fighting effect.</html>";
while (true) {
final String newValue = JOptionPane.showInputDialog(MainFrame.getInstance(), title, f.getMeshThickness(n) * Scene.getInstance().getAnnotationScale());
if (newValue == null) {
break;
} else {
try {
final double val = Double.parseDouble(newValue);
if (val < 0 || val > 1) {
JOptionPane.showMessageDialog(MainFrame.getInstance(), "Thickness must be between 0 and 1 meter.", "Range Error", JOptionPane.ERROR_MESSAGE);
} else {
SceneManager.getTaskManager().update(new Callable<Object>() {
@Override
public Object call() throws Exception {
f.setMeshThickness(n, val / Scene.getInstance().getAnnotationScale());
f.draw();
return null;
}
});
break;
}
} catch (final NumberFormatException exception) {
JOptionPane.showMessageDialog(MainFrame.getInstance(), newValue + " is an invalid value!", "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
}
}
}
});
final JMenuItem miReverseNormalVector = new JMenuItem("Reverse Mesh Normal Vector");
miReverseNormalVector.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart instanceof Foundation) {
final Foundation f = (Foundation) selectedPart;
SceneManager.getTaskManager().update(new Callable<Object>() {
@Override
public Object call() throws Exception {
final Mesh m = f.getSelectedMesh();
if (m != null) {
Util.reverseFace(m);
f.getNodeState(m.getParent()).reverseNormalOfMesh(((UserData) m.getUserData()).getMeshIndex());
f.draw();
updateAfterEdit();
}
return null;
}
});
}
}
});
final JMenuItem miAlignBottom = new JMenuItem("Align Node Bottom with Ground Level");
miAlignBottom.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart instanceof Foundation) {
final Foundation f = (Foundation) selectedPart;
final Mesh m = f.getSelectedMesh();
if (m != null) {
SceneManager.getTaskManager().update(new Callable<Object>() {
@Override
public Object call() throws Exception {
final Node n = m.getParent();
if (n != null) {
final OrientedBoundingBox boundingBox = Util.getOrientedBoundingBox(n);
final double zBottom = boundingBox.getCenter().getZ() - boundingBox.getZAxis().getZ() * boundingBox.getExtent().getZ() - f.getHeight();
f.translateImportedNode(n, 0, 0, -zBottom);
f.draw();
updateAfterEdit();
}
return null;
}
});
}
}
}
});
final JMenuItem miAlignCenter = new JMenuItem("Align Node Center with Foundation Center");
miAlignCenter.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart instanceof Foundation) {
final Foundation f = (Foundation) selectedPart;
final Mesh m = f.getSelectedMesh();
if (m != null) {
SceneManager.getTaskManager().update(new Callable<Object>() {
@Override
public Object call() throws Exception {
final Node n = m.getParent();
if (n != null) {
final OrientedBoundingBox boundingBox = Util.getOrientedBoundingBox(n);
final ReadOnlyVector3 shift = boundingBox.getCenter().subtract(f.getAbsCenter(), null);
f.translateImportedNode(n, shift.getX(), shift.getY(), 0);
f.setMeshSelectionVisible(false);
f.draw();
updateAfterEdit();
}
return null;
}
});
}
}
}
});
final JMenuItem miCopyNode = new JMenuItem("Copy Node");
miCopyNode.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, Config.isMac() ? KeyEvent.META_MASK : InputEvent.CTRL_MASK));
miCopyNode.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
SceneManager.getTaskManager().update(new Callable<Object>() {
@Override
public Object call() throws Exception {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart instanceof Foundation) {
final Foundation f = (Foundation) selectedPart;
final Mesh m = f.getSelectedMesh();
if (m != null) {
final Node n = m.getParent();
Scene.getInstance().setCopyNode(n, f.getNodeState(n));
}
}
return null;
}
});
}
});
final JMenuItem miPaste = new JMenuItem("Paste");
miPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, Config.isMac() ? KeyEvent.META_MASK : InputEvent.CTRL_MASK));
miPaste.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
SceneManager.getTaskManager().update(new Callable<Object>() {
@Override
public Object call() throws Exception {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart instanceof Foundation) {
final Foundation f = (Foundation) selectedPart;
final Mesh m = f.getSelectedMesh();
if (m != null) {
Scene.getInstance().pasteToPickedLocationOnMesh(m);
Scene.getInstance().setEdited(true);
updateAfterEdit();
}
}
return null;
}
});
}
});
popupMenuForMesh = new JPopupMenu();
popupMenuForMesh.setInvoker(MainPanel.getInstance().getCanvasPanel());
popupMenuForMesh.addPopupMenuListener(new PopupMenuListener() {
@Override
public void popupMenuWillBecomeVisible(final PopupMenuEvent e) {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart instanceof Foundation) {
final Foundation f = (Foundation) selectedPart;
final Mesh m = f.getSelectedMesh();
if (m != null) {
String name = f.getNodeState(m.getParent()).getName();
if (name == null) {
name = "Undefined";
}
miInfo.setText(m.getName() + " (" + name + ")");
final OrientedBoundingBox boundingBox = Util.getOrientedBoundingBox(m.getParent());
final ReadOnlyVector3 center = boundingBox.getCenter();
final double zBottom = center.getZ() - boundingBox.getZAxis().getZ() * boundingBox.getExtent().getZ();
miAlignBottom.setEnabled(!Util.isZero(zBottom - f.getHeight()));
final Vector3 foundationCenter = f.getAbsCenter();
miAlignCenter.setEnabled(!Util.isEqual(new Vector2(foundationCenter.getX(), foundationCenter.getY()), new Vector2(center.getX(), center.getY())));
final HousePart copyBuffer = Scene.getInstance().getCopyBuffer();
miPaste.setEnabled(copyBuffer instanceof SolarPanel || copyBuffer instanceof Rack);
}
}
}
@Override
public void popupMenuWillBecomeInvisible(final PopupMenuEvent e) {
miAlignBottom.setEnabled(true);
miAlignCenter.setEnabled(true);
}
@Override
public void popupMenuCanceled(final PopupMenuEvent e) {
miAlignBottom.setEnabled(true);
miAlignCenter.setEnabled(true);
}
});
final JMenuItem miDeleteMesh = new JMenuItem("Delete Mesh");
miDeleteMesh.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart instanceof Foundation) {
final Foundation f = (Foundation) selectedPart;
final Mesh m = f.getSelectedMesh();
if (m != null) {
SceneManager.getTaskManager().update(new Callable<Object>() {
@Override
public Object call() throws Exception {
f.deleteMesh(m);
updateAfterEdit();
return null;
}
});
}
}
}
});
final JMenuItem miRestoreDeletedMeshes = new JMenuItem("Restore Deleted Meshes (Reload Required)");
miRestoreDeletedMeshes.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart instanceof Foundation) {
final Foundation f = (Foundation) selectedPart;
final Mesh m = f.getSelectedMesh();
if (m != null) {
SceneManager.getTaskManager().update(new Callable<Object>() {
@Override
public Object call() throws Exception {
f.restoreDeletedMeshes(m.getParent());
updateAfterEdit();
return null;
}
});
}
}
}
});
final JMenuItem miCutNode = new JMenuItem("Cut Node");
miCutNode.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, Config.isMac() ? KeyEvent.META_MASK : InputEvent.CTRL_MASK));
miCutNode.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart instanceof Foundation) {
final Foundation f = (Foundation) selectedPart;
final Mesh m = f.getSelectedMesh();
if (m != null) {
SceneManager.getTaskManager().update(new Callable<Object>() {
@Override
public Object call() throws Exception {
final Node n = m.getParent();
Scene.getInstance().setCopyNode(n, f.getNodeState(n));
f.deleteNode(n);
updateAfterEdit();
return null;
}
});
}
}
}
});
final JMenuItem miMeshProperties = new JMenuItem("Mesh Properties...");
miMeshProperties.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart instanceof Foundation) {
final Foundation f = (Foundation) selectedPart;
final Mesh m = f.getSelectedMesh();
if (m != null) {
final UserData ud = (UserData) m.getUserData();
final JPanel gui = new JPanel(new BorderLayout());
final String title = "<html>A mesh is a basic unit (e.g., a triangle or a line) of geometry of a structure.</html>";
gui.add(new JLabel(title), BorderLayout.NORTH);
final JPanel propertiesPanel = new JPanel(new SpringLayout());
propertiesPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
gui.add(propertiesPanel, BorderLayout.CENTER);
// index mode
JLabel label = new JLabel("Index Mode: ", JLabel.TRAILING);
propertiesPanel.add(label);
JTextField textField = new JTextField(m.getMeshData().getIndexMode(0) + "", 5);
textField.setEditable(false);
label.setLabelFor(textField);
propertiesPanel.add(textField);
// vertex count
label = new JLabel("Vertex Count: ", JLabel.TRAILING);
propertiesPanel.add(label);
textField = new JTextField(m.getMeshData().getVertexCount() + "", 5);
textField.setEditable(false);
label.setLabelFor(textField);
propertiesPanel.add(textField);
// normal
label = new JLabel("Normal Vector: ", JLabel.TRAILING);
propertiesPanel.add(label);
final ReadOnlyVector3 normal = ((UserData) m.getUserData()).getNormal();
textField = new JTextField("(" + threeDecimalsFormat.format(normal.getX()) + ", " + threeDecimalsFormat.format(normal.getY()) + ", " + threeDecimalsFormat.format(normal.getZ()) + "), relative", 5);
textField.setEditable(false);
label.setLabelFor(textField);
propertiesPanel.add(textField);
// color
label = new JLabel("Color: ", JLabel.TRAILING);
propertiesPanel.add(label);
final ReadOnlyColorRGBA rgb = m.getDefaultColor();
colorChooser.setColor(new Color(Math.round(rgb.getRed() * 255), Math.round(rgb.getGreen() * 255), Math.round(rgb.getBlue() * 255)));
label.setLabelFor(colorChooser);
propertiesPanel.add(colorChooser);
SpringUtilities.makeCompactGrid(propertiesPanel, 4, 2, 6, 6, 6, 6);
if (JOptionPane.showConfirmDialog(MainFrame.getInstance(), gui, "Mesh Properties: " + miInfo.getText(), JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION) {
final Color color = colorChooser.getColor();
m.clearRenderState(StateType.Texture);
m.setDefaultColor(new ColorRGBA(color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, 1));
final NodeState ns = f.getNodeState(m.getParent());
ns.setMeshColor(ud.getMeshIndex(), m.getDefaultColor());
f.draw();
}
}
}
}
});
final JMenuItem miNodeProperties = new JMenuItem("Node Properties...");
miNodeProperties.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart instanceof Foundation) {
final Foundation f = (Foundation) selectedPart;
final Mesh m = f.getSelectedMesh();
if (m != null) {
final Node n = m.getParent();
if (n != null) {
final NodeState ns = f.getNodeState(n);
final JPanel gui = new JPanel(new BorderLayout());
final String title = "<html>A node contains a set of meshes that represent<br>the geometry of the structure.</html>";
gui.add(new JLabel(title), BorderLayout.NORTH);
final JPanel propertiesPanel = new JPanel(new SpringLayout());
propertiesPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
gui.add(propertiesPanel, BorderLayout.CENTER);
// name
JLabel label = new JLabel("Name: ", JLabel.TRAILING);
propertiesPanel.add(label);
final JTextField nameField = new JTextField(ns.getName(), 5);
label.setLabelFor(nameField);
propertiesPanel.add(nameField);
// name
label = new JLabel("File: ", JLabel.TRAILING);
propertiesPanel.add(label);
final JTextField fileField = new JTextField(Util.getFileName(ns.getSourceURL().getPath()), 5);
label.setLabelFor(fileField);
propertiesPanel.add(fileField);
// children count
label = new JLabel("Children: ", JLabel.TRAILING);
propertiesPanel.add(label);
final JTextField textField = new JTextField(n.getNumberOfChildren() + "", 5);
textField.setEditable(false);
label.setLabelFor(textField);
propertiesPanel.add(textField);
SpringUtilities.makeCompactGrid(propertiesPanel, 3, 2, 6, 6, 6, 6);
if (JOptionPane.showConfirmDialog(MainFrame.getInstance(), gui, "Node Properties", JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION) {
final String nodeName = nameField.getText();
if (nodeName != null && !nodeName.trim().equals("")) {
n.setName(nodeName);
f.getNodeState(n).setName(nodeName);
} else {
JOptionPane.showMessageDialog(MainFrame.getInstance(), "Node must have a name!", "Name Error", JOptionPane.ERROR_MESSAGE);
}
}
}
}
}
}
});
popupMenuForMesh.add(miInfo);
popupMenuForMesh.add(miCutNode);
popupMenuForMesh.add(miPaste);
popupMenuForMesh.add(miCopyNode);
popupMenuForMesh.addSeparator();
popupMenuForMesh.add(miAlignBottom);
popupMenuForMesh.add(miAlignCenter);
popupMenuForMesh.add(miMessThickness);
popupMenuForMesh.add(miNodeProperties);
popupMenuForMesh.addSeparator();
popupMenuForMesh.add(miDeleteMesh);
popupMenuForMesh.add(miReverseNormalVector);
popupMenuForMesh.add(miRestoreDeletedMeshes);
popupMenuForMesh.add(miMeshProperties);
}
return popupMenuForMesh;
}
use of com.ardor3d.math.ColorRGBA in project energy3d by concord-consortium.
the class Foundation method init.
@Override
protected void init() {
super.init();
resizeHouseMode = false;
if (Util.isZero(uValue)) {
uValue = 0.19;
}
if (Util.isZero(volumetricHeatCapacity)) {
volumetricHeatCapacity = 0.5;
}
if (Util.isZero(solarReceiverEfficiency)) {
solarReceiverEfficiency = 0.2;
}
if (Util.isZero(childGridSize)) {
childGridSize = 2.5;
}
if (thermostat == null) {
thermostat = new Thermostat();
}
mesh = new Mesh("Foundation");
mesh.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(6));
mesh.getMeshData().setNormalBuffer(BufferUtils.createVector3Buffer(6));
mesh.getMeshData().setTextureBuffer(BufferUtils.createVector2Buffer(6), 0);
mesh.setRenderState(offsetState);
mesh.setModelBound(new BoundingBox());
root.attachChild(mesh);
if (foundationPolygon == null) {
foundationPolygon = new FoundationPolygon(this);
} else {
foundationPolygon.draw();
}
root.attachChild(foundationPolygon.getRoot());
sideMesh = new Mesh[4];
for (int i = 0; i < 4; i++) {
final Mesh mesh_i = new Mesh("Foundation (Side " + i + ")");
mesh_i.setUserData(new UserData(this));
mesh_i.setRenderState(offsetState);
mesh_i.setModelBound(new BoundingBox());
final MeshData meshData = mesh_i.getMeshData();
meshData.setVertexBuffer(BufferUtils.createVector3Buffer(6));
meshData.setNormalBuffer(BufferUtils.createVector3Buffer(6));
mesh_i.getMeshData().setTextureBuffer(BufferUtils.createVector2Buffer(6), 0);
root.attachChild(mesh_i);
sideMesh[i] = mesh_i;
}
boundingMesh = new Line("Foundation (Bounding)");
boundingMesh.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(24));
boundingMesh.setModelBound(new BoundingBox());
Util.disablePickShadowLight(boundingMesh);
boundingMesh.getSceneHints().setCullHint(CullHint.Always);
root.attachChild(boundingMesh);
outlineMesh = new Line("Foundation (Outline)");
outlineMesh.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(24));
outlineMesh.setDefaultColor(ColorRGBA.BLACK);
outlineMesh.setModelBound(new BoundingBox());
Util.disablePickShadowLight(outlineMesh);
root.attachChild(outlineMesh);
linePatternMesh = new Line("Line Pattern");
linePatternMesh.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(2));
linePatternMesh.setDefaultColor(new ColorRGBA(0, 0, 0, 0.75f));
linePatternMesh.setModelBound(null);
final BlendState blendState = new BlendState();
blendState.setBlendEnabled(true);
linePatternMesh.setRenderState(blendState);
linePatternMesh.getSceneHints().setRenderBucketType(RenderBucketType.Transparent);
Util.disablePickShadowLight(linePatternMesh);
root.attachChild(linePatternMesh);
setLinePatternVisible(false);
final UserData userData = new UserData(this);
mesh.setUserData(userData);
boundingMesh.setUserData(userData);
setLabelOffset(-0.11);
label = new BMText("Floating Label", "Undefined", FontManager.getInstance().getPartNumberFont(), Align.Center, Justify.Center);
Util.initHousePartLabel(label);
label.setFontScale(0.5);
label.setVisible(false);
root.attachChild(label);
azimuthArrow = new Line("Azimuth Arrow");
azimuthArrow.setLineWidth(2);
azimuthArrow.setModelBound(null);
Util.disablePickShadowLight(azimuthArrow);
azimuthArrow.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(6));
azimuthArrow.setDefaultColor(ColorRGBA.WHITE);
root.attachChild(azimuthArrow);
solarReceiver = new Cylinder("Solar Receiver", 10, 10, 10, 0, true);
solarReceiver.setDefaultColor(ColorRGBA.WHITE);
solarReceiver.setRenderState(offsetState);
solarReceiver.setModelBound(new BoundingBox());
solarReceiver.setVisible(false);
root.attachChild(solarReceiver);
selectedMeshOutline = new Line("Outline of Selected Mesh");
selectedMeshOutline.setLineWidth(2f);
selectedMeshOutline.setStipplePattern((short) 0xf0f0);
selectedMeshOutline.setModelBound(null);
Util.disablePickShadowLight(selectedMeshOutline);
selectedMeshOutline.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(1));
selectedMeshOutline.setDefaultColor(new ColorRGBA(0f, 0f, 0f, 1f));
root.attachChild(selectedMeshOutline);
selectedNodeBoundingBox = new Line("Bounding Box of Selected Mesh");
selectedNodeBoundingBox.setLineWidth(0.01f);
selectedNodeBoundingBox.setStipplePattern((short) 0xf0f0);
selectedNodeBoundingBox.setModelBound(null);
Util.disablePickShadowLight(selectedNodeBoundingBox);
selectedNodeBoundingBox.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(24));
selectedNodeBoundingBox.setDefaultColor(new ColorRGBA(1f, 1f, 0f, 1f));
root.attachChild(selectedNodeBoundingBox);
updateTextureAndColor();
if (points.size() == 8) {
for (int i = 0; i < 4; i++) {
points.add(new Vector3());
}
}
if (importedNodeStates != null) {
try {
for (final Iterator<NodeState> it = importedNodeStates.iterator(); it.hasNext(); ) {
final NodeState ns = it.next();
final Node n = importCollada(ns.getSourceURL(), null);
if (n == null) {
it.remove();
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
JOptionPane.showMessageDialog(MainFrame.getInstance(), Paths.get(ns.getSourceURL().toURI()).toFile() + " was not found!", "File problem", JOptionPane.ERROR_MESSAGE);
} catch (final HeadlessException e) {
e.printStackTrace();
} catch (final URISyntaxException e) {
e.printStackTrace();
}
}
});
} else {
final ArrayList<Integer> reversedFaceMeshes = ns.getMeshesWithReversedNormal();
if (reversedFaceMeshes != null) {
for (final Integer i : reversedFaceMeshes) {
Util.reverseFace(Util.getMesh(n, i));
}
}
final ArrayList<Integer> deletedMeshes = ns.getDeletedMeshes();
if (deletedMeshes != null && !deletedMeshes.isEmpty()) {
final List<Mesh> toDelete = new ArrayList<Mesh>();
for (final Integer i : deletedMeshes) {
toDelete.add(Util.getMesh(n, i));
}
for (final Mesh m : toDelete) {
n.detachChild(m);
}
}
final HashMap<Integer, ReadOnlyColorRGBA> meshColors = ns.getMeshColors();
if (meshColors != null) {
for (final Integer i : meshColors.keySet()) {
Util.getMesh(n, i).setDefaultColor(meshColors.get(i));
}
}
}
}
} catch (final Throwable t) {
BugReporter.report(t);
}
setRotatedNormalsForImportedMeshes();
}
}
use of com.ardor3d.math.ColorRGBA in project energy3d by concord-consortium.
the class HousePart method init.
/* if an attribute is transient but is always needed then it should be set to default here */
protected void init() {
orgHeight = height;
flattenCenter = new Vector3();
isPrintVertical = false;
if (id == 0) {
id = Scene.getInstance().nextID();
}
root = new Node(toString());
pointsRoot = new Node("Edit Points");
sizeAnnotRoot = new Node("Size Annotations");
sizeAnnotRoot.getSceneHints().setAllPickingHints(false);
angleAnnotRoot = new Node("Angle Annotations");
angleAnnotRoot.getSceneHints().setAllPickingHints(false);
labelsRoot = new Node("Labels");
labelsRoot.getSceneHints().setAllPickingHints(false);
setAnnotationsVisible(Scene.getInstance().areAnnotationsVisible());
// Set up a reusable pick results
for (int i = 0; i < points.size(); i++) {
addNewEditPointShape(i);
}
root.attachChild(pointsRoot);
root.attachChild(sizeAnnotRoot);
root.attachChild(angleAnnotRoot);
root.attachChild(labelsRoot);
gridsMesh = new Line("Grids");
gridsMesh.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(2));
gridsMesh.setDefaultColor(new ColorRGBA(0, 0, 1, 0.25f));
gridsMesh.setModelBound(null);
final BlendState blendState = new BlendState();
blendState.setBlendEnabled(true);
gridsMesh.setRenderState(blendState);
gridsMesh.getSceneHints().setRenderBucketType(RenderBucketType.Transparent);
Util.disablePickShadowLight(gridsMesh);
root.attachChild(gridsMesh);
setGridsVisible(false);
heatFlux = new Line("Heat Flux");
heatFlux.setLineWidth(1);
heatFlux.setModelBound(null);
Util.disablePickShadowLight(heatFlux);
heatFlux.getMeshData().setVertexBuffer(BufferUtils.createVector3Buffer(6));
heatFlux.setDefaultColor(ColorRGBA.YELLOW);
root.attachChild(heatFlux);
if (color == null) {
if (this instanceof Foundation) {
color = Scene.getInstance().getFoundationColor();
} else if (this instanceof Door) {
color = Scene.getInstance().getDoorColor();
} else if (this instanceof Roof) {
color = Scene.getInstance().getRoofColor();
} else if (this instanceof Wall) {
color = Scene.getInstance().getWallColor();
} else {
color = ColorRGBA.LIGHT_GRAY;
}
}
}
Aggregations