Search in sources :

Example 26 with Mirror

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

the class Scene method removeAllHeliostats.

public void removeAllHeliostats() {
    final ArrayList<HousePart> heliostats = new ArrayList<HousePart>();
    final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
    if (selectedPart != null) {
        final Foundation foundation = selectedPart instanceof Foundation ? (Foundation) selectedPart : selectedPart.getTopContainer();
        for (final HousePart part : parts) {
            if (part instanceof Mirror && part.getTopContainer() == foundation) {
                heliostats.add(part);
            }
        }
    } else {
        for (final HousePart part : parts) {
            if (part instanceof Mirror) {
                heliostats.add(part);
            }
        }
    }
    if (heliostats.isEmpty()) {
        JOptionPane.showMessageDialog(MainFrame.getInstance(), "There is no heliostat to remove.", "No Heliostat", JOptionPane.INFORMATION_MESSAGE);
        return;
    }
    if (JOptionPane.showConfirmDialog(MainFrame.getInstance(), "Do you really want to remove all " + heliostats.size() + " heliostats" + (selectedPart != null ? " on the selected foundation" : "") + "?", "Confirm", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) != JOptionPane.YES_OPTION) {
        return;
    }
    final RemoveMultiplePartsCommand c = new RemoveMultiplePartsCommand(heliostats);
    for (final HousePart part : heliostats) {
        remove(part, false);
    }
    redrawAll();
    SceneManager.getInstance().getUndoManager().addEdit(c);
    edited = true;
}
Also used : ArrayList(java.util.ArrayList) Foundation(org.concord.energy3d.model.Foundation) Mirror(org.concord.energy3d.model.Mirror) HousePart(org.concord.energy3d.model.HousePart) RemoveMultiplePartsCommand(org.concord.energy3d.undo.RemoveMultiplePartsCommand)

Example 27 with Mirror

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

the class Scene method setSizeForAllHeliostats.

public void setSizeForAllHeliostats(final double width, final double height) {
    for (final HousePart p : parts) {
        if (p instanceof Mirror) {
            ((Mirror) p).setMirrorWidth(width);
            ((Mirror) p).setMirrorHeight(height);
            p.draw();
        }
    }
    SceneManager.getInstance().refresh();
}
Also used : Mirror(org.concord.energy3d.model.Mirror) HousePart(org.concord.energy3d.model.HousePart)

Example 28 with Mirror

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

the class Scene method setTargetForAllHeliostats.

public void setTargetForAllHeliostats(final Foundation target) {
    final List<Foundation> oldTargets = new ArrayList<Foundation>();
    for (final HousePart p : parts) {
        if (p instanceof Mirror) {
            final Mirror m = (Mirror) p;
            final Foundation t = m.getReceiver();
            if (t != null && !oldTargets.contains(t)) {
                oldTargets.add(t);
            }
            m.setReceiver(target);
            p.draw();
        }
    }
    if (target != null) {
        target.drawSolarReceiver();
    }
    if (!oldTargets.isEmpty()) {
        for (final Foundation t : oldTargets) {
            t.drawSolarReceiver();
        }
    }
    SceneManager.getInstance().refresh();
}
Also used : ArrayList(java.util.ArrayList) Foundation(org.concord.energy3d.model.Foundation) Mirror(org.concord.energy3d.model.Mirror) HousePart(org.concord.energy3d.model.HousePart)

Example 29 with Mirror

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

the class SceneManager method update.

