# HG changeset patch
# User Ritor1
# Date 1389014999 -21600
# Node ID ad71de147333aaa6432fc5ffeb776a2da936d265
# Parent cfe04d858766eb15153079f60ead4ed34241ee0d# Parent feeb7bfcb19e61d7b4f1c3fbd278dba230f319b7
Слияние
diff -r cfe04d858766 -r ad71de147333 Build/Visual Studio 2010/World of Might and Magic.vcxproj
--- a/Build/Visual Studio 2010/World of Might and Magic.vcxproj Mon Jan 06 19:29:01 2014 +0600
+++ b/Build/Visual Studio 2010/World of Might and Magic.vcxproj Mon Jan 06 19:29:59 2014 +0600
@@ -286,6 +286,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -311,6 +377,12 @@
+
+
+
+
+
+
@@ -383,6 +455,14 @@
+
+
+
+
+
+
+
+
Document
@@ -392,6 +472,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff -r cfe04d858766 -r ad71de147333 Build/Visual Studio 2010/World of Might and Magic.vcxproj.filters
--- a/Build/Visual Studio 2010/World of Might and Magic.vcxproj.filters Mon Jan 06 19:29:01 2014 +0600
+++ b/Build/Visual Studio 2010/World of Might and Magic.vcxproj.filters Mon Jan 06 19:29:59 2014 +0600
@@ -286,6 +286,222 @@
+
+ lib\libavcodec
+
+
+ lib\libavcodec
+
+
+ lib\libavcodec
+
+
+ lib\libavcodec
+
+
+ lib\libavcodec
+
+
+ lib\libavcodec
+
+
+ lib\libavcodec
+
+
+ lib\libavcodec
+
+
+ lib\libavcodec
+
+
+ lib\libavformat
+
+
+ lib\libavformat
+
+
+ lib\libavformat
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libavutil
+
+
+ lib\libswresample
+
+
+ lib\libswresample
+
+
+ lib\libswscale
+
+
+ lib\libswscale
+
+
+ lib\OpenAL
+
+
+ lib\OpenAL
+
+
+ lib\OpenAL
+
+
+ lib\OpenAL
+
+
+ lib\OpenAL
+
+
+ lib\OpenAL
+
@@ -324,6 +540,33 @@
{cb1041ae-addb-49d8-9ec1-ffe52d29ae64}
+
+ {00ba7ef3-081e-46d7-b651-f41dde1d3ff8}
+
+
+ {297ce683-6a2f-4d6b-b4ae-10cc59f75ebc}
+
+
+ {22b53a53-f99c-40ac-82fd-647f5012b96a}
+
+
+ {1d0988f5-957a-4c5b-b76a-d1f57a7ac8d4}
+
+
+ {10d851fd-bca4-46a3-9377-0a3ae5f6e9df}
+
+
+ {afaf8737-a450-48fc-91ad-a5f55625d40a}
+
+
+ {bfeab783-b0c1-4ad6-937d-e0914f011587}
+
+
+ {009e95ff-193d-47cc-9e52-e74b803c7aac}
+
+
+ {a28acffc-17d1-41fd-a206-c4c035a4e7b3}
+
@@ -336,6 +579,30 @@
lib\swig\swigwin-2.0.11
+
+ lib\OpenAL\lib\x86
+
+
+ lib\OpenAL\lib\x86
+
+
+ lib\OpenAL\lib\x86
+
+
+ lib\OpenAL\lib\x86
+
+
+ lib\OpenAL\lib\x86
+
+
+ lib\OpenAL\lib\x86
+
+
+ lib\OpenAL\lib\x86
+
+
+ lib\OpenAL\lib\x86
+
@@ -615,4 +882,33 @@
NewUI\Core
+
+
+ lib\OpenAL\lib\OpenAL
+
+
+ lib\OpenAL\lib\x86
+
+
+ lib\OpenAL\lib\x86
+
+
+ lib\OpenAL\lib\x86
+
+
+ lib\OpenAL\lib\x86
+
+
+ lib\OpenAL\lib\x86
+
+
+ lib\OpenAL\lib\x86
+
+
+ lib\OpenAL\lib\x86
+
+
+ lib\OpenAL\lib\x86
+
+
\ No newline at end of file
diff -r cfe04d858766 -r ad71de147333 CShow.h
--- a/CShow.h Mon Jan 06 19:29:01 2014 +0600
+++ b/CShow.h Mon Jan 06 19:29:59 2014 +0600
@@ -23,13 +23,13 @@
switch (movie)
{
- case MOVIE_3DOLogo: VideoPlayer::MovieLoop("3dologo", 0, 0, 1); break;
- case MOVIE_NWCLogo: VideoPlayer::MovieLoop("new world logo", 0, 1, 1); break;
- case MOVIE_JVC: VideoPlayer::MovieLoop("jvc", 0, 1, 1); break;
- case MOVIE_Intro: VideoPlayer::MovieLoop("Intro", 0, 1, 1); break;
- case MOVIE_Emerald: VideoPlayer::MovieLoop("Intro Post", 0, 1, 1); break;
- case MOVIE_Death: VideoPlayer::MovieLoop("losegame", 2, 1, 1); break;
- case MOVIE_Outro: VideoPlayer::MovieLoop("end_seq1", 20, 1, 1); break;
+ case MOVIE_3DOLogo: pVideoPlayer->MovieLoop("3dologo", 0, 0, 1); break;
+ case MOVIE_NWCLogo: pVideoPlayer->MovieLoop("new world logo", 0, 1, 1); break;
+ case MOVIE_JVC: pVideoPlayer->MovieLoop("jvc", 0, 1, 1); break;
+ case MOVIE_Intro: pVideoPlayer->MovieLoop("Intro", 0, 1, 1); break;
+ case MOVIE_Emerald: pVideoPlayer->MovieLoop("Intro Post", 0, 1, 1); break;
+ case MOVIE_Death: pVideoPlayer->MovieLoop("losegame", 2, 1, 1); break;
+ case MOVIE_Outro: pVideoPlayer->MovieLoop("end_seq1", 20, 1, 1); break;
default:
Error("Invalid movie requested: %u", movie);
diff -r cfe04d858766 -r ad71de147333 Events.cpp
--- a/Events.cpp Mon Jan 06 19:29:01 2014 +0600
+++ b/Events.cpp Mon Jan 06 19:29:59 2014 +0600
@@ -508,7 +508,7 @@
v15 = _evt->v6;
strcpy(Str, Source);
v16 = RemoveQuotes(Str);
- VideoPlayer::MovieLoop(v16, 0, v14, 1);
+ pVideoPlayer->MovieLoop(v16, 0, v14, 1);
if ( !_stricmp(v16, "arbiter good") )
{
pParty->alignment = PartyAlignment_Good;
diff -r cfe04d858766 -r ad71de147333 Game.cpp
--- a/Game.cpp Mon Jan 06 19:29:01 2014 +0600
+++ b/Game.cpp Mon Jan 06 19:29:59 2014 +0600
@@ -168,7 +168,7 @@
GameUI_Footer_2();
viewparams->bRedrawGameUI = false;
}
- if (!pVideoPlayer->pSmackerMovie)
+ if (!pVideoPlayer->pMovie)//!pVideoPlayer->pSmackerMovie)
{
GameUI_DrawMinimap(488, 16, 625, 133, viewparams->uMinimapZoom, true);//redraw = pParty->uFlags & 2);
if (v4)
@@ -4591,8 +4591,8 @@
}
if ( GetCurrentMenuID() == MENU_CREDITSPROC && !pCurrentScreen )
{
- if ( pCurrentScreen == SCREEN_VIDEO )
- pVideoPlayer->FastForwardToFrame(pVideoPlayer->pResetflag);
+ //if ( pCurrentScreen == SCREEN_VIDEO )
+ //pVideoPlayer->FastForwardToFrame(pVideoPlayer->pResetflag);
if (GetCurrentMenuID() == MENU_NAMEPANELESC)
{
SetCurrentMenuID(MENU_CREATEPARTY);
diff -r cfe04d858766 -r ad71de147333 OSWindow.cpp
--- a/OSWindow.cpp Mon Jan 06 19:29:01 2014 +0600
+++ b/OSWindow.cpp Mon Jan 06 19:29:59 2014 +0600
@@ -76,8 +76,8 @@
case WM_SIZING: return *result = 1, true;
case WM_WINDOWPOSCHANGED:
- if (pVideoPlayer && pVideoPlayer->AnyMovieLoaded() && pVideoPlayer->pBinkBuffer)
- BinkBufferSetOffset(pVideoPlayer->pBinkBuffer, 0, 0);
+ //if (pVideoPlayer && pVideoPlayer->AnyMovieLoaded() && pVideoPlayer->pBinkBuffer)
+ //BinkBufferSetOffset(pVideoPlayer->pBinkBuffer, 0, 0);
return false;
case WM_CHAR:
@@ -301,14 +301,14 @@
pMiscTimer->Resume();
viewparams->bRedrawGameUI = true;
- if ( pVideoPlayer->pSmackerMovie )
+ if ( pVideoPlayer->pMovie)//pVideoPlayer->pSmackerMovie )
{
pRenderer->RestoreFrontBuffer();
pRenderer->_4A184C();
- pVideoPlayer->_4BF5B2();
+ //pVideoPlayer->_4BF5B2();
}
}
- if ( pAudioPlayer->hAILRedbook && !bGameoverLoop && !pVideoPlayer->pSmackerMovie )
+ if ( pAudioPlayer->hAILRedbook && !bGameoverLoop && !pVideoPlayer->pMovie)//!pVideoPlayer->pSmackerMovie )
AIL_redbook_resume(pAudioPlayer->hAILRedbook);
}
}
@@ -317,7 +317,8 @@
if (!(dword_6BE364_game_settings_1 & GAME_SETTINGS_APP_INACTIVE))
{
dword_4E98BC_bApplicationActive = 0;
- if ( (pVideoPlayer->pSmackerMovie || pVideoPlayer->pBinkMovie) && pVideoPlayer->bPlayingMovie )
+ if ( pVideoPlayer->pMovie//(pVideoPlayer->pSmackerMovie || pVideoPlayer->pBinkMovie)
+ && pVideoPlayer->bPlayingMovie )
pVideoPlayer->bStopBeforeSchedule = 1;
if (/*pRenderer->bUserDirect3D && */pRenderer->uAcquiredDirect3DDevice == 1)
diff -r cfe04d858766 -r ad71de147333 Outdoor.cpp
--- a/Outdoor.cpp Mon Jan 06 19:29:01 2014 +0600
+++ b/Outdoor.cpp Mon Jan 06 19:29:59 2014 +0600
@@ -1821,12 +1821,12 @@
for (uint i = 0; i < uNumBModels; ++i)
{
//v48 = 0;
- BSPModel* model = &pBModels[i];
-
- model->pVertices.pVertices = nullptr;
- model->pFaces = nullptr;
- model->pFacesOrdering = nullptr;
- model->pNodes = nullptr;
+ //BSPModel* model = &pBModels[i];
+
+ pBModels[i].pVertices.pVertices = nullptr;
+ pBModels[i].pFaces = nullptr;
+ pBModels[i].pFacesOrdering = nullptr;
+ pBModels[i].pNodes = nullptr;
//FileName[0] = 0;
//v108 = (int)&pBModels[i];
//sprintf(FileName, "%s", v108);
@@ -1837,35 +1837,35 @@
//v107 = 12 * v50->pVertices.uNumVertices;
//v106 = (char *)v50->pVertices.pVertices;
assert(sizeof(Vec3_int_) == 12);
- uint verticesSize = model->pVertices.uNumVertices * sizeof(Vec3_int_);
- model->pVertices.pVertices = (Vec3_int_ *)malloc(verticesSize);
- memcpy(model->pVertices.pVertices, pSrc, verticesSize);
+ uint verticesSize = pBModels[i].pVertices.uNumVertices * sizeof(Vec3_int_);
+ pBModels[i].pVertices.pVertices = (Vec3_int_ *)malloc(verticesSize);
+ memcpy(pBModels[i].pVertices.pVertices, pSrc, verticesSize);
pSrc += verticesSize;
//v51 = &pBModels[v48];
//v108 = (int)FileName;
//v107 = 308 * v51->uNumFaces;
//v106 = (char *)v51->pFaces;
assert(sizeof(ODMFace) == 308);
- uint facesSize = model->uNumFaces * sizeof(ODMFace);
- model->pFaces = (ODMFace *)malloc(facesSize);
- memcpy(model->pFaces, pSrc, facesSize);
+ uint facesSize = pBModels[i].uNumFaces * sizeof(ODMFace);
+ pBModels[i].pFaces = (ODMFace *)malloc(facesSize);
+ memcpy(pBModels[i].pFaces, pSrc, facesSize);
pSrc += facesSize;
//v52 = &pBModels[v48];
//v108 = (int)FileName;
//v107 = 2 * v52->uNumFaces;
//v106 = (char *)v52->pFacesOrdering;
- uint facesOrderingSize = model->uNumFaces * sizeof(short);
- model->pFacesOrdering = (unsigned __int16 *)malloc(facesOrderingSize);
- memcpy(model->pFacesOrdering, pSrc, facesOrderingSize);
+ uint facesOrderingSize = pBModels[i].uNumFaces * sizeof(short);
+ pBModels[i].pFacesOrdering = (unsigned __int16 *)malloc(facesOrderingSize);
+ memcpy(pBModels[i].pFacesOrdering, pSrc, facesOrderingSize);
pSrc += facesOrderingSize;
//v53 = &pBModels[v48];
//v108 = (int)FileName;
//v107 = 8 * v53->uNumNodes;
//v106 = (char *)v53->pNodes;
assert(sizeof(BSPNode) == 8);
- uint nodesSize = model->uNumNodes * sizeof(BSPNode);
- model->pNodes = (BSPNode *)malloc(nodesSize);
- memcpy(model->pNodes, pSrc, nodesSize);
+ uint nodesSize = pBModels[i].uNumNodes * sizeof(BSPNode);
+ pBModels[i].pNodes = (BSPNode *)malloc(nodesSize);
+ memcpy(pBModels[i].pNodes, pSrc, nodesSize);
pSrc += nodesSize;
//v54 = &pBModels[v48];
//v108 = 12 * v54->pVertices.uNumVertices;
@@ -1892,50 +1892,50 @@
//memcpy(v59, uSourceLen, (size_t)pFilename);
//uSourceLen = (char *)uSourceLen + (int)pFilename;
//ptr = (FILE *)malloc(10 * model->uNumFaces);
- const char* textureFilenames = (const char *)malloc(10 * model->uNumFaces);
+ const char* textureFilenames = (const char *)malloc(10 * pBModels[i].uNumFaces);
//pFilename = (char *)(10 * pBModels[v48].uNumFaces);
- memcpy((char *)textureFilenames, pSrc, 10 * model->uNumFaces);
- pSrc += 10 * model->uNumFaces;
+ memcpy((char *)textureFilenames, pSrc, 10 * pBModels[i].uNumFaces);
+ pSrc += 10 * pBModels[i].uNumFaces;
//v144 = 0;
//uSourceLen = (char *)uSourceLen + (int)pFilename;
//v60 = pBModels;
- for (uint j = 0; j < model->uNumFaces; ++j)
+ for (uint j = 0; j < pBModels[i].uNumFaces; ++j)
{
const char* texFilename = &textureFilenames[j * 10];
//v149 = 0;
//Str2 = (char *)ptr;
- ODMFace* face = &model->pFaces[j];
+ //ODMFace* face = &pBModels[i].pFaces[j];
//pFilename = (char *)v149 + (unsigned int)v60[v48].pFaces;
- if (~face->uAttributes & FACE_DONT_CACHE_TEXTURE)
+ if ( !(pBModels[i].pFaces[j].uAttributes & FACE_DONT_CACHE_TEXTURE))
{
v62 = pBitmaps_LOD->LoadTexture(texFilename);
// v63 = (ODMFace *)pFilename;
goto LABEL_68;
}
//v61 = pTextureFrameTable->FindTextureByName(texFilename);
- face->uTextureID = pTextureFrameTable->FindTextureByName(texFilename);
- if (!face->uTextureID)
+ pBModels[i].pFaces[j].uTextureID = pTextureFrameTable->FindTextureByName(texFilename);
+ if (!pBModels[i].pFaces[j].uTextureID)
{
v62 = pBitmaps_LOD->LoadTexture(texFilename);
//v63 = (ODMFace *)pFilename;
- face->uAttributes &= ~FACE_DONT_CACHE_TEXTURE;
+ pBModels[i].pFaces[j].uAttributes &= ~FACE_DONT_CACHE_TEXTURE;
LABEL_68:
- face->uTextureID = v62;
+ pBModels[i].pFaces[j].uTextureID = v62;
//v145 = (signed __int16)v62 != -1 ? &pBitmaps_LOD->pTextures[(signed __int16)v62] : 0;
//v108 = ((signed __int16)v62 != -1 ? pBitmaps_LOD->pTextures[(signed __int16)v62].palette_id1 : 36);
if ((signed __int16)v62 != -1)
pBitmaps_LOD->pTextures[v62].palette_id2 = pPaletteManager->LoadPalette(pBitmaps_LOD->pTextures[v62].palette_id1);
goto LABEL_69;
}
- pTextureFrameTable->LoadAnimationSequenceAndPalettes(face->uTextureID);
+ pTextureFrameTable->LoadAnimationSequenceAndPalettes(pBModels[i].pFaces[j].uTextureID);
LABEL_69:
- if (face->sCogTriggeredID)
+ if (pBModels[i].pFaces[j].sCogTriggeredID)
{
- if (face->HasEventHint())
- face->uAttributes |= 0x1000;
+ if (pBModels[i].pFaces[j].HasEventHint())
+ pBModels[i].pFaces[j].uAttributes |= 0x100000;
else
- face->uAttributes &= ~0x1000;
+ pBModels[i].pFaces[j].uAttributes &= ~0x100000;
}
//++v144;
//v60 = pBModels;
@@ -1955,7 +1955,7 @@
//LABEL_75:
pGameLoadingUI_ProgressBar->Progress();
- memcpy(&uNumLevelDecorations, pSrc, 4u);
+ memcpy(&uNumLevelDecorations, pSrc, 4);
//uSourceLen = (char *)uSourceLen + 4;
if (uNumLevelDecorations > 3000)
MessageBoxW(nullptr, L"Can't load file!",
diff -r cfe04d858766 -r ad71de147333 Render.cpp
--- a/Render.cpp Mon Jan 06 19:29:01 2014 +0600
+++ b/Render.cpp Mon Jan 06 19:29:59 2014 +0600
@@ -9127,8 +9127,8 @@
&& pCurrentScreen != SCREEN_NPC_DIALOGUE
&& pCurrentScreen != SCREEN_CHANGE_LOCATION )
{
- if ( pCurrentScreen == SCREEN_INPUT_BLV )
- return pVideoPlayer->pSmackerMovie != 0;
+ if (pCurrentScreen == SCREEN_INPUT_BLV)
+ return pVideoPlayer->pMovie;//pSmackerMovie != 0;
if ( pCurrentScreen != SCREEN_BRANCHLESS_NPC_DIALOG )
return true;
}
diff -r cfe04d858766 -r ad71de147333 VideoPlayer.cpp
--- a/VideoPlayer.cpp Mon Jan 06 19:29:01 2014 +0600
+++ b/VideoPlayer.cpp Mon Jan 06 19:29:59 2014 +0600
@@ -356,9 +356,9 @@
if ( a2 == 2 )
v4 = 0;
ShowCursor(0);
- pVideoPlayer->OpenGlobalMovie(pName, 0, ScreenSizeFlag);
- pVideoPlayer->bPlayingMovie = 1;
- pVideoPlayer->field_44 = v4;
+ OpenGlobalMovie(pName, 0, ScreenSizeFlag);
+ bPlayingMovie = 1;
+ field_44 = v4;
if ( pRenderer->pRenderD3D )
{
pRenderer->ClearTarget(0);
@@ -397,13 +397,9 @@
}
GUI_MainMenuMessageProc();
- if (!pVideoPlayer->mMovie)
- {
- pVideoPlayer->mMovie = pVideoPlayer->mPlayer->LoadMovie("dummyFilename", client_width, client_height);
- }
- else if (pVideoPlayer->mMovie->Stopped())
+ if (pMovie->Stopped())
break;
- auto image = pVideoPlayer->mPlayer->DoFrame();
+ auto image = pPlayer->DoFrame();
if (image)
{
// draw to hwnd
@@ -568,10 +564,12 @@
bStopBeforeSchedule = false;
bBufferLoaded = 1;
+ /*
pSmackerMovie = 0;
pSmackerBuffer = 0;
pBinkMovie = 0;
pBinkBuffer = 0;
+ */
bPlayingMovie = false;
bFirstFrame = false;
bUsingSmackerMMX = SmackUseMMX(1);
@@ -590,7 +588,7 @@
//_BINK *pBinkMovie; // eax@1
//_BINKBUF *pBinkBuffer; // eax@3
//_SMACK *pSmackerMovie; // eax@5
-
+ /*
if ( pBinkMovie )
{
//BinkPause(pBinkMovie, 1);
@@ -618,6 +616,7 @@
SmackBufferClose(pSmackerBuffer);
pSmackerBuffer = 0;
}
+ */
if ( pSmackMovieBlit )
{
SmackBlitClose(pSmackMovieBlit);
@@ -631,14 +630,15 @@
AIL_redbook_resume(pAudioPlayer->hAILRedbook);
pEventTimer->Resume();
- if (mMovie)
+ if (pMovie)
{
- delete mMovie;
- mMovie = nullptr;
+ delete pMovie;
+ pMovie = nullptr;
}
}
//----- (004BECD5) --------------------------------------------------------
+/*
void VideoPlayer::FastForwardToFrame(unsigned int uDstFrameNum)
{
VideoPlayer *v2; // esi@1
@@ -859,10 +859,11 @@
Unload();
}
}
-
+*/
void VideoPlayer::_inlined_in_463149()
{
- if ( mMovie )// && !SmackWait(pSmackerMovie) )
+ /*
+ if ( pSmackMovie && !SmackWait(pSmackerMovie) )
{
pRenderer->BeginScene();
pMouse->DrawCursorToTarget();
@@ -870,7 +871,7 @@
pMouse->_469EA4();
pRenderer->EndScene();
}
- else if ( pBinkMovie )//&& !BinkWait(pBinkMovie) )
+ else if ( pBinkMovie && !BinkWait(pBinkMovie) )
{
pRenderer->BeginScene();
pMouse->DrawCursorToTarget();
@@ -878,9 +879,55 @@
pMouse->_469EA4();
pRenderer->EndScene();
}
+ */
+ if (pMovie)
+ {
+ pRenderer->BeginScene();
+ pMouse->DrawCursorToTarget();
+ UpdatePalette();
+ pMouse->_469EA4();
+ pRenderer->EndScene();
+ }
}
-auto pixels = new unsigned short[640 * 480];
+//auto pixels = new unsigned short[640 * 480];
+
+void VideoPlayer::UpdatePalette()
+{
+ //VideoPlayer *v2; // esi@1
+ unsigned __int16 *v3; // ebx@1
+ unsigned int v4; // edi@1
+ unsigned int v5; // eax@1
+ //_SMACK *v6; // eax@1
+
+ Log::Warning(L"smacker");
+
+ pRenderer->BeginScene();
+
+ if (pMovie->Stopped())
+ {
+ int width = pMovie->GetWidth();
+ int height = pMovie->GetHeight();
+ delete pMovie;
+ SetFilePointer(hVidFile, uOffset, nullptr, FILE_BEGIN);
+
+ pMovie = pPlayer->LoadMovieFromLOD(hVidFile, &readFunction, &seekFunction, width, height);
+ }
+ else
+ {
+
+ auto image = pPlayer->DoFrame();
+
+ if (image)
+ {
+ memcpy(pRenderer->pTargetSurface, image, 480 * 480 * 4);
+ delete[] image;
+ }
+ }
+
+ pRenderer->EndScene();
+}
+/*
//----- (004BF08B) --------------------------------------------------------
void VideoPlayer::SmackUpdatePalette()
{
@@ -891,59 +938,26 @@
//_SMACK *v6; // eax@1
Log::Warning(L"smacker");
- //return;
-
+
pRenderer->BeginScene();
v3 = pixels;//pRenderer->pTargetSurface;
v4 = 640;//pRenderer->uTargetSurfacePitch;
- //v5 = SmackCheckSurfaceFromat();
+ v5 = SmackCheckSurfaceFromat();
- //SmackToBuffer(pSmackerMovie, 8, 8, 2 * v4, pRenderer->field_14, v3, v5);
+ SmackToBuffer(pSmackerMovie, 8, 8, 2 * v4, pRenderer->field_14, v3, v5);
- /*
+
for (unsigned int y = 8; y < 8 + pSmackerMovie->Height; ++y)
for (unsigned int x = 8; x < 8 + pSmackerMovie->Width; ++x)
{
pRenderer->WritePixel16(x, y, pixels[x + y * 640]);
}
//delete [] pixels;
- */
+
//v6 = pSmackerMovie;
-// int i = 0;
-// while (true)
- //{
-
- if (pVideoPlayer->mMovie->Stopped())
- {
- //delete pVideoPlayer->mMovie;
- //pVideoPlayer->mMovie = nullptr;
- //Unload();//break;
- pVideoPlayer->mPlayer->Rewind();
- }
- else
- {
-
- auto image = pVideoPlayer->mPlayer->DoFrame();
-
- if (image)
- {
- memcpy(pRenderer->pTargetSurface, image, 480*480*4);
- /*for (unsigned int y = 8; y < 8 + 360; ++y)
- for (unsigned int x = 8; x < 8 + 480; ++x)
- {
- pRenderer->WritePixel16(x, y, image[y + x * 360]);
-
- }*/
- delete[] image;
- }
- }
-
- //delete pVideoPlayer->mMovie;
- //pVideoPlayer->mMovie = nullptr;
- //pVideoPlayer->Unload();
-
- /*
+ while (true)
+ {
if ( pSmackerMovie->NewPalette )
{
SmackBufferNewPalette(pSmackerBuffer, pSmackerMovie->Palette, (pSmackerMovie->PalType));
@@ -959,15 +973,14 @@
SmackNextFrame(pSmackerMovie);
else
Unload();
- */
pRenderer->EndScene();
}
+*/
-
-
+/*
//----- (004BF141) --------------------------------------------------------
_BINK *VideoPlayer::OpenBink(const char *pName)
{
@@ -1030,7 +1043,7 @@
}
return 0;
}
-
+*/
//----- (004BF28F) --------------------------------------------------------
void VideoPlayer::OpenHouseMovie(const char *pMovieName, unsigned int a3_1)
{
@@ -1043,10 +1056,12 @@
bStopBeforeSchedule = false;
bBufferLoaded = 1;
+ /*
pSmackerMovie = 0;
pSmackerBuffer = 0;
pBinkMovie = 0;
pBinkBuffer = 0;
+ */
bPlayingMovie = false;
bFirstFrame = false;
bUsingSmackerMMX = SmackUseMMX(1);
@@ -1058,49 +1073,7 @@
return;
}
- sprintf(Str2, "%s.smk", pMovieName);
- void *src = nullptr;
- unsigned int *offset = nullptr;
- for (uint i = 0; i < uNumMightVideoHeaders; ++i)
- {
- if (!_stricmp(Str2, pMightVideoHeaders[i].pVideoName))
- {
- src = (void *)hMightVid;
- offset = &pMightVideoHeaders[i].uFileOffset;
- uVidFile = 0;
- }
- }
- for (uint i = 0; i < uNumMagicVideoHeaders; ++i)
- {
- if (!_stricmp(Str2, pMagicVideoHeaders[i].pVideoName))
- {
- src = (void *)hMagicVid;
- offset = &pMagicVideoHeaders[i].uFileOffset;
- uVidFile = 1;
- }
- }
- if (!src)
- {
- Unload();
- MessageBoxA(0, "VideoPlayer error", "VideoPlayer Error", 0);
- return;
- }
-
- SetFilePointer(src, *offset, 0, FILE_BEGIN);
- strcpy(this->pCurrentMovieName, pMovieName);
- this->uMovieFormat = 1;
- this->uMovieFormatSwapped = 2;
- uSize = *(offset + sizeof(MovieHeader)) - *offset;
-
-
- auto hwnd = pVideoPlayer->window->GetApiHandle();
- RECT rc_client;
- GetClientRect(hwnd, &rc_client);
- int client_width = rc_client.right - rc_client.left,
- client_height = rc_client.bottom - rc_client.top;
-
- pVideoPlayer->mMovie = pVideoPlayer->mPlayer->LoadMovie("dummyFilename", client_width, client_height);
-
+ LoadMovie(pMovieName);
/*
this->pSmackerMovie = OpenSmack(Str2);
if ( !this->pSmackerMovie )
@@ -1131,15 +1104,13 @@
//----- (004BF3F9) --------------------------------------------------------
bool VideoPlayer::AnyMovieLoaded()
{
- return pSmackerMovie || pBinkMovie;
+ return pMovie;// pSmackerMovie || pBinkMovie;
}
//----- (004BF411) --------------------------------------------------------
void VideoPlayer::OpenGlobalMovie(const char *pFilename, unsigned int bLoop, int a4)
{
unsigned int v10; // eax@11
- char pVideoNameBik[120]; // [sp+Ch] [bp-28h]@2
- char pVideoNameSmk[120]; // [sp+Ch] [bp-28h]@2
if (!this->bBufferLoaded)
{
@@ -1150,70 +1121,17 @@
bStopBeforeSchedule = false;
bBufferLoaded = 1;
+ /*
pSmackerMovie = 0;
pSmackerBuffer = 0;
pBinkMovie = 0;
pBinkBuffer = 0;
+ */
bPlayingMovie = false;
bFirstFrame = false;
bUsingSmackerMMX = SmackUseMMX(1);
this->bLoopPlaying = bLoop;
-
- sprintf(pVideoNameBik, "%s.bik", pFilename);
- sprintf(pVideoNameSmk, "%s.smk", pFilename);
- void *src = nullptr;
- unsigned int *offset = nullptr;
- for (uint i = 0; i < uNumMightVideoHeaders; ++i)
- {
- //no BIK in MightVid
- /*
- if (!_stricmp(pVideoNameBik, pMightVideoHeaders[i].pVideoName))
- {
- src = (void *)hMightVid;
- offset = pMightVideoHeaders[i].uFileOffset;
- uVidFile = 1;
- this->uMovieFormat = 2;
- this->uMovieFormatSwapped = 1;
- }
- */
- if (!_stricmp(pVideoNameSmk, pMightVideoHeaders[i].pVideoName))
- {
- src = (void *)hMightVid;
- offset = &pMightVideoHeaders[i].uFileOffset;
- uVidFile = 0;
- this->uMovieFormat = 1;
- this->uMovieFormatSwapped = 2;
- }
- }
- for (uint i = 0; i < uNumMagicVideoHeaders; ++i)
- {
- if (!_stricmp(pVideoNameBik, pMagicVideoHeaders[i].pVideoName))
- {
- src = (void *)hMagicVid;
- offset = &pMagicVideoHeaders[i].uFileOffset;
- uVidFile = 1;
- this->uMovieFormat = 2;
- this->uMovieFormatSwapped = 1;
- }
- if (!_stricmp(pVideoNameSmk, pMagicVideoHeaders[i].pVideoName))
- {
- src = (void *)hMagicVid;
- offset = &pMagicVideoHeaders[i].uFileOffset;
- uVidFile = 1;
- this->uMovieFormat = 1;
- this->uMovieFormatSwapped = 2;
- }
- }
- if (!src)
- {
- Unload();
- MessageBoxA(0, "VideoPlayer error", "VideoPlayer Error", 0);
- return;
- }
-
- SetFilePointer(src, *offset, 0, FILE_BEGIN);
- strcpy(this->pCurrentMovieName, pFilename);
- uSize = *(offset+sizeof(MovieHeader))-*offset;
+ LoadMovie(pFilename);
return;
@@ -1281,7 +1199,9 @@
//----- (004BF5B2) --------------------------------------------------------
void VideoPlayer::_4BF5B2()
{
- if ( this->uMovieFormat == 2 )
+ //__debugbreak();
+
+ /*if ( this->uMovieFormat == 2 )
{
BinkGoto(pBinkMovie, 1, 0);
BinkDoFrame(pBinkMovie);
@@ -1297,9 +1217,9 @@
SmackDoFrame(pSmackerMovie);
SmackNextFrame(pSmackerMovie);
}
- }
+ }*/
pMouse->_469E24();
- if ( window_SpeakInHouse && window_SpeakInHouse->ptr_1C == (void *)165 && !this->pSmackerMovie )
+ if ( window_SpeakInHouse && window_SpeakInHouse->ptr_1C == (void *)165 && !this->pMovie)//!this->pSmackerMovie )
{
bGameoverLoop = 1;
HouseDialogPressCloseBtn();
@@ -1316,6 +1236,7 @@
}
bGameoverLoop = 0;
}
+
}
//----- (004BF73A) --------------------------------------------------------
@@ -1345,16 +1266,17 @@
//----- (004BE6F5) --------------------------------------------------------
VideoPlayer::VideoPlayer() :
bBufferLoaded(0),
- pBinkMovie(nullptr), pBinkBuffer(nullptr),
- pSmackerMovie(nullptr), pSmackerBuffer(nullptr), pSmackMovieBlit(nullptr)
+ //pBinkMovie(nullptr), pBinkBuffer(nullptr),
+ //pSmackerMovie(nullptr), pSmackerBuffer(nullptr),
+ pSmackMovieBlit(nullptr)
{
//RGBTexture::RGBTexture(&pVideoPlayer->pVideoFrame);
bStopBeforeSchedule = false;
pResetflag = 0;
byte_F8BC0C = 0;
- mPlayer = new MultimediaPlayer();
- mPlayer->Initialize();
- mMovie = nullptr;
+ pPlayer = new MultimediaPlayer();
+ pPlayer->Initialize();
+ pMovie = nullptr;
//pBinkMovie = nullptr;
}
@@ -1369,7 +1291,7 @@
WriteConsoleA(GetStdHandle(STD_OUTPUT_HANDLE), msg, lstrlenA(msg), &w, nullptr);
}
-int readFunction(void* opaque, uint8_t* buf, int buf_size)
+int VideoPlayer::readFunction(void* opaque, uint8_t* buf, int buf_size)
{
HANDLE stream = (HANDLE)opaque;
//int numBytes = stream->read((char*)buf, buf_size);
@@ -1378,20 +1300,84 @@
return numBytes;
}
-int64_t seekFunction(void* opaque, int64_t offset, int whence)
+int64_t VideoPlayer::seekFunction(void* opaque, int64_t offset, int whence)
{
if (whence == AVSEEK_SIZE)
- return pVideoPlayer->uSize;// -1; // I don't know "size of my handle in bytes"
- HANDLE stream = (HANDLE)opaque;
- /*if (stream->isSequential())
- return -1; // cannot seek a sequential stream
- if (!stream->seek(offset))
- return -1;
- return stream->pos();*/
- LARGE_INTEGER li,li2;
- PLARGE_INTEGER pli = &li2;
+ return pVideoPlayer->uSize;
+ HANDLE h = (HANDLE)opaque;
+ LARGE_INTEGER li;
li.QuadPart = offset;
- SetFilePointerEx(stream, li, pli, FILE_BEGIN);
- return pli->QuadPart;
- return SetFilePointer(stream, LODWORD(offset), (PLONG)(&offset)+1, FILE_BEGIN);
+
+ if (!SetFilePointerEx(h, li, (PLARGE_INTEGER)&li, FILE_BEGIN))
+ return -1;
+ return li.QuadPart;
}
+
+void VideoPlayer::LoadMovie(const char * pFilename)
+{
+ char pVideoNameBik[120]; // [sp+Ch] [bp-28h]@2
+ char pVideoNameSmk[120]; // [sp+Ch] [bp-28h]@2
+
+ sprintf(pVideoNameBik, "%s.bik", pFilename);
+ sprintf(pVideoNameSmk, "%s.smk", pFilename);
+ for (uint i = 0; i < uNumMightVideoHeaders; ++i)
+ {
+ //no BIK in MightVid
+ /*
+ if (!_stricmp(pVideoNameBik, pMightVideoHeaders[i].pVideoName))
+ {
+ hVidFile = hMightVid;
+ uOffset = pMightVideoHeaders[i].uFileOffset;
+ uSize = pMightVideoHeaders[i + 1].uFileOffset - uOffset;
+ this->uMovieFormat = 2;
+ this->uMovieFormatSwapped = 1;
+ }
+ */
+ if (!_stricmp(pVideoNameSmk, pMightVideoHeaders[i].pVideoName))
+ {
+ hVidFile = hMightVid;
+ uOffset = pMightVideoHeaders[i].uFileOffset;
+ uSize = pMightVideoHeaders[i + 1].uFileOffset - uOffset;
+ this->uMovieFormat = 1;
+ this->uMovieFormatSwapped = 2;
+ }
+ }
+ for (uint i = 0; i < uNumMagicVideoHeaders; ++i)
+ {
+ if (!_stricmp(pVideoNameBik, pMagicVideoHeaders[i].pVideoName))
+ {
+ hVidFile = hMagicVid;
+ uOffset = pMagicVideoHeaders[i].uFileOffset;
+ uSize = pMagicVideoHeaders[i + 1].uFileOffset - uOffset;
+ this->uMovieFormat = 2;
+ this->uMovieFormatSwapped = 1;
+ }
+ if (!_stricmp(pVideoNameSmk, pMagicVideoHeaders[i].pVideoName))
+ {
+ hVidFile = hMagicVid;
+ uOffset = pMagicVideoHeaders[i].uFileOffset;
+ uSize = pMagicVideoHeaders[i + 1].uFileOffset - uOffset;
+ this->uMovieFormat = 1;
+ this->uMovieFormatSwapped = 2;
+ }
+ }
+ if (!hVidFile)
+ {
+ Unload();
+ MessageBoxA(0, "VideoPlayer error", "VideoPlayer Error", 0);
+ return;
+ }
+
+ SetFilePointer(hVidFile, uOffset, 0, FILE_BEGIN);
+ strcpy(this->pCurrentMovieName, pFilename);
+
+ auto hwnd = pVideoPlayer->window->GetApiHandle();
+ RECT rc_client;
+ GetClientRect(hwnd, &rc_client);
+ int client_width = rc_client.right - rc_client.left,
+ client_height = rc_client.bottom - rc_client.top;
+
+
+ pMovie = pPlayer->LoadMovieFromLOD(hVidFile, &readFunction, &seekFunction, client_width, client_height);
+
+}
\ No newline at end of file
diff -r cfe04d858766 -r ad71de147333 VideoPlayer.h
--- a/VideoPlayer.h Mon Jan 06 19:29:01 2014 +0600
+++ b/VideoPlayer.h Mon Jan 06 19:29:59 2014 +0600
@@ -522,8 +522,13 @@
class MovieCached
{
public:
- bool Stopped() const { return stopped; }
-
+ bool Stopped() { return stopped; }
+ int GetWidth() { return width; }
+ int GetHeight() { return height; }
+ inline ~MovieCached()
+ {
+ Release();
+ }
protected:
friend class MultimediaPlayer;
inline MovieCached(OpenALSoundProvider *sound_provider)
@@ -541,6 +546,23 @@
this->audio_stream = nullptr;
this->audio_stream_dec = nullptr;
this->audio_stream_dec_ctx = nullptr;
+
+ packet = nullptr;
+ ioBuffer = nullptr;
+ format_ctx = nullptr;
+ avioContext = nullptr;
+ }
+
+ bool LoadFromLOD(HANDLE h, int readFunction(void*, uint8_t*, int), int64_t seekFunction(void*, int64_t, int), int width, int height)
+ {
+ if (!ioBuffer)
+ ioBuffer = (unsigned char *)av_malloc(16384 + FF_INPUT_BUFFER_PADDING_SIZE); // can get av_free()ed by libav
+ if (!avioContext)
+ avioContext = avio_alloc_context(ioBuffer, 16384, 0, h, &readFunction, NULL, &seekFunction);
+ if (!format_ctx)
+ format_ctx = avformat_alloc_context();
+ format_ctx->pb = avioContext;
+ return Load("dummyFilename", width, height);
}
bool Load(const char *video_filename, int width, int height)
@@ -548,42 +570,12 @@
this->width = width;
this->height = height;
-/* for (uint i = 0; i < pVideoPlayer->uNumMagicVideoHeaders; ++i)
- if (!_stricmp(video_filename, pVideoPlayer->pMagicVideoHeaders[i].pVideoName))
- {
- SetFilePointer(pVideoPlayer->hMagicVid, pVideoPlayer->pMagicVideoHeaders[i].uFileOffset, 0, FILE_BEGIN);
- break;
- }
-*/ packet = nullptr;
- int ioBufferSize = 32768;
- void *src;
-
- unsigned char * ioBuffer = (unsigned char *)av_malloc(ioBufferSize + FF_INPUT_BUFFER_PADDING_SIZE); // can get av_free()ed by libav
- if (pVideoPlayer->uVidFile)
- {
- src = (void*)pVideoPlayer->hMagicVid;
- }
- else
- {
- src = (void*)pVideoPlayer->hMightVid;
- }
-
- avioContext = avio_alloc_context(ioBuffer, ioBufferSize, 0, src, &readFunction, NULL, &seekFunction);
- //offset = SetFilePointer(pVideoPlayer->hMagicVid,0,0,FILE_CURRENT);
- LARGE_INTEGER li, li2;
- PLARGE_INTEGER pli = &li2;
- li.QuadPart = 0;
- SetFilePointerEx(pVideoPlayer->hMagicVid, li, pli, FILE_CURRENT);
- offset = pli->QuadPart;
-
- format_ctx = avformat_alloc_context();
- format_ctx->pb = avioContext;
if (avformat_open_input(&format_ctx, video_filename, nullptr, nullptr) >= 0)
{
if (avformat_find_stream_info(format_ctx, nullptr) >= 0)
{
av_dump_format(format_ctx, 0, video_filename, 0);
-
+
video_stream_idx = OpenStream(AVMEDIA_TYPE_VIDEO, &video_stream, &video_stream_dec, &video_stream_dec_ctx);
if (video_stream_idx < 0)
return Release(), false;
@@ -603,11 +595,6 @@
bool Release()
{
- if (format_ctx)
- {
- avformat_free_context(format_ctx);
- format_ctx = nullptr;
- }
if (packet)
{
av_free_packet(packet);
@@ -630,6 +617,17 @@
audio_stream = nullptr;
audio_stream_dec = nullptr;
avcodec_close(audio_stream_dec_ctx);
+
+ }
+ if (avioContext)
+ {
+ av_free(avioContext);
+ avioContext = nullptr;
+ }
+ if (format_ctx)
+ {
+ avformat_free_context(format_ctx);
+ format_ctx = nullptr;
}
return true;
}
@@ -657,27 +655,6 @@
return -1;
}
- void Rewind()
- {
- //auto i=avio_seek(avioContext, pVideoPlayer->uOffset, 0);
- //auto i = av_seek_frame(format_ctx, -1, 0, AVSEEK_FLAG_BYTE);
- //i = av_seek_frame(format_ctx, audio_stream_idx, 0, AVSEEK_FLAG_BYTE);
-
- int64_t timestamp = 9;
- int ret, i;
- if (format_ctx->start_time != AV_NOPTS_VALUE)
- timestamp += format_ctx->start_time;
- ret = av_seek_frame(format_ctx, -1, format_ctx->start_time, AVSEEK_FLAG_BYTE);
- if (ret < 0) {
-// av_log(ctx, AV_LOG_ERROR, "Unable to loop: %s\n", av_err2str(ret));
- //loop_count = 1; /* do not try again */
- return;// ret;
- }
-
-
- stopped = false;
- }
-
MultimediaFrame::Ptr GetNextFrame()
{
packet->data = nullptr;
@@ -722,8 +699,8 @@
AVStream *audio_stream;
AVCodec *audio_stream_dec;
AVCodecContext *audio_stream_dec_ctx;
- AVIOContext * avioContext;
- int64_t offset;
+ unsigned char * ioBuffer;
+ AVIOContext *avioContext;
};
typedef MovieCached<10> Movie;
@@ -754,6 +731,21 @@
return true;
}
+ Movie *LoadMovieFromLOD(HANDLE h, int readFunction(void*, uint8_t*, int), int64_t seekFunction(void*, int64_t, int), int width, int height)
+ {
+ auto movie = new Movie(sound_provider);
+ if (movie)
+ {
+ if (movie->LoadFromLOD(h, readFunction, seekFunction, width, height))
+ {
+ current_movie_width = width;
+ current_movie_height = height;
+ return current_movie = movie;
+ }
+ delete movie;
+ }
+ return nullptr;
+ }
Movie *LoadMovie(const char *filename, int width, int height)
{
@@ -771,11 +763,6 @@
return nullptr;
}
- inline void Rewind()
- {
- current_movie->Rewind();
- }
-
inline char *DoFrame()
{
if (!current_movie)
@@ -865,13 +852,13 @@
_BINKBUF *CreateBinkBuffer(unsigned int uWidth, unsigned int uHeight, char a4);
void _inlined_in_463149();
- static void MovieLoop(const char *pMovieName, int a2, int a3, int a4);
+ void MovieLoop(const char *pMovieName, int a2, int a3, int a4);
RGBTexture pVideoFrame;
- struct _SMACK *pSmackerMovie;
- struct _SMACKBUF *pSmackerBuffer;
- char *pSomeSmackerBuffer;
+ //struct _SMACK *pSmackerMovie;
+ //struct _SMACKBUF *pSmackerBuffer;
+ //char *pSomeSmackerBuffer;
int field_34;
MovieHeader *pMightVideoHeaders;
MovieHeader *pMagicVideoHeaders;
@@ -892,19 +879,23 @@
struct _SMACKBLIT *pSmackMovieBlit;
HANDLE hMightVid;
HANDLE hMagicVid;
- _BINK *pBinkMovie;
- _BINKBUF *pBinkBuffer;
+ //_BINK *pBinkMovie;
+ //_BINKBUF *pBinkBuffer;
char field_88[20];
unsigned int uMovieFormat;
int uMovieFormatSwapped;
char pCurrentMovieName[64];
char pVideoFrameTextureFilename[32];
int field_104;
- MultimediaPlayer *mPlayer;
- Movie *mMovie;
- int uVidFile;
+ MultimediaPlayer *pPlayer;
+ Movie *pMovie;
+ HANDLE hVidFile;
int uSize;
int uOffset;
+ void UpdatePalette();
+ static int readFunction(void *, uint8_t *, int);
+ static int64_t seekFunction(void *, int64_t, int);
+ void LoadMovie(const char *);
};
#pragma pack(pop)
diff -r cfe04d858766 -r ad71de147333 Vis.cpp
--- a/Vis.cpp Mon Jan 06 19:29:01 2014 +0600
+++ b/Vis.cpp Mon Jan 06 19:29:59 2014 +0600
@@ -1482,7 +1482,7 @@
if (filter->object_id != OBJECT_BLVDoor)
return true;
- if (no_event || face_attrib & filter->no_at_ai_state)
+ if (no_event || face_attrib & filter->no_at_ai_state)//face_attrib = 0x2009408 incorrect
return false;
return (face_attrib & filter->at_ai_state) != 0;
}
@@ -1687,12 +1687,12 @@
BSPModel* bmodel = &pOutdoor->pBModels[i];
for (uint j = 0; j < bmodel->uNumFaces; ++j)
{
- ODMFace* face = &bmodel->pFaces[j];
+ //ODMFace* face = &bmodel->pFaces[j];
- if (is_part_of_selection(face, filter) )
+ if (is_part_of_selection(&bmodel->pFaces[j], filter) )
{
BLVFace blv_face;
- blv_face.FromODM(face);
+ blv_face.FromODM(&bmodel->pFaces[j]);
int pid = PID(OBJECT_BModel, j | (i << 6));
if (Vis_ObjectInfo* object_info = DetermineFacetIntersection(&blv_face, pid, pick_depth))