/********************************************************************
*
* File: fsCNative3dSceneRenderData.h
*
* Purpose: cocos2d-x implementation of sprite render data.
*
*********************************************************************/
#ifndef fsCNativeS3dSceneRenderDatahdr
#define fsCNativeS3dSceneRenderDatahdr
#include <fsCore/fsBaseTypes.h>
#if defined fs3d
#include "../../../fsINativeRenderData.h"
#include "../../../fsIRenderData.h"
#include <fs3d/fsI3dScene.h>
#if defined fsFRAMEWORK_CX
#include "../../../impl/cocos2d-x/native/fsCNative3dScene.h"
#elif defined fsFRAMEWORK_AX
#include "../../../impl/axmol/native/fsCNative3dScene.h"
#elif defined fsFRAMEWORK_MG
#include "../../../impl/magnum/native/fsCNative3dScene.h"
#elif defined fsFRAMEWORK_RL
#include "../../../impl/raylib/native/fsCNative3dScene.h"
#elif defined fsFRAMEWORK_BF
#include "../../../impl/bgfx/native/fsCNative3dScene.h"
#else
#error Unhandled platform.
#endif
class fsC3dSprite;
struct fsPoint;
class fsCNative3dSceneRenderData : public fsIRenderData, public fsINativeRenderData
{
friend class fsCRenderDataFactoryNative;
friend class fsCRenderDataFactoryVertexStream;
friend class fsC3dScene;
public:
void pick(const fsPoint& pScreenPos, fsI3dScene::fsTPickCallback pPickCallback);
void spriteRemove(fsC3dSprite* const);
void spriteAdd(fsC3dSprite* const p3dSprite);
void lightAdd(fsI3dLight* const pLight);
void lightRemove(fsI3dLight* const pLight);
void cameraSet(fsC3dCamera* const pCamera);
virtual ~fsCNative3dSceneRenderData() = default;<--- Destructor in derived class
protected:
static fsIRenderData* create();
fsCNative3dSceneRenderData();
void passToEngineRendererDo(fsIRenderer* const pRenderer, fsS32 pFirstMaterialIndex, fsS32 pLastMaterialInJob) override;
void renderDo() override;
void matrixApplyDo(const fsAffineMtx2d& pRenderMatrix) override;
fsCNative3dScene* nativeImplGet() const override;
private:
};
#endif
#endif