working shader
This commit is contained in:
parent
07685fcd9c
commit
be8e56cf27
3 changed files with 32 additions and 202 deletions
|
@ -7,60 +7,46 @@
|
||||||
#define PS_SHADERMODEL ps_4_0_level_9_1
|
#define PS_SHADERMODEL ps_4_0_level_9_1
|
||||||
#endif
|
#endif
|
||||||
float2 TexelSize; // should be (1f/textureSize.X, 1f/textureSize.Y)
|
float2 TexelSize; // should be (1f/textureSize.X, 1f/textureSize.Y)
|
||||||
int shadow;
|
|
||||||
int BorderSize;
|
int BorderSize;
|
||||||
float R;
|
float R;
|
||||||
float G;
|
float G;
|
||||||
float B;
|
float B;
|
||||||
|
|
||||||
Texture2D SpriteTexture;
|
|
||||||
sampler2D SpriteTextureSampler = sampler_state
|
sampler2D SpriteTextureSampler = sampler_state
|
||||||
{
|
{
|
||||||
Texture = <SpriteTexture>;
|
Texture = <SpriteTexture>;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct VertexShaderOutput
|
struct VertexShaderOutput
|
||||||
{
|
{
|
||||||
float4 Color : COLOR0;
|
float4 Color : COLOR0;
|
||||||
float2 TextureCoordinates : TEXCOORD0;
|
float2 TextureCoordinates : TEXCOORD0;
|
||||||
};
|
};
|
||||||
|
|
||||||
sampler ColorMapSampler = sampler_state
|
|
||||||
{
|
|
||||||
Texture = <ColorMap>;
|
|
||||||
MinFilter = Linear;
|
|
||||||
MagFilter = Linear;
|
|
||||||
MipFilter = Linear;
|
|
||||||
AddressU = Clamp;
|
|
||||||
AddressV = Clamp;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
float4 MainPS(VertexShaderOutput input) : COLOR
|
float4 MainPS(VertexShaderOutput input) : COLOR
|
||||||
{
|
{
|
||||||
float4 color = tex2D(ColorMapSampler, input.TextureCoordinates);
|
float4 color = tex2D(SpriteTextureSampler, input.TextureCoordinates);
|
||||||
float2 offsetX = float2(TexelSize.x, 0);
|
|
||||||
float2 offsetY = { 0, TexelSize.y };
|
if (color.a > 0)
|
||||||
|
{
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
float2 offsetd1 = { TexelSize.x, TexelSize.y };
|
float2 offsetX = float2(TexelSize.x, 0);
|
||||||
float2 offsetd2 = { -TexelSize.x, -TexelSize.y };
|
float2 offsetY = float2( 0, TexelSize.y );
|
||||||
float2 offsetd3 = { TexelSize.x, -TexelSize.y };
|
|
||||||
float2 offsetd4 = { -TexelSize.x, TexelSize.y };
|
|
||||||
|
|
||||||
if (color.a == 0)
|
for (int i = 1; i < 10; i++)
|
||||||
{
|
|
||||||
for (int i = 1; i < 16; i++)
|
|
||||||
{
|
{
|
||||||
if (i<=BorderSize)
|
if (i<=BorderSize)
|
||||||
{
|
{
|
||||||
float4 c1 = tex2D(ColorMapSampler, input.TextureCoordinates + offsetX*i);
|
float4 c1 = tex2D(SpriteTextureSampler, input.TextureCoordinates + offsetX*i);
|
||||||
float4 c2 = tex2D(ColorMapSampler, input.TextureCoordinates - offsetX*i);
|
float4 c2 = tex2D(SpriteTextureSampler, input.TextureCoordinates - offsetX*i);
|
||||||
float4 c3 = tex2D(ColorMapSampler, input.TextureCoordinates + offsetY*i);
|
float4 c3 = tex2D(SpriteTextureSampler, input.TextureCoordinates + offsetY*i);
|
||||||
float4 c4 = tex2D(ColorMapSampler, input.TextureCoordinates - offsetY*i);
|
float4 c4 = tex2D(SpriteTextureSampler, input.TextureCoordinates - offsetY*i);
|
||||||
|
float4 d1 = tex2D(SpriteTextureSampler, input.TextureCoordinates - (offsetX+offsetY)*i);
|
||||||
float4 d1 = tex2D(ColorMapSampler, input.TextureCoordinates - offsetd1*i);
|
float4 d2 = tex2D(SpriteTextureSampler, input.TextureCoordinates + (offsetX+offsetY)*i);
|
||||||
float4 d2 = tex2D(ColorMapSampler, input.TextureCoordinates - offsetd2*i);
|
float4 d3 = tex2D(SpriteTextureSampler, input.TextureCoordinates - (offsetX-offsetY)*i);
|
||||||
float4 d3 = tex2D(ColorMapSampler, input.TextureCoordinates - offsetd3*i);
|
float4 d4 = tex2D(SpriteTextureSampler, input.TextureCoordinates - (-offsetX+offsetY)*i);
|
||||||
float4 d4 = tex2D(ColorMapSampler, input.TextureCoordinates - offsetd4*i);
|
|
||||||
|
|
||||||
if (color.a != c1.a || color.a != c2.a|| color.a != c3.a|| color.a != c4.a
|
if (color.a != c1.a || color.a != c2.a|| color.a != c3.a|| color.a != c4.a
|
||||||
|| color.a != d1.a
|
|| color.a != d1.a
|
||||||
|
@ -76,9 +62,6 @@ if (color.a == 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return color;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,8 +11,6 @@ namespace Sledgemapper
|
||||||
public Color GridColor { get; set; }
|
public Color GridColor { get; set; }
|
||||||
public Color NoteColor { get; set; }
|
public Color NoteColor { get; set; }
|
||||||
public string MachineName { get; set; }
|
public string MachineName { get; set; }
|
||||||
public int Thickness { get; internal set; }
|
|
||||||
public int Threshold { get; internal set; }
|
|
||||||
|
|
||||||
public Settings()
|
public Settings()
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,7 +6,6 @@ using Microsoft.Xna.Framework.Graphics;
|
||||||
using Microsoft.Xna.Framework.Input;
|
using Microsoft.Xna.Framework.Input;
|
||||||
using MonoGame.Extended;
|
using MonoGame.Extended;
|
||||||
using Myra;
|
using Myra;
|
||||||
using Myra.Graphics2D;
|
|
||||||
using Myra.Graphics2D.Brushes;
|
using Myra.Graphics2D.Brushes;
|
||||||
using Myra.Graphics2D.TextureAtlases;
|
using Myra.Graphics2D.TextureAtlases;
|
||||||
using Myra.Graphics2D.UI;
|
using Myra.Graphics2D.UI;
|
||||||
|
@ -79,7 +78,6 @@ namespace Sledgemapper
|
||||||
_mainWidget.lblConnectionStatus.Text = "Reconnecting";
|
_mainWidget.lblConnectionStatus.Text = "Reconnecting";
|
||||||
await Task.Yield();
|
await Task.Yield();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task OnHubReconnected(string arg)
|
private async Task OnHubReconnected(string arg)
|
||||||
{
|
{
|
||||||
ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub reconnected", Type = "SignalR Client Events", Source = _settings.MachineName });
|
ExceptionlessClient.Default.SubmitEvent(new Event { Message = "Hub reconnected", Type = "SignalR Client Events", Source = _settings.MachineName });
|
||||||
|
@ -103,8 +101,8 @@ namespace Sledgemapper
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
// rendertarget = new RenderTarget2D(GraphicsDevice, _graphics.PreferredBackBufferWidth, _graphics.PreferredBackBufferHeight, false, SurfaceFormat.Color, DepthFormat.Depth24Stencil8, 0, RenderTargetUsage.PreserveContents);
|
rendertarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, true, SurfaceFormat.Alpha8, DepthFormat.Depth16, 0, RenderTargetUsage.DiscardContents);
|
||||||
rendertarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height);
|
//rendertarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
@ -137,12 +135,8 @@ namespace Sledgemapper
|
||||||
{
|
{
|
||||||
_spriteBatch = new SpriteBatch(GraphicsDevice);
|
_spriteBatch = new SpriteBatch(GraphicsDevice);
|
||||||
outlineShader = Content.Load<Effect>("shaders/OutlineShader");
|
outlineShader = Content.Load<Effect>("shaders/OutlineShader");
|
||||||
// outlineShader.Parameters["Thickness"].SetValue((float)_settings.Thickness);
|
|
||||||
// outlineShader.Parameters["shadow"].SetValue(1);
|
|
||||||
// outlineShader.Parameters["ScreenSize"].SetValue(
|
|
||||||
// new Vector2(GraphicsDevice.Viewport.Bounds.Width, GraphicsDevice.Viewport.Bounds.Height));
|
|
||||||
MyraEnvironment.Game = this;
|
MyraEnvironment.Game = this;
|
||||||
rendertarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height);
|
rendertarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, true, SurfaceFormat.Alpha8, DepthFormat.Depth16, 0, RenderTargetUsage.DiscardContents);
|
||||||
|
|
||||||
_mainWidget = new MainWidget();
|
_mainWidget = new MainWidget();
|
||||||
|
|
||||||
|
@ -167,7 +161,6 @@ namespace Sledgemapper
|
||||||
_mainWidget.BtnToolbarWall.Click += OnBtnToolbarWallClicked;
|
_mainWidget.BtnToolbarWall.Click += OnBtnToolbarWallClicked;
|
||||||
_mainWidget.BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked;
|
_mainWidget.BtnToolbarDelete.Click += OnBtnToolbarDeleteClicked;
|
||||||
|
|
||||||
AddItemToToolGrid(_mainWidget.GridTiles, OnTileButtonClicked, "tiles");
|
|
||||||
AddItemToToolGrid(_mainWidget.GridWalls, OnWallButtonClicked, "walls");
|
AddItemToToolGrid(_mainWidget.GridWalls, OnWallButtonClicked, "walls");
|
||||||
AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, "overlays");
|
AddItemToToolGrid(_mainWidget.GridOverlays, OnOverlayButtonClicked, "overlays");
|
||||||
|
|
||||||
|
@ -191,7 +184,6 @@ namespace Sledgemapper
|
||||||
private void OnBtnToolbarTileClicked(object sender, EventArgs e)
|
private void OnBtnToolbarTileClicked(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
_state.InsertMode = InsertMode.NewTile;
|
_state.InsertMode = InsertMode.NewTile;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnBtnToolbarRoomClicked(object sender, EventArgs e)
|
private void OnBtnToolbarRoomClicked(object sender, EventArgs e)
|
||||||
|
@ -279,7 +271,6 @@ namespace Sledgemapper
|
||||||
|
|
||||||
if (IsActive && GraphicsDevice.Viewport.Bounds.Contains(Mouse.GetState().Position) && !_desktop.IsMouseOverGUI && !_desktop.HasModalWidget)
|
if (IsActive && GraphicsDevice.Viewport.Bounds.Contains(Mouse.GetState().Position) && !_desktop.IsMouseOverGUI && !_desktop.HasModalWidget)
|
||||||
{
|
{
|
||||||
|
|
||||||
var mouseState = Mouse.GetState();
|
var mouseState = Mouse.GetState();
|
||||||
|
|
||||||
var screenPosition = new Point(mouseState.Position.X - (int)_viewportCenter.X, mouseState.Position.Y - (int)_viewportCenter.Y);
|
var screenPosition = new Point(mouseState.Position.X - (int)_viewportCenter.X, mouseState.Position.Y - (int)_viewportCenter.Y);
|
||||||
|
@ -311,21 +302,6 @@ namespace Sledgemapper
|
||||||
_state.SelectClosestSnapPoint(screenPosition);
|
_state.SelectClosestSnapPoint(screenPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (newState.IsKeyDown(Keys.LeftControl) && newState.IsKeyDown(Keys.C) && !oldState.IsKeyDown(Keys.C))
|
|
||||||
// {
|
|
||||||
// CenterOnSelectedTile();
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (newState.IsKeyUp(Keys.Up) && (newState.IsKeyUp(Keys.Up) != oldState.IsKeyUp(Keys.Up)))
|
|
||||||
{
|
|
||||||
_settings.Thickness++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (newState.IsKeyUp(Keys.Down) && (newState.IsKeyUp(Keys.Down) != oldState.IsKeyUp(Keys.Down)))
|
|
||||||
{
|
|
||||||
_settings.Threshold++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!newState.IsKeyDown(Keys.LeftControl) && mouseState.LeftButton == ButtonState.Pressed && mouseState.LeftButton == oldMouseState.LeftButton)
|
if (!newState.IsKeyDown(Keys.LeftControl) && mouseState.LeftButton == ButtonState.Pressed && mouseState.LeftButton == oldMouseState.LeftButton)
|
||||||
{
|
{
|
||||||
_viewportCenter = new Vector3(_viewportCenter.X + mouseState.Position.X - oldMouseState.Position.X, _viewportCenter.Y + mouseState.Position.Y - oldMouseState.Position.Y, 0);
|
_viewportCenter = new Vector3(_viewportCenter.X + mouseState.Position.X - oldMouseState.Position.X, _viewportCenter.Y + mouseState.Position.Y - oldMouseState.Position.Y, 0);
|
||||||
|
@ -372,7 +348,6 @@ namespace Sledgemapper
|
||||||
viewNoteButton.Click += OnContextMenuViewNoteClick;
|
viewNoteButton.Click += OnContextMenuViewNoteClick;
|
||||||
deleteNoteButton.Click += OnContextMenuDeleteNoteClick;
|
deleteNoteButton.Click += OnContextMenuDeleteNoteClick;
|
||||||
|
|
||||||
|
|
||||||
popup.AddChild(viewNoteButton);
|
popup.AddChild(viewNoteButton);
|
||||||
popup.AddChild(deleteNoteButton);
|
popup.AddChild(deleteNoteButton);
|
||||||
}
|
}
|
||||||
|
@ -393,7 +368,6 @@ namespace Sledgemapper
|
||||||
|
|
||||||
_sessionData.NewTile(_state.SelectedTile, _state.CurrentTileId);
|
_sessionData.NewTile(_state.SelectedTile, _state.CurrentTileId);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case InsertMode.Wall:
|
case InsertMode.Wall:
|
||||||
_sessionData.NewWall(_state.SelectedWall, _state.CurrentWallId);
|
_sessionData.NewWall(_state.SelectedWall, _state.CurrentWallId);
|
||||||
|
|
||||||
|
@ -425,10 +399,7 @@ namespace Sledgemapper
|
||||||
_state.LineStart = null;
|
_state.LineStart = null;
|
||||||
_state.LineWidth = 1;
|
_state.LineWidth = 1;
|
||||||
_sessionData.NewLine(line);
|
_sessionData.NewLine(line);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_state.InsertMode == InsertMode.NewRoom && newState.IsKeyDown(Keys.LeftControl)
|
if (_state.InsertMode == InsertMode.NewRoom && newState.IsKeyDown(Keys.LeftControl)
|
||||||
|
@ -599,22 +570,17 @@ namespace Sledgemapper
|
||||||
var visibleTilesX = GraphicsDevice.Viewport.Width / _state.TileSize + 1;
|
var visibleTilesX = GraphicsDevice.Viewport.Width / _state.TileSize + 1;
|
||||||
var visibleTilesY = GraphicsDevice.Viewport.Height / _state.TileSize + 1;
|
var visibleTilesY = GraphicsDevice.Viewport.Height / _state.TileSize + 1;
|
||||||
|
|
||||||
|
|
||||||
GraphicsDevice.SetRenderTarget(rendertarget);
|
GraphicsDevice.SetRenderTarget(rendertarget);
|
||||||
GraphicsDevice.Clear(Color.Transparent);
|
|
||||||
|
|
||||||
_spriteBatch.Begin(
|
_spriteBatch.Begin(depthStencilState: DepthStencilState.None,
|
||||||
transformMatrix: Matrix.CreateTranslation(_viewportCenter),
|
transformMatrix: Matrix.CreateTranslation(_viewportCenter),
|
||||||
blendState: BlendState.Opaque,
|
blendState: BlendState.Opaque,
|
||||||
sortMode: SpriteSortMode.Immediate);
|
|
||||||
|
|
||||||
// DrawTiles();
|
sortMode: SpriteSortMode.Deferred);
|
||||||
|
|
||||||
var items = new List<BaseMapEntity>();
|
GraphicsDevice.Clear(Color.Transparent);
|
||||||
items.AddRange(_sessionData.Lines.Values);
|
|
||||||
items.AddRange(_sessionData.Rooms.Values);
|
|
||||||
|
|
||||||
foreach (var item in items.OrderBy(t => t.Timestamp))
|
foreach (var item in _sessionData.Lines.Values.Union<BaseMapEntity>(_sessionData.Rooms.Values).OrderBy(t => t.Timestamp))
|
||||||
{
|
{
|
||||||
switch (item)
|
switch (item)
|
||||||
{
|
{
|
||||||
|
@ -640,7 +606,6 @@ namespace Sledgemapper
|
||||||
_spriteBatch.End();
|
_spriteBatch.End();
|
||||||
|
|
||||||
GraphicsDevice.SetRenderTarget(null);
|
GraphicsDevice.SetRenderTarget(null);
|
||||||
GraphicsDevice.Clear(_settings.BackgroundColor);
|
|
||||||
|
|
||||||
Vector2 texelSize = new Vector2((float)(1 / (double)rendertarget.Width), (float)(1 / (double)rendertarget.Height));
|
Vector2 texelSize = new Vector2((float)(1 / (double)rendertarget.Width), (float)(1 / (double)rendertarget.Height));
|
||||||
outlineShader.Parameters["TexelSize"].SetValue(texelSize);
|
outlineShader.Parameters["TexelSize"].SetValue(texelSize);
|
||||||
|
@ -651,9 +616,10 @@ namespace Sledgemapper
|
||||||
outlineShader.Parameters["B"].SetValue(_settings.OverlayTintColor.B / 255.0f);
|
outlineShader.Parameters["B"].SetValue(_settings.OverlayTintColor.B / 255.0f);
|
||||||
|
|
||||||
_spriteBatch.Begin(
|
_spriteBatch.Begin(
|
||||||
effect: outlineShader,
|
effect: outlineShader,
|
||||||
blendState: BlendState.AlphaBlend,
|
blendState: BlendState.AlphaBlend,
|
||||||
sortMode: SpriteSortMode.Immediate);
|
sortMode: SpriteSortMode.Deferred);
|
||||||
|
GraphicsDevice.Clear(_settings.BackgroundColor);
|
||||||
_spriteBatch.Draw(rendertarget, Vector2.Zero, null, Color.White);
|
_spriteBatch.Draw(rendertarget, Vector2.Zero, null, Color.White);
|
||||||
_spriteBatch.End();
|
_spriteBatch.End();
|
||||||
|
|
||||||
|
@ -661,8 +627,8 @@ namespace Sledgemapper
|
||||||
transformMatrix: Matrix.CreateTranslation(_viewportCenter),
|
transformMatrix: Matrix.CreateTranslation(_viewportCenter),
|
||||||
sortMode: SpriteSortMode.Deferred);
|
sortMode: SpriteSortMode.Deferred);
|
||||||
|
|
||||||
//DrawOverlays();
|
DrawOverlays();
|
||||||
//DrawNotes();
|
DrawNotes();
|
||||||
DrawGrid(visibleTilesX, visibleTilesY);
|
DrawGrid(visibleTilesX, visibleTilesY);
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(_sessionData.SessionName))
|
if (string.IsNullOrWhiteSpace(_sessionData.SessionName))
|
||||||
|
@ -820,11 +786,9 @@ namespace Sledgemapper
|
||||||
if (l > 0)
|
if (l > 0)
|
||||||
{
|
{
|
||||||
var whiteRectangle = new Texture2D(GraphicsDevice, (int)l, (int)(_state.TileSize * _state.LineWidth));
|
var whiteRectangle = new Texture2D(GraphicsDevice, (int)l, (int)(_state.TileSize * _state.LineWidth));
|
||||||
// whiteRectangle.SetData(new[] { new Color(Color.Red, 80) });
|
|
||||||
|
|
||||||
whiteRectangle.SetData(Enumerable.Range(0, (int)l * ((int)(_state.TileSize * _state.LineWidth))).Select(i => new Color(Color.Red, 80)).ToArray());
|
whiteRectangle.SetData(Enumerable.Range(0, (int)l * ((int)(_state.TileSize * _state.LineWidth))).Select(i => new Color(Color.Red, 80)).ToArray());
|
||||||
|
|
||||||
|
|
||||||
_spriteBatch.Draw(whiteRectangle, new Rectangle(posX, posY, (int)l, (int)(_state.TileSize * _state.LineWidth)), null, Color.White, angleRad, new Vector2(0, 0), SpriteEffects.None, 1);
|
_spriteBatch.Draw(whiteRectangle, new Rectangle(posX, posY, (int)l, (int)(_state.TileSize * _state.LineWidth)), null, Color.White, angleRad, new Vector2(0, 0), SpriteEffects.None, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -850,17 +814,12 @@ namespace Sledgemapper
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
_spriteBatch.DrawCircle(snapPoint, _state.TileSize / 5f, 100, Color.Red, 2);
|
_spriteBatch.DrawCircle(snapPoint, _state.TileSize / 6f, 50, Color.Red, 2);
|
||||||
|
|
||||||
|
|
||||||
//line preview
|
//line preview
|
||||||
if (_state.LineStart != null)
|
if (_state.LineStart != null)
|
||||||
{
|
{
|
||||||
|
|
||||||
// border pass
|
|
||||||
|
|
||||||
// var content = Content.Load<Texture2D>($"tiles/{tile.ID}");
|
|
||||||
|
|
||||||
var posX = _state.LineStart.X * _state.TileSize;
|
var posX = _state.LineStart.X * _state.TileSize;
|
||||||
var posY = _state.LineStart.Y * _state.TileSize;
|
var posY = _state.LineStart.Y * _state.TileSize;
|
||||||
|
|
||||||
|
@ -1210,12 +1169,8 @@ namespace Sledgemapper
|
||||||
_spriteBatch.Draw(whiteRectangle, new Rectangle((int)posX, (int)posY, _state.TileSize, _state.TileSize), null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1);
|
_spriteBatch.Draw(whiteRectangle, new Rectangle((int)posX, (int)posY, _state.TileSize, _state.TileSize), null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawLine(Line tile)
|
private void DrawLine(Line tile)
|
||||||
{
|
{
|
||||||
//inner pass
|
|
||||||
// var content = Content.Load<Texture2D>($"tiles/{tile.ID}");
|
|
||||||
|
|
||||||
var posX = tile.Start.X * _state.TileSize;
|
var posX = tile.Start.X * _state.TileSize;
|
||||||
var posY = tile.Start.Y * _state.TileSize;
|
var posY = tile.Start.Y * _state.TileSize;
|
||||||
|
|
||||||
|
@ -1268,7 +1223,7 @@ namespace Sledgemapper
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void DrawRoom(Room tile)
|
private void DrawRoom(Room tile)
|
||||||
{
|
{
|
||||||
var posX = tile.Start.X * _state.TileSize;
|
var posX = tile.Start.X * _state.TileSize;
|
||||||
|
@ -1338,105 +1293,12 @@ namespace Sledgemapper
|
||||||
_spriteBatch.Draw(borderRectangle, new Rectangle(endposX, posY, posX - endposX, endposY - posY), null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1);
|
_spriteBatch.Draw(borderRectangle, new Rectangle(endposX, posY, posX - endposX, endposY - posY), null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// _spriteBatch.Draw(borderRectangle, new Rectangle(posX, posY, length, height), null, Color.White, 0, new Vector2(0, _borderWidth / 2), SpriteEffects.None, 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Effect outlineShader; // Outline shader effect
|
Effect outlineShader; // Outline shader effect
|
||||||
|
|
||||||
private void DrawDelete()
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
//inner pass
|
|
||||||
foreach (var tile in _sessionData.Rooms.Values.Where(r => r.Delete))
|
|
||||||
{
|
|
||||||
// var content = Content.Load<Texture2D>($"tiles/{tile.ID}");
|
|
||||||
|
|
||||||
var posX = tile.Start.X * _state.TileSize;
|
|
||||||
var posY = tile.Start.Y * _state.TileSize;
|
|
||||||
|
|
||||||
var endposX = tile.End.X * _state.TileSize;
|
|
||||||
var endposY = tile.End.Y * _state.TileSize;
|
|
||||||
|
|
||||||
switch (tile.Start.Index)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
posX += _state.TileSize / 2;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
posY += _state.TileSize / 2;
|
|
||||||
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
posX += _state.TileSize / 2;
|
|
||||||
posY += _state.TileSize / 2;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (tile.End.Index)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
endposX += _state.TileSize / 2;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
endposY += _state.TileSize / 2;
|
|
||||||
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
endposX += _state.TileSize / 2;
|
|
||||||
endposY += _state.TileSize / 2;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (posX != endposX && posY != endposY)
|
|
||||||
{
|
|
||||||
|
|
||||||
var borderRectangle = new Texture2D(GraphicsDevice, 1, 1);
|
|
||||||
borderRectangle.SetData(new[] { Color.Transparent });
|
|
||||||
if ((posX < endposX && posY < endposY))
|
|
||||||
|
|
||||||
{
|
|
||||||
_spriteBatch.Draw(borderRectangle, new Rectangle(posX, posY, endposX - posX, endposY - posY), null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1);
|
|
||||||
}
|
|
||||||
else if ((posX > endposX && posY > endposY))
|
|
||||||
{
|
|
||||||
_spriteBatch.Draw(borderRectangle, new Rectangle(posX, posY, endposX - posX, endposY - posY), null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (endposY < posY)
|
|
||||||
{
|
|
||||||
_spriteBatch.Draw(borderRectangle, new Rectangle(posX, endposY, endposX - posX, posY - endposY), null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (endposX < posX)
|
|
||||||
{
|
|
||||||
_spriteBatch.Draw(borderRectangle, new Rectangle(endposX, posY, posX - endposX, endposY - posY), null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// _spriteBatch.Draw(borderRectangle, new Rectangle(posX, posY, length, height), null, Color.White, 0, new Vector2(0, _borderWidth / 2), SpriteEffects.None, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void DrawDelete(Room tile)
|
private void DrawDelete(Room tile)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
//inner pass
|
|
||||||
// var content = Content.Load<Texture2D>($"tiles/{tile.ID}");
|
|
||||||
|
|
||||||
var posX = tile.Start.X * _state.TileSize;
|
var posX = tile.Start.X * _state.TileSize;
|
||||||
var posY = tile.Start.Y * _state.TileSize;
|
var posY = tile.Start.Y * _state.TileSize;
|
||||||
|
|
||||||
|
@ -1504,10 +1366,6 @@ namespace Sledgemapper
|
||||||
_spriteBatch.Draw(borderRectangle, new Rectangle(endposX, posY, posX - endposX, endposY - posY), null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1);
|
_spriteBatch.Draw(borderRectangle, new Rectangle(endposX, posY, posX - endposX, endposY - posY), null, Color.White, 0, Vector2.Zero, SpriteEffects.None, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// _spriteBatch.Draw(borderRectangle, new Rectangle(posX, posY, length, height), null, Color.White, 0, new Vector2(0, _borderWidth / 2), SpriteEffects.None, 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1899,15 +1757,6 @@ namespace Sledgemapper
|
||||||
_state.InsertMode = InsertMode.Overlay;
|
_state.InsertMode = InsertMode.Overlay;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnTileButtonClicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
_state.CurrentTileId = ((ImageButton)sender).Id;
|
|
||||||
_mainWidget.ClearSelection();
|
|
||||||
((ImageButton)sender).Border = new SolidBrush(Color.Red);
|
|
||||||
((ImageButton)sender).BorderThickness = new Myra.Graphics2D.Thickness(2);
|
|
||||||
_state.InsertMode = InsertMode.Tile;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnWallButtonClicked(object sender, EventArgs e)
|
private void OnWallButtonClicked(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
_state.CurrentWallId = ((ImageButton)sender).Id;
|
_state.CurrentWallId = ((ImageButton)sender).Id;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue