#include "fsCNativeMovieSprite.h"
#include <base/Director.h>
#include <fsAppCore/fsIDisplay.h>
#include "../../../src/fsCBrush.h"
#include "../fsCTexture.h"
void fsCNativeMovieSprite::renderDo()
{
mImpl->visit(ax::Director::getInstance()->getRenderer(), mRenderMatrix, ax::Node::FLAGS_TRANSFORM_DIRTY);
}
ax::Node* fsCNativeMovieSprite::implGet() const
{
return mImpl.get();
}
void fsCNativeMovieSprite::matrixApplyDo(const fsAffineMtx2d& pRenderMatrix)
{
// indices x rot y rot z rot
// 0 4 8 12 1 0 0 x 1 0 0 x c 0 s x c -s 0 x
// 1 5 9 13 0 1 0 y 0 c -s y 0 1 0 y s c 0 y
// 2 6 10 14 0 0 1 z 0 s c z -s 0 c z 0 0 1 z
// 3 7 11 15 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
mRenderMatrix.m[12] = pRenderMatrix.get(0, 2);
mRenderMatrix.m[13] = pRenderMatrix.get(1, 2);
mRenderMatrix.m[0] = pRenderMatrix.get(0, 0);
mRenderMatrix.m[1] = pRenderMatrix.get(1, 0);
mRenderMatrix.m[4] = pRenderMatrix.get(0, 1);
mRenderMatrix.m[5] = pRenderMatrix.get(1, 1);
}
void fsCNativeMovieSprite::filenameSet(const fsCResourceName& pFilename) {
mImpl->setFileName(pFilename.nameGet().utf8Get());
}
void fsCNativeMovieSprite::play() {
mImpl->play();
// mImpl->setContentSize(ax::Size(fsIDisplay::instanceGet()->visibleCanvasWidthGet()
// , fsIDisplay::instanceGet()->visibleCanvasHeightGet()));
mImpl->setFullScreenEnabled(true);
mImpl->addEventListener(
ax::ui::MediaPlayer::VideoPlayerCallback
{ [this](ax::Object* sender, ax::ui::MediaPlayer::EventType event) -> void
{
if (event == ax::ui::MediaPlayer::EventType::COMPLETED)
{
mImpl->setFullScreenEnabled(false);
}
}
});
}
fsCNativeMovieSprite::fsCNativeMovieSprite():
fsINative(),
mImpl(ax::ui::VideoPlayer::create())
{
mImpl->retain();
#if defined fsScreenTextureEffect
mImpl->setGlobalZOrder(1);
#endif
}
fsCNativeMovieSprite::~fsCNativeMovieSprite()
{
if (mImpl->getParent())
{
mImpl->removeFromParentAndCleanup(true);
}
mImpl->release();
mImpl.release();<--- Return value of function mImpl.release() is not used.
}