OSDN Git Service

e61d8bf5951eca2b2e73f37c820d0995f7ab1cd4
[mikumikustudio/MikuMikuStudio.git] / src / com / jme / app / SimpleGame.java
1 /*
2  * Copyright (c) 2003-2009 jMonkeyEngine
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  *   notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in the
14  *   documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
17  *   may be used to endorse or promote products derived from this software
18  *   without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 // $Id$
33 package com.jme.app;
34
35 import com.jme.image.Texture;
36 import com.jme.renderer.Renderer;
37 import com.jme.util.geom.Debugger;
38
39
40 /**
41  * Extends {@link BaseSimpleGame} to automatically update and render the root node.
42  *
43  * @author Joshua Slack
44  * @version $Revision$, $Date$
45  */
46 public abstract class SimpleGame extends BaseSimpleGame {
47
48     /**
49      * Called every frame to update scene information.
50      * 
51      * @param interpolation
52      *            unused in this implementation
53      * @see BaseSimpleGame#update(float interpolation)
54      */
55     protected final void update(float interpolation) {
56         super.update(interpolation);
57
58         if ( !pause ) {
59             /** Call simpleUpdate in any derived classes of SimpleGame. */
60             simpleUpdate();
61
62             /** Update controllers/render states/transforms/bounds for rootNode. */
63             rootNode.updateGeometricState(tpf, true);
64             statNode.updateGeometricState(tpf, true);
65         }
66     }
67
68     /**
69      * This is called every frame in BaseGame.start(), after update()
70      * 
71      * @param interpolation
72      *            unused in this implementation
73      * @see AbstractGame#render(float interpolation)
74      */
75     protected final void render(float interpolation) {
76         super.render(interpolation);
77         
78         Renderer r = display.getRenderer();
79
80         /** Draw the rootNode and all its children. */
81         r.draw(rootNode);
82         
83         /** Call simpleRender() in any derived classes. */
84         simpleRender();
85         
86         /** Draw the stats node to show our stat charts. */
87         r.draw(statNode);
88         
89         doDebug(r);
90     }
91
92     @Override
93     protected void doDebug(Renderer r) {
94         super.doDebug(r);
95
96         if (showDepth) {
97             r.renderQueue();
98             Debugger.drawBuffer(Texture.RenderToTextureType.Depth, Debugger.NORTHEAST, r);
99         }
100     }
101 }