#include <math.h>
#include <maya/MIOStream.h>
#include <maya/MPxNode.h>
#include <maya/MFnNumericAttribute.h>
#include <maya/MFnTypedAttribute.h>
#include <maya/MFnStringData.h>
#include <maya/MFnPlugin.h>
class stringFormat :
public MPxNode
{
public:
stringFormat();
virtual ~stringFormat();
static void* creator();
public:
};
MTypeId stringFormat::id( 0x81034 );
void* stringFormat::creator()
{
return new stringFormat();
}
{
stringData.
create(&stat2), &stat);
0, &stat);
stringData.
create(&stat2), &stat);
}
stringFormat::stringFormat() {}
stringFormat::~stringFormat() {}
int findNextMatch(
MString &
string,
int indx,
int & param,
char & letter)
{
const char * str = string.asChar();
while (str[indx]) {
if ((str[indx] == '^') &&
(str[indx+1] >= '0') && (str[indx+1] <= '9') &&
(str[indx+2] >= 'a') && (str[indx+1] <= 'z')) {
param = str[indx+1] - '0';
letter = str[indx+2];
return indx+1;
}
indx++;
}
return -1;
}
{
if (plug == attrOutput) {
int indx = 0;
int param;
char letter;
while ((indx = findNextMatch(format, indx, param, letter)) > 0) {
double val = 0.;
}
}
bool valid = false;
switch (letter) {
case 'd':
val = floor(val+.5);
case 'f':
valid = true;
break;
case 't':
{
const char * sign = "";
if (val<0) {
sign = "-";
val = -val;
}
int valInt = (int)(val+.5);
int sec = valInt / 24;
int frame = valInt - sec * 24;
int min = sec / 60;
sec -= min * 60;
int hour = min / 60;
min -= hour * 60;
char buffer[90];
if (hour>0)
sprintf(buffer, "%s%d:%02d:%02d.%02d",
sign, hour, min, sec, frame);
else
sprintf(buffer, "%s%02d:%02d.%02d",
sign, min, sec, frame);
replace = buffer;
}
valid = true;
break;
}
if (valid) {
}
}
} else {
}
}
{
MFnPlugin plugin( obj, PLUGIN_COMPANY,
"8.0",
"Any");
plugin.registerNode( "stringFormat", stringFormat::id,
stringFormat::creator, stringFormat::initialize));
"stringFormatDeleteUI", "", ""));
return status;
}
{
return status;
}