58 lines
1.3 KiB
C++
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;
|
|
};
|
|
|
|
|