📄 simplejmepassapplet.java
字号:
}
class SimpleAppletCanvasImplementor extends SimplePassCanvasImpl {
/**
* True if the renderer should display the depth buffer.
*/
protected boolean showDepth = false;
/**
* True if the renderer should display bounds.
*/
protected boolean showBounds = false;
/**
* True if the rnederer should display normals.
*/
protected boolean showNormals = false;
protected boolean pause;
/**
* A wirestate to turn on and off for the rootNode
*/
protected WireframeState wireState;
private InputHandler input;
/**
* A lightstate to turn on and off for the rootNode
*/
protected LightState lightState;
/**
* The root node of our stat graphs.
*/
protected Node statNode;
private TabledLabelGrapher tgrapher;
private Quad labGraph;
protected SimpleAppletCanvasImplementor(int width, int height) {
super(width, height);
}
public Node getStatNode() {
return statNode;
}
public LightState getLightState() {
return lightState;
}
public WireframeState getWireframeState() {
return wireState;
}
public InputHandler getInputHandler() {
return input;
}
public void setInputHandler(InputHandler input) {
this.input = input;
}
public void simpleUpdate() {
input.update(tpf);
if (Debug.stats) {
StatCollector.update();
labGraph.setLocalTranslation(.5f*labGraph.getWidth(), (renderer.getHeight()-.5f*labGraph.getHeight()), 0);
}
simpleAppletUpdate();
/** If toggle_pause is a valid command (via key p), change pause. */
if ( KeyBindingManager.getKeyBindingManager().isValidCommand(
"toggle_pause", false ) ) {
pause = !pause;
}
/** If toggle_wire is a valid command (via key T), change wirestates. */
if ( KeyBindingManager.getKeyBindingManager().isValidCommand(
"toggle_wire", false ) ) {
wireState.setEnabled( !wireState.isEnabled() );
rootNode.updateRenderState();
}
/** If toggle_lights is a valid command (via key L), change lightstate. */
if ( KeyBindingManager.getKeyBindingManager().isValidCommand(
"toggle_lights", false ) ) {
lightState.setEnabled( !lightState.isEnabled() );
rootNode.updateRenderState();
}
/** If toggle_bounds is a valid command (via key B), change bounds. */
if ( KeyBindingManager.getKeyBindingManager().isValidCommand(
"toggle_bounds", false ) ) {
showBounds = !showBounds;
}
/** If toggle_depth is a valid command (via key F3), change depth. */
if ( KeyBindingManager.getKeyBindingManager().isValidCommand(
"toggle_depth", false ) ) {
showDepth = !showDepth;
}
if ( KeyBindingManager.getKeyBindingManager().isValidCommand(
"toggle_normals", false ) ) {
showNormals = !showNormals;
}
/** If camera_out is a valid command (via key C), show camera location. */
if ( KeyBindingManager.getKeyBindingManager().isValidCommand(
"camera_out", false ) ) {
logger.info( "Camera at: "
+ renderer.getCamera().getLocation() );
}
if ( KeyBindingManager.getKeyBindingManager().isValidCommand(
"screen_shot", false ) ) {
renderer.takeScreenShot( "SimpleAppletScreenShot" );
}
if ( KeyBindingManager.getKeyBindingManager().isValidCommand(
"mem_report", false ) ) {
long totMem = Runtime.getRuntime().totalMemory();
long freeMem = Runtime.getRuntime().freeMemory();
long maxMem = Runtime.getRuntime().maxMemory();
logger.info("|*|*| Memory Stats |*|*|");
logger.info("Total memory: "+(totMem>>10)+" kb");
logger.info("Free memory: "+(freeMem>>10)+" kb");
logger.info("Max memory: "+(maxMem>>10)+" kb");
}
}
public void simpleSetup() {
synchronized (INIT_LOCK) {
input = new FirstPersonHandler(getCamera(), 50, 1);
/**
* Create a wirestate to toggle on and off. Starts disabled with
* default width of 1 pixel.
*/
wireState = renderer.createWireframeState();
wireState.setEnabled(false);
rootNode.setRenderState(wireState);
// ---- LIGHTS
/** Set up a basic, default light. */
PointLight light = new PointLight();
light.setDiffuse(new ColorRGBA(0.75f, 0.75f, 0.75f, 0.75f));
light.setAmbient(new ColorRGBA(0.5f, 0.5f, 0.5f, 1.0f));
light.setLocation(new Vector3f(100, 100, 100));
light.setEnabled(true);
/**
* Attach the light to a lightState and the lightState to
* rootNode.
*/
lightState = renderer.createLightState();
lightState.setEnabled(true);
lightState.attach(light);
rootNode.setRenderState(lightState);
// Finally, a stand alone node (not attached to root on purpose)
statNode = new Node("FPS node");
statNode.setCullHint(Spatial.CullHint.Never);
if (Debug.stats) {
setupStatGraphs();
setupStats();
}
statNode.updateGeometricState(0, true);
statNode.updateRenderState();
try {
simpleAppletSetup();
} catch (Exception e) {
// Had issues setting up. We'll catch it and go on so it
// doesn't
// try setting up over and over.
logger.logp(Level.SEVERE, this.getClass().toString(),
"simpleSetup()", "Exception", e);
}
/** Assign key P to action "toggle_pause". */
KeyBindingManager.getKeyBindingManager().set("toggle_pause",
KeyInput.KEY_P);
/** Assign key T to action "toggle_wire". */
KeyBindingManager.getKeyBindingManager().set("toggle_wire",
KeyInput.KEY_T);
/** Assign key L to action "toggle_lights". */
KeyBindingManager.getKeyBindingManager().set("toggle_lights",
KeyInput.KEY_L);
/** Assign key B to action "toggle_bounds". */
KeyBindingManager.getKeyBindingManager().set("toggle_bounds",
KeyInput.KEY_B);
/** Assign key N to action "toggle_normals". */
KeyBindingManager.getKeyBindingManager().set("toggle_normals",
KeyInput.KEY_N);
/** Assign key C to action "camera_out". */
KeyBindingManager.getKeyBindingManager().set("camera_out",
KeyInput.KEY_C);
KeyBindingManager.getKeyBindingManager().set("screen_shot",
KeyInput.KEY_F1);
KeyBindingManager.getKeyBindingManager().set("exit",
KeyInput.KEY_ESCAPE);
KeyBindingManager.getKeyBindingManager().set("mem_report",
KeyInput.KEY_R);
status = STATUS_RUNNING;
}
}
public void simpleRender() {
simpleAppletRender();
statNode.draw(renderer);
}
/**
* Set up which stats to graph
*
*/
protected void setupStats() {
tgrapher.addConfig(StatType.STAT_FRAMES, LineGrapher.ConfigKeys.Color.name(), ColorRGBA.green);
tgrapher.addConfig(StatType.STAT_TRIANGLE_COUNT, LineGrapher.ConfigKeys.Color.name(), ColorRGBA.cyan);
tgrapher.addConfig(StatType.STAT_QUAD_COUNT, LineGrapher.ConfigKeys.Color.name(), ColorRGBA.lightGray);
tgrapher.addConfig(StatType.STAT_LINE_COUNT, LineGrapher.ConfigKeys.Color.name(), ColorRGBA.red);
tgrapher.addConfig(StatType.STAT_GEOM_COUNT, LineGrapher.ConfigKeys.Color.name(), ColorRGBA.gray);
tgrapher.addConfig(StatType.STAT_TEXTURE_BINDS, LineGrapher.ConfigKeys.Color.name(), ColorRGBA.orange);
tgrapher.addConfig(StatType.STAT_FRAMES, TabledLabelGrapher.ConfigKeys.Decimals.name(), 0);
tgrapher.addConfig(StatType.STAT_FRAMES, TabledLabelGrapher.ConfigKeys.Name.name(), "Frames/s:");
tgrapher.addConfig(StatType.STAT_TRIANGLE_COUNT, TabledLabelGrapher.ConfigKeys.Decimals.name(), 0);
tgrapher.addConfig(StatType.STAT_TRIANGLE_COUNT, TabledLabelGrapher.ConfigKeys.Name.name(), "Avg.Tris:");
tgrapher.addConfig(StatType.STAT_TRIANGLE_COUNT, TabledLabelGrapher.ConfigKeys.FrameAverage.name(), true);
tgrapher.addConfig(StatType.STAT_QUAD_COUNT, TabledLabelGrapher.ConfigKeys.Decimals.name(), 0);
tgrapher.addConfig(StatType.STAT_QUAD_COUNT, TabledLabelGrapher.ConfigKeys.Name.name(), "Avg.Quads:");
tgrapher.addConfig(StatType.STAT_QUAD_COUNT, TabledLabelGrapher.ConfigKeys.FrameAverage.name(), true);
tgrapher.addConfig(StatType.STAT_LINE_COUNT, TabledLabelGrapher.ConfigKeys.Decimals.name(), 0);
tgrapher.addConfig(StatType.STAT_LINE_COUNT, TabledLabelGrapher.ConfigKeys.Name.name(), "Avg.Lines:");
tgrapher.addConfig(StatType.STAT_LINE_COUNT, TabledLabelGrapher.ConfigKeys.FrameAverage.name(), true);
tgrapher.addConfig(StatType.STAT_GEOM_COUNT, TabledLabelGrapher.ConfigKeys.Decimals.name(), 0);
tgrapher.addConfig(StatType.STAT_GEOM_COUNT, TabledLabelGrapher.ConfigKeys.Name.name(), "Avg.Objs:");
tgrapher.addConfig(StatType.STAT_GEOM_COUNT, TabledLabelGrapher.ConfigKeys.FrameAverage.name(), true);
tgrapher.addConfig(StatType.STAT_TEXTURE_BINDS, TabledLabelGrapher.ConfigKeys.Decimals.name(), 0);
tgrapher.addConfig(StatType.STAT_TEXTURE_BINDS, TabledLabelGrapher.ConfigKeys.Name.name(), "Avg.Tex binds:");
tgrapher.addConfig(StatType.STAT_TEXTURE_BINDS, TabledLabelGrapher.ConfigKeys.FrameAverage.name(), true);
}
/**
* Set up the graphers we will use and the quads we'll show the stats on.
*
*/
protected void setupStatGraphs() {
StatCollector.setSampleRate(1000L);
StatCollector.setMaxSamples(30);
labGraph = new Quad("labelGraph", Math.max(renderer.getWidth()/3, 250), Math.max(renderer.getHeight()/3, 250)) {
private static final long serialVersionUID = 1L;
@Override
public void draw(Renderer r) {
StatCollector.pause();
super.draw(r);
StatCollector.resume();
}
};
tgrapher = GraphFactory.makeTabledLabelGraph((int)labGraph.getWidth(), (int)labGraph.getHeight(), labGraph);
tgrapher.setColumns(1);
labGraph.setLocalTranslation(0, (renderer.getHeight()*5/6), 0);
statNode.attachChild(labGraph);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -