1
0
Fork 0
mirror of https://github.com/Ellpeck/MLEM.git synced 2024-11-26 14:38:34 +01:00

made cameras snap right in small rooms and made panels not require a texture

This commit is contained in:
Ellpeck 2019-12-06 20:54:30 +01:00
parent 2bd62ee09d
commit 548e603900
2 changed files with 18 additions and 9 deletions

View file

@ -130,7 +130,8 @@ namespace MLEM.Ui.Elements {
} }
public override void Draw(GameTime time, SpriteBatch batch, float alpha, BlendState blendState, SamplerState samplerState, Matrix matrix) { public override void Draw(GameTime time, SpriteBatch batch, float alpha, BlendState blendState, SamplerState samplerState, Matrix matrix) {
batch.Draw(this.Texture, this.DisplayArea, Color.White * alpha, this.Scale); if (this.Texture.Value != null)
batch.Draw(this.Texture, this.DisplayArea, Color.White * alpha, this.Scale);
// if we handle overflow, draw using the render target in DrawUnbound // if we handle overflow, draw using the render target in DrawUnbound
if (!this.scrollOverflow) { if (!this.scrollOverflow) {
base.Draw(time, batch, alpha, blendState, samplerState, matrix); base.Draw(time, batch, alpha, blendState, samplerState, matrix);

View file

@ -71,15 +71,23 @@ namespace MLEM.Cameras {
} }
public void ConstrainWorldBounds(Vector2 min, Vector2 max) { public void ConstrainWorldBounds(Vector2 min, Vector2 max) {
if (this.Position.X < min.X) if (this.Position.X < min.X && this.Max.X > max.X) {
this.Position.X = min.X; this.LookingPosition = new Vector2((max.X - min.X) / 2, this.LookingPosition.Y);
if (this.Position.Y < min.Y) } else {
this.Position.Y = min.Y; if (this.Position.X < min.X)
this.Position.X = min.X;
if (this.Max.X > max.X)
this.Max = new Vector2(max.X, this.Max.Y);
}
if (this.Max.X > max.X) if (this.Position.Y < min.Y && this.Max.Y > max.Y) {
this.Max = new Vector2(max.X, this.Max.Y); this.LookingPosition = new Vector2(this.LookingPosition.X, (max.Y - min.Y) / 2);
if (this.Max.Y > max.Y) } else {
this.Max = new Vector2(this.Max.X, max.Y); if (this.Position.Y < min.Y)
this.Position.Y = min.Y;
if (this.Max.Y > max.Y)
this.Max = new Vector2(this.Max.X, max.Y);
}
} }
public void Zoom(float delta, Vector2? zoomCenter = null) { public void Zoom(float delta, Vector2? zoomCenter = null) {