Files
2026-06-01 12:46:52 +02:00

106 lines
2.4 KiB
C++

#pragma once
#include "SGameScene.h"
#include "KResource.h"
#include "KPrimitiveSprite.h"
#include <kfile/TrfMetaData.h>
class QJTVObj;
namespace rp {
/// QJTV 씬
class SGameQjtvScene : public SGameScene
{
public:
/// QJTV 씬 옵션
enum OPTION {
FULL = 1 << 0, ///< 풀스크린
CENTER = 1 << 1, ///< 렌더 타겟 중앙에 위치
SCREENCENTER = 1 << 2, ///< 화면 중앙에 위치
ALPHA = 1 << 3, ///< 알파값 사용
REPEAT = 1 << 4, ///< 반복 재생
};
/// 생성자
SGameQjtvScene(
SGameSceneManager& sceneMgr
, SGameScene* parent
, const char* sceneName
, const char* jtvFile
, const char* soundFile
, const K3DVector& position = K3DVector( 0.f, 0.f, 0.1f )
, const KColor& bgColor = KColor( 0xff000000 )
, DWORD option = CENTER | ALPHA | REPEAT
, int fixedFps = 24
, bool registerSelf = true
, KViewportObject* viewport = 0
, const K3DVector2& size = K3DVector2(-1.f, -1.f) );
/// 소멸자
virtual ~SGameQjtvScene();
/// 씬 등록 콜백
virtual void onEnter();
/// 씬 해제 콜백
virtual void onLeave();
/// 씬 활성화 콜백
virtual void onActivate();
/// 씬 비활성화 콜백
virtual void onDeactivate();
/// 씬 틱 콜백
virtual void onTick();
/// 신 렌더 콜백
virtual void onRender( KViewportObject* viewport );
/// QJTV 렌더타겟 텍스쳐 획득
K3DTexture* getRenderTarget() { return mRenderTarget; }
/// 이미지 폭 획득
int getWidth() const { return mImageWidth; }
/// 이미지 높이 획득
int getHeight() const { return mImageHeight; }
/// 그려질 이미지 준비 여부 확인
bool isImageReady() const { return mIsImageReady; }
/// 플레이 여부 설정
void play( bool play = true );
protected:
std::string mQjtvFile;
std::string mSoundFile;
QJTVObj* mQjtv;
trf::MetaData mQjtvTml;
unsigned int mFrame;
int mImageWidth;
int mImageHeight;
DWORD mRefreshTime;
DWORD mBeginTime;
KColor mBgColor;
DWORD mOption;
int mFixedFps;
bool mIsImageReady;
bool mIsPlaying;
bool mRegisterSelf;
K3DVector mPosition;
K3DVector2 mSize;
K3DMatrix mWorld;
K3DTextureSPtr mRenderTarget;
KResSpriteSPtr mSprite;
KSpritePrimitive mPrimitive;
KViewportObject* mViewport;
bool _needToFillRenderTarget() const;
bool _fillRenderTarget( K3DTexture* texture, BYTE* image, int width, int height );
};
}