#if GRIFFIN using System.Collections.Generic; using UnityEngine; namespace Pinwheel.Griffin { public static class GGrassUtilities { public static Vector3[] GetVertices(GGrassShape shape, Matrix4x4 matrix) { Vector3[] vertices = null; if (shape == GGrassShape.Quad) { vertices = new Vector3[] { new Vector3(-0.5f, 0, 0), new Vector3(-0.5f, 1, 0), new Vector3(0.5f, 1, 0), new Vector3(-0.5f, 0, 0), new Vector3(0.5f, 1, 0), new Vector3(0.5f, 0, 0) }; } else if (shape == GGrassShape.Cross) { vertices = new Vector3[] { new Vector3(-0.5f, 0, 0), new Vector3(-0.5f, 1, 0), new Vector3(0.5f, 1, 0), new Vector3(-0.5f, 0, 0), new Vector3(0.5f, 1, 0), new Vector3(0.5f, 0, 0), new Vector3(0, 0, -0.5f), new Vector3(0, 1, -0.5f), new Vector3(0, 1, 0.5f), new Vector3(0, 0, -0.5f), new Vector3(0, 1, 0.5f), new Vector3(0, 0, 0.5f), }; } else if (shape == GGrassShape.TriCross) { Vector3[] quads = new Vector3[] { new Vector3(-0.5f, 0, 0), new Vector3(-0.5f, 1, 0), new Vector3(0.5f, 1, 0), new Vector3(-0.5f, 0, 0), new Vector3(0.5f, 1, 0), new Vector3(0.5f, 0, 0) }; List verts = new List(); verts.AddRange(quads); Matrix4x4 rotate60 = Matrix4x4.Rotate(Quaternion.Euler(0, -60, 0)); for (int i = 0; i < quads.Length; ++i) { verts.Add(rotate60.MultiplyPoint(quads[i])); } Matrix4x4 rotate120 = Matrix4x4.Rotate(Quaternion.Euler(0, -120, 0)); for (int i = 0; i < quads.Length; ++i) { verts.Add(rotate120.MultiplyPoint(quads[i])); } vertices = verts.ToArray(); } for (int i = 0; i < vertices.Length; ++i) { vertices[i] = matrix.MultiplyPoint(vertices[i]); } return vertices; } public static Vector2[] GetUVs(GGrassShape shape) { Vector2[] uvs = null; if (shape == GGrassShape.Quad) { uvs = new Vector2[] { Vector2.zero, Vector2.up, Vector2.one, Vector2.zero, Vector2.one, Vector2.right }; } else if (shape == GGrassShape.Cross) { uvs = new Vector2[] { Vector2.zero, Vector2.up, Vector2.one, Vector2.zero, Vector2.one, Vector2.right, Vector2.zero, Vector2.up, Vector2.one, Vector2.zero, Vector2.one, Vector2.right }; } else if (shape == GGrassShape.TriCross) { uvs = new Vector2[] { Vector2.zero, Vector2.up, Vector2.one, Vector2.zero, Vector2.one, Vector2.right, Vector2.zero, Vector2.up, Vector2.one, Vector2.zero, Vector2.one, Vector2.right, Vector2.zero, Vector2.up, Vector2.one, Vector2.zero, Vector2.one, Vector2.right }; } return uvs; } public static Color[] GetColors(GGrassShape shape) { Color[] colors = null; if (shape == GGrassShape.Quad) { colors = new Color[] { Color.clear, Color.white, Color.white, Color.clear, Color.white, Color.clear }; } else if (shape == GGrassShape.Cross) { colors = new Color[] { Color.clear, Color.white, Color.white, Color.clear, Color.white, Color.clear, Color.clear, Color.white, Color.white, Color.clear, Color.white, Color.clear }; } else if (shape == GGrassShape.TriCross) { colors = new Color[] { Color.clear, Color.white, Color.white, Color.clear, Color.white, Color.clear, Color.clear, Color.white, Color.white, Color.clear, Color.white, Color.clear, Color.clear, Color.white, Color.white, Color.clear, Color.white, Color.clear }; } return colors; } } } #endif