My MaxScript工具要求场景对象的类型为editable_mesh或editable_poly,并根据对象类型启用和禁用GUI控件。
使用#selectionSetChanged
回调,当用户更改所选对象时,我可以成功更新卷展栏,但如果他们转换对象,他们将被迫取消选择该对象,然后再次选择该对象以对其进行操作。
我应该为callbacks.addscript提供什么回调类型名称,以便在用户更改/转换对象的类型/类时调用它?
通过调用NodeEventCallback使用节点事件系统,并将我的函数提供给modelstructured
属性。
这在标准事件回调系统上操作一个层,并具有许多新事件,但它仅适用于3ds Max 2009及更高版本。
据我所知,这里没有这样的回调事件,甚至连when构造都不起作用。实现这一点的一种方法是在卷展栏中使用计时器,并在每次勾选时检查选定对象的类/超类,但我不确定它是否真的需要。
如果你想警告用户需要转换对象,有很多方法可以通过他的合作来完成,比如在选择时弹出一个queryBox,上面会显示类似"单击的对象不是可编辑网格。是否将其转换为可编辑网格?"的内容,或者是一个自定义查询框,其中包含选项转换成可编辑多边形/转换成可可编辑网格/丢弃。
或者甚至是老式的方式,默认情况下禁用所有有问题的控件,只启用一个大的"拾取节点"拾取按钮。该节点将提供一个过滤函数,该函数只允许您选择可编辑节点。