diff --git a/Sources/Plasma/FeatureLib/CMakeLists.txt b/Sources/Plasma/FeatureLib/CMakeLists.txt
index 3b34f88d..5faa5ada 100644
--- a/Sources/Plasma/FeatureLib/CMakeLists.txt
+++ b/Sources/Plasma/FeatureLib/CMakeLists.txt
@@ -17,6 +17,7 @@ add_subdirectory(pfJournalBook)
# add_subdirectory(pfKI)
add_subdirectory(pfLocalizationMgr)
add_subdirectory(pfMessage)
+add_subdirectory(pfMoviePlayer)
add_subdirectory(pfPatcher)
add_subdirectory(pfPython)
add_subdirectory(pfSurface)
diff --git a/Sources/Plasma/FeatureLib/pfMoviePlayer/CMakeLists.txt b/Sources/Plasma/FeatureLib/pfMoviePlayer/CMakeLists.txt
new file mode 100644
index 00000000..2e6c7277
--- /dev/null
+++ b/Sources/Plasma/FeatureLib/pfMoviePlayer/CMakeLists.txt
@@ -0,0 +1,17 @@
+include_directories(../../CoreLib)
+include_directories(../../NucleusLib)
+include_directories(../../NucleusLib/inc)
+include_directories(../../PubUtilLib)
+
+set(pfMoviePlayer_SOURCES
+ plMoviePlayer.cpp
+)
+
+set(pfMoviePlayer_HEADERS
+ plMoviePlayer.h
+)
+
+add_library(pfMoviePlayer STATIC ${pfMoviePlayer_SOURCES} ${pfMoviePlayer_HEADERS})
+
+source_group("Source Files" FILES ${pfMoviePlayer_SOURCES})
+source_group("Header Files" FILES ${pfMoviePlayer_HEADERS})
diff --git a/Sources/Plasma/FeatureLib/pfMoviePlayer/plMoviePlayer.cpp b/Sources/Plasma/FeatureLib/pfMoviePlayer/plMoviePlayer.cpp
new file mode 100644
index 00000000..cfc75c73
--- /dev/null
+++ b/Sources/Plasma/FeatureLib/pfMoviePlayer/plMoviePlayer.cpp
@@ -0,0 +1,66 @@
+/*==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==*/
+
+#include "plMoviePlayer.h"
+
+#include "hsTimer.h"
+
+
+plMoviePlayer::plMoviePlayer() :
+fTimeScale(0),
+fStartTime(0)
+{
+ fScale.Set(1.0f, 1.0f);
+}
+
+int64_t plMoviePlayer::GetMovieTime() const
+{
+ return ((int64_t) hsTimer::GetSeconds() * fTimeScale) - fStartTime;
+}
+
+bool plMoviePlayer::Stop()
+{
+ for (int i = 0; i < fCallbacks.GetCount(); i++)
+ fCallbacks[i]->Send();
+ fCallbacks.Reset();
+ return false;
+}
diff --git a/Sources/Plasma/FeatureLib/pfMoviePlayer/plMoviePlayer.h b/Sources/Plasma/FeatureLib/pfMoviePlayer/plMoviePlayer.h
new file mode 100644
index 00000000..a42bb1a0
--- /dev/null
+++ b/Sources/Plasma/FeatureLib/pfMoviePlayer/plMoviePlayer.h
@@ -0,0 +1,101 @@
+/*==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 _plMoviePlayer_inc
+#define _plMoviePlayer_inc
+
+#include "HeadSpin.h"
+#include "plFileSystem.h"
+#include "hsPoint2.h"
+#include "hsColorRGBA.h"
+#include "plMessage/plMovieMsg.h"
+
+class plMoviePlayer
+{
+protected:
+ int64_t fTimeScale, fStartTime;
+
+ hsPoint2 fPosition, fScale;
+ plFileName fMoviePath;
+
+ int64_t GetMovieTime() const;
+ bool IOpenMovie() { return false; };
+
+public:
+ plMoviePlayer();
+ ~plMoviePlayer() {}
+
+ bool Start() { return false; }
+ bool Pause(bool on) { return false; }
+ bool Stop();
+ bool NextFrame() { return Stop(); }
+
+ void AddCallback(plMessage* msg) { hsRefCnt_SafeRef(msg); fCallbacks.Append(msg); }
+ uint32_t GetNumCallbacks() const { return 0; }
+ plMessage* GetCallback(int i) const { return nullptr; }
+
+ plFileName GetFileName() const { return fMoviePath; }
+ void SetFileName(const plFileName& filename) { fMoviePath = filename; }
+
+ void SetColor(const hsColorRGBA& c) { }
+ const hsColorRGBA GetColor() const { return hsColorRGBA(); }
+ void SetVolume(float v) { }
+
+ hsPoint2 GetPosition() const { return fPosition; }
+ void SetPosition(const hsPoint2& pos) { fPosition = pos; }
+ void SetPosition(float x, float y) { fPosition.Set(x, y); }
+
+ hsPoint2 GetScale() const { return fScale; }
+ void SetScale(const hsPoint2& scale) { fScale = scale; }
+ void SetScale(float x, float y) { fScale.Set(x, y); }
+
+ void SetFadeFromTime(float secs) { }
+ void SetFadeFromColor(hsColorRGBA c) { }
+
+ void SetFadeToTime(float secs) { }
+ void SetFadeToColor(hsColorRGBA c) { }
+
+private:
+ hsTArray fCallbacks;
+};
+
+#endif // _plMoviePlayer_inc