Exemplo n.º 1
0
        public void OnDrawFrame(IGL10 gl)
        {
            long currentTime = (SystemClock.UptimeMillis() - time);

            time = SystemClock.UptimeMillis();

            if (currentTime == 0)
            {
                currentTime = 1;
            }
            float fps = (float)(1000 / currentTime);

            FPSSum += fps;
            FPSCount++;

            if (FPSCount > 100)
            {
                maxFPS    = (int)((FPSSum / FPSCount) / 5.0f * 4.0f);
                maxFPSSec = (int)(1000 / maxFPS);
            }

            FrameCount++;
            if (FrameCount > 200)
            {
                FrameCount = 0;
            }


            if (RenderManager.canvasView != null)
            {
                RenderManager.canvasView.dataText = "FPS: " + ((int)FPSSum / FPSCount).ToString() + "mFPS " + ((int)maxFPS).ToString() + ":" + ((int)fps).ToString();
            }

            if (GlobalVar.greenMode != 0)
            {
                if (currentTime < maxFPSSec)
                {
                    Thread.Sleep((int)(maxFPSSec - currentTime));
                    fps = 0.0f;
                }
            }

            RenderManager.Render(gl);
        }
Exemplo n.º 2
0
        public void OnSurfaceChanged(IGL10 gl, int width, int height)
        {
            RenderManager.width  = width;
            RenderManager.height = height;
            RenderManager.gl     = gl;
            RenderManager.GetCurrent().width  = width;
            RenderManager.GetCurrent().height = height;
            GLES20.GlViewport(0, 0, width, height);
            float ratio  = (float)width / height;
            float left   = -ratio;
            float right  = ratio;
            float top    = 1.0f;
            float bottom = -1.0f;
            float near   = 5.4f;
            float far    = 200.0f;

            Matrix.FrustumM(RenderManager.GetCurrent().mProjectionMatrix, 0, left, right, bottom, top, near, far);
            //ORTHO!
            //Matrix.OrthoM(RenderManager.GetCurrent().mProjectionMatrix, 0, 0f, width, 0.0f, height, 0, 50);
        }
Exemplo n.º 3
0
        public static float GetScrY(float x, float y, float z)
        {
            if (RenderManager.GetCurrent() == null)
            {
                return(-1);
            }

            float[] vector   = new float[4];
            int[]   viewport = new int[] { 0, 0, RenderManager.width, RenderManager.height };

            GLU.GluProject(x, y, z, RenderManager.GetCurrent()._mViewMatrix, 0, RenderManager.GetCurrent().mProjectionMatrix, 0, viewport, 0, vector, 0);

            if (vector[2] > 1.0f)
            {
                return(-1.0f);
            }
            else
            {
                return(viewport[3] - vector[1]);
            }
        }
Exemplo n.º 4
0
 protected override void OnPause()
 {
     wakeLock.Release();
     base.OnPause();
     RenderManager.Pause();
 }
Exemplo n.º 5
0
 protected override void OnResume()
 {
     wakeLock.Acquire(100);
     base.OnResume();
     RenderManager.Resume();
 }
Exemplo n.º 6
0
        public bool OnTouch(View v, MotionEvent e)
        {
            if (touchLock)
            {
                return(false);
            }
            touchLock = true;
            switch (e.Action)
            {
            case MotionEventActions.Down:
                touchX = -1;
                if ((e.GetX() > 0) && (e.GetX() < 100) && (e.GetY() > 0) && (e.GetY() < 100))
                {
                    if (RenderManager.edgeCount > 39)
                    {
                        break;
                    }
                    ObjectManager.del(0);
                    if (ObjectManager.getCount() != 0)
                    {
                        ObjectManager.del(0);
                    }

                    RenderManager.edgeCount++;
                    RenderManager.Resume();
                }
                else
                if ((e.GetX() > RenderManager.metrics.WidthPixels - 100) && (e.GetX() < RenderManager.metrics.WidthPixels) && (e.GetY() > 0) && (e.GetY() < 100))
                {
                    if (RenderManager.edgeCount < 3)
                    {
                        break;
                    }
                    ObjectManager.del(0);
                    if (ObjectManager.getCount() != 0)
                    {
                        ObjectManager.del(0);
                    }
                    RenderManager.edgeCount--;
                    RenderManager.Resume();
                }
                else
                {
                    touchX    = e.GetX();
                    touchY    = e.GetY();
                    touchTime = SystemClock.UptimeMillis();
                }
                break;

            case MotionEventActions.Up:
                if (touchX != -1)
                {
                    Move(e);
                }
                break;

            case MotionEventActions.Move:
                if (touchX != -1)
                {
                    Move(e);
                }
                break;
            }
            touchLock = false;
            return(true);
        }