public override void OnViewportSizeChanged()
 {
     base.OnViewportSizeChanged();
     m_CurViewOffset      = ParentViewport.GetRateLocation(false, m_BaseTrans.RateLocation);
     m_CurScaledImageSize = ParentViewport.GetRateSize(false, m_BaseTrans.RateSize);
     Scale(m_CurScaleProportion.X, m_CurScaleProportion.Y, m_fZoomScale);
 }
Exemple #2
0
        //private List<VertexPositionColor> m_TempBufferCurve = new List<VertexPositionColor>();
        public override void Update(float elapsedTime, ref float curViewportTime)
        {
            base.Update(elapsedTime, ref curViewportTime);

            m_Vectors.Clear();
            m_TempBufferVecs.Clear();
            var pr = m_BlendedTransInfo.RateLocation;

            foreach (var seg in m_Segments)
            {
                var vrs = seg.GetBuffer(seg != m_Segments[0]);
                for (int i = 0; i < vrs.Length; ++i)
                {
                    var   v = ParentViewport.GetRateLocation(true, new System.Drawing.PointF(pr.X + vrs[i].X, pr.Y + vrs[i].Y));
                    Color clr;
                    if (!IsInnerEditingMode || i < 6)
                    {
                        clr = new Color(BlendColor.R, BlendColor.G, BlendColor.B, BlendColor.A);
                    }
                    else
                    {
                        clr = Color.Red;
                    }
                    Vector2 uv;
                    if (i < 6)
                    {
                        uv = new Vector2(UVIndices[i, 0], UVIndices[i, 1]);
                    }
                    else if (IsInnerEditingMode)
                    {
                        uv = new Vector2(0.5F, 0.5F);
                    }
                    else
                    {
                        uv = new Vector2(ProjectDoc.Instance.Option.WaterbagJointColorUV.X, ProjectDoc.Instance.Option.WaterbagJointColorUV.Y);
                    }
                    var vec = new VertexPositionColorTexture(new Vector3(v.X, v.Y, 0), clr, uv);
                    m_Vectors.Add(vec);
                }
                m_TempBufferVecs.Add(vrs);
            }

            //m_TempBufferCurve.Clear();
            //int curveSegs = 100;
            //for (int i = 0; i < curveSegs; ++i)
            //{
            //    if (m_TempBufferCurve.Count > 1)
            //        m_TempBufferCurve.Add(m_TempBufferCurve[m_TempBufferCurve.Count - 1]);
            //    var pos = m_Curve.GetPosition(i / (float)curveSegs);
            //    var posAbs = ParentViewport.GetRateLocation(true, new System.Drawing.PointF(pr.X + pos.X, pr.Y + pos.Y));
            //    m_TempBufferCurve.Add(new VertexPositionColor(new Vector3(posAbs.X, posAbs.Y, 0), Color.OrangeRed));
            //}
        }
        public override void LoadFromXmlElement(System.Xml.XmlElement node)
        {
            base.LoadFromXmlElement(node);
            float fZoomScale;

            if (!float.TryParse(node.GetAttribute("ZoomScale"), out fZoomScale))
            {
                fZoomScale = 1;
            }
            m_CurViewOffset      = ParentViewport.GetRateLocation(false, m_BaseTrans.RateLocation);
            m_CurScaledImageSize = ParentViewport.GetRateSize(false, m_BaseTrans.RateSize);
            CurZoomScale         = fZoomScale;
        }
