public void Draw() { if (lineBorder && meshBorder.Count > 0) { if (meshBorder.Count > 0) { foreach (Mesh m in meshBorder) { RendererObject renderObject = GetFreeRenderObject(); renderObject.drawn = true; renderObject.meshRenderer.sharedMaterial = GetBorderMaterial(); renderObject.meshFilter.sharedMesh = m; } } } if (mesh.Count > 0) { foreach (Mesh m in mesh) { RendererObject renderObject = GetFreeRenderObject(); renderObject.drawn = true; renderObject.meshRenderer.sharedMaterial = GetFillMaterial(); renderObject.meshFilter.sharedMesh = m; } } }
public RendererObject GetFreeRenderObject() { foreach (RendererObject renderObject in rendererObjects) { if (renderObject.drawn == false) { return(renderObject); } } RendererObject newRenderGameObject = new RendererObject(gameObject); newRenderGameObject.meshRenderer.sortingOrder = sortingOrder; newRenderGameObject.meshRenderer.sortingLayerName = sortingLayerName; rendererObjects.Add(newRenderGameObject); return(newRenderGameObject); }
// Visuals //GameObject visualsGameObject; //MeshFilter visualMeshFilter; //MeshRenderer visualMeshRenderer; public void Draw() { if (lineBorder && meshBorder.Count > 0) { if (meshBorder.Count > 0) { foreach (Mesh m in meshBorder) { RendererObject renderObject = GetFreeRenderObject(); renderObject.drawn = true; renderObject.meshRenderer.sharedMaterial = GetBorderMaterial(); renderObject.meshFilter.sharedMesh = m; renderObject.transform.position = Vector3.zero; Vector3 lScale = renderObject.transform.parent.lossyScale; lScale.x = 1f / lScale.x; lScale.y = 1f / lScale.y; lScale.z = 1f / lScale.z; renderObject.transform.localScale = lScale; } } } if (mesh.Count > 0) { foreach (Mesh m in mesh) { RendererObject renderObject = GetFreeRenderObject(); renderObject.drawn = true; renderObject.meshRenderer.sharedMaterial = GetFillMaterial(); renderObject.meshFilter.sharedMesh = m; renderObject.transform.position = Vector3.zero; Vector3 lScale = renderObject.transform.parent.lossyScale; lScale.x = 1f / lScale.x; lScale.y = 1f / lScale.y; lScale.z = 1f / lScale.z; renderObject.transform.localScale = lScale; } } // Does not use Mesh Renderer Object if (customEndingsPosition.Count > 0) { Matrix4x4 matrix; foreach (Pair2 pair in customEndingsPosition) { Polygon2D polyA = Polygon2D.CreateFromRect(new Vector2(1, 1)); //polyA.ToOffset(pair.A); Mesh mA = polyA.CreateMesh(new Vector2(2, 2), Vector2.zero); matrix = Matrix4x4.TRS(pair.a.ToVector3(zPosition), Quaternion.Euler(0, 0, 0), new Vector3(1, 1, 1)); Graphics.DrawMesh(mA, matrix, customEndingImageMaterial, 0); matrix = Matrix4x4.TRS(pair.b.ToVector3(zPosition), Quaternion.Euler(0, 0, 0), new Vector3(1, 1, 1)); Graphics.DrawMesh(mA, matrix, customEndingImageMaterial, 0); } } }