'----------------------------------------------------------------- 'MakeTailResetter.vbs 'Tailリセッター作成ツール 'by_tyotyo XSI徒然日記 http://paradisebrain.seesaa.net/ '使用方法:Tailのルートを選択(複数)して実行:リセッターの作成 '     もしくはTailを子に持つ親オブジェクトを選択(単体)して実行:子階層オプション '2008/09/10 '----------------------------------------------------------------- dim TailEff,inSel,Lump,LumpCPS set inSel = getvalue("selectionList") if Inputvalue(inSel.count,Lump) = false then if Lump = true then AddProp "Custom_parameter_list", inSel(0) , , "TailResetter",LumpCPS SIAddCustomParameter LumpCPS, "ResetTail", SIBool,False,,,, 5 if searchTailCtrl(inSel(0)) = true then searchTailEff inSel(0),TailEff SetTailResetter2 LumpCPS & ".ResetTail" , TailEff end if for each oObj in inSel(0).FindChildren if searchTailCtrl(oObj) = true then searchTailEff oObj,TailEff SetTailResetter2 LumpCPS & ".ResetTail" , TailEff end if next else for each oObj in inSel if searchTailCtrl(oObj) = true then searchTailEff oObj,TailEff SetTailResetter oObj , TailEff end if next end if end if function searchTailCtrl(inObj) dim out out = false if inObj.type = "root" then for each oProp in inObj.Properties if oProp.type = "TailControl" then out = true end if next end if searchTailCtrl = out end function function searchTailEff(inObj,outEff) dim out,tmpRoot,tmpEff redim outEff(getvalue(inObj & ".TailControl.NbSprings") - 1) out = false set tmpRoot = inObj for i=0 to Ubound(outEff) set outEff(i) = tmpRoot.Effector set tmpRoot = outEff(i).Children(0) next out = true searchTailEff = out end function function SetTailResetter(inRoot,inEffs) dim CPS AddProp "Custom_parameter_list", inRoot , , "TailResetter",CPS SIAddCustomParameter CPS, "ResetTail", SIBool,False,,,, 5 for each oEff in inEffs AddExpr oEff & ".kine.global.Spring.ResetToRestState", CPS & ".ResetTail", true next set SetTailResetter = CPS end function function SetTailResetter2(inParam,inEffs) for each oEff in inEffs AddExpr oEff & ".kine.global.Spring.ResetToRestState", inParam, true next end function function Inputvalue(selCount,outLump) dim CPS,out AddProp "Custom_parameter_list", ActiveProject.ActiveScene.root , , "InputValue",CPS SIAddCustomParameter CPS, "Lump", SIBool,False,,,, 5,,,"子階層を処理する" if selCount = 1 then out = InspectObj( CPS, , "ResetterMaker", 4,false) outLump = getvalue(CPS & ".Lump") else out = false outLump = false end if InputValue = out deleteObj CPS end function