OSDN Git Service

Set optimal mime types and executable settings.
[mikumikustudio/MikuMikuStudio.git] / src / jmetest / scene / TestRotateAboutPoint.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
33 package jmetest.scene;
34
35 import com.jme.app.SimpleGame;
36 import com.jme.bounding.BoundingSphere;
37 import com.jme.math.Quaternion;
38 import com.jme.math.Vector3f;
39 import com.jme.scene.Node;
40 import com.jme.scene.shape.Sphere;
41
42 /**
43  * @version $Id: TestRotateAboutPoint.java,v 1.1 2007/08/03 00:04:00 nca Exp $
44  */
45 public class TestRotateAboutPoint extends SimpleGame {
46   private Quaternion rotQuat1 = new Quaternion();
47   private Quaternion rotQuat2 = new Quaternion();
48   
49   private float angle = 0;
50   private Vector3f axis = new Vector3f(0, 1, 0);
51   private Sphere s;
52   private Sphere moon1, moon2;
53   private Node pivotNode1, pivotNode2;
54
55   /**
56    * Entry point for the test,
57    * @param args
58    */
59   public static void main(String[] args) {
60     TestRotateAboutPoint app = new TestRotateAboutPoint();
61     app.setConfigShowMode(ConfigShowMode.AlwaysShow);
62     app.start();
63   }
64
65   protected void simpleUpdate() {
66     if (tpf < 1) {
67       angle = angle + (tpf * 1);
68       if (angle > 360) {
69         angle = 0;
70       }
71     }
72     rotQuat1.fromAngleAxis(angle, axis);
73     pivotNode1.setLocalRotation(rotQuat1);
74     
75     rotQuat2.fromAngleAxis(angle * 2, axis);
76     pivotNode2.setLocalRotation(rotQuat2);
77     
78   }
79
80   /**
81    * builds the trimesh.
82    * @see com.jme.app.SimpleGame#initGame()
83    */
84   protected void simpleInitGame() {
85     display.setTitle("jME - Rotation About a Point");
86
87     //Planet
88     s = new Sphere("Planet", 25, 25, 25);
89     s.setModelBound(new BoundingSphere());
90     s.updateModelBound();
91     rootNode.attachChild(s);
92     
93     //Moons
94     moon1 = new Sphere("Moon 1",25, 25, 10);
95     moon1.setModelBound(new BoundingSphere());
96     moon1.updateModelBound();
97     moon1.setLocalTranslation(40, 0, 0);
98     pivotNode1 = new Node("PivotNode 1");
99     pivotNode1.attachChild(moon1);
100     
101     moon2 = new Sphere("Moon 2",25, 25, 7.5f);
102     moon2.setModelBound(new BoundingSphere());
103     moon2.updateModelBound();
104     moon2.setLocalTranslation(60, 0, 0);
105     pivotNode2 = new Node("PivotNode 2");
106     pivotNode2.attachChild(moon2);
107     
108     rootNode.attachChild(pivotNode1);
109     rootNode.attachChild(pivotNode2);
110   }
111 }