private Matrix GetUVTransform(Texture2D t, Vector2 offset, float scale, Viewport v) { return (Matrix.CreateScale(t.Width, t.Height, 1f) * Matrix.CreateScale(scale, scale, 1f) * Matrix.CreateTranslation(offset.X, offset.Y, 0f) * Camera.GetView(-scale + 1) * Matrix.CreateScale(1f / v.Width, 1f / v.Height, 1f)); }
private void DrawCamera(Camera c) { c.SetViewport(); _s.Begin(transformMatrix: c.GetView(-1)); _s.Draw(_apos, new Vector2(0, 0), Color.White); _s.Draw(_apos, new Vector2(200, 0), Color.White); _s.End(); _basicEffect.World = Matrix.Identity; _basicEffect.View = c.GetView3D(); _basicEffect.Projection = c.GetProjection3D(); _basicEffect.VertexColorEnabled = true; GraphicsDevice.SetVertexBuffer(_vertexBuffer); RasterizerState rasterizerState = new RasterizerState { CullMode = CullMode.None }; GraphicsDevice.RasterizerState = rasterizerState; foreach (EffectPass pass in _basicEffect.CurrentTechnique.Passes) { pass.Apply(); GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, 2); } _s.Begin(transformMatrix: c.View); _s.Draw(_apos, Vector2.Zero, Color.White); _s.Draw(_apos, new Vector2(200, 0), Color.White); _s.End(); _s.Begin(); _s.Draw(_apos, -c.VirtualViewport.XY + c.WorldToScreen(_mouseWorld), Color.White); _s.End(); c.ResetViewport(); }