Опрос

Что такое, по вашему мнению, «демократия»?













Расширенные возможности C++ API

15.01.2010 11:44 Администратор
Печать PDF
Рейтинг пользователей: / 0
ХудшийЛучший 
Индекс материала
Расширенные возможности C++ API
Страница 2

В этом разделе рассматриваются вопросы, связанные с расширенными возможностями интерфейса C++ API. 4.9.1. Общие вопросы Обращение к узлам. Так как объект MObject, по сути, является лишь пустым указателем на некие внутренние данные Maya, очень важно не допускать, чтобы он удерживался слишком долго. Фактически, MObject остается действительным лишь тогда, когда еще существует фрагмент данных, на который он ссылается. Если

по той или иной причине эти данные будут удалены, MObject не получит уведомления об этом и потому продолжит работу с указателем, который стал некорректным. Если в этом случае вы воспользуетесь объектом MObject, он, скорее всего, вызовет аварийное завершение Maya по причине разыменования недействительного ука~ зателя. Если же вам нужно сохранять ссылки на узлы ОАГ, обратитесь к объекту MDagPath.

Работая с обычными узлами DG, пользуйтесь их именами. Имя узла может измениться, поэтому важно поддерживать ссылку по имени в актуальном состоянии. Можно установить объект MNodeMessage, который будет информировать вас об изменении имени данного узла. Этой цели служит функция addNameChangedCallback класса MNodeMessage.

Заместители При описании своих собственных узлов и команд вам может показаться, что это те самые узлы и команды, которые фактически используются графом DG. В действительности они являются лишь заместителями Объекты-заместители описываются всеми классами Maya, начинающимися с МРх. Скажем, к примеру, вы описали собственный класс MyNode, производный от MPxNode. Создавая экземпляр MyNode, Maya фактически создаст два объекта. Один из них - это внутренний объект Maya, содержащий ваш экземпляр MyNode.

Ваш узел не используется в DG напрямую. Там находится именно внутренний объект графа, который просто включает в себя ссылку на объект MyNode. Вот почему все классы, производные от МРх, называются заместителями. Реальным узлом является внутренний объект Maya.

На деле вы можете получить указатель на свой узел иэ узла графа DG, вызвав функцию userNode класса MPxNode. Она возвратит указатель на экземпляр вашего класса, который используется внутренним узлом Maya. Так как описанные пользователем узлы образованы из двух частей, вы должны быть осторожны в отношении действий, выполняемых вами в конструкторе. Составляя конструктор класса MyNode, вы не вправе вызывать никакие функции-члены MPxNode. Это относится ко всем классам, которые явно или неявно порождены от MPxNode.



Обновлено 15.01.2010 12:18

Добавить комментарий


Защитный код
Обновить

Поиск

В закладку

 
 

Авторизация



Погода