예제 #1
0
void android_main(struct android_app* state)
{
    app_dummy();
	state->userData = &app;

	// Prepare to monitor accelerometer
	app.sensorManager = ASensorManager_getInstance();
	app.sensorEventQueue = ASensorManager_createEventQueue(app.sensorManager, state->looper, LOOPER_ID_USER, NULL, NULL);

	if (state->savedState != NULL)
	{
		// We are starting with a previous saved state; restore from it.
		app.state = *(AppState*)state->savedState;
	}

	if(gRoot == NULL)
	{
		gRoot = new Ogre::Root();
		#ifdef OGRE_STATIC_LIB
			gStaticPluginLoader = new Ogre::StaticPluginLoader();
			gStaticPluginLoader->load();
		#endif
        gRoot->setRenderSystem(gRoot->getAvailableRenderers().at(0));
        gRoot->initialise(false);	
	}


    state->onAppCmd = &handleCmd;
    state->onInputEvent = &handleInput;

    int ident, events;
    struct android_poll_source* source;
    
    while (true)
    {
        while ((ident = ALooper_pollAll(0, NULL, &events, (void**)&source)) >= 0)
        {
            if (source != NULL)
            {
            	source->process(state, source);
            }
            
            if (state->destroyRequested != 0)
            {
            	return;
            }
        }
        
		if(gRenderWnd != NULL && gRenderWnd->isActive())
		{
			gRenderWnd->windowMovedOrResized();
			gRoot->renderOneFrame();

			InitGameScene();

		}
    }
}
예제 #2
0
void CSceneManager::OnSelect(float dt)
{
	static float timer = 0.f;
	static bool swch = true;
	static bool swch2 = true;
	if(m_pHge->Input_KeyDown(HGEK_LBUTTON)) swch2 = false;
	if(swch2)
	{
		if(swch)
		{
			timer += dt;
			if(timer > 1.0f)
			{
				timer = 1.f;
				swch = false;
			}
		}else
		{
			timer -= dt;
			if(timer < 0.0f)
			{
				timer = 0.f;
				swch = true;
			}
		}
	}else
	{
		if(swch)
		{
			timer += dt*15;
			if(timer > 1.0f)
			{
				timer = 1.f;
				swch = false;
			}
		}else
		{
			timer -= dt*15;
			if(timer < 0.0f)
			{
				timer = 0.f;
				swch = true;
			}
		}
		m_timer += dt;
		if(m_timer > 1.0f)
		{
			InitGameScene();
			//m_pRs->Purge(1);//问题不明
		}
	}
	int alpha = (int)(timer * 255);
	m_alpha = (int)(m_timer * 255);
	if(alpha < 0) alpha = 0;
	m_pSltSpr->SetColor(ARGB(alpha, 0xff, 0xff, 0xff));
	
}