cameraSetSubclass/exCameraSet.cpp

cameraSetSubclass/exCameraSet.cpp
//-
// ==========================================================================
// Copyright (C) 1995 - 2006 Autodesk, Inc. and/or its licensors. All
// rights reserved.
//
// The coded instructions, statements, computer programs, and/or related
// material (collectively the "Data") in these files contain unpublished
// information proprietary to Autodesk, Inc. ("Autodesk") and/or its
// licensors, which is protected by U.S. and Canadian federal copyright
// law and by international treaties.
//
// The Data is provided for use exclusively by You. You have the right
// to use, modify, and incorporate this Data into other products for
// purposes authorized by the Autodesk software license agreement,
// without fee.
//
// The copyright notices in the Software and this entire statement,
// including the above license grant, this restriction and the
// following disclaimer, must be included in all copies of the
// Software, in whole or in part, and all derivative works of
// the Software, unless such copies or derivative works are solely
// in the form of machine-executable object code generated by a
// source language processor.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
// AUTODESK DOES NOT MAKE AND HEREBY DISCLAIMS ANY EXPRESS OR IMPLIED
// WARRANTIES INCLUDING, BUT NOT LIMITED TO, THE WARRANTIES OF
// NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
// PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE, OR
// TRADE PRACTICE. IN NO EVENT WILL AUTODESK AND/OR ITS LICENSORS
// BE LIABLE FOR ANY LOST REVENUES, DATA, OR PROFITS, OR SPECIAL,
// DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES, EVEN IF AUTODESK
// AND/OR ITS LICENSORS HAS BEEN ADVISED OF THE POSSIBILITY
// OR PROBABILITY OF SUCH DAMAGES.
//
// ==========================================================================
//+
#include <string.h>
#include <maya/MIOStream.h>
#include <math.h>
#include <maya/MPxCameraSet.h>
#include <maya/MFnCompoundAttribute.h>
#include <maya/MFnEnumAttribute.h>
#include <maya/MFnPlugin.h>
#include <maya/MString.h>
#include <maya/MTypeId.h>
#include <maya/MPlug.h>
#include "exCameraSet.h"
#include "testExCameraSetCmd.h"
MTypeId exCameraSet::id( 0x80024 );
MObject exCameraSet::layerTypeAttr;
exCameraSet::exCameraSet() {}
exCameraSet::~exCameraSet() {}
void* exCameraSet::creator()
{
return new exCameraSet();
}
MStatus exCameraSet::initialize()
{
MFnEnumAttribute enumAttr;
MStatus status;
// Create the layerType attribute and define its enum values.
layerTypeAttr = enumAttr.create( "layerType", "lt", 0, &status );
if( !status ) {
status.perror("ERROR creating layerType enum attribute");
return status;
}
enumAttr.addField("Mono", 0);
enumAttr.addField("Left", 1);
enumAttr.addField("Right", 2);
// Make this attribute a multi so it can store a value per camera layer.
enumAttr.setArray(true);
return MS::kSuccess;
}
MStatus exCameraSet::setLayerType( unsigned int index, int layerType )
{
MStatus status;
// Get the layerType plug for the given index.
MPlug layerTypePlug;
status = getLayerTypePlug(index, layerTypePlug);
if (status != MS::kSuccess)
return status;
// Set the value of the plug to the new value.
return layerTypePlug.setValue(layerType);
}
MStatus exCameraSet::getLayerType( unsigned int index, int & layerType ) const
{
MStatus status;
// Get the layerType plug for the given index.
MPlug layerTypePlug;
status = getLayerTypePlug(index, layerTypePlug);
if (status != MS::kSuccess)
return status;
// Get the value of the plug to the new value.
return layerTypePlug.getValue(layerType);
}
MStatus exCameraSet::getLayerTypePlug(unsigned int index, MPlug &layerTypePlug) const
{
MPlug enumPlug(thisMObject(), layerTypeAttr);
layerTypePlug = enumPlug.elementByLogicalIndex(index, &status);
return status;
}
MStatus initializePlugin( MObject obj )
{
MStatus status;
MFnPlugin plugin( obj, PLUGIN_COMPANY, "7.0", "Any");
status = plugin.registerNode( "exCameraSet", exCameraSet::id, exCameraSet::creator,
exCameraSet::initialize, MPxNode::kCameraSetNode);
if (!status) {
status.perror("registerNode");
return status;
}
status = plugin.registerCommand( kCmdName, testExCameraSetCmd::creator);
if (!status) {
status.perror("registerCommand");
return status;
}
return status;
}
MStatus uninitializePlugin( MObject obj)
{
MStatus status;
MFnPlugin plugin( obj );
status = plugin.deregisterNode( exCameraSet::id );
if (!status) {
status.perror("deregisterNode");
return status;
}
status = plugin.deregisterCommand( kCmdName );
if (!status) {
status.perror("deregisterCommand");
return status;
}
return status;
}