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); }
//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; }
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(); } }
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); } } }
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)); } } }