コード例 #1
0
//------------------------------------------------------------------------------
void keyboard(unsigned char key, int x, int y)
{
    switch( key )
    {
        case 0x1b:
#ifdef NOGLUT
            PostQuitMessage(0);
#else
            shutdownBase();
            shutdown();
            exit(0);
#endif
            break;
        case 'a':
            g_scale *= 0.5f;
            UPDATEUI(g_scale)
            break;
        case 'q':
            g_scale *= 2.0f;
            UPDATEUI(g_scale)
            break;
        case ' ':
            g_realtime.bNonStopRendering = g_realtime.bNonStopRendering ? false : true;
            UPDATEUI(g_realtime.bNonStopRendering);
            break;
        case '1':
            fx_TechScene    = fx_EffectScene->findTechnique(0);
            LOGI("Using scene technique %s", fx_TechScene->getName());
            #ifdef USESVCUI
            if(g_pComboTech) g_pComboTech->SetSelectedByIndex(0);
            #endif
            break;
        //case '2':
        //    fx_TechScene    = fx_EffectScene->findTechnique(1);
        //    LOGI("Using scene technique %s", fx_TechScene->getName());
        //    #ifdef USESVCUI
        //    if(g_pComboTech) g_pComboTech->SetSelectedByIndex(1);
        //    #endif
        //    break;
        //case '3':
        //    fx_TechScene    = fx_EffectScene->findTechnique(2);
        //    LOGI("Using scene technique %s", fx_TechScene->getName());
        //    #ifdef USESVCUI
        //    if(g_pComboTech) g_pComboTech->SetSelectedByIndex(2);
        //    #endif
        //    break;
        case 's':
            loadSceneEffect();
            break;
    }
}
コード例 #2
0
	Level::Level(string folder_p, string game_name) {
		folder = folder_p;
		terrain_info_file = "terrain";
		direct_light_name = "";

		spawn_yaw         = 0.0f;
		spawn_dead_height = -3000.0f;
		spawn_camera_view = LIBGENS_LEVEL_CAMERA_VIEW_FORWARD;
		spawn_position    = Vector3(0.0f, 0.0f, 0.0f);
		spawn_mode        = "Stand";
		spawn_speed       = 0.0f;
		spawn_time        = 0.0f;

		game_mode = LIBGENS_LEVEL_GAME_GENERATIONS;

		if (game_name == LIBGENS_LEVEL_GAME_STRING_UNLEASHED) {
			game_mode = LIBGENS_LEVEL_GAME_UNLEASHED;
		}

		loadStage();
		loadSceneEffect();
		loadSets();
		loadTerrain();
	}
コード例 #3
0
//------------------------------------------------------------------------------
void initGL()
{
    //--------------------------------------------------------------------------
#ifdef USESVCUI
    LOGI("adding more UI controls...\n");
    class ControlsEvents : public IEventsWnd
    {
        void ScalarChanged(IControlScalar *pWin, float &v, float prev)
        {
            g_renderCnt++;
        };
        void Button(IWindow *pWin, int pressed) 
        {
            size_t tag;
            pWin->GetUserData(&tag);
            keyboard((unsigned char)tag, 0,0);
        };
        void ToolbarChanged(IControlToolbar *pWin, int selecteditem, int prev) 
        {
            int states;
            size_t tag;
            int ddsidx;
            pWin->GetItemInfos(selecteditem, states, tag, NULL, 0, NULL, 0, ddsidx);
            keyboard((unsigned char)tag, 0,0);
        }
        void CheckBoxChanged(IControlScalar *pWin, bool &value, bool prev)
        {
            g_renderCnt++;
        }
	    void ComboSelectionChanged(IControlCombo *pWin, unsigned int selectedidx)
        {
            if(!strcmp(pWin->GetID(), "SCTECH"))
            {
                fx_TechScene    = fx_EffectScene->findTechnique(selectedidx);
            }
            else if(!strcmp(pWin->GetID(), "MTECH"))
            {
                // ...
            }
            g_renderCnt++;
        };
    };
    static ControlsEvents controlsEvents;
    //---------------------------------------------------------------------------
    if(g_pWinHandler)
    {
        g_pControls =  g_pWinHandler->CreateWindowFolding("CTRLS", "Controls");

        g_pComboTech = g_pWinHandler->CreateCtrlCombo("SCTECH", "Scene Tech", g_pControls);
        g_pWinHandler->CreateCtrlButton("LM", "Reload Materials", g_pControls)->SetUserData(NULL, 'm');
        g_pWinHandler->CreateCtrlButton("LS", "Reload Scene Effect", g_pControls)->SetUserData(NULL, 's');
        g_pWinHandler->VariableBind(g_pWinHandler->CreateCtrlCheck("RT", "Render Realtime", g_pControls), &g_realtime.bNonStopRendering);

        g_pControls->SetVisible(1)->SetLocation(g_winSz[0]+16,0)->SetSize(250,g_winSz[1]);
        // simplest solution: register the whole to one event manager
        g_pWinHandler->Register(&controlsEvents);
    }
#endif
    //---------------------------------------------------------------------------
    glewInit();
    glClearColor(0.1f, 0.1f, 0.2f, 1.0f);
    // Bind only one vao
    glGenVertexArrays(1, &g_vao);
    glBindVertexArray(g_vao);

    //
    // Effects
    //
    nvFX::setErrorCallback(errorCallbackFunc);
    nvFX::setMessageCallback(errorCallbackFunc);
    nvFX::setIncludeCallback(includeCallbackFunc);
    loadSceneEffect();
    loadModel();
    LOGI("Pg Up/Down : zoom\n");
    LOGI("Arrows: rotate the camera\n");
#ifdef NOGLUT
    LOGI("Ctrl + Arrows: pan the camera taget\n");
#endif
    LOGI("Mouse + left button: rotate the camera\n");
    LOGI("Mouse + middle button: Pan the camera target\n");
    LOGI("Mouse + right button: rotate Horizontally and change camera distance\n");
    LOGI("space: toggle redraw on every frame\n");
    LOGI("1,2,3 : switch between scene techniques\n");
    LOGI("m/s : reload material/scene effect\n");

    //
    // Timer Query
    //
    glGenQueries(4, timerQueries);
    //
    // Light... nothing special: it's a static light for this sample
    //
    perspective(g_lightProjection, 35.0f, 1.0f, 0.01f, 10.0f);
    look_at(g_lightView, g_lightPos, g_lightTarget, up);
    g_lightViewProj = g_lightProjection * g_lightView;
 	mat4 offsetMat = mat4(
		0.5f, 0.0f, 0.0f, 0.0f,
		0.0f, 0.5f, 0.0f, 0.0f,
		0.0f, 0.0f, 0.5f, 0.0f,
		0.5f, 0.5f, 0.5f, 1.0f);
   g_lightViewProjScaleBias = offsetMat * g_lightViewProj;
}