Чесно говоря, я сам такое не пробовал, но уверен что работать будет.
Смысл в чем:
1 . Создать scriptJob -idle ourOwnCoolProc
Он всё (всё свободное) время будет запускать ourOwnCoolProc.
Сожрёт все свободные ресурсы компа. (слава богу это не на долго)
2. ourOwnCoolProc - в ней проверяй сколько времент прошло с прошлого двига кубика. Если больше чем "дельта" -> двиг чуть-чуть. Время запомни.
Вот.
timerX -просто возврашает текущее время в float.
Если всё равно не очень понял, вот тебе мой autoSave, там как-раз я что-то типо этого делал. (засунь текст в vovkaAutoSave.mel и помести в дир. со скриптами, хотя я надеюсь ты это и так знаеш)
Если хочеш, может писать мне на мыло, хотя возможно наша переписка будет ещё кому-то интересна.
/***********************************************************
*
* Program: vovkaAutoSave
* Created: 19.09.2002 13:17
* Author: Vladimir Kazantsev aka BoBaH aka Vovka
* (Firestarter project, level designer). Network name - "Vovka".
* Requested: own use
* Comments: Checks for Last Auto Save time. If > 3 minutes, then writes autosave.ma
* Usage: Copy it to your scripts directory. Run "vovkaAutoSave on"
* on start up.
*
*
************************************************************
*
* History:
*
* GSC 2002 vovka@gsc-game.kiev.ua
************************************************************/
//
// description: This procedure performs AutoSave if last auto save was latter then 3 minutes
//
global proc tryAutoSave(string $autoSaveName)
{
global float $lastAutoSaveTime;
if ( $lastAutoSaveTime == 0.0 || (`timerX` - $lastAutoSaveTime)> 300.0 ) {
$lastAutoSaveTime = `timerX`;
$currentSceneName = `file -q -sceneName`;$currentSceneType = `file -q -type`;
file -rename $autoSaveName;
$res = `file -save -type "mayaAscii"`;
print ("// ! - autosave: " + $res +"\n" );
file -type $currentSceneType ; file -rename $currentSceneName;
}
}
//
// description: This procedure Turns AutoSave ON/OFF
// Usage: vovkaAutoSave("1") or simply "vovkaAutoSave on"
// "vovkaAutoSave -q" return current state (ponti dlya priezzih
//
global proc int vovkaAutoSave( string $trigger )
{
global int $autoSaveScriptJobNum;
if ( $trigger == "1" || $trigger == "on" ) {
if ( $autoSaveScriptJobNum == 0 ) {
$cmd = "getFileList -folder (`optionVar -q lastLocalWS`+\"/\") -filespec \"*.ma\"";
$filesExists = eval($cmd);
$i = 0;
for(;;$i++)
{
$findI = 1;
for($file in $filesExists)
{
if($file == ("autoSave")+$i+".ma" )
{
$findI = 0 ;
break;
}
}
if($findI)break;
}
$autoSaveScriptJobNum = eval("scriptJob -event \"SelectionChanged\" \"tryAutoSave autoSave"+$i+"\"");
print ( "Activating AutoSave \n" );
return 1;
}
else {
print ( "AutoSave already running\n" );
return 1;
}
}
else if ( $trigger == "0" || $trigger == "off" ) {
scriptJob -kill $autoSaveScriptJobNum;
$autoSaveScriptJobNum = 0 ;
print ( "Disabling AutoSave \n" );
return 1;
}
else if ( $trigger == "-q" || $trigger == "-query") {
if ( `scriptJob -exists $autoSaveScriptJobNum` && $autoSaveScriptJobNum != 0 ) {
return 1;
}
return 0;
}
return $autoSaveScriptJobNum ;
}