맥스스크립트 심화

오브젝트의 하이드와 박스모드 쉽게하기(2)

스크립팅하는애님 2021. 5. 11. 19:04
728x90
반응형

안녕하세요.

애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.

지난 시간에 이어서 계속 작업을 진행하겠습니다.

지난 시간 작업내용은 아래와 같습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
rollout hideBoxMode_Rollout "Hide/Box Mode"
(
    button hide_btn "Hide" width:70 pos:[5, 5]
    button box_btn "Box" width:70 pos:[85, 5]
    
    on hide_btn pressed do
    (
        selectNode = (selection as array)
        for i = 1 to selectNode.count do
        (
            if(selectNode[i].isHidden == true) then unhide selectNode[i]
            else hide selectNode[i]
        )
    )
)
createdialog hideBoxMode_Rollout 
cs

 

 

오늘은 Box Mode를 작업하겠습니다.

 

내용 자체는 Hide와 비슷하니 바로 진행하겠습니다.

다음과 같이 입력하고 확인해 보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
.....
on box_btn pressed do
(
    selectNode = (selection as array)
    for i = 1 to selectNode.count do
    (
        if(selectNode[i].boxMode == true) then selectNode[i].boxMode = false
        else selectNode[i].boxMode = true
    )
)
.....
cs

 

잘 작동합니다.ㅎㅎㅎ

 

<node>.boxMode Boolean default: false

해당 노드의 박스 모드를 확인 / 수정이 가능합니다.

 

7번 라인의 내용은 현재 노드의 박스 모드를 확인하고 박스 모드이면, 메쉬 모드로 반경 합니다.

8번 라인은 반대입니다.

 

여기에 조금 더 추가로 스크립트를 실행할 때마다 대화창이 열렸는지 확인하여 겹치는 현상이 없도록 추가하겠습니다.

 

1
2
3
4
5
if hideBoxMode_Rollout != undefined do
(
    destroydialog hideBoxMode_Rollout
.....
cs

 

 

이제 스크립트를 실행할 때마다 이전 대화창을 지우지 않아도 자동으로 지워집니다.

 

이제 작업이 완료된 것 같네요.

지금까지 작업한 내용은 다음과 같습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
if hideBoxMode_Rollout != undefined do
(
    destroydialog hideBoxMode_Rollout
 
rollout hideBoxMode_Rollout "Hide/Box Mode"
(
    button hide_btn "Hide" width:70 pos:[5, 5]
    button box_btn "Box" width:70 pos:[85, 5]
    
    on hide_btn pressed do
    (
        selectNode = (selection as array)
        for i = 1 to selectNode.count do
        (
            if(selectNode[i].isHidden == true) then unhide selectNode[i]
            else hide selectNode[i]
        )
    )
    
    on box_btn pressed do
    (
        selectNode = (selection as array)
        for i = 1 to selectNode.count do
        (
            if(selectNode[i].boxMode == true) then selectNode[i].boxMode = false
            else selectNode[i].boxMode = true
        )
    )
)
createdialog hideBoxMode_Rollout 
cs

 

수고하셨습니다.

다음 시간에 봬요.

728x90
반응형