Skip to content

Commit

Permalink
fix bug about attribute connection
Browse files Browse the repository at this point in the history
  • Loading branch information
ryusas committed Oct 18, 2016
1 parent d617abc commit e049c6f
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 8 deletions.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,9 @@ Python のエクスプレッションコードは exec() 関数によって実


##制限事項
* コード中に書いた関数がまともに動作しない(グローバルスコープの変数にアクセス出来ない)バグがあります。
近日中に修正予定です。

* コード内に書いたアトリビュート参照はパースされて実際のコネクションとなるわけですが、
コードのコメントを識別していないため、
コメント中にも実際のプラグにマッチする名前があるとコネクションに置き換えられてしまいます。
Expand All @@ -218,6 +221,9 @@ Python のエクスプレッションコードは exec() 関数によって実


##改訂履歴
* 2016.10.18:
- コード中に同じアトリビュート参照が複数存在した場合に間違ったコネクションが作られることがあったバグを修正。

* 2016.10.6:
- アトリビュートエディタを改善。識別していないコネクションが維持されるようにした。
- サンプルシーンに [ripple.ma](/examples/ripple.ma) 追加。
Expand Down
17 changes: 11 additions & 6 deletions python/exprespy.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@
u"""
Support module for exprespy plug-in.
"""
__version__ = '1.0.1.20161018'

from functools import partial as _partial
import re
import maya.cmds as cmds

_RE_PLUG = re.compile(r'(\w+(?:\.\w+(?:\[\d+\])?)+)(\s*\=)?')
_RE_PLUG = re.compile(r'([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*(?:\[\d+\])?)+)(\s*\=)?')
_RE_IO_PLUG = re.compile(r'(IN|OUT)\[(\d+)\]')
_RE_PLUG_INDEX = re.compile(r'\[(\d+)\]$')

Expand Down Expand Up @@ -67,7 +68,9 @@ def getCode(node):
#------------------------------------------------------------------------------
def ae_code_new(node):
#print('ae_code_new: ' + node)
cmds.uiTemplate()
if not cmds.uiTemplate('Exprespy', ex=True):
cmds.uiTemplate('Exprespy')
cmds.setUITemplate('Exprespy', pushTemplate=True)
ctl = cmds.scrollField('codeEd', h=500)
cmds.setUITemplate(popTemplate=True)
cmds.scrollField(ctl, e=True, tx=getCode(node), cc=_partial(_ae_setCode, ctl, node))
Expand Down Expand Up @@ -130,11 +133,13 @@ def _toRawCode(code, unknownInSet, unknownOutSet, short=False):
s, e = mat.span(1)
newcode.append(code[ptr:s])
if eq:
outIdx = _decideConnIndex(outputIdxDict, name, unknownOutSet, outIdx)
newcode.append('OUT[%d]' % outIdx)
i = _decideConnIndex(outputIdxDict, name, unknownOutSet, outIdx)
newcode.append('OUT[%d]' % i)
outIdx = max(i, outIdx)
else:
inIdx = _decideConnIndex(inputIdxDict, name, unknownInSet, inIdx)
newcode.append('IN[%d]' % inIdx)
i = _decideConnIndex(inputIdxDict, name, unknownInSet, inIdx)
newcode.append('IN[%d]' % i)
inIdx = max(i, inIdx)
ptr = e
newcode.append(code[ptr:])
return (
Expand Down
4 changes: 2 additions & 2 deletions scripts/AEexprespyTemplate.mel
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ global proc AEexprespyTemplate(string $nodename)
editorTemplate("-endLayout");

editorTemplate("-suppress","compiled");
editorTemplate("-suppress","inputs");
editorTemplate("-suppress","outputs");
editorTemplate("-suppress","input");
editorTemplate("-suppress","output");

AEdependNodeTemplate($nodename);

Expand Down

0 comments on commit e049c6f

Please sign in to comment.