1
0
Fork 0
mirror of https://github.com/Ellpeck/MLEM.git synced 2024-06-06 14:53:37 +02: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) {
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 (!this.scrollOverflow) {
base.Draw(time, batch, alpha, blendState, samplerState, matrix);

View file

@ -71,15 +71,23 @@ namespace MLEM.Cameras {
}
public void ConstrainWorldBounds(Vector2 min, Vector2 max) {
if (this.Position.X < min.X)
this.Position.X = min.X;
if (this.Position.Y < min.Y)
this.Position.Y = min.Y;
if (this.Position.X < min.X && this.Max.X > max.X) {
this.LookingPosition = new Vector2((max.X - min.X) / 2, this.LookingPosition.Y);
} else {
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)
this.Max = new Vector2(max.X, this.Max.Y);
if (this.Max.Y > max.Y)
this.Max = new Vector2(this.Max.X, max.Y);
if (this.Position.Y < min.Y && this.Max.Y > max.Y) {
this.LookingPosition = new Vector2(this.LookingPosition.X, (max.Y - min.Y) / 2);
} else {
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) {