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