public bool Play(RenderControl render, float time)
        {
            if (mCurrentIdx >= mPoints.Count)
            {
                mLineNode.SetVisible(false);

                return(false);
            }



            mTime += time;
            if (mTime < 100) //距离上次更新不到100ms,就返回
            {
                return(true);
            }
            mTime = 0;

            Vector3 target = mPoints[mCurrentIdx];

            mLineNode.SetTransform(MakeTransform(mStart, target));
            mLineNode.RequstUpdate();

            mMotionTrail.SetPosition((uint)mCurrentIdx, target);
            mMotionTrail.RequstUpdate();

            render.RequestDraw(EnumUpdateFlags.Scene);

            ++mCurrentIdx;

            return(true);
        }
Example #2
0
        public override void Animation(RenderControl render, float time)
        {
            mTheta += 0.5f;
            mRobot.SetVariable(1, mTheta * 2);
            mRobot.SetVariable(2, mTheta * 3);
            mRobot.SetVariable(4, mTheta * 6);
            mRobot.SetVariable(6, mTheta * 2);
            mRobot.SetVariable(7, mTheta * 6);
            mRobot.SetVariable(8, mTheta * 6);
            if (mD > 30 || mD < 10)
            {
                mSign *= -1;
            }
            mD += mSign * 0.2f;

            mRobot.UpdateFrames();

            Vector3 pt = new Vector3(0);

            pt = pt * mRobot.GetFinalTransform();
            mMotionTrail.SetPosition(mCount, pt);
            ++mCount;

            render.RequestDraw(EnumUpdateFlags.Scene);
        }
        public override void Animation(RenderControl render, float time)
        {
            if (mLength > 50)
            {
                return;
            }

            mTheta += 0.02f;
            var rotation = Matrix4.makeRotationAxis(new Vector3(1, 0, 0), mTheta);

            mLength += 0.1f;

            var trf = Matrix4.makeTranslation(-mLength, 0, 0) * rotation;

            mWorkpiece.SetTransform(trf);
            mWorkpiece.RequstUpdate();

            Vector3 tailPostion = new Vector3(0, 0, 5);

            tailPostion.applyMatrix4(trf);
            mMotionTrail.SetPosition(mCount++, tailPostion);
            mMotionTrail.RequstUpdate();

            render.RequestDraw(EnumUpdateFlags.Scene);
        }
Example #4
0
        public override void Animation(RenderControl render, float time)
        {
            int selector = (int)time % 2;

            mNode.GetShape().SetFaceMaterial(selector == 1 ? mMaterial1 : mMaterial2);

            render.RequestDraw();
        }
        public override void Animation(RenderControl render, float time)
        {
            if (mMaterial == null)
            {
                return;
            }

            mMaterial.SetUniform("time", Uniform.Create(time));

            render.RequestDraw();
        }
        public override void Animation(RenderControl render, float time)
        {
            int selector = (int)time % 2;

            var faces = mNode.GetShape().GetFaces();

            foreach (var face in faces)
            {
                face.SetMaterial(selector == 1? mMaterial1 : mMaterial2);
            }

            render.RequestDraw();
        }
Example #7
0
        public override void Animation(RenderControl render, float time)
        {
            if (mAnimation.Play(time))
            {
                var     trf         = mWorkpiece.GetTransform();
                Vector3 tailPostion = new Vector3(0, 0, 5);
                tailPostion.applyMatrix4(trf);
                mMotionTrail.SetPosition(mCount++, tailPostion);
                mMotionTrail.RequstUpdate();

                render.RequestDraw(EnumUpdateFlags.Scene);
            }
        }
 public override void Animation(RenderControl render, float time)
 {
     if (step == 0)
     {
         if (mCome.Play(time))
         {
             render.RequestDraw(EnumUpdateFlags.Scene);
         }
         else
         {
             step = 1;
             if (mWorking == null)
             {
                 mWorking = new RayAnimation(mWorkingPosition);
                 mWorking.Create(render);
             }
         }
     }
     else if (step == 1)
     {
         if (!mWorking.Play(render, time))
         {
             step = 2;
         }
     }
     else if (step == 2)
     {
         if (mGo.Play(time))
         {
             render.RequestDraw(EnumUpdateFlags.Scene);
         }
         else
         {
             step = 3;
         }
     }
 }
        public override void Animation(RenderControl render, float time)
        {
            if (mRobotAnimation.Play(time))
            {
                Vector3 pt = new Vector3(0);
                pt = pt * mRobot.GetFinalTransform();
                mMotionTrail.SetPosition(mCount, pt);
                mMotionTrail.UpdateBoundingBox();
                ++mCount;

                //Blink blink effect
                BrepSceneNode.Cast(mRobot.GetLink((mCount - 1) % 7).GetVisualNode()).GetShape().SetFaceMaterial(mRobotMaterial);
                BrepSceneNode.Cast(mRobot.GetLink(mCount % 7).GetVisualNode()).GetShape().SetFaceMaterial(mMaterial);

                render.RequestDraw(EnumUpdateFlags.Scene);
            }
        }
        public override void Animation(RenderControl render, float time)
        {
            var position = mGeometry.GetAttribute(0);

            position.SetDataUsage(EnumBufferDataUsage.DYNAMIC_DRAW);
            var mPosition = new Float32Array(position.GetData());
            var count     = mPosition.GetItemCount() / 3;

            for (uint i = 0; i < count; i++)
            {
                var z = (float)(35 * Math.Sin(i / 5 + (time * 50 + i) / 7));
                mPosition.SetValue(i * 3 + 2, z);
            }
            position.RequestUpdate();
            mGeometry.RequestUpdate();

            render.RequestDraw();
        }