Exemple #4
0
        public override void Update(float elapsedTime, ref float curViewportTime)
        {
            base.Update(elapsedTime, ref curViewportTime);
            elapsedTime *= SpeedRate;
            Color clr  = new Color(BlendColor.R, BlendColor.G, BlendColor.B, (byte)(m_BlendedTransInfo.Alpha * 255.0F));
            var   pos  = ParentViewport.GetRateLocation(IsBasedOnBackImageElement, m_BlendedTransInfo.RateLocation);
            var   size = ParentViewport.GetRateSize(IsBasedOnBackImageElement, m_BlendedTransInfo.RateSize);

            pos.X -= size.Width * Barycenter.X;
            pos.Y -= size.Height * Barycenter.Y;
            m_Vectors[0].Color             = clr;
            m_Vectors[0].Position          = new Vector3(pos.X, pos.Y, 0);
            m_Vectors[1].Color             = clr;
            m_Vectors[1].Position          = new Vector3(pos.X + size.Width, pos.Y, 0);
            m_Vectors[2].Color             = clr;
            m_Vectors[2].Position          = new Vector3(pos.X + size.Width, pos.Y + size.Height, 0);
            m_Vectors[3].Color             = clr;
            m_Vectors[3].Position          = new Vector3(pos.X, pos.Y + size.Height, 0);
            m_Vectors[0].TextureCoordinate = new Vector2(0, 0);
            m_Vectors[1].TextureCoordinate = new Vector2(1, 0);
            m_Vectors[2].TextureCoordinate = new Vector2(1, 1);
            m_Vectors[3].TextureCoordinate = new Vector2(0, 1);
            UpdateTextureCoordinates();
            if (m_BlendedTransInfo.Angle != 0)
            {
                float angle = m_BlendedTransInfo.Angle / 180.0F * (float)Math.PI;
                for (int i = 0; i < 4; ++i)
                {
                    var bbl = BlendedBaryLocation;
                    var cen = new Vector3(bbl.X, bbl.Y, 0);
                    var mat = Matrix.CreateTranslation(cen * -1)
                              * Matrix.CreateRotationZ(angle)
                              * Matrix.CreateTranslation(cen);
                    m_Vectors[i].Position = Vector3.Transform(m_Vectors[i].Position, mat);
                }
            }

            if (Resource != null)
            {
                if (DsVideo == null)
                {
                    DsVideo = new DSVideoPlayer(Resource.FullFilePath, ProjectDoc.Instance.HostGame.GraphicsDevice);
                }
                if (DsVideo.CurrentState == VideoState.Stopped)
                {
                    DsVideo.Play();
                }
                DsVideo.Update();
            }
        }
Exemple #5
0
 public override void Update(float elapsedTime, ref float curViewportTime)
 {
     base.Update(elapsedTime, ref curViewportTime);
     for (int i = 0; i < 4; ++i)
     {
         var pr     = m_BlendedTransInfo.RateLocation;
         var offset = ParentViewport.GetRateLocation(IsBasedOnBackImageElement,
                                                     new System.Drawing.PointF(pr.X + m_CornerVectorR[i].X, pr.Y + m_CornerVectorR[i].Y));
         m_Vectors[i].Position = new Vector3(offset.X, offset.Y, 0);
         m_Vectors[i].Color    = Color.White;
         var p = ParentViewport.GetLocationRate(true, new System.Drawing.PointF(m_Vectors[i].Position.X, m_Vectors[i].Position.Y));
         m_Vectors[i].TextureCoordinate = new Vector2(p.X, p.Y);
         m_LnVectors[i].Position        = m_Vectors[i].Position;
         m_LnVectors[i].Color           = Color.Yellow;
     }
     m_LnVectors[4].Position = m_Vectors[0].Position;
     m_LnVectors[4].Color    = Color.Yellow;
 }
        public override void Update(float elapsedTime, ref float curViewportTime)
        {
            base.Update(elapsedTime, ref curViewportTime);
            elapsedTime *= SpeedRate;
            Color clr  = new Color(BlendColor.R, BlendColor.G, BlendColor.B, (byte)(m_BlendedTransInfo.Alpha * 255.0F));
            var   pos  = ParentViewport.GetRateLocation(IsBasedOnBackImageElement, m_BlendedTransInfo.RateLocation);
            var   size = ParentViewport.GetRateSize(IsBasedOnBackImageElement, m_BlendedTransInfo.RateSize);

            pos.X -= size.Width * Barycenter.X;
            pos.Y -= size.Height * Barycenter.Y;
            m_Vectors[0].Color             = clr;
            m_Vectors[0].Position          = new Vector3(pos.X, pos.Y, 0);
            m_Vectors[1].Color             = clr;
            m_Vectors[1].Position          = new Vector3(pos.X + size.Width, pos.Y, 0);
            m_Vectors[2].Color             = clr;
            m_Vectors[2].Position          = new Vector3(pos.X + size.Width, pos.Y + size.Height, 0);
            m_Vectors[3].Color             = clr;
            m_Vectors[3].Position          = new Vector3(pos.X, pos.Y + size.Height, 0);
            m_Vectors[0].TextureCoordinate = new Vector2(0, 0);
            m_Vectors[1].TextureCoordinate = new Vector2(1, 0);
            m_Vectors[2].TextureCoordinate = new Vector2(1, 1);
            m_Vectors[3].TextureCoordinate = new Vector2(0, 1);
            UpdateTextureCoordinates();
            if (m_BlendedTransInfo.Angle != 0)
            {
                float angle = m_BlendedTransInfo.Angle / 180.0F * (float)Math.PI;
                for (int i = 0; i < 4; ++i)
                {
                    var bbl = BlendedBaryLocation;
                    var cen = new Vector3(bbl.X, bbl.Y, 0);
                    var mat = Matrix.CreateTranslation(cen * -1)
                              * Matrix.CreateRotationZ(angle)
                              * Matrix.CreateTranslation(cen);
                    m_Vectors[i].Position = Vector3.Transform(m_Vectors[i].Position, mat);
                }
            }
        }
Exemple #7
0
        private void BuildRibbon()
        {
            m_Vectors.Clear();
            List <Vector3> nodes = new List <Vector3>();
            int            count = (int)(m_Curve.MaxDistance / DetailPrecision);

            for (int i = 0; i <= count; ++i)
            {
                nodes.Add(m_Curve.GetPosition(i / (float)count));
            }
            if (nodes.Count <= 1)
            {
                return;
            }
            List <Vector3> poses = new List <Vector3>();
            float          rw    = ParentViewport.GetLengthRate(true, Width);

            for (int i = 0; i < nodes.Count; ++i)
            {
                Vector3 p1 = nodes[i];
                Vector3 p2;
                if (i == nodes.Count - 1)
                {
                    p2 = nodes[i - 1];
                }
                else
                {
                    p2 = nodes[i + 1];
                }
                Vector3 dir1 = p2 - p1;
                dir1.Normalize();
                Vector3 sp1, sp2;
                if (i == 0)
                {
                    sp1 = Vector3.Cross(dir1, Vector3.UnitZ) * rw;
                    sp2 = sp1 * -1;
                }
                else if (i == nodes.Count - 1)
                {
                    sp2 = Vector3.Cross(dir1, Vector3.UnitZ) * rw;
                    sp1 = sp2 * -1;
                }
                else
                {
                    Vector3 p0   = nodes[i - 1];
                    Vector3 dir0 = p1 - p0;
                    dir0.Normalize();
                    sp1 = dir1 - dir0;
                    if (sp1.Length() == 0)
                    {
                        sp1 = Vector3.Cross(dir0, Vector3.UnitZ) * rw;
                    }
                    else
                    {
                        sp1.Normalize();
                        sp1 *= rw;
                    }
                    sp2 = sp1 * -1;
                    if (Vector3.Cross(dir0, sp1).Z > 0)
                    {
                        var sp = sp1;
                        sp1 = sp2;
                        sp2 = sp;
                    }
                }
                poses.Add(p1 + sp1);
                poses.Add(p1 + sp2);
            }
            for (int i = 0; i < poses.Count - 2; i += 2)
            {
                for (int j = 0; j < sm_Indices.Length; ++j)
                {
                    var pos    = poses[i + sm_Indices[j]];
                    var posAbs = ParentViewport.GetRateLocation(true, new System.Drawing.PointF(pos.X, pos.Y));
                    m_Vectors.Add(new VertexPositionColor(new Vector3(posAbs.X, posAbs.Y, 0), FillColor));
                }
            }
        }