// === === === === === === === === === === public Vector2 GetScreenPosition() { Vector2 ownPosition; if (Parent != null) { ownPosition = Parent.GetChildPosition(this); } else { ownPosition = new Vector2(0); if (HAlignment == HAlignment.Right) { ownPosition.X = (engine.GetSize() - GetSize()).X; } else if (HAlignment == HAlignment.Center) { ownPosition.X = (engine.GetSize() / 2f - GetSize() / 2f).X; } if (VAlignment == VAlignment.Bottom) { ownPosition.Y = (engine.GetSize() - GetSize()).Y; } else if (VAlignment == VAlignment.Center) { ownPosition.Y = (engine.GetSize() / 2f - GetSize() / 2f).Y; } } return(ownPosition); }
//position ON SCREEN private void ZoomAt(Vector2 position, float amount) { amount *= -1; if ( position.X < 0 || position.X > engine.GetSize().X || position.Y < 0 || position.Y > engine.GetSize().Y ) { throw new ArgumentException("Bad zoom point."); } Vector2 deltaSize = Camera.Size - Camera.Size + new Vector2(amount); deltaSize.Y = deltaSize.X / engine.GetAspectRatio(); Vector2 minSize = engine.GetSize() / 20f; if (Camera.Size.X + deltaSize.X < minSize.X) { deltaSize.X = minSize.X - Camera.Size.X; } if (Camera.Size.Y + deltaSize.Y < minSize.Y) { deltaSize.Y = minSize.Y - Camera.Size.Y; } Vector2 bias = position / engine.GetSize(); Camera.Position -= deltaSize * bias; Camera.Size += deltaSize; }
private void DrawBackground() { Vector2 position = -Engine.GetTextureSize("background") / 2f + Engine.GetSize() / 2f; position -= Camera.Camera.Position / 10f; Engine.Draw( Engine.GetTexture("background"), new fbRectangle(position, new Vector2(-1)), new Color(0.3f, 0.3f, 0.3f), 1000 ); }
public fbCamera(fbEngine engine) { this.engine = engine; Camera = new fbRectangle( Vector2.Zero, engine.GetSize() ); new InputSubscriber(this) .Subscribe("+camera-up") .Subscribe("+camera-down") .Subscribe("+camera-left") .Subscribe("+camera-right") .Register(); }