📄 j3dpanel.java
字号:
/*
* $Id: J3DPanel.java,v 1.33 2005/10/28 12:34:36 macx2k Exp $
*/
package net.sf.jawp.gui.client.j3d;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import javax.media.j3d.Canvas3D;
import javax.swing.JPanel;
import net.sf.jawp.api.domain.Fleet;
import net.sf.jawp.api.domain.Planet;
import net.sf.jawp.api.domain.SpaceCoords;
import net.sf.jawp.client.GameData;
import com.sun.j3d.utils.universe.SimpleUniverse;
import net.sf.jawp.gui.client.SelectionController;
/**
* A panel which displays 3D scene.
*
* @author Maciej Malecki
* @version $Revision: 1.33 $
*/
public final class J3DPanel extends JPanel
{
private static final long serialVersionUID = 1L;
private final Scene scene;
/**
* Creates new instance of J3DPanel.
*
* @param gdm
* @param configuration
*/
public J3DPanel(final GameData gdm,
final GraphicsConfiguration configuration,
final SelectionController selCon)
{
setLayout(new BorderLayout());
final Canvas3D canvas = new Canvas3D(SimpleUniverse
.getPreferredConfiguration());
add(canvas, BorderLayout.CENTER);
scene = new Scene(canvas, gdm, selCon);
add(new ToolBarPanel(this), BorderLayout.SOUTH);
}
/**
* Centers camera on given position.
*
* @param position
*/
public void centerCamera(final SpaceCoords position)
{
scene.center(J3DHelper.toJ3dPoint(position));
}
/**
* Disposes all Java 3D resources connected to this panel. Should be always
* called when closing owning window.
*/
public void dispose()
{
scene.dispose();
}
/**
* Addes formerly invisible planet to the Java 3D scene.
*
* @param planet
*/
public void showPlanet(final Planet planet)
{
scene.addPlanet(planet);
}
/**
* Shows given fleet on the scene.
*
* @param fleet
*/
public void showFleet(final Fleet fleet)
{
scene.addFleet(fleet);
scene.updateFleet(fleet);
}
/**
* Removes given fleet from the scene.
*
* @param fleet
*/
public void hideFleet(final Fleet fleet)
{
scene.removeFleet(fleet);
}
/**
* Notifies Java 3D scene that given fleet has changed its position.
*
* @param fleet
*/
public void fleetPositionChanged(final Fleet fleet)
{
scene.updateFleet(fleet);
}
/**
* Notifies Java 3D scene that given planet ownership has changed.
*
* @param planet
* which ownership has changed
*/
public void planetOwnerShipChanged(final Planet planet)
{
scene.updatePlanetOwnership(planet);
}
/**
* Sets planet names visibility state on 3D view.
*/
public void setShowNames(final boolean flag)
{
scene.setShowNames(flag);
}
public boolean isShowNames()
{
return scene.isShowNames();
}
public void setMarkOwnership(final boolean flag)
{
scene.setMarkOwnership(flag);
}
public boolean isMarkOwnership()
{
return scene.isMarkOwnership();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -