/// <summary> /// Turns Gameobject into multiple fragments /// </summary> private void generateFragments(bool meshSaved = false) { fragments = new List <GameObject>(); Material mat = null; if (meshSaved) { mat = SpriteExploder.createFragmentMaterial(gameObject); Directory.CreateDirectory("Assets/FragmentMaterials"); AssetDatabase.CreateAsset(mat, "Assets/FragmentMaterials/" + transform.name + "_fragments" + ".mat"); } switch (shatterType) { case ShatterType.Triangle: fragments = SpriteExploder.GenerateTriangularPieces(gameObject, extraPoints, subshatterSteps, mat, meshSaved); break; case ShatterType.Voronoi: fragments = SpriteExploder.GenerateVoronoiPieces(gameObject, extraPoints, subshatterSteps, mat, meshSaved); break; default: Debug.Log("invalid choice"); break; } for (int i = 0; i < fragments.Count; i++) { if (fragments[i] != null) { fragments[i].layer = LayerMask.NameToLayer(fragmentLayer); fragments[i].GetComponent <Renderer>().sortingLayerName = sortingLayerName; fragments[i].GetComponent <Renderer>().sortingOrder = orderInLayer; /// prefab mesh save if (meshSaved) { if (!string.IsNullOrEmpty("Assets/FragmentMesh")) { Directory.CreateDirectory("Assets/FragmentMesh"); } var mesh = fragments[i].GetComponent <MeshFilter>().sharedMesh; AssetDatabase.CreateAsset(mesh, "Assets/FragmentMesh/" + transform.name + "_" + i + ".asset"); } } } AssetDatabase.SaveAssets(); foreach (ExplodableAddon addon in GetComponents <ExplodableAddon>()) { if (addon.enabled) { addon.OnFragmentsGenerated(fragments); } } }