Object Hierarchy | Related C++ Class: TimerEvent
TimerEvent
v5.1
A TimerEvent represents a system timer and allows you to specify
the interval and the delay time at which a timer elapses. Timers in
Softimage are independent of the timeline clock and can be used to
produce recurrent work accurately. For example, you can implement
an autosave mechanism with a TimerEvent.
The TimerEvent object derives from EventInfo and can be managed like a regular
Softimage event. Use PluginRegistrar.RegisterTimerEvent
to register them and XSIApplication.EventInfos to
access them. Timer events can be suspended with muting and resumed
by un-muting (see EventInfo.Mute). You can reset a timer
with TimerEvent.Reset.
Note: Timer events are based on Windows timers and are processed by
Softimage with a low priority. Although they can be set with
milliseconds accuracy, timer events can sometimes be delayed due to
the current activity of Softimage.
Application | Attributes | Categories | CustomData |
Delay | FileName | FullName | Handler |
Help | Interval | Language | Mute |
Name | NestedObjects | Origin | OriginPath |
Parent | Type | ||
/* This example demonstrates how to register a timer event and to change its values. To try out this example save it into the Plugins directory (User, Factory or Workgroup). Once you have restarted Softimage, the current scene will be saved automatically every 15 secs. ( You can also load the plug-in without restarting Softimage - see XSIApplication.LoadPlugin ) */ function XSILoadPlugin( in_reg ) { in_reg.Author = "Softimage SDK Team" ; in_reg.Name = "SDK Example - Save scene timer" ; in_reg.Major = 1 ; in_reg.Minor = 0 ; // Register the save scene timer. The timer elapses every 15 secs. (0==no delay) in_reg.RegisterTimerEvent( "AutoSaveSceneTimer", 15000, 0 ); in_reg.RegisterProperty( "AutoSaveProp" ); in_reg.RegisterMenu( siMenuMainTopLevelID, "Auto Save Demo", true, false ); return true ; } function AutoSaveSceneTimer_OnEvent( ctxt ) { // Save current scene Application.SaveScene( ); // Log time var strFileName = ActiveProject.ActiveScene.Parameters("Filename").Value; var today = new Date(); var strTime = today.toDateString(); strTime += ", " + today.toTimeString(); Application.LogMessage( "<"+strFileName+">" + " saved on " + strTime ); // Do not mute the timer return false; } function GetAutoSaveProp( ) { var strName = "AutoSaveProp"; var root = ActiveSceneRoot; var prop = root.Properties.Item( strName ) ; if ( prop == null ) { return root.AddProperty( strName ); } else { return prop ; } } function AutoSaveDemo_Init( in_ctxt ) { var menu = in_ctxt.source; menu.AddCallbackItem( "Launch Auto Save Demo", "ShowAutoSaveProp" ); return true; } function ShowAutoSaveProp( ) { InspectObj( GetAutoSaveProp( ), "", "", siLock ); } function AutoSaveProp_Define( ctxt ) { var pset; pset = ctxt.Source; pset.AddParameter2("Auto_Save_Interval",siInt4,15,0,50,null,null,0,siPersistable); pset.AddParameter2("Auto_Save_Delay",siInt4,0,0,50,null,null,0,siPersistable); pset.AddParameter2("Auto_Save_Scene",siBool,true,null,null,null,null,0,siPersistable); return true; } function AutoSaveProp_DefineLayout( ctxt ) { var layout,oItem; layout = ctxt.Source; layout.Clear(); layout.AddGroup(); layout.AddItem("Auto_Save_Interval", "Interval (secs)" ); layout.AddItem("Auto_Save_Delay", "Delay (secs)" ); layout.EndGroup(); layout.AddGroup(); layout.AddRow( ); layout.AddButton( "Auto_Save_Reset","Reset Timer" ) ; layout.AddGroup(); layout.EndGroup(); layout.AddItem( "Auto_Save_Scene", "Enable" ); layout.EndRow( ); layout.EndGroup(); return true; } function AutoSaveProp_OnInit( ctxt ) { var evTimer = Application.EventInfos( "AutoSaveSceneTimer" ); var p = PPG.Auto_Save_Interval; p.Value = evTimer.Interval / 1000; p = PPG.Auto_Save_Delay; p.Value = evTimer.Delay / 1000; } //-------------------------------------------------------------------------- // Reset Timer button callback to restart the Auto Save timer with new values //-------------------------------------------------------------------------- function AutoSaveProp_Auto_Save_Reset_OnClicked() { var p = PPG.Auto_Save_Interval; var interval = p.Value * 1000; p = PPG.Auto_Save_Delay; var delay = p.Value * 1000; var evTimer = Application.EventInfos( "AutoSaveSceneTimer" ); evTimer.Reset( interval, delay ); // update the UI PPG.Auto_Save_Scene.Value = true; } //-------------------------------------------------------------------------- // Start/Stop the AutoSaveSceneTimer timer. //-------------------------------------------------------------------------- function AutoSaveProp_Auto_Save_Scene_OnChanged( ) { var paramVal = PPG.Auto_Save_Scene.Value; var evTimer = Application.EventInfos( "AutoSaveSceneTimer" ); evTimer.Mute = paramVal==false; } |