From 30d140b8a0bf77ed15de2b91a87f0489e2ea4fa6 Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Sat, 15 Dec 2012 23:58:34 -0500 Subject: [PATCH 1/2] stub out plClient Bink support --- .../FeatureLib/pfSurface/pfSurface.vcxproj | 16 --- .../pfSurface/pfSurface.vcxproj.filters | 3 - .../PubUtilLib/plPipeline/plPipeline.vcxproj | 16 --- .../plPipeline/plPipeline.vcxproj.filters | 3 - .../FeatureLib/pfSurface/pfSurface.vcproj | 24 +--- .../PubUtilLib/plPipeline/plPipeline.vcproj | 24 +--- .../Plasma/FeatureLib/pfSurface/plLayerBink.h | 65 ++++++++++ .../PubUtilLib/plPipeline/plBinkPlayer.h | 112 ++++++++++++++++++ 8 files changed, 181 insertions(+), 82 deletions(-) create mode 100644 MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plLayerBink.h create mode 100644 MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plBinkPlayer.h diff --git a/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/FeatureLib/pfSurface/pfSurface.vcxproj b/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/FeatureLib/pfSurface/pfSurface.vcxproj index 2f083e3b..8671b4fc 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/FeatureLib/pfSurface/pfSurface.vcxproj +++ b/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/FeatureLib/pfSurface/pfSurface.vcxproj @@ -276,22 +276,6 @@ %(PreprocessorDefinitions) %(PreprocessorDefinitions) - - Disabled - Disabled - %(AdditionalIncludeDirectories) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(PreprocessorDefinitions) - EnableFastChecks - EnableFastChecks - MaxSpeed - MaxSpeed - %(AdditionalIncludeDirectories) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(PreprocessorDefinitions) - Disabled Disabled diff --git a/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/FeatureLib/pfSurface/pfSurface.vcxproj.filters b/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/FeatureLib/pfSurface/pfSurface.vcxproj.filters index 1ea3fa66..06b9e5c8 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/FeatureLib/pfSurface/pfSurface.vcxproj.filters +++ b/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/FeatureLib/pfSurface/pfSurface.vcxproj.filters @@ -26,9 +26,6 @@ Source Files - - Source Files - Source Files diff --git a/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/PubUtilLib/plPipeline/plPipeline.vcxproj b/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/PubUtilLib/plPipeline/plPipeline.vcxproj index fee253bf..0318ad11 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/PubUtilLib/plPipeline/plPipeline.vcxproj +++ b/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/PubUtilLib/plPipeline/plPipeline.vcxproj @@ -245,22 +245,6 @@ %(PreprocessorDefinitions) %(PreprocessorDefinitions) - - Disabled - Disabled - %(AdditionalIncludeDirectories) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(PreprocessorDefinitions) - EnableFastChecks - EnableFastChecks - MaxSpeed - MaxSpeed - %(AdditionalIncludeDirectories) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(PreprocessorDefinitions) - Disabled Disabled diff --git a/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/PubUtilLib/plPipeline/plPipeline.vcxproj.filters b/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/PubUtilLib/plPipeline/plPipeline.vcxproj.filters index 4596e467..d8d889ef 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/PubUtilLib/plPipeline/plPipeline.vcxproj.filters +++ b/MOULOpenSourceClientPlugin/Plasma20/MSVC10Projects/Plasma/PubUtilLib/plPipeline/plPipeline.vcxproj.filters @@ -23,9 +23,6 @@ Source Files - - Source Files - Source Files diff --git a/MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfSurface/pfSurface.vcproj b/MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfSurface/pfSurface.vcproj index 9647c337..0061e860 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfSurface/pfSurface.vcproj +++ b/MOULOpenSourceClientPlugin/Plasma20/MsDevProjects/Plasma/FeatureLib/pfSurface/pfSurface.vcproj @@ -21,7 +21,7 @@ - - - - - - - - - - - - - - - - . + +Additional permissions under GNU GPL version 3 section 7 + +If you modify this Program, or any covered work, by linking or +combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, +NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent +JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK +(or a modified version of those libraries), +containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, +PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG +JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the +licensors of this Program grant you additional +permission to convey the resulting work. Corresponding Source for a +non-source form of such a combination shall include the source code for +the parts of OpenSSL and IJG JPEG Library used as well as that of the covered +work. + +You can contact Cyan Worlds, Inc. by email legal@cyan.com + or by snail mail at: + Cyan Worlds, Inc. + 14617 N Newport Hwy + Mead, WA 99021 + +*==LICENSE==*/ + +#ifndef plLayerBink_inc +#define plLayerBink_inc + +#include "plLayerMovie.h" + +class plLayerBink : public plLayerMovie +{ +protected: + virtual Int32 ISecsToFrame(float secs) { return 0; } + virtual hsBool IInit() { return true; } + virtual hsBool IGetCurrentFrame() { return 0; } + virtual hsBool IRelease() { return true; } + +public: + plLayerBink() { } + virtual ~plLayerBink() { } + + CLASSNAME_REGISTER( plLayerBink ); + GETINTERFACE_ANY( plLayerBink, plLayerMovie ); + +}; + +#endif // plLayerBink_inc diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plBinkPlayer.h b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plBinkPlayer.h new file mode 100644 index 00000000..bb631c55 --- /dev/null +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plBinkPlayer.h @@ -0,0 +1,112 @@ +/*==LICENSE==* + +CyanWorlds.com Engine - MMOG client, server and tools +Copyright (C) 2011 Cyan Worlds, Inc. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +Additional permissions under GNU GPL version 3 section 7 + +If you modify this Program, or any covered work, by linking or +combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, +NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent +JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK +(or a modified version of those libraries), +containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, +PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG +JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the +licensors of this Program grant you additional +permission to convey the resulting work. Corresponding Source for a +non-source form of such a combination shall include the source code for +the parts of OpenSSL and IJG JPEG Library used as well as that of the covered +work. + +You can contact Cyan Worlds, Inc. by email legal@cyan.com + or by snail mail at: + Cyan Worlds, Inc. + 14617 N Newport Hwy + Mead, WA 99021 + +*==LICENSE==*/ + +#ifndef plBinkPlayer_inc +#define plBinkPlayer_inc + +#include "HeadSpin.h" +#include "hsPoint2.h" +#include "hsTemplates.h" + +struct D3DVertex; +class plDXPipeline; +struct IDirect3DTexture9; +class plMessage; +struct IDirectSound8; + +class plBinkPlayer +{ + public: + + static bool Init( hsWindowHndl hWnd) { return true; } + static bool DeInit() { return true; } + + static void SetForeGroundTrack(UInt32 t) { } + static void SetBackGroundTrack(UInt32 t) { } + static UInt32 GetForeGroundTrack() { } + static UInt32 GetBackGroundTrack() { } + + void SetDefaults() { } + + bool Start(plPipeline* pipe, hsWindowHndl hWnd) { return true; } + + bool NextFrame() { return false; } + + bool Pause(bool on) { return true; } + + bool Stop() { return true; } + + void SetFileName(const char* filename) { } + void SetColor(const hsColorRGBA& c) { } + void SetPosition(float x, float y) { } + void SetScale(float x, float y) { } + void SetVolume(float v) { } + void SetForeVolume(float v) { } + void SetBackVolume(float v) { } + + void SetPosition(const hsPoint2& p) { } + void SetScale(const hsPoint2& s) { } + + const char* GetFileName() const { return NULL; } + const hsColorRGBA GetColor() const { return hsColorRGBA(); } + const hsPoint2 GetPosition() const { return hsPoint2(); } + const hsPoint2 GetScale() const { return hsPoint2(); } + float GetBackVolume() const { return 0.0f; } + float GetForeVolume() const { return 0.0f; } + + void AddCallback(plMessage* msg) { } + UInt32 GetNumCallbacks() const { return 0; } + plMessage* GetCallback(int i) const { return nil; } + + void SetFadeFromTime(float secs) { } + void SetFadeFromColor(hsColorRGBA c) { } + + void SetFadeToTime(float secs) { } + void SetFadeToColor(hsColorRGBA c) { } + + float GetFadeFromTime() const { return 0.0f; } + hsColorRGBA GetFadeFromColor() const { return hsColorRGBA(); } + float GetFadeToTime() const { return 0.0f; } + hsColorRGBA GetFadeToColor() const { return hsColorRGBA(); } +}; + +#endif // plBinkPlayer_inc From f03a8376427cad9d0f556f46fbb61ed9ad221aa6 Mon Sep 17 00:00:00 2001 From: Christian Walther Date: Tue, 18 Dec 2012 15:49:41 +0100 Subject: [PATCH 2/2] Add more functionality to the bink stubs to make them behave more like the previous implementation did when built without BINK_SDK_AVAILABLE. In particular, the intro movie now exits immediately again rather than staying indefinitely. The important difference is to send the completion callback in plBinkPlayer::NextFrame(), i.e. act as if we had reached the end of the movie. Storing the filename is to keep plClient::IHandleMovieMsg() from deleting and recreating the plBinkPlayer on every message. The changed return values are just to better match the previous behavior and probably don?t matter. --- .../Plasma/FeatureLib/pfSurface/plLayerBink.h | 2 +- .../PubUtilLib/plPipeline/plBinkPlayer.h | 34 +++++++++++++++---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plLayerBink.h b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plLayerBink.h index 77e1bf49..031499b3 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plLayerBink.h +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plLayerBink.h @@ -50,7 +50,7 @@ class plLayerBink : public plLayerMovie protected: virtual Int32 ISecsToFrame(float secs) { return 0; } virtual hsBool IInit() { return true; } - virtual hsBool IGetCurrentFrame() { return 0; } + virtual hsBool IGetCurrentFrame() { return true; } virtual hsBool IRelease() { return true; } public: diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plBinkPlayer.h b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plBinkPlayer.h index bb631c55..7315df58 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plBinkPlayer.h +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plBinkPlayer.h @@ -57,6 +57,9 @@ class plBinkPlayer { public: + plBinkPlayer() : fFileName(nil) { } + ~plBinkPlayer() { delete [] fFileName; } + static bool Init( hsWindowHndl hWnd) { return true; } static bool DeInit() { return true; } @@ -67,15 +70,28 @@ class plBinkPlayer void SetDefaults() { } - bool Start(plPipeline* pipe, hsWindowHndl hWnd) { return true; } + bool Start(plPipeline* pipe, hsWindowHndl hWnd) { return false; } - bool NextFrame() { return false; } + bool NextFrame() { + // we have reached the end + return Stop(); + } - bool Pause(bool on) { return true; } + bool Pause(bool on) { return false; } - bool Stop() { return true; } + bool Stop() { + for (int i = 0; i < fCallbacks.GetCount(); i++) + fCallbacks[i]->Send(); + fCallbacks.Reset(); + delete [] fFileName; + fFileName = nil; + return false; + } - void SetFileName(const char* filename) { } + void SetFileName(const char* filename) { + delete [] fFileName; + fFileName = hsStrcpy(filename); + } void SetColor(const hsColorRGBA& c) { } void SetPosition(float x, float y) { } void SetScale(float x, float y) { } @@ -86,14 +102,14 @@ class plBinkPlayer void SetPosition(const hsPoint2& p) { } void SetScale(const hsPoint2& s) { } - const char* GetFileName() const { return NULL; } + const char* GetFileName() const { return fFileName; } const hsColorRGBA GetColor() const { return hsColorRGBA(); } const hsPoint2 GetPosition() const { return hsPoint2(); } const hsPoint2 GetScale() const { return hsPoint2(); } float GetBackVolume() const { return 0.0f; } float GetForeVolume() const { return 0.0f; } - void AddCallback(plMessage* msg) { } + void AddCallback(plMessage* msg) { hsRefCnt_SafeRef(msg); fCallbacks.Append(msg); } UInt32 GetNumCallbacks() const { return 0; } plMessage* GetCallback(int i) const { return nil; } @@ -107,6 +123,10 @@ class plBinkPlayer hsColorRGBA GetFadeFromColor() const { return hsColorRGBA(); } float GetFadeToTime() const { return 0.0f; } hsColorRGBA GetFadeToColor() const { return hsColorRGBA(); } + + private: + char* fFileName; + hsTArray fCallbacks; }; #endif // plBinkPlayer_inc