JD2022-TU1/main/extern/Camcam/LIBS/Input/Layer.cpp

58 lines
1.3 KiB
C++

#include "SCENE.h"
#include "MEDIA.h"
class LAYER_Grabber:public INPUT_IO
{
public:
WORLD *pWorld;
u32 LayerIndex;
int INIT (class WORLD*){return 0;};
int FRAME (void)
{
Image.SX = pWorld->XSize;
Image.SY = pWorld->YSize;
if (ulAssociatedTextureIndex == -1 ||
pWorld->DI->AllRef[ulAssociatedTextureIndex].OGLRef !=
pWorld->DI->OGLWorkingRef[LayerIndex % NUMBER_OF_OGL_WORKING_REF])
{
pWorld->DI->DestroyLayerTexture(ulAssociatedTextureIndex);
ulAssociatedTextureIndex = pWorld->DI->CreateLayerTexture(&Image,LayerIndex);
}
return 0;
};
int END (void){return 0;};
IOTYPE GetType() {return IOtype_LAYER;};
};
u32 LAYER_GetIndex(INPUT_IO *Ret)
{
if (Ret->GetType() == IOtype_LAYER) return ((LAYER_Grabber*)Ret)->LayerIndex;
else return 0;
}
INPUT_IO *LAYER_CREATE(WORLD *pScene,char *Filename)
{
u32 SX,SY,Col;
INPUT_IO *Ret;
Ret = (INPUT_IO *)new(LAYER_Grabber);
((LAYER_Grabber*)Ret)->pWorld = pScene;
SX = SY = Col = 0;
Ret->Image.SX = pScene->XSize;
Ret->Image.SY = pScene->YSize;
Ret->dTotalTime = 0;
Ret->dAvgFramePerSecond = 30.0;
while (*Filename == ' ') {Filename++;};
((LAYER_Grabber*)Ret)->LayerIndex = (*Filename - '0') % 9;
Ret->ulAssociatedTextureIndex = pScene->DI->CreateLayerTexture(&Ret->Image,((LAYER_Grabber*)Ret)->LayerIndex);
return (INPUT_IO *)Ret;
};