diff --git a/OctoAwesome/OctoAwesome.Basics/Definitions/Blocks/BirchWoodBlockDefinition.cs b/OctoAwesome/OctoAwesome.Basics/Definitions/Blocks/BirchWoodBlockDefinition.cs
index 49da20f0..71450244 100644
--- a/OctoAwesome/OctoAwesome.Basics/Definitions/Blocks/BirchWoodBlockDefinition.cs
+++ b/OctoAwesome/OctoAwesome.Basics/Definitions/Blocks/BirchWoodBlockDefinition.cs
@@ -9,45 +9,31 @@ namespace OctoAwesome.Basics.Definitions.Blocks
{
public sealed class BirchWoodBlockDefinition : BlockDefinition
{
- public override string Name
- {
- get { return Languages.OctoBasics.BirchWood; }
- }
+ public override string Name => Languages.OctoBasics.BirchWood;
- public override string Icon
- {
- get { return "birch_wood_top"; }
- }
+ public override string Icon => "birch_wood_top";
- public override bool HasMetaData { get { return true; } }
+ public override bool HasMetaData => true;
- public override string[] Textures
- {
- get
- {
- return new[] {
+ public override string[] Textures => new[] {
"birch_wood_top",
"birch_wood_side" };
- }
- }
public override PhysicalProperties GetProperties(ILocalChunkCache manager, int x, int y, int z)
- {
- return new PhysicalProperties()
+ => new PhysicalProperties()
{
Density = 0.87f,
FractureToughness = 0.3f,
Granularity = 0.9f,
Hardness = 0.1f
};
- }
public override void Hit(IBlockDefinition block, PhysicalProperties itemProperties)
{
throw new NotImplementedException();
}
- public override int GetTextureIndex (Wall wall, ILocalChunkCache manager,
+ public override int GetTextureIndex(Wall wall, ILocalChunkCache manager,
int x, int y, int z)
{
OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
@@ -113,111 +99,43 @@ public override void Hit(IBlockDefinition block, PhysicalProperties itemProperti
return -1;
}
- public override int GetTopTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
- {
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- return 1;
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetBottomTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
- {
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- return 1;
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetEastTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
- {
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- return 1;
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetWestTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
- {
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- return 1;
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetNorthTextureRotation(ILocalChunkCache manager, int x, int y, int z)
+ public override int GetTextureRotation(Wall wall, ILocalChunkCache manager, int x, int y, int z)
{
OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
- {
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- return 1;
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetSouthTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
+ switch (wall)
{
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- return 1;
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
+ case Wall.Top:
+ case Wall.Bottom:
+ case Wall.Back:
+ case Wall.Front:
+ switch (orientation)//top and bottom north south
+ {
+ case OrientationFlags.SideWest:
+ case OrientationFlags.SideEast:
+ return 1;
+ case OrientationFlags.SideSouth:
+ case OrientationFlags.SideNorth:
+ case OrientationFlags.SideBottom:
+ case OrientationFlags.SideTop:
+ default:
+ return 0;
+ }
+ case Wall.Left:
+ case Wall.Right:
+ switch (orientation) //east west
+ {
+ case OrientationFlags.SideSouth:
+ case OrientationFlags.SideNorth:
+ return 1;
+ case OrientationFlags.SideWest:
+ case OrientationFlags.SideEast:
+ case OrientationFlags.SideBottom:
+ case OrientationFlags.SideTop:
+ default:
+ return 0;
+ }
default:
- return 0;
+ return base.GetTextureRotation(wall, manager, x, y, z); //should never ever happen
}
}
}
diff --git a/OctoAwesome/OctoAwesome.Basics/Definitions/Blocks/CactusBlockDefinition.cs b/OctoAwesome/OctoAwesome.Basics/Definitions/Blocks/CactusBlockDefinition.cs
index 5cfe54d8..8bf406f8 100644
--- a/OctoAwesome/OctoAwesome.Basics/Definitions/Blocks/CactusBlockDefinition.cs
+++ b/OctoAwesome/OctoAwesome.Basics/Definitions/Blocks/CactusBlockDefinition.cs
@@ -8,27 +8,15 @@ namespace OctoAwesome.Basics.Definitions.Blocks
{
public class CactusBlockDefinition : BlockDefinition
{
- public override string Icon
- {
- get { return "cactus_inside"; }
- }
+ public override string Icon => "cactus_inside";
- public override string Name
- {
- get { return Languages.OctoBasics.Cactus; }
- }
+ public override string Name => Languages.OctoBasics.Cactus;
- public override string[] Textures
- {
- get
- {
- return new[] {
+ public override string[] Textures => new[] {
"cactus_inside",
"cactus_side",
"cactus_top"
};
- }
- }
public override int GetTextureIndex(Wall wall, ILocalChunkCache manager,
int x, int y, int z)
@@ -167,111 +155,45 @@ public override string[] Textures
return -1;
}
- public override int GetTopTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
- {
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- return 1;
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetBottomTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
- {
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- return 1;
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetEastTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
- {
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- return 1;
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetWestTextureRotation(ILocalChunkCache manager, int x, int y, int z)
+ public override int GetTextureRotation(Wall wall, ILocalChunkCache manager, int x, int y, int z)
{
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
- switch (orientation)
- {
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- return 1;
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetNorthTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
- switch (orientation)
- {
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- return 1;
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetSouthTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
+ switch (wall)
{
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- return 1;
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
+ case Wall.Top:
+ case Wall.Bottom:
+ case Wall.Back:
+ case Wall.Front:
+ switch (orientation)
+ {
+ case OrientationFlags.SideWest:
+ case OrientationFlags.SideEast:
+ return 1;
+ case OrientationFlags.SideSouth:
+ case OrientationFlags.SideNorth:
+ case OrientationFlags.SideBottom:
+ case OrientationFlags.SideTop:
+ default:
+ return 0;
+ }
+ case Wall.Left:
+ case Wall.Right:
+ switch (orientation)
+ {
+ case OrientationFlags.SideSouth:
+ case OrientationFlags.SideNorth:
+ return 1;
+ case OrientationFlags.SideWest:
+ case OrientationFlags.SideEast:
+ case OrientationFlags.SideBottom:
+ case OrientationFlags.SideTop:
+ default:
+ return 0;
+ }
default:
- return 0;
+ return base.GetTextureRotation(wall, manager, x, y, z); //should never ever happen
}
}
diff --git a/OctoAwesome/OctoAwesome.Basics/Definitions/Blocks/WoodBlockDefinition.cs b/OctoAwesome/OctoAwesome.Basics/Definitions/Blocks/WoodBlockDefinition.cs
index e368fa56..a019e97a 100644
--- a/OctoAwesome/OctoAwesome.Basics/Definitions/Blocks/WoodBlockDefinition.cs
+++ b/OctoAwesome/OctoAwesome.Basics/Definitions/Blocks/WoodBlockDefinition.cs
@@ -9,43 +9,27 @@ namespace OctoAwesome.Basics.Definitions.Blocks
{
public sealed class WoodBlockDefinition : BlockDefinition
{
- public override string Name
- {
- get { return Languages.OctoBasics.Wood; }
- }
+ public override string Name => Languages.OctoBasics.Wood;
- public override string Icon
- {
- get { return "wood_top"; }
- }
+ public override string Icon => "wood_top";
- public override bool HasMetaData { get { return true; } }
+ public override bool HasMetaData => true;
- public override string[] Textures
- {
- get
- {
- return new[] {
+ public override string[] Textures => new[] {
"wood_top",
"wood_side" };
- }
- }
- public override PhysicalProperties GetProperties(ILocalChunkCache manager, int x, int y, int z)
- {
- return new PhysicalProperties()
+ public override PhysicalProperties GetProperties(ILocalChunkCache manager, int x, int y, int z)
+ => new PhysicalProperties()
{
Density = 0.87f,
FractureToughness = 0.3f,
Granularity = 0.9f,
Hardness = 0.1f
};
- }
- public override void Hit(IBlockDefinition block, PhysicalProperties itemProperties)
- {
- throw new NotImplementedException();
- }
+ public override void Hit(IBlockDefinition block, PhysicalProperties itemProperties)
+ => throw new NotImplementedException();
public override int GetTextureIndex(Wall wall, ILocalChunkCache manager, int x, int y, int z)
{
@@ -108,112 +92,44 @@ public override int GetTextureIndex(Wall wall, ILocalChunkCache manager, int x,
// Assert this
return -1;
}
-
- public override int GetTopTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
- {
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- return 1;
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetBottomTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
- {
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- return 1;
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetEastTextureRotation(ILocalChunkCache manager, int x, int y, int z)
+
+ public override int GetTextureRotation(Wall wall, ILocalChunkCache manager, int x, int y, int z)
{
OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
- {
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- return 1;
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetWestTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
- {
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- return 1;
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetNorthTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
- {
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- return 1;
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
- default:
- return 0;
- }
- }
-
- public override int GetSouthTextureRotation(ILocalChunkCache manager, int x, int y, int z)
- {
- OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z);
-
- switch (orientation)
+ switch (wall)
{
- case OrientationFlags.SideWest:
- case OrientationFlags.SideEast:
- return 1;
- case OrientationFlags.SideSouth:
- case OrientationFlags.SideNorth:
- case OrientationFlags.SideBottom:
- case OrientationFlags.SideTop:
+ case Wall.Top:
+ case Wall.Bottom:
+ case Wall.Back:
+ case Wall.Front:
+ switch (orientation)//top and bottom north south
+ {
+ case OrientationFlags.SideWest:
+ case OrientationFlags.SideEast:
+ return 1;
+ case OrientationFlags.SideSouth:
+ case OrientationFlags.SideNorth:
+ case OrientationFlags.SideBottom:
+ case OrientationFlags.SideTop:
+ default:
+ return 0;
+ }
+ case Wall.Left:
+ case Wall.Right:
+ switch (orientation) //east west
+ {
+ case OrientationFlags.SideSouth:
+ case OrientationFlags.SideNorth:
+ return 1;
+ case OrientationFlags.SideWest:
+ case OrientationFlags.SideEast:
+ case OrientationFlags.SideBottom:
+ case OrientationFlags.SideTop:
+ default:
+ return 0;
+ }
default:
- return 0;
+ return base.GetTextureRotation(wall, manager, x, y, z); //should never ever happen
}
}
}
diff --git a/OctoAwesome/OctoAwesome.Client/Components/ChunkRenderer.cs b/OctoAwesome/OctoAwesome.Client/Components/ChunkRenderer.cs
index 72440f0a..1560e4d1 100644
--- a/OctoAwesome/OctoAwesome.Client/Components/ChunkRenderer.cs
+++ b/OctoAwesome/OctoAwesome.Client/Components/ChunkRenderer.cs
@@ -246,7 +246,7 @@ public bool RegenerateVertexBuffer()
(((textureIndex + blockDefinition.GetTextureIndex(Wall.Top,_manager, x, y, z)) % textureColumns) * textureWidth) + textureGap,
(((textureIndex + blockDefinition.GetTextureIndex(Wall.Top,_manager, x, y, z)) / textureColumns) * textureWidth) + textureGap);
- int rotation = -blockDefinition.GetTopTextureRotation(_manager, x, y, z);
+ int rotation = -blockDefinition.GetTextureRotation(Wall.Top, _manager, x, y, z);
int localOffset = vertices.Count;
vertices.Add(
@@ -296,7 +296,7 @@ public bool RegenerateVertexBuffer()
(((textureIndex + blockDefinition.GetTextureIndex(Wall.Bottom, _manager, x, y, z)) % textureColumns) * textureWidth) + textureGap,
(((textureIndex + blockDefinition.GetTextureIndex(Wall.Bottom, _manager, x, y, z)) / textureColumns) * textureWidth) + textureGap);
- int rotation = -blockDefinition.GetBottomTextureRotation(_manager, x, y, z);
+ int rotation = -blockDefinition.GetTextureRotation(Wall.Bottom,_manager, x, y, z);
int localOffset = vertices.Count;
vertices.Add(
@@ -345,7 +345,7 @@ public bool RegenerateVertexBuffer()
(((textureIndex + blockDefinition.GetTextureIndex(Wall.Front,_manager, x, y, z)) % textureColumns) * textureWidth) + textureGap,
(((textureIndex + blockDefinition.GetTextureIndex(Wall.Front,_manager, x, y, z)) / textureColumns) * textureWidth) + textureGap);
- int rotation = -blockDefinition.GetSouthTextureRotation(_manager, x, y, z);
+ int rotation = -blockDefinition.GetTextureRotation(Wall.Front, _manager, x, y, z);
int localOffset = vertices.Count;
vertices.Add(
@@ -394,7 +394,7 @@ public bool RegenerateVertexBuffer()
(((textureIndex + blockDefinition.GetTextureIndex(Wall.Back,_manager, x, y, z)) % textureColumns) * textureWidth) + textureGap,
(((textureIndex + blockDefinition.GetTextureIndex(Wall.Back,_manager, x, y, z)) / textureColumns) * textureWidth) + textureGap);
- int rotation = -blockDefinition.GetNorthTextureRotation(_manager, x, y, z);
+ int rotation = -blockDefinition.GetTextureRotation(Wall.Back, _manager, x, y, z);
int localOffset = vertices.Count;
vertices.Add(
@@ -444,7 +444,7 @@ public bool RegenerateVertexBuffer()
(((textureIndex + blockDefinition.GetTextureIndex(Wall.Left,_manager, x, y, z)) / textureColumns) * textureWidth) + textureGap);
- int rotation = -blockDefinition.GetWestTextureRotation(_manager, x, y, z);
+ int rotation = -blockDefinition.GetTextureRotation(Wall.Left, _manager, x, y, z);
int localOffset = vertices.Count;
vertices.Add(
@@ -494,7 +494,7 @@ public bool RegenerateVertexBuffer()
(((textureIndex + blockDefinition.GetTextureIndex(Wall.Right,_manager, x, y, z)) / textureColumns) * textureWidth) + textureGap);
- int rotation = -blockDefinition.GetEastTextureRotation(_manager, x, y, z);
+ int rotation = -blockDefinition.GetTextureRotation(Wall.Right,_manager, x, y, z);
int localOffset = vertices.Count;
vertices.Add(
diff --git a/OctoAwesome/OctoAwesome.Tests/TestPlanet.cs b/OctoAwesome/OctoAwesome.Tests/TestPlanet.cs
index c5ea7e98..62eea158 100644
--- a/OctoAwesome/OctoAwesome.Tests/TestPlanet.cs
+++ b/OctoAwesome/OctoAwesome.Tests/TestPlanet.cs
@@ -44,6 +44,7 @@ public int Seed
public Index3 Size { get; private set; }
public Guid Universe { get; private set; }
+ IMapGenerator IPlanet.Generator { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
public void Deserialize(Stream stream)
{
diff --git a/OctoAwesome/OctoAwesome.sln b/OctoAwesome/OctoAwesome.sln
index 22d95b56..38ee9b9d 100644
--- a/OctoAwesome/OctoAwesome.sln
+++ b/OctoAwesome/OctoAwesome.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
+# Visual Studio 15
+VisualStudioVersion = 15.0.27130.2010
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OctoAwesome", "OctoAwesome\OctoAwesome.csproj", "{93601DB8-F134-418E-8B35-11E30CFEC31C}"
EndProject
@@ -67,4 +67,7 @@ Global
GlobalSection(NestedProjects) = preSolution
{0468B67C-E076-4B19-833C-382513606A5A} = {D269F5F0-2B6A-471A-8A44-253DEF5D98A1}
EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {0BE45E2B-9F0C-49A7-AC90-A9B87EC9D7EA}
+ EndGlobalSection
EndGlobal
diff --git a/OctoAwesome/OctoAwesome/Block.cs b/OctoAwesome/OctoAwesome/Block.cs
index 06f6dbb7..ae58fad9 100644
--- a/OctoAwesome/OctoAwesome/Block.cs
+++ b/OctoAwesome/OctoAwesome/Block.cs
@@ -3,7 +3,6 @@
namespace OctoAwesome
{
- //TODO: #CleanUP -> combine intersect methods?
///
/// Helferklasse für die Kollisionserkennung mit Blöcken.
///
@@ -29,6 +28,7 @@ public static class Block
BoundingBox box = new BoundingBox(localBox.Min + boxPosition, localBox.Max + boxPosition);
float? distance = ray.Intersects(box);
+
if (!distance.HasValue)
continue;
@@ -45,44 +45,42 @@ public static class Block
collided = true;
}
- if (collided)
+ if (!collided)
{
- float max = -5f;
- Axis? axis = null;
-
- // Fall X
- if (min.X < 1f && min.X > max)
- {
- max = min.X;
- axis = Axis.X;
- }
-
- // Fall Y
- if (min.Y < 1f && min.Y > max)
- {
- max = min.Y;
- axis = Axis.Y;
- }
-
- // Fall Z
- if (min.Z < 1f && min.Z > max)
- {
- max = min.Z;
- axis = Axis.Z;
- }
-
- collisionAxis = axis;
-
- if (axis.HasValue)
- return max * raylength;
-
+ collisionAxis = null;
return null;
}
- else
+
+ float max = -5f;
+ Axis? axis = null;
+
+ // Fall X
+ if (min.X < 1f && min.X > max)
{
- collisionAxis = null;
- return null;
+ max = min.X;
+ axis = Axis.X;
}
+
+ // Fall Y
+ if (min.Y < 1f && min.Y > max)
+ {
+ max = min.Y;
+ axis = Axis.Y;
+ }
+
+ // Fall Z
+ if (min.Z < 1f && min.Z > max)
+ {
+ max = min.Z;
+ axis = Axis.Z;
+ }
+
+ collisionAxis = axis;
+
+ if (axis.HasValue)
+ return max * raylength;
+
+ return null;
}
///
@@ -132,42 +130,41 @@ public static class Block
collided = true;
}
- if (collided)
+ if (!collided)
{
- float max = 0f;
- Axis? axis = null;
-
- // Fall X
- if (min.X < 1f && min.X > max)
- {
- max = min.X;
- axis = Axis.X;
- }
-
- // Fall Y
- if (min.Y < 1f && min.Y > max)
- {
- max = min.Y;
- axis = Axis.Y;
- }
-
- // Fall Z
- if (min.Z < 1f && min.Z > max)
- {
- max = min.Z;
- axis = Axis.Z;
- }
-
- collisionAxis = axis;
- if (axis.HasValue)
- return max;
+ collisionAxis = null;
return null;
}
- else
+ float max = 0f;
+ Axis? axis = null;
+
+ // Fall X
+ if (min.X < 1f && min.X > max)
{
- collisionAxis = null;
- return null;
+ max = min.X;
+ axis = Axis.X;
+ }
+
+ // Fall Y
+ if (min.Y < 1f && min.Y > max)
+ {
+ max = min.Y;
+ axis = Axis.Y;
+ }
+
+ // Fall Z
+ if (min.Z < 1f && min.Z > max)
+ {
+ max = min.Z;
+ axis = Axis.Z;
}
+
+ collisionAxis = axis;
+
+ if (axis.HasValue)
+ return max;
+
+ return null;
}
}
}
diff --git a/OctoAwesome/OctoAwesome/BlockDefinition.cs b/OctoAwesome/OctoAwesome/BlockDefinition.cs
index 02182275..39406360 100644
--- a/OctoAwesome/OctoAwesome/BlockDefinition.cs
+++ b/OctoAwesome/OctoAwesome/BlockDefinition.cs
@@ -73,66 +73,8 @@ public virtual BoundingBox[] GetCollisionBoxes(ILocalChunkCache manager, int x,
public virtual int GetTextureIndex(Wall wall, ILocalChunkCache manager, int x, int y, int z) => 0;
- ///
- /// Rotation der Textur in 90° Schritten für die Oberseite (Positiv Z) des Blocks
- ///
- /// [Bitte ergänzen]
- /// X-Anteil der Koordinate des Blocks
- /// Y-Anteil der Koordinate des Blocks
- /// Z-Anteil der Koordinate des Blocks
- /// Rotation der Textur in 90° Schritten
- public virtual int GetTopTextureRotation(ILocalChunkCache manager, int x, int y, int z) => 0;
-
- ///
- /// Rotation der Textur in 90° Schritten für die Unterseite (Negativ Z) des Blocks
- ///
- /// [Bitte ergänzen]
- /// X-Anteil der Koordinate des Blocks
- /// Y-Anteil der Koordinate des Blocks
- /// Z-Anteil der Koordinate des Blocks
- /// Rotation der Textur in 90° Schritten
- public virtual int GetBottomTextureRotation(ILocalChunkCache manager, int x, int y, int z) => 0;
-
- ///
- /// Rotation der Textur in 90° Schritten für die Ostseite (Positiv X) des Blocks
- ///
- /// [Bitte ergänzen]
- /// X-Anteil der Koordinate des Blocks
- /// Y-Anteil der Koordinate des Blocks
- /// Z-Anteil der Koordinate des Blocks
- /// Rotation der Textur in 90° Schritten
- public virtual int GetEastTextureRotation(ILocalChunkCache manager, int x, int y, int z) => 0;
-
- ///
- /// Rotation der Textur in 90° Schritten für die Westseite (Negativ X) des Blocks
- ///
- /// [Bitte ergänzen]
- /// X-Anteil der Koordinate des Blocks
- /// Y-Anteil der Koordinate des Blocks
- /// Z-Anteil der Koordinate des Blocks
- /// Rotation der Textur in 90° Schritten
- public virtual int GetWestTextureRotation(ILocalChunkCache manager, int x, int y, int z) => 0;
-
- ///
- /// Rotation der Textur in 90° Schritten für die Nordseite (Positiv Y) des Blocks
- ///
- /// [Bitte ergänzen]
- /// X-Anteil der Koordinate des Blocks
- /// Y-Anteil der Koordinate des Blocks
- /// Z-Anteil der Koordinate des Blocks
- /// Rotation der Textur in 90° Schritten
- public virtual int GetNorthTextureRotation(ILocalChunkCache manager, int x, int y, int z) => 0;
-
- ///
- /// Rotation der Textur in 90° Schritten für die Südseite (Negativ Y) des Blocks
- ///
- /// [Bitte ergänzen]
- /// X-Anteil der Koordinate des Blocks
- /// Y-Anteil der Koordinate des Blocks
- /// Z-Anteil der Koordinate des Blocks
- /// Rotation der Textur in 90° Schritten
- public virtual int GetSouthTextureRotation(ILocalChunkCache manager, int x, int y, int z) => 0;
-
+ public virtual int GetTextureRotation(Wall wall, ILocalChunkCache manager, int x, int y, int z) => 0;
+
public bool IsSolidWall(Wall wall) => (SolidWall& (1 << (int)wall)) != 0;
}
}
diff --git a/OctoAwesome/OctoAwesome/ChunkColumn.cs b/OctoAwesome/OctoAwesome/ChunkColumn.cs
index 4285aaf1..0fa34ea3 100644
--- a/OctoAwesome/OctoAwesome/ChunkColumn.cs
+++ b/OctoAwesome/OctoAwesome/ChunkColumn.cs
@@ -193,7 +193,7 @@ public void SetBlock(int x, int y, int z, ushort block, int meta = 0)
{
int index = z / Chunk.CHUNKSIZE_Z;
z %= Chunk.CHUNKSIZE_Z;
- Chunks[index].SetBlock(x, y, z,block,meta);
+ Chunks[index].SetBlock(x, y, z, block, meta);
}
///
@@ -207,7 +207,7 @@ public void SetBlockMeta(int x, int y, int z, int meta)
{
int index = z / Chunk.CHUNKSIZE_Z;
z %= Chunk.CHUNKSIZE_Z;
- Chunks[index].SetBlockMeta(x, y, z, meta);
+ Chunks[index].SetBlockMeta(x, y, z, meta);
}
///
@@ -231,7 +231,6 @@ public void SetBlockResources(int x, int y, int z, ushort[] resources)
/// Der verwendete DefinitionManager
public void Serialize(Stream stream, IDefinitionManager definitionManager)
{
- //TODO: #CleanUp Method ok?
using (BinaryWriter bw = new BinaryWriter(stream))
{
// Definitionen sammeln
@@ -263,7 +262,7 @@ public void Serialize(Stream stream, IDefinitionManager definitionManager)
for (int i = 0; i < Chunks.Length; i++) // Change Counter
bw.Write(Chunks[i].ChangeCounter);
-
+
// Schreibe Phase 2 (Block Definitionen)
if (longIndex)
bw.Write((ushort)definitions.Count);
@@ -341,7 +340,6 @@ public void Serialize(Stream stream, IDefinitionManager definitionManager)
/// Der Index des Planeten
public void Deserialize(Stream stream, IDefinitionManager definitionManager, int planetId, Index2 columnIndex)
{
- //TODO #CleanUp Method ok?
using (BinaryReader br = new BinaryReader(stream))
{
bool longIndex = br.ReadByte() > 0;
@@ -352,11 +350,13 @@ public void Deserialize(Stream stream, IDefinitionManager definitionManager, int
Index = columnIndex;
Populated = br.ReadBoolean(); // Populated
+
for (int y = 0; y < Chunk.CHUNKSIZE_Y; y++) // Heightmap
for (int x = 0; x < Chunk.CHUNKSIZE_X; x++)
Heights[x, y] = br.ReadUInt16();
int[] counter = new int[Chunks.Length];
+
for (int i = 0; i < Chunks.Length; i++) // ChangeCounter
counter[i] = br.ReadInt32();
@@ -365,6 +365,7 @@ public void Deserialize(Stream stream, IDefinitionManager definitionManager, int
Dictionary map = new Dictionary();
int typecount = longIndex ? br.ReadUInt16() : br.ReadByte();
+
for (int i = 0; i < typecount; i++)
{
string typeName = br.ReadString();
@@ -380,6 +381,7 @@ public void Deserialize(Stream stream, IDefinitionManager definitionManager, int
{
IChunk chunk = Chunks[c] = new Chunk(new Index3(columnIndex, c), planetId);
chunk.Changed += OnChunkChanged;
+
for (int i = 0; i < chunk.Blocks.Length; i++)
{
ushort typeIndex = longIndex ? br.ReadUInt16() : br.ReadByte();
@@ -389,6 +391,7 @@ public void Deserialize(Stream stream, IDefinitionManager definitionManager, int
chunk.Blocks[i] = map[typeIndex];
var definition = (IBlockDefinition)definitionManager.GetDefinitionByIndex(map[typeIndex]);
+
if (definition.HasMetaData)
chunk.MetaData[i] = br.ReadInt32();
}
@@ -413,25 +416,21 @@ public void Deserialize(Stream stream, IDefinitionManager definitionManager, int
if (type == null)
continue;
-
Entity entity = (Entity)Activator.CreateInstance(type);
-
using (MemoryStream memorystream = new MemoryStream(buffer))
- using (BinaryReader componentbinarystream = new BinaryReader(memorystream))
{
- entity.Deserialize(componentbinarystream, definitionManager);
+ using (BinaryReader componentbinarystream = new BinaryReader(memorystream))
+ {
+ entity.Deserialize(componentbinarystream, definitionManager);
+ }
}
Entities.Add(entity);
-
}
catch (Exception)
{
}
- finally
- {
- }
}
}
}
diff --git a/OctoAwesome/OctoAwesome/IBlockDefinition.cs b/OctoAwesome/OctoAwesome/IBlockDefinition.cs
index 56efb278..83a4f342 100644
--- a/OctoAwesome/OctoAwesome/IBlockDefinition.cs
+++ b/OctoAwesome/OctoAwesome/IBlockDefinition.cs
@@ -55,57 +55,7 @@ public interface IBlockDefinition : IInventoryableDefinition, IDefinition
/// Y-Anteil der Koordinate des Blocks
/// Z-Anteil der Koordinate des Blocks
/// Rotation der Textur in 90° Schritten
- int GetTopTextureRotation(ILocalChunkCache manager, int x, int y, int z);
-
- ///
- /// Texturindex für das Array für die Unterseite (Negativ Z) des Blocks
- ///
- /// [Bitte ergänzen]
- /// X-Anteil der Koordinate des Blocks
- /// Y-Anteil der Koordinate des Blocks
- /// Z-Anteil der Koordinate des Blocks
- /// Index für das Array
- int GetBottomTextureRotation(ILocalChunkCache manager, int x, int y, int z);
-
- ///
- /// Rotation der Textur in 90° Schritten für die Ostseite (Positiv X) des Blocks
- ///
- /// [Bitte ergänzen]
- /// X-Anteil der Koordinate des Blocks
- /// Y-Anteil der Koordinate des Blocks
- /// Z-Anteil der Koordinate des Blocks
- /// Rotation der Textur in 90° Schritten
- int GetEastTextureRotation(ILocalChunkCache manager, int x, int y, int z);
-
- ///
- /// Rotation der Textur in 90° Schritten für die Westseite (Negativ X) des Blocks
- ///
- /// [Bitte ergänzen]
- /// X-Anteil der Koordinate des Blocks
- /// Y-Anteil der Koordinate des Blocks
- /// Z-Anteil der Koordinate des Blocks
- /// Rotation der Textur in 90° Schritten
- int GetWestTextureRotation(ILocalChunkCache manager, int x, int y, int z);
-
- ///
- /// Rotation der Textur in 90° Schritten für die Nordseite (Positiv Y) des Blocks
- ///
- /// [Bitte ergänzen]
- /// X-Anteil der Koordinate des Blocks
- /// Y-Anteil der Koordinate des Blocks
- /// Z-Anteil der Koordinate des Blocks
- /// Rotation der Textur in 90° Schritten
- int GetNorthTextureRotation(ILocalChunkCache manager, int x, int y, int z);
-
- ///
- /// Rotation der Textur in 90° Schritten für die Südseite (Negativ Y) des Blocks
- ///
- /// [Bitte ergänzen]
- /// X-Anteil der Koordinate des Blocks
- /// Y-Anteil der Koordinate des Blocks
- /// Z-Anteil der Koordinate des Blocks
- /// Rotation der Textur in 90° Schritten
- int GetSouthTextureRotation(ILocalChunkCache manager, int x, int y, int z);
+ int GetTextureRotation(Wall wall, ILocalChunkCache manager, int x, int y, int z);
uint SolidWall { get; }
diff --git a/OctoAwesome/OctoAwesome/Wall.cs b/OctoAwesome/OctoAwesome/Wall.cs
index 965950af..750a560e 100644
--- a/OctoAwesome/OctoAwesome/Wall.cs
+++ b/OctoAwesome/OctoAwesome/Wall.cs
@@ -4,11 +4,29 @@ namespace OctoAwesome
{
public enum Wall
{
+ ///
+ /// Top
+ ///
Top,
+ ///
+ /// Bottom
+ ///
Bottom,
+ ///
+ /// West
+ ///
Left,
+ ///
+ /// East
+ ///
Right,
+ ///
+ /// North
+ ///
Back,
- Front
+ ///
+ /// South
+ ///
+ Front
}
}
\ No newline at end of file