Передача пользовательских данных в атрибуты MPxLocator (Maya API)

В классе cpp, использующем Maya API, я инициирую пользовательский экземпляр MPxLocator с именем myLocatorNode и передаю его атрибутам некоторые переменные:

MDagModifier dagMod;
MDGModifier mdgMod;

myObj=dagMod.createNode("myLocatorNode", <existing transform MObject>);
dagMod.doIt();

MFnDagNode myDagNode(myObj);
myDagNode.findPlug("attributeOne").setValue(1.5);
myDagNode.findPlug("attributeTwo").setValue(2.0);
myDagNode.findPlug("attributeThree").setValue(3.1);
myDagNode.findPlug("classAttrib").setValue(classPointer); // <- which type should I use ?

Пользовательский класс локатора:

MStatus myLocatorNode::initialize()
{
MFnNumericAttribute nAttr;
MFn???Attribute customAttr;  <-- What can I use here ?

attr1= nAttr.create( "attributeOne", "ao", MFnNumericData::kFloat,1.0 );
attr2= nAttr.create( "attributeTwo", "ao", MFnNumericData::kFloat,1.0 );
attr3= nAttr.create( "attributeThree", "ao", MFnNumericData::kFloat,1.0 );
attr4= customAttr.create("classAttrib","ca", MyCustomClass *); <-- and here ?
...

}

Я хотел бы перейти к атрибуту / подключить указатель на пользовательский класс. Какой тип атрибута в классе локатора поможет мне в этом?
Спасибо

0

Решение

MFn ??? Атрибут customAttr; <- Что я могу использовать здесь?

хорошо, под указателем класса вы подразумеваете адрес памяти? на 64-битной машине указатель является int64, поэтому вам нужно хранить целое число int64. Вы можете использовать путь MFnNumericAttribute :: createAddress () или сохранить свой собственный int64, как описано здесь: http://around-the-corner.typepad.com/adn/2012/11/no-64bit-integer-attribute-in-maya-no-way.html

1

Другие решения


По вопросам рекламы [email protected]