Example #11
0
        public override void OnSelectionChanged(RenderControl render, PickedResult result)
        {
            var item = result.GetItem();

            if (item.GetNode() == null)
            {
                return;
            }
            var ssn = BrepSceneNode.Cast(item.GetNode());

            if (ssn == null)
            {
                return;
            }

            if (item.GetShapeType() == EnumShapeFilter.Face)
            {
                var face = ssn.GetShape().GetShape().FindChild(EnumTopoShapeType.Topo_FACE, (int)item.GetShapeIndex());
                if (face != null)
                {
                    var surface = new ParametricSurface(face);
                    var pt      = item.GetPoint().GetPosition();
                    var param   = surface.ComputeClosestPoint(pt.ToPnt(), GP.Resolution(), GP.Resolution());

                    var values  = surface.D1(param.X(), param.Y());
                    var postion = Vector3.From(values.GetPoint());
                    var vecs    = values.GetVectors();

                    var dir = Vector3.From(vecs[0].Crossed(vecs[1]));
                    dir.normalize();
                    mArrow.SetLocation(postion, dir);
                    mArrow.RequstUpdate();
                    mArrow.Update();

                    render.GetContext().GetSelection().Clear();

                    render.RequestDraw(EnumUpdateFlags.Scene);
                }
            }
        }
        public override void Animation(RenderControl render, float time)
        {
            if (nCurrentHeight > 50)
            {
                //CylinderNode.SetMaterial(GrayMaterial);
                //TubeNode.SetMaterial(RedMaterial);
                nDirection = -1;
            }
            else if (nCurrentHeight < 0)
            {
                nDirection = 1;
                //CylinderNode.SetMaterial(RedMaterial);
                //TubeNode.SetMaterial(GrayMaterial);
            }

            {
                var matrixR = Matrix4.makeRotationAxis(new Vector3(0, 0, 1), time);
                var matrixT = Matrix4.makeTranslation(-50, 0, 0);
                ConeNode1.SetTransform(matrixR * matrixT);
                ConeNode1.RequstUpdate();

                nScale *= 1.01f;
                if (nScale > 5)
                {
                    nScale = 1;
                }
                ConeNode2.SetTransform(matrixT * matrixR * Matrix4.makeScale(1, nScale, nScale));
                ConeNode2.RequstUpdate();
            }


            nCurrentHeight += nStep * nDirection;
            CylinderNode.SetTransform(Matrix4.makeTranslation(0, 0, nCurrentHeight));
            CylinderNode.RequstUpdate();

            render.GetContext().UpdateWorld();
            render.RequestDraw();
        }
Example #13
0
 private void depthTestToolStripMenuItem_Click(object sender, EventArgs e)
 {
     bEnableDepathTest = !bEnableDepathTest;
     mRenderView.GetContext().GetSelection().SetDepthTest(bEnableDepathTest);
     mRenderView.RequestDraw(EnumUpdateFlags.Camera);
 }
Example #14
0
 public void UpdateView()
 {
     mRootSceneNode.RequstUpdate();
     mRenderCtrl.RequestDraw(EnumUpdateFlags.Scene);
 }
        public override void Animation(RenderControl render, float time)
        {
            if (this.State == 0)
            {
                return;
            }

            mTheta += 0.5f;
            mRobot.SetVariable(1, mTheta * 1);
            mRobot.SetVariable(2, mTheta * 2);
            mRobot.SetVariable(4, mTheta * 3);
            mRobot.SetVariable(6, mTheta * 4);
            mRobot.SetVariable(7, mTheta * 5);
            mRobot.SetVariable(8, mTheta * 6);
            if (mD > 30 || mD < 10)
            {
                mSign *= -1;
            }
            mD += mSign * 0.2f;

            mRobot.UpdateFrames();

            Vector3 pt = new Vector3(0);

            pt = pt * mRobot.GetFinalTransform();
            mMotionTrail.SetPosition(mCount, pt);
            mMotionTrail.UpdateBoundingBox();
            ++mCount;

            if (this.State == 1)
            {
                var position = pt - Vector3.UNIT_Y * 500;
                render.GetCamera().LookAt(position, pt, Vector3.UNIT_Z);
            }
            else if (this.State == 2)
            {
                var position = pt + Vector3.UNIT_Z * 500;
                render.GetCamera().LookAt(position, pt, Vector3.UNIT_Y);
            }
            else if (this.State == 3)
            {
                var camera  = render.GetCamera();
                var postion = new Vector3(0, -500, 0);

                var trf = Matrix4.makeRotationAxis(Vector3.UNIT_Z, mTheta * 3.1415926f / 180);
                postion.applyMatrix4(trf);

                camera.LookAt(postion, Vector3.Zero, Vector3.UNIT_Z);
            }

            if (this.State == 1 && mTheta > 360)
            {
                this.State = 2;
            }
            else if (this.State == 2 && mTheta > 720)
            {
                render.SetStandardView(EnumStandardView.Front);
                this.State = 3;
            }


            render.RequestDraw(EnumUpdateFlags.Scene);
        }