ITreeEnumProc

반응형

맥스에서 개체는 INode로 이루어져 있다.
해당 노드로 부터 bone, dummy, mesh등의 정보를 얻어 올 수 있다.
이 노드를 얻기위해서 두가지 방법이 있다.
하나는 Interface::GetRootNode로 모으는 방법이고
다른 하나는 ExpInterface::theScene->EnumTree(ITreeEnumProc*) 함수로
클래스를 넘겨서 callback 함수가 호출되게 하는 방법이다.

1. Interface::GetRootNode()를 이용하는 방법

void maxProject::PreProcess(INode* node, int& nodeCount)

{

    nodeCount++;       // 노드의 갯수

    mtlList.AddMtl(node->GetMtl());


    // 재귀 호출 

    for (int c = 0; c < node->NumberOfChildren(); c++) {

        PreProcess(node->GetChildNode(c), nodeCount);

    }

}


2. ExpInterface::theScene->EnumTree(ITreeEnumProc*)를 통한 callback 메소드를 호출하는 방법.

class ITreeEnumProc      //ITreeEnumProc 맥스의 원형이다.

{

   public:

      virtual int callback( INode *node )=0;      //순수 가상 함수

};

 

class MyEnumProc: public ITreeEnumProc            //상속

{

public:

    int callback( INode *node )                   //콜백함수 정의

    {

        return 0;

    }

};


TAGS.

Comments