private void BurnDecal() { // If decal in scene exit if (EditorUtility.GetPrefabType(_decalType.gameObject) == PrefabType.ModelPrefab || EditorUtility.GetPrefabType(_decalType.gameObject) == PrefabType.Prefab) { return; } // Create meshes Plane[] planes = DecalCreator.CreatePlanes(_decalType); GameObject[] allGameObjects = FindObjectsOfType(typeof(GameObject)) as GameObject[]; foreach (GameObject g in allGameObjects) { // Mask if (_decalType.i_projectionMask == 0) { continue; } if ((_decalType.i_projectionMask & MeshTypes.Mesh) == 0) { if (g.GetComponent <MeshFilter>()) { continue; } } if ((_decalType.i_projectionMask & MeshTypes.SkinedMesh) == 0) { if (g.GetComponent <SkinnedMeshRenderer>()) { continue; } } if (_decalType.i_ignoreList.Contains(g) || g.GetComponent <DecalType>()) { continue; } CreateMeshList(planes, g); } if (_newMeshes.Count == 0) { return; } // Delete previous DestroyImmediate(_decalType.GetComponent <MeshFilter>().sharedMesh); Mesh combinedMesh = DecalCreator.CreateCombinedMesh(_newMeshes, null); DecalCreator.CreateStaticDecal(combinedMesh, null, _decalType); // Delete temp foreach (Mesh mesh in _newMeshes) { DestroyImmediate(mesh); } _newMeshes.Clear(); }