1package com.example.android.rs.nbody_gl;
2
3import android.content.Context;
4import android.opengl.GLSurfaceView;
5import android.util.AttributeSet;
6import android.util.Log;
7import android.view.InputDevice;
8import android.view.KeyEvent;
9import android.view.MotionEvent;
10import android.view.View;
11
12public class BasicGLSurfaceView extends GLSurfaceView {
13    private static final String TAG = "BasicGLSurfaceView";
14    private final BasicGLRenderer mRenderer;
15
16    public BasicGLSurfaceView(Context context, AttributeSet attrs) {
17        super(context, attrs);
18        setEGLContextClientVersion(2);
19        mRenderer = new BasicGLRenderer(context, this);
20        setup();
21    }
22
23    public BasicGLSurfaceView(Context context) {
24        super(context);
25        setEGLContextClientVersion(2);
26        mRenderer = new BasicGLRenderer(context, this);
27        setup();
28    }
29
30    private void setup() {
31        setRenderer(mRenderer);
32        setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
33        setFocusable(true);
34        setFocusableInTouchMode(true);
35        requestFocus();
36
37    }
38
39    private final float TOUCH_SCALE_FACTOR = 180.0f / 320;
40    private float mPreviousX;
41    private float mPreviousY;
42
43    @Override
44    public void onResume() {
45        super.onResume();
46        mRenderer.onResume();
47    }
48
49    @Override
50    public void onPause() {
51        mRenderer.onPause();
52        super.onPause();
53    }
54
55    @Override
56    public boolean onTouchEvent(MotionEvent e) {
57        mRenderer.onTouchEvent(e);
58        return true;
59    }
60
61    @Override
62    public boolean onGenericMotionEvent(MotionEvent event) {
63        Log.v(TAG,"onGenericMotionEvent ");
64        if (event.isFromSource(InputDevice.SOURCE_CLASS_JOYSTICK)) {
65            if (event.getAction() == MotionEvent.ACTION_MOVE) {
66                float x = event.getAxisValue(MotionEvent.AXIS_X);
67                float y = event.getAxisValue(MotionEvent.AXIS_Y);
68                mRenderer.onJoystick(x,y);
69                return true;
70            }
71        }
72        return super.onGenericMotionEvent(event);
73    }
74
75    @Override
76    public boolean onKeyDown(int keyCode, KeyEvent event) {
77        mRenderer.onKeyDown(keyCode, event);
78         return super.onKeyDown(keyCode, event);
79     }
80
81
82}