add TileContainer Get/GetSafe overloads accepting a Point3

This commit is contained in:
Gered 2013-09-08 17:55:56 -04:00
parent fe023e684b
commit f4c7dd9f50
5 changed files with 50 additions and 0 deletions

View file

@ -142,6 +142,12 @@ namespace Blarg.GameFramework.TileMap.Prefabs
return _data[index];
}
public override Tile Get(Point3 p)
{
int index = GetIndexOf(p.X, p.Y, p.Z);
return _data[index];
}
public override Tile GetSafe(int x, int y, int z)
{
if (!IsWithinLocalBounds(x, y, z))
@ -150,6 +156,14 @@ namespace Blarg.GameFramework.TileMap.Prefabs
return Get(x, y, z);
}
public override Tile GetSafe(Point3 p)
{
if (!IsWithinLocalBounds(p.X, p.Y, p.Z))
return null;
else
return Get(p.X, p.Y, p.Z);
}
private int GetIndexOf(int x, int y, int z)
{
return (y * _width * _depth) + (z * _width) + x;

View file

@ -181,6 +181,12 @@ namespace Blarg.GameFramework.TileMap
return _data[index];
}
public override Tile Get(Point3 p)
{
int index = GetIndexOf(p.X, p.Y, p.Z);
return _data[index];
}
public override Tile GetSafe(int x, int y, int z)
{
if (!IsWithinLocalBounds(x, y, z))
@ -189,6 +195,14 @@ namespace Blarg.GameFramework.TileMap
return Get(x, y, z);
}
public override Tile GetSafe(Point3 p)
{
if (!IsWithinLocalBounds(p.X, p.Y, p.Z))
return null;
else
return Get(p.X, p.Y, p.Z);
}
private int GetIndexOf(int x, int y, int z)
{
return (y * _width * _depth) + (z * _width) + x;

View file

@ -23,7 +23,9 @@ namespace Blarg.GameFramework.TileMap
#endregion
public abstract Tile Get(int x, int y, int z);
public abstract Tile Get(Point3 p);
public abstract Tile GetSafe(int x, int y, int z);
public abstract Tile GetSafe(Point3 p);
#region Bounds Checks

View file

@ -222,6 +222,16 @@ namespace Blarg.GameFramework.TileMap
return chunk.Get(chunkX, chunkY, chunkZ);
}
public override Tile Get(Point3 p)
{
var chunk = GetChunkContaining(p.X, p.Y, p.Z);
int chunkX = p.X - chunk.MinX;
int chunkY = p.Y - chunk.MinY;
int chunkZ = p.Z - chunk.MinZ;
return chunk.Get(chunkX, chunkY, chunkZ);
}
public override Tile GetSafe(int x, int y, int z)
{
if (!IsWithinBounds(x, y, z))
@ -230,6 +240,14 @@ namespace Blarg.GameFramework.TileMap
return Get(x, y, z);
}
public override Tile GetSafe(Point3 p)
{
if (!IsWithinBounds(p.X, p.Y, p.Z))
return null;
else
return Get(p.X, p.Y, p.Z);
}
#endregion
#region Chunk Retrieval

View file

@ -11,7 +11,9 @@ namespace Blarg.GameFramework.TileMap
int Depth { get; }
Tile Get(int x, int y, int z);
Tile Get(Point3 p);
Tile GetSafe(int x, int y, int z);
Tile GetSafe(Point3 p);
}
}