1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81

#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.
}