public Lego(ColorSpecification color, Vector3 position, LegoType type, bool isBound) { this.color = color; this.position = position; this.type = type; this.isBound = isBound; this.dimen = new Vector2(1, 1); gposList = new List <Vector3> (); up = new List <Vector3>(); down = new List <Vector3>(); left = new List <Vector3>(); right = new List <Vector3>(); front = new List <Vector3>(); back = new List <Vector3>(); }
void addLego(float x, float y, float z, float size, Vector2 dimen, LegoType type) { float length = size * dimen.x; //x float width; //y if (type == LegoType.PLATE) { width = size / 2.5f; } else { width = size * 1.2f; } float height = size * dimen.y; //z #region Vertices Vector3 p0 = new Vector3(-length * .5f + x, -width * .5f + y, height * .5f + z); Vector3 p1 = new Vector3(length * .5f + x, -width * .5f + y, height * .5f + z); Vector3 p2 = new Vector3(length * .5f + x, -width * .5f + y, -height * .5f + z); Vector3 p3 = new Vector3(-length * .5f + x, -width * .5f + y, -height * .5f + z); Vector3 p4 = new Vector3(-length * .5f + x, width * .5f + y, height * .5f + z); Vector3 p5 = new Vector3(length * .5f + x, width * .5f + y, height * .5f + z); Vector3 p6 = new Vector3(length * .5f + x, width * .5f + y, -height * .5f + z); Vector3 p7 = new Vector3(-length * .5f + x, width * .5f + y, -height * .5f + z); Vector3[] vertices = new Vector3[] { // Bottom p0, p1, p2, p3, // Left p7, p4, p0, p3, // Front p4, p5, p1, p0, // Back p6, p7, p3, p2, // Right p5, p6, p2, p1, // Top p7, p6, p5, p4 }; #endregion #region Normales Vector3 up = Vector3.up; Vector3 down = Vector3.down; Vector3 front = Vector3.forward; Vector3 back = Vector3.back; Vector3 left = Vector3.left; Vector3 right = Vector3.right; Vector3[] normales = new Vector3[] { // Bottom down, down, down, down, // Left left, left, left, left, // Front front, front, front, front, // Back back, back, back, back, // Right right, right, right, right, // Top up, up, up, up }; #endregion #region UVs Vector2 _00 = new Vector2(0f, 0f); Vector2 _10 = new Vector2(1f, 0f); Vector2 _01 = new Vector2(0f, 1f); Vector2 _11 = new Vector2(1f, 1f); Vector2[] uvs = new Vector2[] { // Bottom _11, _01, _00, _10, // Left _11, _01, _00, _10, // Front _11, _01, _00, _10, // Back _11, _01, _00, _10, // Right _11, _01, _00, _10, // Top _11, _01, _00, _10, }; #endregion #region Triangles int[] triangles = new int[] { // Bottom 3, 1, 0, 3, 2, 1, // Left 3 + 4 * 1, 1 + 4 * 1, 0 + 4 * 1, 3 + 4 * 1, 2 + 4 * 1, 1 + 4 * 1, // Front 3 + 4 * 2, 1 + 4 * 2, 0 + 4 * 2, 3 + 4 * 2, 2 + 4 * 2, 1 + 4 * 2, // Back 3 + 4 * 3, 1 + 4 * 3, 0 + 4 * 3, 3 + 4 * 3, 2 + 4 * 3, 1 + 4 * 3, // Right 3 + 4 * 4, 1 + 4 * 4, 0 + 4 * 4, 3 + 4 * 4, 2 + 4 * 4, 1 + 4 * 4, // Top 3 + 4 * 5, 1 + 4 * 5, 0 + 4 * 5, 3 + 4 * 5, 2 + 4 * 5, 1 + 4 * 5, }; #endregion for (int i = 0; i < triangles.Length; i++) { triangles[i] += tvertices.Count; } tvertices.AddRange(vertices); tnormals.AddRange(normales); tuvs.AddRange(uvs); ttriangles.AddRange(triangles); }
public void changeType(LegoType type) { this.type = type; }