public void SetBatching(Slicer2D script) { Slicer2DSettingsProfile profile = Slicer2DSettings.GetProfile(); if (profile == null || profile.batching == Slicer2DSettings.Batching.Default) { script.materialSettings.batchMaterial = EditorGUILayout.Toggle("Batch Material", script.materialSettings.batchMaterial); } else { EditorGUI.BeginDisabledGroup(true); EditorGUILayout.Toggle("Batch Material", Slicer2DSettings.GetBatching(script.materialSettings.batchMaterial)); EditorGUI.EndDisabledGroup(); } }
public void CreateMesh(GameObject gameObject, Polygon2D polygon) { polygon.CreateMesh(gameObject, scale, offset, GetTriangulation()); if (material) { MeshRenderer meshRenderer = gameObject.GetComponent <MeshRenderer> (); if (Slicer2DSettings.GetBatching(batchMaterial)) { Slicer2DProfiler.IncBatchingApplied(); meshRenderer.sharedMaterial = material; } else { meshRenderer.sharedMaterial = new Material(material); } } }
// Check Before Each Function - Then This Could Be Private public void Initialize() { shape.ForceUpdate(); List <Polygon2D> result = Polygon2DList.CreateFromGameObject(gameObject); // Split collider if there are more polygons than 1 if (result.Count > 1) { PerformResult(result, new Slice2D()); } switch (textureType) { case TextureType.Mesh2D: if (Slicer2DSettings.GetBatching(materialSettings.batchMaterial) && spriteRenderer != null) { materialSettings.material = spriteRenderer.material; } // Needs Mesh UV Options materialSettings.CreateMesh(gameObject, shape.GetLocal()); meshRenderer = GetComponent <MeshRenderer> (); meshFilter = GetComponent <MeshFilter>(); break; case TextureType.Mesh3D: shape.GetLocal().CreateMesh3D(gameObject, materialSettings.depth, materialSettings.scale, materialSettings.offset, 0, materialSettings.GetTriangulation()); meshRenderer = GetComponent <MeshRenderer> (); meshFilter = GetComponent <MeshFilter>(); Material[] sharedMaterials = new Material[2]; sharedMaterials[1] = materialSettings.material; sharedMaterials[0] = materialSettings.sideMaterial; meshRenderer.sharedMaterials = sharedMaterials; break; case TextureType.Sprite: if (spriteRenderer == null) { spriteRendererComponent = GetComponent <SpriteRenderer>(); spriteRenderer = new VirtualSpriteRenderer(spriteRendererComponent); } else { if (Slicer2DSettings.GetBatching(materialSettings.batchMaterial) == false) { spriteRenderer.material = new Material(spriteRenderer.material); } } break; case TextureType.Sprite3D: if (spriteRenderer == null) { spriteRendererComponent = GetComponent <SpriteRenderer>(); spriteRenderer = new VirtualSpriteRenderer(spriteRendererComponent); reinitialize = true; Destroy(spriteRendererComponent); spriteRendererComponent = null; } else { if (Slicer2DSettings.GetBatching(materialSettings.batchMaterial) == false) { spriteRenderer.material = new Material(spriteRenderer.material); } } break; case TextureType.SpriteAnimation: if (spriteRenderer == null) { spriteRenderer = new VirtualSpriteRenderer(GetComponent <SpriteRenderer>()); } break; default: break; } }