splitUVCmd/splitUVCmd.h

splitUVCmd/splitUVCmd.h
//-
// ==========================================================================
// Copyright 1995,2006,2008 Autodesk, Inc. All rights reserved.
//
// Use of this software is subject to the terms of the Autodesk
// license agreement provided at the time of installation or download,
// or which otherwise accompanies this software in either electronic
// or hard copy form.
// ==========================================================================
//+
#ifndef _splitUVCmd
#define _splitUVCmd
//
// File: splitUVCmd.h
//
// MEL Command: splitUV
//
// Author: Lonnie Li
//
// Overview:
//
// The purpose of the splitUV command is to unshare (split) any selected UVs
// on a given object.
//
// How it works:
//
// This command is based on the polyModifierCmd. It relies on the polyModifierCmd
// to manage "how" the effects of the splitUV operation are applied (ie. directly
// on the mesh or through a modifier node). See polyModifierCmd.h for more details
//
// To understand the algorithm behind the splitUV operation, refer to splitUVFty.h.
//
// Limitations:
//
// (1) Can only operate on a single mesh at a given time. If there are more than one
// mesh with selected UVs, only the first mesh found in the selection list is
// operated on.
//
#include "polyModifierCmd.h"
#include "splitUVFty.h"
// Function Sets
//
#include <maya/MFnComponentListData.h>
// Forward Class Declarations
//
class MArgList;
class splitUV : public polyModifierCmd
{
public:
// Public Methods //
splitUV();
virtual ~splitUV();
static void* creator();
bool isUndoable() const;
MStatus doIt( const MArgList& );
MStatus redoIt();
MStatus undoIt();
// polyModifierCmd Methods //
MStatus initModifierNode( MObject modifierNode );
MStatus directModifier( MObject mesh );
private:
// Private Methods //
bool validateUVs();
MStatus pruneUVs( MIntArray& validUVIndices );
// Private Data //
// Selected UVs
//
// Note: The MObject, fComponentList, is only ever accessed on a single call to the plugin.
// It is never accessed between calls and is stored on the class for access in the
// overriden initModifierNode() method.
//
MObject fComponentList;
MIntArray fSelUVs;
// splitUV Factory
//
splitUVFty fSplitUVFactory;
};
#endif