Android Open Source - jmini3d Demo Scene Controller






From Project

Back to project page jmini3d.

License

The source code is released under:

Copyright 2012 Mobialia http://www.mobialia.com/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to ...

If you think the Android project jmini3d listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package jmini3d.demo;
/*from  w w  w .  j a  va2  s  .c om*/
import java.util.HashMap;

import jmini3d.Scene;
import jmini3d.SceneController;
import jmini3d.Vector3;
import jmini3d.input.KeyListener;
import jmini3d.input.TouchListener;
import jmini3d.input.TouchPointer;

public class DemoSceneController implements SceneController, TouchListener, KeyListener {
  float cameraAngle;
  long initialTime;

  int sceneIndex = 0;
  Scene scenes[] = {new TeapotScene(), new CubeScene(), new EnvMapCubeScene(), new CubesScene(), new NormalMapScene()};
  int cameraModes[] = {0, 0, 0, 0, 1};

  public DemoSceneController() {
    initialTime = System.currentTimeMillis();
  }

  @Override
  public Scene getScene() {
    return scenes[sceneIndex];
  }

  @Override
  public boolean updateScene(int width, int height) {
    scenes[sceneIndex].setViewPort(width, height);

    // Rotate camera...
    cameraAngle = 0.0005f * (System.currentTimeMillis() - initialTime);

    float d = 5;
    Vector3 target = scenes[sceneIndex].getCamera().getTarget();
    scenes[sceneIndex].getCamera().setPosition((float) (target.x - d * Math.cos(cameraAngle)), //
        (float) (target.y - d * Math.sin(cameraAngle)), //
        target.z + (cameraModes[sceneIndex] == 0 ? (float) (d * Math.sin(cameraAngle)) : d / 2)//
    );
    ((ParentScene) scenes[sceneIndex]).update();

    return true;
  }

  private void nextScene() {
    if (sceneIndex >= scenes.length - 1) {
      sceneIndex = 0;
    } else {
      sceneIndex++;
    }
  }

  private void previousScene() {
    if (sceneIndex <= 0) {
      sceneIndex = scenes.length - 1;
    } else {
      sceneIndex--;
    }
  }

  @Override
  public boolean onTouch(HashMap<Integer, TouchPointer> pointers) {
    for (Integer key : pointers.keySet()) {
      TouchPointer pointer = pointers.get(key);
      if (pointer.status == TouchPointer.TOUCH_DOWN) {
        if (pointer.x > scenes[sceneIndex].getCamera().getWidth() / 2) {
          nextScene();
        } else {
          previousScene();
        }
      }
    }
    return true;
  }

  @Override
  public boolean onKeyDown(int key) {
    switch (key) {
      case KeyListener.KEY_RIGHT:
        nextScene();
        return true;
      case KeyListener.KEY_LEFT:
        previousScene();
        return true;
    }
    return false;
  }

  @Override
  public boolean onKeyUp(int key) {
    return false;
  }
}




Java Source Code List

cocoonjs.CocoonJsLinker.java
jmini3d.Blending.java
jmini3d.Camera.java
jmini3d.Color4.java
jmini3d.CubeMapTexture.java
jmini3d.Font.java
jmini3d.GpuObjectStatus.java
jmini3d.MatrixUtils.java
jmini3d.Object3d.java
jmini3d.Rect.java
jmini3d.SceneController.java
jmini3d.Scene.java
jmini3d.Texture.java
jmini3d.Utils.java
jmini3d.Vector3.java
jmini3d.android.Activity3d.java
jmini3d.android.GeometryBuffers.java
jmini3d.android.GlSurfaceView3d.java
jmini3d.android.GpuUploader.java
jmini3d.android.Program.java
jmini3d.android.Renderer3d.java
jmini3d.android.ResourceLoader.java
jmini3d.android.compat.CompatibilityWrapper5.java
jmini3d.android.demo.DemoActivity.java
jmini3d.android.input.InputController.java
jmini3d.demo.ArialFont.java
jmini3d.demo.CubeScene.java
jmini3d.demo.CubesScene.java
jmini3d.demo.DemoSceneController.java
jmini3d.demo.EnvMapCubeScene.java
jmini3d.demo.NormalMapScene.java
jmini3d.demo.ParentScene.java
jmini3d.demo.TeapotGeometry.java
jmini3d.demo.TeapotScene.java
jmini3d.geometry.BoxGeometry.java
jmini3d.geometry.Geometry.java
jmini3d.geometry.PlaneGeometry.java
jmini3d.geometry.SkyboxGeometry.java
jmini3d.geometry.SpriteGeometry.java
jmini3d.geometry.VariableGeometry.java
jmini3d.gwt.Canvas3d.java
jmini3d.gwt.EngineResources.java
jmini3d.gwt.EntryPoint3d.java
jmini3d.gwt.GeometryBuffers.java
jmini3d.gwt.GpuUploader.java
jmini3d.gwt.MyInt16Array.java
jmini3d.gwt.Program.java
jmini3d.gwt.Renderer3d.java
jmini3d.gwt.ResourceLoader.java
jmini3d.gwt.TextureLoadedListener.java
jmini3d.gwt.demo.DemoEntryPoint.java
jmini3d.gwt.input.InputController.java
jmini3d.input.KeyListener.java
jmini3d.input.TouchListener.java
jmini3d.input.TouchPointer.java
jmini3d.light.AmbientLight.java
jmini3d.light.DirectionalLight.java
jmini3d.light.Light.java
jmini3d.light.PointLight.java
jmini3d.material.Material.java
jmini3d.material.PhongMaterial.java
jmini3d.material.SpriteMaterial.java
jmini3d.utils.Fnt2Class.java
jmini3d.utils.Obj2Class.java