1
0
mirror of https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git synced 2025-07-20 12:19:10 +00:00

First effort to port HUru MKV/WEBM Movie Player to Minkata

Type restructuring for C++98 and build configuration updates.
This version compiles successfully, but without webm libraries yet linked in.
This commit is contained in:
rarified
2020-08-07 10:04:58 -06:00
parent 5aca792056
commit 4b3f16a912
20 changed files with 10583 additions and 169 deletions

View File

@ -115,6 +115,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "../plProgressMgr/plProgressMgr.h"
#include "../plPipeline/plDTProgressMgr.h"
#include "../plPipeline/plBinkPlayer.h"
#include "../pfMoviePlayer/plMoviePlayer.h"
#include "../plMessage/plMovieMsg.h"
#include "../plSDL/plSDL.h"
@ -273,9 +274,6 @@ hsBool plClient::Shutdown()
IKillMovies();
plgAudioSys::Activate(false);
#ifdef USE_BINK_SDK
plBinkPlayer::DeInit();
#endif
//
// Get any proxies to commit suicide.
plProxyDrawMsg* nuke = TRACKED_NEW plProxyDrawMsg(plProxyDrawMsg::kAllTypes
@ -887,8 +885,7 @@ hsBool plClient::IHandleMovieMsg(plMovieMsg* mov)
}
if( i == fMovies.GetCount() )
{
fMovies.Append(TRACKED_NEW plBinkPlayer);
fMovies.Append(new plMoviePlayer);
fMovies[i]->SetFileName(mov->GetFileName());
}
@ -930,7 +927,7 @@ hsBool plClient::IHandleMovieMsg(plMovieMsg* mov)
fMovies[i]->SetVolume(mov->GetVolume());
if( mov->GetCmd() & plMovieMsg::kStart )
fMovies[i]->Start(fPipeline, fWindowHndl);
fMovies[i]->Start();
if( mov->GetCmd() & plMovieMsg::kPause )
fMovies[i]->Pause(true);
if( mov->GetCmd() & plMovieMsg::kResume )
@ -1514,14 +1511,10 @@ hsBool plClient::StartInit()
plgAudioSys::Activate(true);
#ifdef USE_BINK_SDK
plConst(hsScalar) delay(2.f);
//commenting out publisher splash for MORE
//IPlayIntroBink("avi/intro0.bik", delay, 0.f, 0.f, 1.f, 1.f, 0.75);
//if( GetDone() ) return false;
IPlayIntroBink("avi/intro1.bik", 0.f, 0.f, 0.f, 1.f, 1.f, 0.75);
if( GetDone() ) return false;
#endif // USE_BINK_SDK
IPlayIntroMovie("avi/intro1.webm", 0.f, 0.f, 0.f, 1.f, 1.f, 0.75);
IPlayIntroMovie("avi/URULiveIntro.webm", 0.f, 0.f, 0.f, 1.f, 1.f, 0.75);
plgDispatch::Dispatch()->RegisterForExactType(plMovieMsg::Index(), GetKey());
//
@ -1984,56 +1977,55 @@ void plClient::IKillMovies()
fMovies.Reset();
}
#ifdef USE_BINK_SDK
hsBool plClient::IPlayIntroBink(const char* movieName, hsScalar endDelay, hsScalar posX, hsScalar posY, hsScalar scaleX, hsScalar scaleY, hsScalar volume /* = 1.0 */)
hsBool plClient::IPlayIntroMovie(const char* movieName, hsScalar endDelay, hsScalar posX, hsScalar posY, hsScalar scaleX, hsScalar scaleY, hsScalar volume /* = 1.0 */)
{
SetQuitIntro(false);
plBinkPlayer player;
player.SetPosition(posX, posY);
player.SetScale(scaleX, scaleY);
player.SetFileName(movieName);
player.SetFadeToTime(endDelay);
player.SetFadeToColor(hsColorRGBA().Set(0, 0, 0, 1.f));
player.SetVolume(volume);
bool firstTry = true; // flag to make sure that we don't quit before we even start
SetQuitIntro(false);
plMoviePlayer player;
player.SetPosition(posX, posY);
player.SetScale(scaleX, scaleY);
player.SetFileName(movieName);
player.SetFadeToTime(endDelay);
player.SetFadeToColor(hsColorRGBA().Set(0, 0, 0, 1.f));
player.SetVolume(volume);
bool firstTry = true; // flag to make sure that we don't quit before we even start
if( player.Start(fPipeline, fWindowHndl) )
{
while( true )
{
if( fInstance )
fInstance->fMessagePumpProc();
if (player.Start())
{
while (true)
{
if (fInstance)
fInstance->fMessagePumpProc();
if( GetDone() )
return true;
if (firstTry)
{
firstTry = false;
SetQuitIntro(false);
}
else
{
if( GetQuitIntro() )
return true;
}
if (GetDone())
return true;
if (firstTry)
{
firstTry = false;
SetQuitIntro(false);
}
else
{
if (GetQuitIntro())
return true;
}
hsBool done = false;
if( !fPipeline->BeginRender() )
{
fPipeline->ClearRenderTarget();
done = !player.NextFrame();
bool done = false;
if (!fPipeline->BeginRender())
{
fPipeline->ClearRenderTarget();
done = !player.NextFrame();
fPipeline->EndRender();
}
fPipeline->RenderScreenElements();
fPipeline->EndRender();
}
if( done )
return true;
}
return true;
}
return false;
if (done)
return true;
}
return true;
}
return false;
}
#endif // USE_BINK_SDK
hsBool plClient::IFlushRenderRequests()
{

View File

@ -79,6 +79,7 @@ class plClientMsg;
class plLocation;
class plMovieMsg;
class plBinkPlayer;
class plMoviePlayer;
class plPreloaderMsg;
class plNetCommAuthMsg;
class plAgeLoaded2Msg;
@ -150,7 +151,7 @@ protected:
int fQuality;
hsBool fQuitIntro;
hsTArray<plBinkPlayer*> fMovies;
hsTArray<plMoviePlayer*> fMovies;
hsBool fPatchGlobalAges;
@ -191,9 +192,7 @@ protected:
void IProcessRenderRequests(hsTArray<plRenderRequest*>& reqs);
void IAddRenderRequest(plRenderRequest* req);
#ifdef USE_BINK_SDK
hsBool IPlayIntroBink(const char* movieName, hsScalar endDelay, hsScalar posX, hsScalar posY, hsScalar scaleX, hsScalar scaleY, hsScalar volume = 1.0);
#endif // USE_BINK_SDK
hsBool IPlayIntroMovie(const char* movieName, hsScalar endDelay, hsScalar posX, hsScalar posY, hsScalar scaleX, hsScalar scaleY, hsScalar volume = 1.0);
hsBool IHandleMovieMsg(plMovieMsg* mov);
void IKillMovies();
void IServiceMovies();