package com.roxiga.guitar;

import android.content.Context;
import android.opengl.GLSurfaceView;
import android.opengl.GLU;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import com.roxiga.hypermotion3d.*;
import com.roxiga.models.*;

public class Guitar implements GLSurfaceView.Renderer
{
	//コンテクスト
	private Context _context;
	//画面幅
	public int _width;
	//画面高さ
	public int _height;
    //カメラ位置
    private Vector3D _eye = new Vector3D(0.0f, 100.0f, 1200.0f);
    //カメラの注視する点
    private Vector3D _lookAt = new Vector3D(0.0f, 100.0f, 0.0f);
    //カメラ視点上方向を表すベクトル
    private Vector3D _up = new Vector3D(0.0f, 1.0f, 0.0f);
    //①アコギを持つ主人公
    private Model3D _jersey = new BlueJersey();

    /**
     * @Override
     * コンストラクタ
     */
    public Guitar(Context context)
    {
        _context = context;
   }

    // @Override
    // 描画のために毎フレーム呼び出されるイベント
    public void onDrawFrame(GL10 gl)
    {
        // 描画用バッファをクリア
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT
        		| GL10.GL_DEPTH_BUFFER_BIT);

        // モデルビュー行列を指定
        gl.glMatrixMode(GL10.GL_MODELVIEW);
        // 現在選択されている行列(モデルビュー行列)に、単位行列をセット
        gl.glLoadIdentity();

        // カメラ位置をセット
        GLU.gluLookAt(gl,
                _eye._x,_eye._y,_eye._z,
                _lookAt._x,_lookAt._y,_lookAt._z,
                _up._x,_up._y,_up._z);
        //②
    	_jersey.draw(gl);
    }
  
    
     // @Override
     // サーフェイスのサイズ変更時に呼ばれる
     public void onSurfaceChanged(
    		GL10 gl, int width, int height)
     {
    	// ビューポートをサイズに合わせてセットしなおす
        gl.glViewport(0, 0, width, height);
        // アスペクトレート
        float ratio = (float) width / height;
        // 射影行列を選択
        gl.glMatrixMode(GL10.GL_PROJECTION);
        // 現在選択されている行列(射影行列)に、単位行列をセット
        gl.glLoadIdentity();
        /* Perspectiveの設定(視野角度, アスペクト比)、ニア、ファー*/
        GLU.gluPerspective(gl, 30.0f, ratio, 10f, 10000f);
    }

    // @Override
    //サーフェイスが生成または再生成される際に呼ばれる
    public void onSurfaceCreated(
    		GL10 gl, EGLConfig config)
    {
        // ディザを無効化
        gl.glDisable(GL10.GL_DITHER);
        // カラーとテクスチャ座標の補間精度を、最も効率的なものに指定
        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,
        		GL10.GL_FASTEST);
        // 片面表示を有効に
        gl.glEnable(GL10.GL_CULL_FACE);
        // カリング設定をCCWに
        gl.glFrontFace(GL10.GL_CCW);
        // 深度テストを有効に
        gl.glEnable(GL10.GL_DEPTH_TEST);
    	//テクスチャ機能ON
    	gl.glEnable(GL10.GL_TEXTURE_2D);
    	//背景色
    	gl.glClearColor(0,0,0,1);
    	// 頂点配列を使うことを宣言
        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
        //テクスチャ
        gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
        //③テクスチャ読み込み
		_jersey.setTexture(gl,_context.getResources(),R.drawable.bluejersey);
   }
    
	
	public void actionDown(float x,float y)
	{
	}
	
	public void actionMove(float x,float y)
	{
	}

	public void actionUp(float x,float y)
	{
 	}
}
