#include "viewOverrideTrackTexture.h"
#include <maya/MItDependencyNodes.h>
#include <maya/MFnDependencyNode.h>
#include <maya/MObject.h>
#include <maya/MTextureManager.h>
viewOverrideTrackTexture::viewOverrideTrackTexture(
const MString & name )
: MRenderOverride( name )
, mUIName("Track Texture VP2 Override")
, mCurrentOperation(-1)
{
mOperations[0] = mOperations[1] = NULL;
mOperationNames[0] = "viewOverrideTrackTexture_Blit";
mOperationNames[1] = "viewOverrideTrackTexture_Present";
mTexture = NULL;
}
viewOverrideTrackTexture::~viewOverrideTrackTexture()
{
if (mTexture)
{
}
for (unsigned int i=0; i<2; i++)
{
if (mOperations[i])
{
delete mOperations[i];
mOperations[i] = NULL;
}
}
}
{
}
bool viewOverrideTrackTexture::startOperationIterator()
{
mCurrentOperation = 0;
return true;
}
viewOverrideTrackTexture::renderOperation()
{
if (mCurrentOperation >= 0 && mCurrentOperation < 2)
{
if (mOperations[mCurrentOperation])
{
return mOperations[mCurrentOperation];
}
}
return NULL;
}
bool
viewOverrideTrackTexture::nextRenderOperation()
{
mCurrentOperation++;
if (mCurrentOperation < 2)
{
return true;
}
return false;
}
MStatus viewOverrideTrackTexture::setup(
const MString & destination )
{
if (!theRenderer)
if (!mOperations[0])
{
}
if (!mOperations[0] ||
!mOperations[1])
{
}
TextureBlit* textureBlit = (TextureBlit* )mOperations[0];
for ( ; !iter.isDone(); iter.next())
{
bool haveTexture = false;
if (!mTexture)
{
printf("*** Acquired texture %s = %d\n", dependFn.name().asChar(),
mTexture != NULL);
if (mTexture)
haveTexture = true;
}
else
{
MStatus status = mTexture->update(obj);
printf("*** Updated texture %s = %d\n", dependFn.name().asChar(),
haveTexture = true;
}
if (haveTexture)
{
if (textureBlit)
{
textureBlit->setColorTexture(mTexture);
}
else
{
static int sIndex = 1;
saveName += (sIndex++);
saveName += ".iff";
}
break;
}
else
{
textureBlit->setColorTexture(NULL);
}
}
}
MStatus viewOverrideTrackTexture::cleanup()
{
mCurrentOperation = -1;
}
TextureBlit::TextureBlit(
const MString &name)
: MQuadRender( name )
, mShaderInstance(NULL)
, mColorTextureChanged(false)
{
mColorTexture.texture = NULL;
}
TextureBlit::~TextureBlit()
{
if (!renderer)
return;
if (mShaderInstance)
{
if (shaderMgr)
{
}
mShaderInstance = NULL;
}
mColorTexture.texture = NULL;
}
{
if (!mShaderInstance)
{
if (shaderMgr)
{
}
}
if (mShaderInstance)
{
if (mColorTextureChanged)
{
status = mShaderInstance->setParameter("gInputTex", mColorTexture);
mColorTextureChanged = false;
}
}
{
return NULL;
}
return mShaderInstance;
}
{
return mClearOperation;
}