public void RotateAround(double angleZ, double angleY, double miliseconds, CameraTransformHandler callback, CameraTransformHandler stepCallback) { ParamTimer tmrRot = new ParamTimer(Interval); tmrRot.DictParams["timer"] = tmrRot; tmrRot.DictParams["timeremains"] = miliseconds; tmrRot.DictParams["stepy"] = angleY / miliseconds * Interval; tmrRot.DictParams["stepz"] = angleZ / miliseconds * Interval; tmrRot.DictParams["stepcallback"] = stepCallback; tmrRot.DictParams["callback"] = callback; tmrRot.DictParams["$proceed"] = new ThreadViewport3D.VoidDictInvokes(ProceedRotate); tmrRot.Elapsed += new ElapsedEventHandler(tmr_Elapsed); tmrRot.Start(); }
public void Offset(Vector3D targetPos, Point3D?lookAt, double millisecond, CameraTransformHandler callback, CameraTransformHandler stepCallback) { double ratio = Interval / millisecond; ParamTimer tmr = new ParamTimer(Interval); tmr.DictParams["step"] = new Vector3D(targetPos.X * ratio, targetPos.Y * ratio * 0, targetPos.Z * ratio); tmr.DictParams["timer"] = tmr; tmr.DictParams["timeremains"] = millisecond; tmr.DictParams["lookat"] = lookAt; tmr.DictParams["callback"] = callback; tmr.DictParams["stepcallback"] = stepCallback; tmr.DictParams["$proceed"] = new ThreadViewport3D.VoidDictInvokes(ProceedOffset); tmr.Elapsed += new ElapsedEventHandler(tmr_Elapsed); tmr.Start(); }
protected void tmr_Elapsed(object sender, ElapsedEventArgs e) { ParamTimer tmr = (ParamTimer)sender; ThreadViewport3D.VoidDictInvokes proceed = (ThreadViewport3D.VoidDictInvokes)tmr.DictParams["$proceed"]; try { tmr.Stop(); host.Invoke(proceed, tmr.DictParams); tmr.Start(); } catch (Exception err) { Exceptions.LogOnly(err); } }
void tmrRun_Elapsed(object sender, ElapsedEventArgs e) { ParamTimer tmr = (ParamTimer)sender; tmr.Stop(); int sleft = (int)tmr.DictParams["stepsleft"]; Console.WriteLine("Running - " + sleft); tmr.DictParams["stepsleft"] = sleft - 1; if (sleft - 1 > 0) { tmr.Start(); } else { Message msg = tmr.Param as Message; msg.Release(); } }
void ProceedOffset(object sender, Model3DParams mp) { ParamTimer tmr = (ParamTimer)sender; if (IsHostReady) { double remains = mp.Remains; double interval = mp.Interval; mp.Remains = remains - interval; FrequentMessage msg = (FrequentMessage)tmr.Param; hostVisual.Transform = MatrixHelper.Offset(hostVisual.Transform, mp.OffsetVector.X, mp.OffsetVector.Y, mp.OffsetVector.Z); if (remains > interval) { tmr.Start(); } else { msg.Release(); } } }
void ProceedRotate(object sender, Model3DParams mp) { ParamTimer tmr = (ParamTimer)sender; if (IsHostReady) { double remains = mp.Remains; double interval = mp.Interval; mp.Remains = remains - interval; FrequentMessage msg = (FrequentMessage)tmr.Param; hostVisual.Transform = MatrixHelper.Rotate3D(hostVisual.Transform, mp.StepX, mp.StepY, mp.StepZ, hostVisual.OriginPosition, hostVisual.OriginUpDir, hostVisual.OriginLookDir, MatrixHelper.RotationType.LockAxisY); if (remains > interval) { tmr.Start(); } else { msg.Release(); } } }
public override void Process(MessageQueue msgQueue) { if (IsValid) { if (IsParallel) { vStatus = MessageStatus.ParallelProcessing; } else { vStatus = MessageStatus.Processing; } if (elapsedProcessor != null) { msgTimer.Elapsed += new ElapsedEventHandler(elapsedProcessor); msgTimer.Enabled = true; msgTimer.Param = this; msgTimer.DictParams = Parameters; msgTimer.Start(); } } }