public static void SetupTickFunction(TimeoutCallback tc, Sirikata.Runtime.Time t) { long us=t.microseconds(); TimeoutCallback wrapped_tc=null; long estLocalTime=GetLocalTime().microseconds()+us*2; wrapped_tc=new TimeoutCallback(delegate(){ try { tc(); }finally { long delta=estLocalTime-GetLocalTime().microseconds(); estLocalTime+=us; if (delta>0) { iAsyncWait(wrapped_tc,new TimeClass((ulong)delta)); }else { iAsyncWait(wrapped_tc,new TimeClass()); } } }); iAsyncWait(wrapped_tc,t.toClass()); }
internal static long TimeTicks(Sirikata.Runtime.Time t) { return t.microseconds(); }