Пример #1
0
        public void OnPause()
        {
            lock (m_StateChanged)
            {
                if (IsFinishing)
                {
                    m_State = GLGameState.Finished;
                }
                else
                {
                    m_State = GLGameState.Paused;
                }

                while (true)
                {
                    try
                    {
                        Monitor.Wait(m_StateChanged);
                        break;
                    }
                    catch (ThreadInterruptedException e)
                    {
                        Debug.WriteLine("ERROR : " + e);
                    }
                }
            }
        }
Пример #2
0
        public void OnDrawFrame(IGL10 gl)
        {
            GLGameState state;

            lock (_stateChanged) {
                state = this._state;
            }

            if (state == GLGameState.Running)
            {
                float deltaTime = (Java.Lang.JavaSystem.NanoTime() - _startTime) / 1000000f;
                _startTime = Java.Lang.JavaSystem.NanoTime();
                _screen.Update(deltaTime);
                _screen.Present(deltaTime);
            }

            if (state == GLGameState.Paused)
            {
                _screen.Pause();
                lock (_stateChanged) {
                    _state = GLGameState.Idle;
                    //модификация
                }
            }

            if (state == GLGameState.Finished)
            {
                _screen.Pause();
                _screen.Dispose();
                lock (_stateChanged)
                {
                    _state = GLGameState.Idle;
                }
            }
        }
Пример #3
0
 public void OnSurfaceCreated(IGL10 gl, Javax.Microedition.Khronos.Egl.EGLConfig config)
 {
     _glGraphics.GL10 = gl;
     lock (_stateChanged)
     {
         if (_state == GLGameState.Initialized)
         {
             _screen = GetStartScreen();
         }
         _state = GLGameState.Running;
         _screen.Resume();
         _startTime = Java.Lang.JavaSystem.NanoTime();
     }
 }
Пример #4
0
        public void OnDrawFrame()
        {
            GLGameState state = GLGameState.None;

            lock (m_StateChanged)
            {
                state = this.m_State;
            }

            if (state == GLGameState.Running)
            {
                m_Stopwatch.Stop();

                // 前回計測時間からの経過時間の取得
                float deltaTime = m_Stopwatch.ElapsedTicks / 10000000.0f;

                m_Stopwatch.Reset();
                m_Stopwatch.Start();

                m_Screen.Update(deltaTime);
                m_Screen.Present(deltaTime);
            }

            if (m_State == GLGameState.Paused)
            {
                m_Screen.Pause();
                lock (m_StateChanged)
                {
                    this.m_State = GLGameState.Idel;
                    NotifyAll();
                }
            }

            if (m_State == GLGameState.Finished)
            {
                m_Screen.Pause();
                m_Screen.Dispose();

                lock (m_StateChanged)
                {
                    this.m_State = GLGameState.Idel;
                    NotifyAll();
                }
            }
        }
Пример #5
0
        public void OnSurfaceCreated(GLKView glkView)
        {
            m_GLGraphics = new GLGraphics(glkView);
            Debug.WriteLine(string.Format("Width:{0} / Height:{1}", m_GLGraphics.GetWidth(), m_GLGraphics.GetHeight()));

            m_Input = new IOSInput();

            lock (m_StateChanged)
            {
                if (m_State == GLGameState.Initialized)
                {
                    m_Screen = GetStartScreen();
                }

                m_State = GLGameState.Running;
                m_Screen.Resume();
            }
        }
Пример #6
0
 protected override void OnPause()
 {
     base.OnPause();
     lock (_stateChanged)
     {
         if (this.IsFinishing)
         {
             _state = GLGameState.Finished;
         }
         else
         {
             _state = GLGameState.Paused;
         }
         //модификация кода
     }
     _wakeLock.Release();
     _glView.OnPause();
     //модификация кода
 }