Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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();
            }
        }
Esempio n. 5
0
            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();
                    }
                }
            }
Esempio n. 6
0
            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();
                    }
                }
            }
Esempio n. 7
0
 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();
         }
     }
 }