diff --git a/TrueCraft.API/TrueCraft.API.csproj b/TrueCraft.API/TrueCraft.API.csproj
index 5333f5f..df50c42 100644
--- a/TrueCraft.API/TrueCraft.API.csproj
+++ b/TrueCraft.API/TrueCraft.API.csproj
@@ -7,8 +7,6 @@
Library
TrueCraft.API
TrueCraft.API
- 8.0.30703
- 2.0
v4.5
diff --git a/TrueCraft.Client/Rendering/BlockRenderer.cs b/TrueCraft.Client/Rendering/BlockRenderer.cs
index a460510..fb8a388 100644
--- a/TrueCraft.Client/Rendering/BlockRenderer.cs
+++ b/TrueCraft.Client/Rendering/BlockRenderer.cs
@@ -42,7 +42,7 @@ namespace TrueCraft.Client.Rendering
return CreateUniformCube(offset, texture, faces, indiciesOffset, out indicies, Color.White);
}
- protected VertexPositionNormalColorTexture[] CreateUniformCube(Vector3 offset, Vector2[] texture,
+ public static VertexPositionNormalColorTexture[] CreateUniformCube(Vector3 offset, Vector2[] texture,
VisibleFaces faces, int indiciesOffset, out int[] indicies, Color color)
{
faces = VisibleFaces.All; // Temporary
diff --git a/TrueCraft.Client/TrueCraft.Client.csproj b/TrueCraft.Client/TrueCraft.Client.csproj
index d10b9ab..d736895 100644
--- a/TrueCraft.Client/TrueCraft.Client.csproj
+++ b/TrueCraft.Client/TrueCraft.Client.csproj
@@ -4,8 +4,6 @@
Debug
AnyCPU
- 8.0.30703
- 2.0
{A6516869-A2FB-4E31-85C8-2285490CB32C}
WinExe
TrueCraft.Client
@@ -128,6 +126,7 @@
+
@@ -148,8 +147,6 @@
-
-
diff --git a/TrueCraft.Client/TrueCraftGame.cs b/TrueCraft.Client/TrueCraftGame.cs
index 201d611..ec5a6a1 100644
--- a/TrueCraft.Client/TrueCraftGame.cs
+++ b/TrueCraft.Client/TrueCraftGame.cs
@@ -17,6 +17,7 @@ using TrueCraft.Client.Input;
using TrueCraft.Core;
using MonoGame.Utilities.Png;
using System.Diagnostics;
+using TrueCraft.Core.Logic.Blocks;
namespace TrueCraft.Client
{
@@ -46,10 +47,14 @@ namespace TrueCraft.Client
private Microsoft.Xna.Framework.Vector3 Delta { get; set; }
private TextureMapper TextureMapper { get; set; }
private double Bobbing { get; set; }
-
- private BasicEffect OpaqueEffect;
+ private Coordinates3D HighlightedBlock { get; set; }
+ private Mesh HighlightMesh { get; set; }
+ private Texture2D HighlightTexture { get; set; }
+ private BasicEffect OpaqueEffect, HighlightEffect;
private AlphaTestEffect TransparentEffect;
+ public static readonly int Reach = 5;
+
public TrueCraftGame(MultiplayerClient client, IPEndPoint endPoint)
{
Window.Title = "TrueCraft";
@@ -102,6 +107,38 @@ namespace TrueCraft.Client
CreateRenderTarget();
}
+ private void InitializeHighlightedBlock()
+ {
+ const int size = 64;
+ HighlightedBlock = -Coordinates3D.One;
+ HighlightTexture = new Texture2D(GraphicsDevice, size, size);
+
+ var colors = new Color[size * size];
+ for (int i = 0; i < colors.Length; i++)
+ colors[i] = Color.Transparent;
+ for (int x = 0; x < size; x++)
+ colors[x] = Color.Black; // Top
+ for (int x = 0; x < size; x++)
+ colors[x + (size - 1) * size] = Color.Black; // Bottom
+ for (int y = 0; y < size; y++)
+ colors[y * size] = Color.Black; // Left
+ for (int y = 0; y < size; y++)
+ colors[y * size + (size - 1)] = Color.Black; // Right
+
+ HighlightTexture.SetData(colors);
+ var texcoords = new[]
+ {
+ Vector2.UnitX + Vector2.UnitY,
+ Vector2.UnitY,
+ Vector2.Zero,
+ Vector2.UnitX
+ };
+ int[] indicies;
+ var verticies = BlockRenderer.CreateUniformCube(Microsoft.Xna.Framework.Vector3.Zero,
+ texcoords, VisibleFaces.All, 0, out indicies, Color.White);
+ HighlightMesh = new Mesh(this, verticies, indicies);
+ }
+
private void CreateRenderTarget()
{
RenderTarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height,
@@ -167,6 +204,23 @@ namespace TrueCraft.Client
TransparentEffect.Texture = TextureMapper.GetTexture("terrain.png");
TransparentEffect.VertexColorEnabled = true;
+ InitializeHighlightedBlock();
+
+ HighlightEffect = new BasicEffect(GraphicsDevice);
+ HighlightEffect.EnableDefaultLighting();
+ HighlightEffect.DirectionalLight0.SpecularColor = Color.Black.ToVector3();
+ HighlightEffect.DirectionalLight1.SpecularColor = Color.Black.ToVector3();
+ HighlightEffect.DirectionalLight2.SpecularColor = Color.Black.ToVector3();
+ HighlightEffect.TextureEnabled = true;
+ HighlightEffect.Texture = HighlightTexture;
+ HighlightEffect.VertexColorEnabled = true;
+
+ //HighlightEffect = new AlphaTestEffect(GraphicsDevice);
+ //HighlightEffect.AlphaFunction = CompareFunction.Greater;
+ //HighlightEffect.ReferenceAlpha = 127;
+ //HighlightEffect.Texture = TextureMapper.GetTexture("terrain.png");
+ //HighlightEffect.VertexColorEnabled = true;
+
base.LoadContent();
}
@@ -413,6 +467,7 @@ namespace TrueCraft.Client
CameraView = Camera.GetFrustum();
+ Camera.ApplyTo(HighlightEffect);
Camera.ApplyTo(OpaqueEffect);
Camera.ApplyTo(TransparentEffect);
}
@@ -442,6 +497,7 @@ namespace TrueCraft.Client
ChunkMeshes[i].Draw(OpaqueEffect, 0);
}
}
+ HighlightMesh.Draw(HighlightEffect);
GraphicsDevice.BlendState = ColorWriteDisable;
for (int i = 0; i < ChunkMeshes.Count; i++)
@@ -468,6 +524,10 @@ namespace TrueCraft.Client
DebugInterface.Vertices = verticies;
DebugInterface.Chunks = chunks;
+ HighlightEffect.World = Matrix.CreateScale(1.02f) *
+ Matrix.CreateTranslation(new Microsoft.Xna.Framework.Vector3(0, 43, 0));
+ HighlightMesh.Draw(HighlightEffect);
+
SpriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null, null, null);
for (int i = 0; i < Interfaces.Count; i++)
Interfaces[i].DrawSprites(gameTime, SpriteBatch);
diff --git a/TrueCraft.Client/VoxelCast.cs b/TrueCraft.Client/VoxelCast.cs
new file mode 100644
index 0000000..6fb46c0
--- /dev/null
+++ b/TrueCraft.Client/VoxelCast.cs
@@ -0,0 +1,135 @@
+using System;
+using TrueCraft.API;
+using TrueCraft.Core.Logic;
+using TrueCraft.Core.Logic.Blocks;
+
+namespace TrueCraft.Client
+{
+ ///
+ /// Efficient ray caster that can cast a ray into a voxel map
+ /// and return the voxel that it intersects with.
+ ///
+ public static class VoxelCast
+ {
+ // Thanks to http://gamedev.stackexchange.com/questions/47362/cast-ray-to-select-block-in-voxel-game
+
+ public static Tuple Cast(ReadOnlyWorld world,
+ Ray ray, BlockRepository repository, double max)
+ {
+ var origin = ray.Position.Floor();
+ var direction = ray.Direction;
+ var step = new Vector3(SigNum(ray.Position.X), SigNum(ray.Position.Y), SigNum(ray.Position.Z));
+ var tMax = new Vector3(
+ IntBound(origin.X, direction.X),
+ IntBound(origin.Y, direction.Y),
+ IntBound(origin.Z, direction.Z));
+ var tDelta = new Vector3(
+ step.X / direction.X,
+ step.Y / direction.Y,
+ step.Z / direction.Z);
+ BlockFace face = BlockFace.PositiveY;
+
+ if (ray.Direction == Vector3.Zero)
+ return null;
+
+ max /= Math.Sqrt(ray.Direction.X * ray.Direction.X
+ + ray.Direction.Y * ray.Direction.Y
+ + ray.Direction.Z * ray.Direction.Z);
+
+ while (world.IsValidPosition((Coordinates3D)origin))
+ {
+ var provider = repository.GetBlockProvider(world.GetBlockID((Coordinates3D)origin));
+ var _box = provider.BoundingBox;
+ if (_box != null)
+ {
+ var box = _box.Value.OffsetBy((Coordinates3D)origin);
+ if (ray.Intersects(box) != null)
+ return new Tuple((Coordinates3D)origin, face);
+ }
+
+ if (tMax.X < tMax.Y)
+ {
+ if (tMax.X < tMax.Z)
+ {
+ if (tMax.X > max)
+ return null;
+ // Update which cube we are now in.
+ origin.X += step.X;
+ // Adjust tMaxX to the next X-oriented boundary crossing.
+ tMax.X += tDelta.X;
+ // Record the normal vector of the cube face we entered.
+ if (step.X < 0)
+ face = BlockFace.PositiveX;
+ else
+ face = BlockFace.NegativeX;
+ }
+ else
+ {
+ if (tMax.Z > max)
+ return null;
+ origin.Z += step.Z;
+ tMax.Z += tDelta.Z;
+ if (step.Z < 0)
+ face = BlockFace.PositiveZ;
+ else
+ face = BlockFace.NegativeZ;
+ }
+ }
+ else
+ {
+ if (tMax.Y < tMax.Z)
+ {
+ if (tMax.Y > max)
+ return null;
+ origin.Y += step.Y;
+ tMax.Y += tDelta.Y;
+ if (step.Y < 0)
+ face = BlockFace.PositiveY;
+ else
+ face = BlockFace.NegativeY;
+ }
+ else
+ {
+ // Identical to the second case, repeated for simplicity in
+ // the conditionals.
+ if (tMax.Z > max)
+ break;
+ origin.Z += step.Z;
+ tMax.Z += tDelta.Z;
+ if (step.Z < 0)
+ face = BlockFace.PositiveZ;
+ else
+ face = BlockFace.NegativeZ;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private static double IntBound(double s, double ds)
+ {
+ // Find the smallest positive t such that s+t*ds is an integer.
+ if (ds < 0)
+ {
+ return IntBound(-s, -ds);
+ }
+ else
+ {
+ s = Mod(s, 1);
+ // problem is now s+t*ds = 1
+ return (1 - s) / ds;
+ }
+ }
+
+ private static int SigNum(double x)
+ {
+ return x > 0 ? 1 : x < 0 ? -1 : 0;
+ }
+
+ private static double Mod(double value, double modulus)
+ {
+ return (value % modulus + modulus) % modulus;
+ }
+ }
+}
diff --git a/TrueCraft.Core.Test/TrueCraft.Core.Test.csproj b/TrueCraft.Core.Test/TrueCraft.Core.Test.csproj
index 86579bc..3130dba 100644
--- a/TrueCraft.Core.Test/TrueCraft.Core.Test.csproj
+++ b/TrueCraft.Core.Test/TrueCraft.Core.Test.csproj
@@ -3,8 +3,6 @@
Debug
AnyCPU
- 8.0.30703
- 2.0
{BCFDCD93-C23E-49E6-9767-A887B3C2A709}
Library
TrueCraft.Core.Test
diff --git a/TrueCraft.Core/MathHelper.cs b/TrueCraft.Core/MathHelper.cs
index 1b1af65..6322c9c 100644
--- a/TrueCraft.Core/MathHelper.cs
+++ b/TrueCraft.Core/MathHelper.cs
@@ -52,6 +52,22 @@ namespace TrueCraft.Core
}
}
+ public static BlockFace CoordinatesToBlockFace(Coordinates3D face)
+ {
+ if (face == Coordinates3D.Down)
+ return BlockFace.NegativeY;
+ else if (face == Coordinates3D.Up)
+ return BlockFace.PositiveY;
+ else if (face == Coordinates3D.Backwards)
+ return BlockFace.NegativeZ;
+ else if (face == Coordinates3D.Forwards)
+ return BlockFace.PositiveZ;
+ else if (face == Coordinates3D.Left)
+ return BlockFace.NegativeX;
+ else
+ return BlockFace.PositiveX;
+ }
+
public static double Distance2D(double a1, double a2, double b1, double b2)
{
return Math.Sqrt(Math.Pow(b1 - a1, 2) + Math.Pow(b2 - a2, 2));
diff --git a/TrueCraft.Core/TrueCraft.Core.csproj b/TrueCraft.Core/TrueCraft.Core.csproj
index 83ef5d1..e60e235 100644
--- a/TrueCraft.Core/TrueCraft.Core.csproj
+++ b/TrueCraft.Core/TrueCraft.Core.csproj
@@ -8,8 +8,6 @@
TrueCraft.Core
TrueCraft.Core
true
- 8.0.30703
- 2.0
v4.5
diff --git a/TrueCraft.Launcher/TrueCraft.Launcher.csproj b/TrueCraft.Launcher/TrueCraft.Launcher.csproj
index ed36819..f46e036 100644
--- a/TrueCraft.Launcher/TrueCraft.Launcher.csproj
+++ b/TrueCraft.Launcher/TrueCraft.Launcher.csproj
@@ -3,8 +3,6 @@
Debug
AnyCPU
- 8.0.30703
- 2.0
{6604F17A-552E-405D-B327-37C8B1648C86}
WinExe
TrueCraft.Launcher
diff --git a/TrueCraft.Profiling/TrueCraft.Profiling.csproj b/TrueCraft.Profiling/TrueCraft.Profiling.csproj
index 15d4329..8472eba 100644
--- a/TrueCraft.Profiling/TrueCraft.Profiling.csproj
+++ b/TrueCraft.Profiling/TrueCraft.Profiling.csproj
@@ -3,8 +3,6 @@
Debug
AnyCPU
- 8.0.30703
- 2.0
{BCA0E139-CF47-43B3-9DC9-D4611C0A2AAD}
Library
TrueCraft.Profiling
diff --git a/TrueCraft.sln b/TrueCraft.sln
index 2128f78..f48ebd5 100644
--- a/TrueCraft.sln
+++ b/TrueCraft.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
+# Visual Studio 2012
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TrueCraft", "TrueCraft\TrueCraft.csproj", "{C1C47EF5-2D8A-4231-AAA8-F651F52F480E}"
@@ -28,57 +28,54 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C1C47EF5-2D8A-4231-AAA8-F651F52F480E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C1C47EF5-2D8A-4231-AAA8-F651F52F480E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C1C47EF5-2D8A-4231-AAA8-F651F52F480E}.Optimized Debug|Any CPU.ActiveCfg = Optimized Debug|Any CPU
- {C1C47EF5-2D8A-4231-AAA8-F651F52F480E}.Optimized Debug|Any CPU.Build.0 = Optimized Debug|Any CPU
- {C1C47EF5-2D8A-4231-AAA8-F651F52F480E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C1C47EF5-2D8A-4231-AAA8-F651F52F480E}.Release|Any CPU.Build.0 = Release|Any CPU
- {FEE55B54-91B0-4325-A2C3-D576C0B7A81F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {FEE55B54-91B0-4325-A2C3-D576C0B7A81F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {FEE55B54-91B0-4325-A2C3-D576C0B7A81F}.Optimized Debug|Any CPU.ActiveCfg = Optimized Debug|Any CPU
- {FEE55B54-91B0-4325-A2C3-D576C0B7A81F}.Optimized Debug|Any CPU.Build.0 = Optimized Debug|Any CPU
- {FEE55B54-91B0-4325-A2C3-D576C0B7A81F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {FEE55B54-91B0-4325-A2C3-D576C0B7A81F}.Release|Any CPU.Build.0 = Release|Any CPU
- {FA4BE9A3-DBF0-4380-BA2B-FFAA71C4706D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {FA4BE9A3-DBF0-4380-BA2B-FFAA71C4706D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {FA4BE9A3-DBF0-4380-BA2B-FFAA71C4706D}.Optimized Debug|Any CPU.ActiveCfg = Optimized Debug|Any CPU
- {FA4BE9A3-DBF0-4380-BA2B-FFAA71C4706D}.Optimized Debug|Any CPU.Build.0 = Optimized Debug|Any CPU
- {FA4BE9A3-DBF0-4380-BA2B-FFAA71C4706D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {FA4BE9A3-DBF0-4380-BA2B-FFAA71C4706D}.Release|Any CPU.Build.0 = Release|Any CPU
{4488498D-976D-4DA3-BF72-109531AF0488}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4488498D-976D-4DA3-BF72-109531AF0488}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4488498D-976D-4DA3-BF72-109531AF0488}.Optimized Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4488498D-976D-4DA3-BF72-109531AF0488}.Optimized Debug|Any CPU.Build.0 = Debug|Any CPU
{4488498D-976D-4DA3-BF72-109531AF0488}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4488498D-976D-4DA3-BF72-109531AF0488}.Release|Any CPU.Build.0 = Release|Any CPU
- {A6516869-A2FB-4E31-85C8-2285490CB32C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A6516869-A2FB-4E31-85C8-2285490CB32C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A6516869-A2FB-4E31-85C8-2285490CB32C}.Optimized Debug|Any CPU.ActiveCfg = Optimized Debug|Any CPU
- {A6516869-A2FB-4E31-85C8-2285490CB32C}.Optimized Debug|Any CPU.Build.0 = Optimized Debug|Any CPU
- {A6516869-A2FB-4E31-85C8-2285490CB32C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A6516869-A2FB-4E31-85C8-2285490CB32C}.Release|Any CPU.Build.0 = Release|Any CPU
{6604F17A-552E-405D-B327-37C8B1648C86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6604F17A-552E-405D-B327-37C8B1648C86}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6604F17A-552E-405D-B327-37C8B1648C86}.Optimized Debug|Any CPU.ActiveCfg = Optimized Debug|Any CPU
{6604F17A-552E-405D-B327-37C8B1648C86}.Optimized Debug|Any CPU.Build.0 = Optimized Debug|Any CPU
{6604F17A-552E-405D-B327-37C8B1648C86}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6604F17A-552E-405D-B327-37C8B1648C86}.Release|Any CPU.Build.0 = Release|Any CPU
- {BCFDCD93-C23E-49E6-9767-A887B3C2A709}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {BCFDCD93-C23E-49E6-9767-A887B3C2A709}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {BCFDCD93-C23E-49E6-9767-A887B3C2A709}.Optimized Debug|Any CPU.ActiveCfg = Optimized Debug|Any CPU
- {BCFDCD93-C23E-49E6-9767-A887B3C2A709}.Optimized Debug|Any CPU.Build.0 = Optimized Debug|Any CPU
- {BCFDCD93-C23E-49E6-9767-A887B3C2A709}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {BCFDCD93-C23E-49E6-9767-A887B3C2A709}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A6516869-A2FB-4E31-85C8-2285490CB32C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A6516869-A2FB-4E31-85C8-2285490CB32C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A6516869-A2FB-4E31-85C8-2285490CB32C}.Optimized Debug|Any CPU.ActiveCfg = Optimized Debug|Any CPU
+ {A6516869-A2FB-4E31-85C8-2285490CB32C}.Optimized Debug|Any CPU.Build.0 = Optimized Debug|Any CPU
+ {A6516869-A2FB-4E31-85C8-2285490CB32C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A6516869-A2FB-4E31-85C8-2285490CB32C}.Release|Any CPU.Build.0 = Release|Any CPU
{BCA0E139-CF47-43B3-9DC9-D4611C0A2AAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BCA0E139-CF47-43B3-9DC9-D4611C0A2AAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BCA0E139-CF47-43B3-9DC9-D4611C0A2AAD}.Optimized Debug|Any CPU.ActiveCfg = Optimized Debug|Any CPU
{BCA0E139-CF47-43B3-9DC9-D4611C0A2AAD}.Optimized Debug|Any CPU.Build.0 = Optimized Debug|Any CPU
{BCA0E139-CF47-43B3-9DC9-D4611C0A2AAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BCA0E139-CF47-43B3-9DC9-D4611C0A2AAD}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
+ {BCFDCD93-C23E-49E6-9767-A887B3C2A709}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BCFDCD93-C23E-49E6-9767-A887B3C2A709}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BCFDCD93-C23E-49E6-9767-A887B3C2A709}.Optimized Debug|Any CPU.ActiveCfg = Optimized Debug|Any CPU
+ {BCFDCD93-C23E-49E6-9767-A887B3C2A709}.Optimized Debug|Any CPU.Build.0 = Optimized Debug|Any CPU
+ {BCFDCD93-C23E-49E6-9767-A887B3C2A709}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BCFDCD93-C23E-49E6-9767-A887B3C2A709}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C1C47EF5-2D8A-4231-AAA8-F651F52F480E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C1C47EF5-2D8A-4231-AAA8-F651F52F480E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C1C47EF5-2D8A-4231-AAA8-F651F52F480E}.Optimized Debug|Any CPU.ActiveCfg = Optimized Debug|Any CPU
+ {C1C47EF5-2D8A-4231-AAA8-F651F52F480E}.Optimized Debug|Any CPU.Build.0 = Optimized Debug|Any CPU
+ {C1C47EF5-2D8A-4231-AAA8-F651F52F480E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C1C47EF5-2D8A-4231-AAA8-F651F52F480E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FA4BE9A3-DBF0-4380-BA2B-FFAA71C4706D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FA4BE9A3-DBF0-4380-BA2B-FFAA71C4706D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FA4BE9A3-DBF0-4380-BA2B-FFAA71C4706D}.Optimized Debug|Any CPU.ActiveCfg = Optimized Debug|Any CPU
+ {FA4BE9A3-DBF0-4380-BA2B-FFAA71C4706D}.Optimized Debug|Any CPU.Build.0 = Optimized Debug|Any CPU
+ {FA4BE9A3-DBF0-4380-BA2B-FFAA71C4706D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FA4BE9A3-DBF0-4380-BA2B-FFAA71C4706D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FEE55B54-91B0-4325-A2C3-D576C0B7A81F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FEE55B54-91B0-4325-A2C3-D576C0B7A81F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FEE55B54-91B0-4325-A2C3-D576C0B7A81F}.Optimized Debug|Any CPU.ActiveCfg = Optimized Debug|Any CPU
+ {FEE55B54-91B0-4325-A2C3-D576C0B7A81F}.Optimized Debug|Any CPU.Build.0 = Optimized Debug|Any CPU
+ {FEE55B54-91B0-4325-A2C3-D576C0B7A81F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FEE55B54-91B0-4325-A2C3-D576C0B7A81F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{BCFDCD93-C23E-49E6-9767-A887B3C2A709} = {6756B61E-5856-4CA7-90B5-6053763FE7BA}
@@ -91,7 +88,6 @@ Global
$1.scope = text/x-csharp
$0.CSharpFormattingPolicy = $2
$2.IndentSwitchBody = True
- $2.IndentBlocksInsideExpressions = True
$2.AnonymousMethodBraceStyle = NextLine
$2.PropertyBraceStyle = NextLine
$2.PropertyGetBraceStyle = NextLine
@@ -114,8 +110,12 @@ Global
$2.BeforeDelegateDeclarationParentheses = False
$2.NewParentheses = False
$2.SpacesBeforeBrackets = False
+ $2.AlignToFirstMethodDeclarationParameter = False
$2.inheritsSet = Mono
$2.inheritsScope = text/x-csharp
$2.scope = text/x-csharp
EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
EndGlobal
diff --git a/TrueCraft/TrueCraft.csproj b/TrueCraft/TrueCraft.csproj
index 17a73bf..7814bef 100644
--- a/TrueCraft/TrueCraft.csproj
+++ b/TrueCraft/TrueCraft.csproj
@@ -7,8 +7,6 @@
Exe
TrueCraft
TrueCraft
- 8.0.30703
- 2.0
v4.5