Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions Assets/Plugins/TileMap/TileMeshQuadGridBehaviour.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ namespace UnityTileMap
/// </summary>
public class TileMeshQuadGridBehaviour : TileMeshBehaviour
{
private Vector2[] _uv;
public override void SetTile(int x, int y, Sprite sprite)
{
// TODO should be flagged in inspector when sprites are set up
Expand All @@ -26,15 +27,14 @@ private void SetTile(int quadIndex, Sprite sprite)
// TODO seems like i cant modify the uv coordinates in place

quadIndex *= 4;
var uv = GetComponent<MeshFilter>().sharedMesh.uv;
var r = sprite.textureRect;

// assign four uv coordinates to change the texture of one tile (one quad, two triangels)
uv[quadIndex] = ToUv(new Vector2(r.xMin, r.yMin), sprite.texture);
uv[quadIndex + 1] = ToUv(new Vector2(r.xMax, r.yMin), sprite.texture);
uv[quadIndex + 2] = ToUv(new Vector2(r.xMin, r.yMax), sprite.texture);
uv[quadIndex + 3] = ToUv(new Vector2(r.xMax, r.yMax), sprite.texture);
GetComponent<MeshFilter>().sharedMesh.uv = uv;
_uv[quadIndex] = ToUv(new Vector2(r.xMin, r.yMin), sprite.texture);
_uv[quadIndex + 1] = ToUv(new Vector2(r.xMax, r.yMin), sprite.texture);
_uv[quadIndex + 2] = ToUv(new Vector2(r.xMin, r.yMax), sprite.texture);
_uv[quadIndex + 3] = ToUv(new Vector2(r.xMax, r.yMax), sprite.texture);
GetComponent<MeshFilter>().sharedMesh.uv = _uv;
}

protected override Mesh CreateMesh()
Expand All @@ -47,7 +47,7 @@ protected override Mesh CreateMesh()
var vertices = new Vector3[quads * 4];
var triangles = new int[quads * 6];
var normals = new Vector3[vertices.Length];
var uv = new Vector2[vertices.Length];
_uv = new Vector2[vertices.Length];

for (int y = 0; y < tilesY; y++)
{
Expand Down Expand Up @@ -82,15 +82,15 @@ protected override Mesh CreateMesh()
for (int i = 0; i < vertices.Length; i++)
{
normals[i] = Vector3.forward;
uv[i] = Vector2.zero; // uv are set by assigning a tile
_uv[i] = Vector2.zero; // uv are set by assigning a tile
}

var mesh = new Mesh
{
vertices = vertices,
triangles = triangles,
normals = normals,
uv = uv,
uv = _uv,
name = "TileMapMesh"
};
return mesh;
Expand Down