package com.example.android.rs.nbody_gl; import android.content.Context; import android.opengl.GLSurfaceView; import android.util.AttributeSet; import android.util.Log; import android.view.InputDevice; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; public class BasicGLSurfaceView extends GLSurfaceView { private static final String TAG = "BasicGLSurfaceView"; private final BasicGLRenderer mRenderer; public BasicGLSurfaceView(Context context, AttributeSet attrs) { super(context, attrs); setEGLContextClientVersion(2); mRenderer = new BasicGLRenderer(context, this); setup(); } public BasicGLSurfaceView(Context context) { super(context); setEGLContextClientVersion(2); mRenderer = new BasicGLRenderer(context, this); setup(); } private void setup() { setRenderer(mRenderer); setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); setFocusable(true); setFocusableInTouchMode(true); requestFocus(); } private final float TOUCH_SCALE_FACTOR = 180.0f / 320; private float mPreviousX; private float mPreviousY; @Override public void onResume() { super.onResume(); mRenderer.onResume(); } @Override public void onPause() { mRenderer.onPause(); super.onPause(); } @Override public boolean onTouchEvent(MotionEvent e) { mRenderer.onTouchEvent(e); return true; } @Override public boolean onGenericMotionEvent(MotionEvent event) { Log.v(TAG,"onGenericMotionEvent "); if (event.isFromSource(InputDevice.SOURCE_CLASS_JOYSTICK)) { if (event.getAction() == MotionEvent.ACTION_MOVE) { float x = event.getAxisValue(MotionEvent.AXIS_X); float y = event.getAxisValue(MotionEvent.AXIS_Y); mRenderer.onJoystick(x,y); return true; } } return super.onGenericMotionEvent(event); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { mRenderer.onKeyDown(keyCode, event); return super.onKeyDown(keyCode, event); } }