64 lines
1.8 KiB
C#
64 lines
1.8 KiB
C#
using UnityEngine;
|
|
using UnityEditor;
|
|
using System.Collections;
|
|
|
|
namespace Hivemind {
|
|
|
|
public class GridRenderer {
|
|
|
|
Texture2D gridTex;
|
|
|
|
public static int width { get { return 120; } }
|
|
public static int height { get { return 120; } }
|
|
public static Vector2 step { get { return new Vector2(width / 10, height / 10); } }
|
|
|
|
void GenerateGrid() {
|
|
gridTex = new Texture2D(width, height);
|
|
gridTex.hideFlags = HideFlags.DontSave;
|
|
|
|
Color bg = new Color(0.365f, 0.365f, 0.365f);
|
|
Color dark = new Color(0.278f, 0.278f, 0.278f);
|
|
Color light = new Color(0.329f, 0.329f, 0.329f);
|
|
Color darkX = new Color(0.216f, 0.216f, 0.216f);
|
|
Color lightX = new Color(0.298f, 0.298f, 0.298f);
|
|
|
|
for (int x = 0; x < width; x ++) {
|
|
for (int y = 0; y < height; y ++) {
|
|
|
|
if (x == 0 && y == 0)
|
|
gridTex.SetPixel(x, y, darkX);
|
|
else if (x == 0 || y == 0)
|
|
gridTex.SetPixel(x, y, dark);
|
|
else if (x % step.x == 0 && y % step.y == 0)
|
|
gridTex.SetPixel(x, y, lightX);
|
|
else if (x % step.x == 0 || y % step.y == 0)
|
|
gridTex.SetPixel(x, y, light);
|
|
else
|
|
gridTex.SetPixel(x, y, bg);
|
|
}
|
|
}
|
|
|
|
gridTex.Apply();
|
|
}
|
|
|
|
public void Draw(Vector2 scrollPoint, Rect canvas) {
|
|
if (!gridTex) GenerateGrid ();
|
|
|
|
float yOffset = scrollPoint.y % gridTex.height;
|
|
float yStart = scrollPoint.y - yOffset;
|
|
float yEnd = scrollPoint.y + canvas.height + yOffset;
|
|
|
|
float xOffset = scrollPoint.x % gridTex.width;
|
|
float xStart = scrollPoint.x - xOffset;
|
|
float xEnd = scrollPoint.x + canvas.width + xOffset;
|
|
|
|
for (float x = xStart; x < xEnd; x += gridTex.width) {
|
|
for (float y = yStart; y < yEnd; y += gridTex.height) {
|
|
GUI.DrawTexture(new Rect(x, y, gridTex.width, gridTex.height), gridTex);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
} |