@Override
public void update(final ReadOnlyTimer timer) {
    final double tpf = timer.getTimePerFrame();
    passManager.updatePasses(tpf);
    taskManager.getQueue(GameTaskQueue.UPDATE).setExecuteMultiple(executeAllTask);
    taskManager.getQueue(GameTaskQueue.UPDATE).execute(canvas.getCanvasRenderer().getRenderer());
    if (operationFlag) {
        executeOperation();
    }
    if (mouseState != null) {
        mouseMoved();
    }
    if (Scene.isRedrawAll()) {
        Scene.getInstance().redrawAllNow();
    }
    if (rotAnim && viewMode == ViewMode.NORMAL && canvas.getCanvasRenderer() != null) {
        final Matrix3 rotate = new Matrix3();
        rotate.fromAngleNormalAxis(45 * tpf * MathUtils.DEG_TO_RAD, Vector3.UNIT_Z);
        final Camera camera = getCamera();
        camera.setLocation(rotate.applyPre(camera.getLocation(), null));
        camera.lookAt(0, 0, 1, Vector3.UNIT_Z);
        getCameraNode().updateFromCamera();
        Scene.getInstance().updateEditShapes();
    }
    final Heliodon heliodon = Heliodon.getInstance();
    if (heliodon != null) {
        if (sunAnim) {
            heliodon.setHourAngle(heliodon.getHourAngle() + tpf * 0.5, true, true, false);
            SceneManager.getInstance().changeSkyTexture();
            SceneManager.getInstance().setShading(heliodon.isNightTime());
            final boolean night = Heliodon.getInstance().isNightTime();
            for (final HousePart part : Scene.getInstance().getParts()) {
                if (part instanceof Mirror) {
                    final Mirror m = (Mirror) part;
                    if (night) {
                        // call this so that the light beams can be set invisible
                        m.drawSunBeam();
                    } else {
                        if (m.getReceiver() != null) {
                            m.draw();
                        }
                    }
                } else if (part instanceof ParabolicTrough) {
                    final ParabolicTrough t = (ParabolicTrough) part;
                    if (night) {
                        // call this so that the light beams can be set invisible
                        t.drawSunBeam();
                    } else {
                        t.draw();
                    }
                } else if (part instanceof ParabolicDish) {
                    final ParabolicDish d = (ParabolicDish) part;
                    if (night) {
                        // call this so that the light beams can be set invisible
                        d.drawSunBeam();
                    } else {
                        d.draw();
                    }
                } else if (part instanceof FresnelReflector) {
                    final FresnelReflector f = (FresnelReflector) part;
                    if (night) {
                        // call this so that the light beams can be set invisible
                        f.drawSunBeam();
                    } else {
                        f.draw();
                    }
                } else if (part instanceof SolarPanel) {
                    final SolarPanel sp = (SolarPanel) part;
                    if (!night && sp.getTracker() != Trackable.NO_TRACKER) {
                        sp.draw();
                    }
                    if (sp.isSunBeamVisible()) {
                        sp.drawSunBeam();
                    }
                } else if (part instanceof Rack) {
                    final Rack rack = (Rack) part;
                    if (!night && rack.getTracker() != Trackable.NO_TRACKER) {
                        rack.draw();
                    }
                    if (rack.isSunBeamVisible()) {
                        rack.drawSunBeam();
                    }
                }
            }
        }
        heliodon.update();
    }
    if (cameraControl != null && cameraControl.isAnimating()) {
        cameraControl.animate();
    }
    root.updateGeometricState(tpf);
}
Also used : ParabolicDish(org.concord.energy3d.model.ParabolicDish) Rack(org.concord.energy3d.model.Rack) ParabolicTrough(org.concord.energy3d.model.ParabolicTrough) FresnelReflector(org.concord.energy3d.model.FresnelReflector) SolarPanel(org.concord.energy3d.model.SolarPanel) Camera(com.ardor3d.renderer.Camera) Mirror(org.concord.energy3d.model.Mirror) PickedHousePart(org.concord.energy3d.model.PickedHousePart) HousePart(org.concord.energy3d.model.HousePart) Matrix3(com.ardor3d.math.Matrix3) Heliodon(org.concord.energy3d.shapes.Heliodon)

Example 30 with Mirror

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

the class SolarRadiation method resetTrackables.

public void resetTrackables() {
    Heliodon.getInstance().getCalendar().set(Calendar.HOUR_OF_DAY, hourOfDay);
    Heliodon.getInstance().getCalendar().set(Calendar.MINUTE, minuteOfHour);
    for (final HousePart part : Scene.getInstance().getParts()) {
        if (part instanceof Mirror) {
            final Mirror m = (Mirror) part;
            if (m.getReceiver() != null) {
                m.draw();
            }
        } else if (part instanceof FresnelReflector) {
            final FresnelReflector fr = (FresnelReflector) part;
            if (fr.getReceiver() != null) {
                fr.draw();
            }
        } else if (part instanceof ParabolicTrough) {
            final ParabolicTrough pt = (ParabolicTrough) part;
            pt.draw();
        } else if (part instanceof ParabolicDish) {
            final ParabolicDish pd = (ParabolicDish) part;
            pd.draw();
        } else if (part instanceof SolarPanel) {
            final SolarPanel sp = (SolarPanel) part;
            if (sp.getTracker() != Trackable.NO_TRACKER) {
                sp.draw();
            }
        } else if (part instanceof Rack) {
            final Rack rack = (Rack) part;
            if (rack.getTracker() != Trackable.NO_TRACKER) {
                rack.draw();
            }
        }
    }
}
Also used : ParabolicDish(org.concord.energy3d.model.ParabolicDish) Rack(org.concord.energy3d.model.Rack) FresnelReflector(org.concord.energy3d.model.FresnelReflector) ParabolicTrough(org.concord.energy3d.model.ParabolicTrough) SolarPanel(org.concord.energy3d.model.SolarPanel) Mirror(org.concord.energy3d.model.Mirror) HousePart(org.concord.energy3d.model.HousePart)

Aggregations

Mirror (org.concord.energy3d.model.Mirror)55 HousePart (org.concord.energy3d.model.HousePart)35 Foundation (org.concord.energy3d.model.Foundation)29 FresnelReflector (org.concord.energy3d.model.FresnelReflector)21 Rack (org.concord.energy3d.model.Rack)21 SolarPanel (org.concord.energy3d.model.SolarPanel)19 ParabolicDish (org.concord.energy3d.model.ParabolicDish)17 ParabolicTrough (org.concord.energy3d.model.ParabolicTrough)17 Window (org.concord.energy3d.model.Window)16 Wall (org.concord.energy3d.model.Wall)14 Door (org.concord.energy3d.model.Door)11 Roof (org.concord.energy3d.model.Roof)11 ArrayList (java.util.ArrayList)10 Calendar (java.util.Calendar)5 List (java.util.List)5 JDialog (javax.swing.JDialog)5 Human (org.concord.energy3d.model.Human)5 Tree (org.concord.energy3d.model.Tree)5 ActionEvent (java.awt.event.ActionEvent)4 ActionListener (java.awt.event.ActionListener)4