#include <stdio.h>
#include <maya/MIOStream.h>
#include <maya/MGlobal.h>
#include <maya/MString.h>
#include <maya/MPxCommand.h>
#include <maya/MSyntax.h>
#include <maya/MArgDatabase.h>
#include <maya/MArgList.h>
#include <maya/MSelectionList.h>
#include <maya/MItSelectionList.h>
#include <maya/MDrawTraversal.h>
#include <maya/MHardwareRenderer.h>
#include <maya/MFnDagNode.h>
#include <maya/MBoundingBox.h>
#include <maya/M3dView.h>
#include <maya/MPoint.h>
#include <maya/MImage.h>
#include <maya/MViewport2Renderer.h>
#include <maya/MRenderTargetManager.h>
#include <maya/MStateManager.h>
#include <maya/MShaderManager.h>
#include <maya/MTextureManager.h>
#include <maya/MDrawContext.h>
#include <maya/MGLFunctionTable.h>
#include "viewRenderOverride.h"
bool MSurfaceDrawTraversal::filterNode(
const MDagPath &traversalItem )
{
bool prune = false;
{
)
{
prune = true;
}
}
return prune;
}
MCustomSceneDraw::MCustomSceneDraw()
{
if ( !gGLFT )
}
MCustomSceneDraw::~MCustomSceneDraw()
{
gGLFT = NULL;
}
void
MCustomSceneDraw::drawBounds(
const MDagPath &dagPath,
{
double bottomLeftFront[3] = { minPt.
x, minPt.
y, minPt.
z };
double topLeftFront[3] = { minPt.
x, maxPt.
y, minPt.
z };
double bottomRightFront[3] = { maxPt.
x, minPt.
y, minPt.
z };
double topRightFront[3] = { maxPt.
x, maxPt.
y, minPt.
z };
double bottomLeftBack[3] = { minPt.
x, minPt.
y, maxPt.
z };
double topLeftBack[3] = { minPt.
x, maxPt.
y, maxPt.
z };
double bottomRightBack[3] = { maxPt.
x, minPt.
y, maxPt.
z };
double topRightBack[3] = { maxPt.
x, maxPt.
y, maxPt.
z };
gGLFT->
glMatrixMode( MGL_MODELVIEW );
gGLFT->
glMultMatrixd( &(matrix.
matrix[0][0]) );
gGLFT->
glBegin(MGL_LINE_STRIP);
gGLFT->
glVertex3dv( bottomLeftFront );
gGLFT->glVertex3dv( bottomLeftBack );
gGLFT->glVertex3dv( topLeftBack );
gGLFT->glVertex3dv( topLeftFront );
gGLFT->glVertex3dv( bottomLeftFront );
gGLFT->glVertex3dv( bottomRightFront );
gGLFT->glVertex3dv( bottomRightBack);
gGLFT->glVertex3dv( topRightBack );
gGLFT->glVertex3dv( topRightFront );
gGLFT->glVertex3dv( bottomRightFront );
gGLFT->glBegin(MGL_LINES);
gGLFT->glVertex3dv(bottomLeftBack);
gGLFT->glVertex3dv(bottomRightBack);
gGLFT->glVertex3dv(topLeftBack);
gGLFT->glVertex3dv(topRightBack);
gGLFT->glVertex3dv(topLeftFront);
gGLFT->glVertex3dv(topRightFront);
gGLFT->glEnd();
}
bool
MCustomSceneDraw::draw(
MDagPath &cameraPath,
unsigned int width,
unsigned int height)
{
return false;
trav = new MSurfaceDrawTraversal;
if (!trav)
return false;
{
delete trav; trav = NULL;
return false;
}
unsigned int i;
for (i=0; i<numItems; i++)
{
{
bool drawIt = false;
{
drawIt = true;
{
gGLFT->
glColor3f( 1.0f, 1.0f, 1.0f );
}
{
gGLFT->glColor3f( 0.2f, 0.2f, 0.2f );
}
else
{
gGLFT->glColor3f( 0.286f, 0.706f, 1.0f );
gGLFT->glColor3f( 0.486f, 0.306f, 1.0f );
else
gGLFT->glColor3f( 0.886f, 0.206f, 1.0f );
}
}
if (drawIt)
{
drawBounds( path, box );
}
}
}
if (trav)
{
delete trav;
trav = NULL;
}
return true;
}
viewRenderUserOperation::viewRenderUserOperation(
const MString &name)
: MUserRenderOperation( name )
, fDrawLabel(false)
, fUserCameraOverride(false)
, fDrawBoundingBoxes(false)
, fDebugLightingInfo(false)
, fDebugDrawContext(false)
, fEnableSRGBWriteFlag(false)
{
mViewRectangle[0] = 0.0f;
mViewRectangle[1] = 0.0f;
mViewRectangle[2] = 1.0f;
mViewRectangle[3] = 1.0f;
}
viewRenderUserOperation::~viewRenderUserOperation()
{
}
{
static const bool debugPassInformation = false;
if (debugPassInformation)
{
printf(
"viewRenderUserOperation: drawing in pass[%s], semantic[", passId.
asChar());
for (
unsigned int i=0; i<passSem.
length(); i++)
printf(" %s", passSem[i].asChar());
printf("\n");
}
if (theRenderer)
{
}
if (fDebugLightingInfo)
{
viewRenderOverrideUtilities::printDrawContextLightInfo( drawContext );
}
if (fDebugDrawContext)
{
double dest[4][4];
status = matrix.
get(dest);
printf("World matrix is:\n");
printf("\t%f, %f, %f, %f\n", dest[0][0], dest[0][1], dest[0][2], dest[0][3]);
printf("\t%f, %f, %f, %f\n", dest[1][0], dest[1][1], dest[1][2], dest[1][3]);
printf("\t%f, %f, %f, %f\n", dest[2][0], dest[2][1], dest[2][2], dest[2][3]);
printf("\t%f, %f, %f, %f\n", dest[3][0], dest[3][1], dest[3][2], dest[3][3]);
printf("Viewdirection is: %f, %f, %f\n", viewDirection[0], viewDirection[1], viewDirection[2]);
printf("Screen box is:\n");
printf(
"\twidth=%f, height=%f, depth=%f\n", box.
width(), box.
height(), box.
depth());
float center[4];
printf("\tcenter=(%f, %f, %f, %f)\n", center[0], center[1], center[2], center[3]);
int originX, originY, width, height;
printf("Viewport dimension: center(%d, %d), width=%d, heigh=%d\n", originX, originY, width, height);
}
if (mPanelName.length() &&
{
int targetW, targetH;
if (fDrawLabel)
{
MString testString(
"Drawing with override: ");
testString += overridePtr->
name();
glColor3f( 1.0f, 1.0f, 1.0f );
}
if (fDrawBoundingBoxes)
{
MCustomSceneDraw userDraw;
userDraw.draw( cameraPath, targetW, targetH );
}
}
}
viewRenderUserOperation::cameraOverride()
{
if (fUserCameraOverride)
{
if (mPanelName.length() &&
{
mView.
getCamera( mCameraOverride.mCameraPath );
return &mCameraOverride;
}
}
return NULL;
}
viewRenderUserOperation::targetOverrideList(unsigned int &listSize)
{
if (mTargets)
{
listSize = 2;
return &mTargets[kMyColorTarget];
}
return NULL;
}
bool viewRenderUserOperation::enableSRGBWrite()
{
return fEnableSRGBWriteFlag;
}
bool viewRenderUserOperation::hasUIDrawables() const
{
return true;
}
void viewRenderUserOperation::addUIDrawables(
{
}