/* ----------------------------------------------------------------------------- This source file is part of OpenSpace3D For the latest info, see http://www.openspace3d.com Copyright (c) 2012 I-maginer This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA, or go to http://www.gnu.org/copyleft/lesser.txt ----------------------------------------------------------------------------- */ fun cbCloseEdit(p)= let p -> [lctrl ctrlvisemespeed] in let sizelist lctrl -> size in let 0 -> i in let nil -> lp in ( while (i < size) do ( let nth_list lctrl i -> [name ctrl] in set lp = [name (getEdCtrlTextLineValue ctrl)]::lp; set i = i + 1; ); ["visemeRaiseSpeed" (ftoa (getEdCtrlFloatValue ctrlvisemespeed))]::lp; );; fun cbSelectObj(val, type, p)= let p -> [inst winstr viewstr ctrlanimname] in let V3DgetDefaultSession viewstr -> sessionstr in let V3DgetAnimationByName sessionstr val -> anim in if anim == nil then nil else ( setEdCtrlTextLineValue ctrlanimname val; ); 0;; fun cbCloseRes(ctrlbtn)= setEdCtrlButtonEnable ctrlbtn 1; 0;; fun cbBtnPickObj(ctrlbtn, p)= let p -> [inst winstr viewstr ctrlanimname animname] in ( setEdCtrlButtonEnable ctrlbtn 0; dlgSelectPluginInstanceResource inst winstr iTypeAnim animname mkfun3 @cbSelectObj [inst winstr viewstr ctrlanimname] mkfun1 @cbCloseRes ctrlbtn 0; ); 0;; fun cbRefreshBtn(pickbtn, p)= let p -> [ctrlobjname] in setEdCtrlTextLineValue ctrlobjname ""; 0;; fun dynamicedit(ewinstr, inst, viewstr, applybtn)= let getPluginInstanceUserEvents inst -> levent in let [430 125] -> [iw ih] in let 10 -> ypos in ( let atof (getPluginInstanceParam inst "visemeRaiseSpeed") -> visemeraisespeed in let if visemeraisespeed == nil then 200.0 else visemeraisespeed -> visemeraisespeed in ( let "rest"::"AI"::"E"::"etc"::"FV"::"L"::"MBP"::"O"::"U"::"WQ"::nil -> l in let sizelist l -> size in let nil -> lctrlvis in ( setEdWindowSize ewinstr iw (size * 30) + 92; let crEdFrameWindow _channel ewinstr 0 0 iw ((size * 30) + 90) EDWIN_RESIZE_MW nil (loc "OS3DANIMATIONLIPSYNC_0001") (loc "OS3DANIMATIONLIPSYNC_0002") -> winfrm in let crEdWindow _channel winfrm 0 18 iw ((size * 30) + 25 + 30 + 30) WN_CHILDINSIDE|WN_NOBORDER EDWIN_RESIZE_MW nil nil -> winstr in let crEdCtrlLabel winstr 10 (ypos+2) 160 20 (strcat (loc "OS3DANIMATIONLIPSYNC_0003") " ") nil -> labelvisemespeed in let crEdCtrlFloat winstr 180 ypos 80 20 visemeraisespeed 10.0 10000.0 10.0 0 nil EDWIN_RESIZE_MW -> ctrlvisemespeed in ( set ypos = ypos + 30; let 0 -> i in while (i < size) do ( let nth_list l i -> visem in let (getPluginInstanceParam inst visem) -> vobj in let crEdCtrlLabel winstr 10 (ypos+2) 170 20 visem nil -> label in let crEdCtrlTextLine winstr 180 ypos 150 20 vobj nil EDWIN_RESIZE_MW -> ctrlvis in let crEdCtrlButton winstr 335 ypos 55 20 "..." nil -> pickbtn in let crEdCtrlButton winstr 395 ypos 35 20 "X" nil -> refreshvis in ( setEdCtrlButtonCb pickbtn mkfun2 @cbBtnPickObj [inst winstr viewstr ctrlvis vobj]; setEdCtrlTextLineEnable ctrlvis 0; setEdCtrlButtonCb refreshvis mkfun2 @cbRefreshBtn [ctrlvis]; set lctrlvis = [visem ctrlvis]::lctrlvis; ); set ypos = ypos + 30; set i = i + 1; ); [mkfun1 @cbCloseEdit [lctrlvis ctrlvisemespeed] nil]; ); ); ); );;