Maya Context에 대하여…

Context란 마우스의 이벤트에 반응하여 어떠한 특정 작업 수행이 가능한 Maya의 특수 모드를 말한다.

Maya에서 context는 tool과 동일한 개념으로 사용된다.
다만, graphical user interface 기준에서는 tool이라고 부르고, programming interface 기준에서는 context라고 부른다.

setToolTo [context name]으로 특정 컨텍스트 모드로 들어갈 수 있다.
currentCtx: 현재 어떠한 컨텍스트 모드에 있는지 알 수 있는 명령어.

다음과 같은 세 가지 API 클래스를 상속받아서 자신만의 custom context를 만들 수 있다.
1) MPxContext
2) MPxContextCommand
3) MPxToolCommand

MPxContext가 실제 컨텍스트 구현부를 담당하고, MPxContextCommand가 컨텍스트 등록을 담당한다.
MPxToolCommand의 사용은 필수사항은 아니지만, 만약 undo/redo 기능을 사용하려면 반드시 있어야 한다.
MPxContext의 doPress(), doDrag(), doRelease() 함수를 이용하여 원하는 기능을 구현하면 되는데,
보통의 경우 doRelease()가 호출되었을 때, 새로운 MPxToolCommand를 만들고,
MPxToolCommand의 redoIt(), finalize() 함수를 호출하게되면 자동적으로 undo/redo 기능을 사용할 수 있게된다.

Context 실행시 각 함수들의 실행순서는 다음과 같다.

플러그인을 로드하면..
MPxContextCommand::creator()
MPxContextCommand::MPxContextCommand()

setToolTo를 실행하면..
MPxContextCommand::appendSyntax()
MPxContextCommand::makeObj()
MPxContext::MPxContext()
MPxConTextCommand::doEditFlags()
MPxContextCommand::doQueryFlags()
MPxContext::toolOnSetup()
MPxContext::getClassName()

마우스 버튼을 클릭, 드래그를 하면..
MPxContext::doPress()
MPxContext::doDrag()

MPxContext::doDrag()

마우스 버튼을 떼면..
MPxContext::doRelease()
MPxToolCommand::newSyntax(): 처음 한 번만 호출됨
MPxToolCommand::creator()
MPxToolCommand::MPxToolCommand()
MPxToolCommand::redoIt()
MPxToolCommand::finalize()

undo를 실행하면..
MPxToolCommand::undoIt()

redo를 실행하면..
MPxToolCommand::redoIt()

Context를 빠져나오면..
MPxContext::toolOffCleanup()

답글 남기기