void DxStdMtl2::Draw() { bool NegScale; if(!IsDxMaterialEnabled(map)) return; TimeValue m_T = GetCOREInterface()->GetTime(); NegScale = TMNegParity(mpMeshCache->GetActiveNode(m_CurCache)->GetObjTMAfterWSM(m_T)); Mtl * m_Mtl = mpMeshCache->GetActiveNode(m_CurCache)->GetMtl(); Color col = GetCOREInterface()->GetViewportBGColor(); D3DCOLOR bkgColor = col.toRGB(); if(!pd3dDevice) pd3dDevice = GetDevice(); int w =0, h =0; myGWindow->GetWindowDimension(w,h); SetRenderStates(); if(pEffectParser) { SetEffectData(); if(!pEffectParser->PreRender(pd3dDevice,mpMeshCache->GetActiveRenderMesh(m_CurCache),this,this,bkgColor, w,h)) { DrawError(); return; } if(!mpMeshCache->GetActiveRenderMesh(m_CurCache)->Evaluate(pd3dDevice, mpMeshCache->GetActiveMesh(m_CurCache),GetMatIndex(m_Mtl),NegScale)) return; if(!pEffectParser->Render(pd3dDevice,mpMeshCache->GetActiveRenderMesh(m_CurCache),techniqueName.data())) { DrawError(); return; } } //draw the object in Red WireFrame mode for testing purposes else { DrawError(); } }
//================================================ //メインループ //================================================ void Luna::Main(long ArgNum, char *pArgStr[]) { //---------------------------------------- //全システムの開始 //---------------------------------------- if(Luna::Start() ) { //-------------------------------- //初期化処理 //-------------------------------- InitProcess(); //LunaInput::GetMouseData(&camera.Mouse); //LunaInput::GetMouseData(&camera.MouseOld); //-------------------------------- //ゲーム用ループ //-------------------------------- while(Luna::WaitForMsgLoop() ) { /*画面クリア*/ Luna3D::Clear(D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, COLOR_BLACK, 1.0f); //Luna3D::Clear(D3DCLEAR_TARGET, COLOR_WHITE); /*デバッグ画面クリア*/ // LunaDebug::Clear(); switch(g_GameMode) { case SCENE_INITIALIZE: { Initialize(); break; } case SCENE_LOGO: { //DrawLogo(); break; } case SCENE_TITLE: { DrawTitle(); break; } case SCENE_CHARSEL: { DrawCharaSelect(); break; } case SCENE_MAIN: { DrawMain(); break; } case SCENE_OPTION: { DrawOption(); break; } case SCENE_TUTOLIAL: { DrawTutorial(); break; } case SCENE_PAUSE: { DrawPause(); break; } case SCENE_PAUSEEXIT: { DrawPauseExit(); break; } case SCENE_ERROR: { DrawError(); break; } case SCENE_EXIT: { DrawExit(); break; } case SCENE_FADEIN: { Fadein(); break; } case SCENE_FADEOUT: { Fadeout(); break; } case SCENE_CONV: { Conversation(); break; } case SCENE_GAMECLEAR: { DrawGameClear(); break; } case SCENE_GAMEOVER: { DrawGameOver(); break; } case SCENE_CONTINUE: { DrawContinue(); break; } case SCENE_FINALIZE: { Finalize(); break; } } /*画面更新*/ Luna3D::Refresh(); /*デバッグ処理*/ // Debug(); } /*終了処理*/ Finalize(); } }