Search in sources :

Example 6 with Wall

use of org.concord.energy3d.model.Wall in project energy3d by concord-consortium.

the class Scene method pasteToPickedLocationOnLand.

public void pasteToPickedLocationOnLand() {
    if (SceneManager.getInstance().getSolarHeatMap()) {
        EnergyPanel.getInstance().updateRadiationHeatMap();
    }
    if (copyBuffer == null) {
        return;
    }
    final HousePart c = copyBuffer.copy(false);
    if (c == null) {
        return;
    }
    final Vector3 position = SceneManager.getInstance().getPickedLocationOnLand();
    if (position == null) {
        return;
    }
    if (c instanceof Tree || c instanceof Human) {
        c.getPoints().set(0, position);
        add(c, true);
        copyBuffer = c;
        SceneManager.getInstance().getUndoManager().addEdit(new PastePartCommand(c));
    } else if (c instanceof Foundation) {
        // pasting a foundation also clones the building above it
        final Vector3 shift = position.subtractLocal(c.getAbsCenter()).multiplyLocal(1, 1, 0);
        final int n = c.getPoints().size();
        for (int i = 0; i < n; i++) {
            c.getPoints().get(i).addLocal(shift);
        }
        add(c, true);
        // copy gable info, too
        final Foundation oldFoundation = (Foundation) copyBuffer;
        final Foundation newFoundation = (Foundation) c;
        final List<Roof> oldRoofs = oldFoundation.getRoofs();
        final List<Roof> newRoofs = newFoundation.getRoofs();
        if (!oldRoofs.isEmpty() && !newRoofs.isEmpty()) {
            for (int i = 0; i < newRoofs.size(); i++) {
                final Map<Integer, List<Wall>> oldMap = oldRoofs.get(i).getGableEditPointToWallMap();
                if (oldMap == null || oldMap.isEmpty()) {
                    continue;
                }
                final Map<Integer, List<Wall>> newMap = new HashMap<Integer, List<Wall>>();
                for (final Integer key : oldMap.keySet()) {
                    final List<Wall> oldWalls = oldMap.get(key);
                    final List<Wall> newWalls = new ArrayList<Wall>();
                    for (final Wall w : oldWalls) {
                        newWalls.add(getCopiedWall(w, oldFoundation, newFoundation));
                    }
                    newMap.put(key, newWalls);
                }
                newRoofs.get(i).setGableEditPointToWallMap(newMap);
            }
        }
        copyBuffer = c;
        setIdOfChildren(c);
        SceneManager.getInstance().getUndoManager().addEdit(new PastePartCommand(c));
    }
    SceneManager.getInstance().setSelectedPart(c);
}
Also used : Human(org.concord.energy3d.model.Human) Wall(org.concord.energy3d.model.Wall) Tree(org.concord.energy3d.model.Tree) ReadOnlyVector3(com.ardor3d.math.type.ReadOnlyVector3) Vector3(com.ardor3d.math.Vector3) Foundation(org.concord.energy3d.model.Foundation) List(java.util.List) ArrayList(java.util.ArrayList) Map(java.util.Map) HashMap(java.util.HashMap) HousePart(org.concord.energy3d.model.HousePart) PastePartCommand(org.concord.energy3d.undo.PastePartCommand)

Example 7 with Wall

use of org.concord.energy3d.model.Wall in project energy3d by concord-consortium.

the class Scene method connectWalls.

public void connectWalls() {
    List<Wall> walls = null;
    for (final HousePart part : parts) {
        if (part instanceof Wall) {
            if (walls == null) {
                walls = new ArrayList<Wall>();
            }
            walls.add((Wall) part);
            part.reset();
        }
    }
    if (walls != null && !walls.isEmpty()) {
        for (final Wall w : walls) {
            w.connectedWalls();
        }
        for (final Wall w : walls) {
            w.computeInsideDirectionOfAttachedWalls(false);
        }
        walls.clear();
    }
}
Also used : Wall(org.concord.energy3d.model.Wall) HousePart(org.concord.energy3d.model.HousePart)

Example 8 with Wall

use of org.concord.energy3d.model.Wall in project energy3d by concord-consortium.

the class Scene method deleteAllConnectedWalls.

public void deleteAllConnectedWalls(final Wall w) {
    final List<HousePart> copy = new ArrayList<HousePart>();
    w.visitNeighbors(new WallVisitor() {

        @Override
        public void visit(final Wall currentWall, final Snap prev, final Snap next) {
            copy.add(currentWall);
        }
    });
    final RemoveMultiplePartsCommand c = new RemoveMultiplePartsCommand(copy);
    for (final HousePart p : copy) {
        remove(p, false);
    }
    SceneManager.getInstance().getUndoManager().addEdit(c);
    edited = true;
    SceneManager.getInstance().refresh();
}
Also used : WallVisitor(org.concord.energy3d.util.WallVisitor) Wall(org.concord.energy3d.model.Wall) ArrayList(java.util.ArrayList) Snap(org.concord.energy3d.model.Snap) HousePart(org.concord.energy3d.model.HousePart) RemoveMultiplePartsCommand(org.concord.energy3d.undo.RemoveMultiplePartsCommand)

Example 9 with Wall

use of org.concord.energy3d.model.Wall in project energy3d by concord-consortium.

the class Scene method setThicknessForAllWalls.

public void setThicknessForAllWalls(final double thickness) {
    for (final HousePart p : parts) {
        if (p instanceof Wall) {
            ((Wall) p).setThickness(thickness);
            p.draw();
        }
    }
    SceneManager.getInstance().refresh();
}
Also used : Wall(org.concord.energy3d.model.Wall) HousePart(org.concord.energy3d.model.HousePart)

Example 10 with Wall

use of org.concord.energy3d.model.Wall in project energy3d by concord-consortium.

the class Scene method setHeightForAllWalls.

public void setHeightForAllWalls(final double height) {
    for (final HousePart p : parts) {
        if (p instanceof Wall) {
            final Wall w = (Wall) p;
            w.setHeight(height, true);
        }
    }
    redrawAllWallsNow();
}
Also used : Wall(org.concord.energy3d.model.Wall) HousePart(org.concord.energy3d.model.HousePart)

Aggregations

Wall (org.concord.energy3d.model.Wall)57 HousePart (org.concord.energy3d.model.HousePart)45 Foundation (org.concord.energy3d.model.Foundation)37 Roof (org.concord.energy3d.model.Roof)31 Window (org.concord.energy3d.model.Window)28 Door (org.concord.energy3d.model.Door)25 Rack (org.concord.energy3d.model.Rack)23 SolarPanel (org.concord.energy3d.model.SolarPanel)23 ArrayList (java.util.ArrayList)16 Mirror (org.concord.energy3d.model.Mirror)14 FresnelReflector (org.concord.energy3d.model.FresnelReflector)12 Floor (org.concord.energy3d.model.Floor)11 List (java.util.List)10 ParabolicDish (org.concord.energy3d.model.ParabolicDish)10 ParabolicTrough (org.concord.energy3d.model.ParabolicTrough)10 ActionEvent (java.awt.event.ActionEvent)9 ActionListener (java.awt.event.ActionListener)9 Tree (org.concord.energy3d.model.Tree)8 JMenuItem (javax.swing.JMenuItem)7 JPanel (javax.swing.JPanel)7