protected override void Draw() { base.Draw(); //camera matrix moves translates world space in relation to camera position Matrix cameraMatrix = Matrix.CreateTranslation(CameraLocation); //zoom matrix scales up everything in world space Matrix zoomMatrix = Matrix.CreateScale(ZoomLevel); //center matrix repositions camera within zoomed space Matrix centerMatrix = Matrix.CreateTranslation(new Vector3(centerPoint, 0)); Matrix transformMatrix = cameraMatrix * zoomMatrix * centerMatrix; Editor.graphics.Clear(background); Editor.spriteBatch.Begin(); DrawGrid(); Editor.spriteBatch.End(); if (ZoomLevel >= 1) { Editor.spriteBatch.Begin(samplerState: SamplerState.PointClamp, transformMatrix: transformMatrix); } else { Editor.spriteBatch.Begin(transformMatrix: transformMatrix); } PreviewSprite?.Draw(Editor.spriteBatch, SpriteSheet, Vector2.Zero, Color.White); Editor.spriteBatch.End(); }
protected override void Update(GameTime gameTime) { base.Update(gameTime); MouseControl(); if (Playing && PreviewSprite != null) { if (!PreviewSprite.CurrentAnimation.IsLooping && PreviewSprite.CurrentFrameIndex == PreviewSprite.CurrentAnimation.Frames.Count() - 1) { OnAnimationEnded(new EventArgs()); } else { PreviewSprite.Update(gameTime); OnFrameChanged(new EventArgs()); } } }