159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta/*
359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Android 2.2+ SimpleTextured test.
459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta *
559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * created: Mon Nov  8 00:08:22 EST 2010
659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */
759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
859b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapackage jme3test.android;
959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
1059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
1159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.app.SimpleApplication;
1259b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.asset.TextureKey;
1359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.light.PointLight;
1459b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.material.Material;
1559b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.math.ColorRGBA;
1659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.math.Vector3f;
1759b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.Geometry;
1859b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.Mesh;
1959b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.Node;
2059b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.shape.Box;
2159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.shape.Sphere;
2259b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.texture.Texture;
2359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.util.TangentBinormalGenerator;
2459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
2559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
2659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapublic class SimpleTexturedTest extends SimpleApplication {
2759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
2859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta	private static final java.util.logging.Logger logger = java.util.logging.Logger.getLogger(SimpleTexturedTest.class.getName());
2959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
3059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
3159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta	private Node spheresContainer = new Node("spheres-container");
3259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
3359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
3459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta	private boolean lightingEnabled = true;
3559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta	private boolean texturedEnabled = true;
3659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta	private boolean spheres = true;
3759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
3859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta	@Override
3959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta	public void simpleInitApp() {
4059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
4159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta	    //flyCam.setRotationSpeed(0.01f);
4259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
4359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
4459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		Mesh shapeSphere = null;
4559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		Mesh shapeBox = null;
4659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
4759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
4859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		shapeSphere = new Sphere(16, 16, .5f);
4959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		shapeBox = new Box(Vector3f.ZERO, 0.3f, 0.3f, 0.3f);
5059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
5159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
5259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta	//	ModelConverter.optimize(geom);
5359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
5459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		Texture texture = assetManager.loadTexture(new TextureKey("Interface/Logo/Monkey.jpg"));
5559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		Texture textureMonkey = assetManager.loadTexture(new TextureKey("Interface/Logo/Monkey.jpg"));
5659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
5759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		Material material = null;
5859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		Material materialMonkey = null;
5959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
6059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		if (texturedEnabled) {
6159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta			if (lightingEnabled) {
6259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				material = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
6359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				material.setBoolean("VertexLighting", true);
6459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				material.setFloat("Shininess", 127);
6559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				material.setBoolean("LowQuality", true);
6659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				material.setTexture("DiffuseMap", texture);
6759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
6859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				materialMonkey = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
6959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				materialMonkey.setBoolean("VertexLighting", true);
7059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				materialMonkey.setFloat("Shininess", 127);
7159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				materialMonkey.setBoolean("LowQuality", true);
7259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				materialMonkey.setTexture("DiffuseMap", textureMonkey);
7359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
7459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta			} else {
7559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				material = new Material(assetManager, "Common/MatDefs/Misc/SimpleTextured.j3md");
7659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				material.setTexture("ColorMap", texture);
7759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
7859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				materialMonkey = new Material(assetManager, "Common/MatDefs/Misc/SimpleTextured.j3md");
7959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				materialMonkey.setTexture("ColorMap", textureMonkey);
8059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta			}
8159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		} else {
8259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta			material = new Material(assetManager, "Common/MatDefs/Misc/SolidColor.j3md");
8359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta			material.setColor("Color", ColorRGBA.Red);
8459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta			materialMonkey = new Material(assetManager, "Common/MatDefs/Misc/SolidColor.j3md");
8559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta			materialMonkey.setColor("Color", ColorRGBA.Red);
8659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		}
8759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
8859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		TangentBinormalGenerator.generate(shapeSphere);
8959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		TangentBinormalGenerator.generate(shapeBox);
9059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
9159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		int iFlipper = 0;
9259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		for (int y = -1; y < 2; y++) {
9359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta			for (int x = -1; x < 2; x++){
9459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				Geometry geomClone = null;
9559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
9659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				//iFlipper++;
9759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				if (iFlipper % 2 == 0)
9859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				{
9959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta					geomClone = new Geometry("geometry-" + y + "-" + x, shapeBox);
10059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				}
10159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				else
10259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				{
10359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta					geomClone = new Geometry("geometry-" + y + "-" + x, shapeSphere);
10459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				}
10559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				if (iFlipper % 3 == 0)
10659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				{
10759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta					geomClone.setMaterial(materialMonkey);
10859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				}
10959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				else
11059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				{
11159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta					geomClone.setMaterial(material);
11259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				}
11359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				geomClone.setLocalTranslation(x, y, 0);
11459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
11559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta//				Transform t = geom.getLocalTransform().clone();
11659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta//				Transform t2 = geomClone.getLocalTransform().clone();
11759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta//				t.combineWithParent(t2);
11859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta//				geomClone.setLocalTransform(t);
11959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
12059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta				spheresContainer.attachChild(geomClone);
12159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta			}
12259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		}
12359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
12459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		spheresContainer.setLocalTranslation(new Vector3f(0, 0, -4f));
12559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		spheresContainer.setLocalScale(2.0f);
12659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
12759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		rootNode.attachChild(spheresContainer);
12859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
12959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		PointLight pointLight = new PointLight();
13059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
13159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		pointLight.setColor(new ColorRGBA(0.7f, 0.7f, 1.0f, 1.0f));
13259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
13359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		pointLight.setPosition(new Vector3f(0f, 0f, 0f));
13459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		pointLight.setRadius(8);
13559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
13659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		rootNode.addLight(pointLight);
13759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta	}
13859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
13959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta	@Override
14059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta	public void simpleUpdate(float tpf) {
14159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
14259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		// secondCounter has been removed from SimpleApplication
14359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                //if (secondCounter == 0)
14459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		//	logger.info("Frames per second: " + timer.getFrameRate());
14559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
14659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta		spheresContainer.rotate(0.2f * tpf, 0.4f * tpf, 0.8f * tpf);
14759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta	}
14859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
14959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta}
15059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
151