void Preferences() { Slicer2DSettingsProfile profile = Slicer2DSettings.GetProfile(); if (profile) { profile.renderingPipeline = (Slicer2DSettings.RenderingPipeline)EditorGUILayout.EnumPopup("Rendering Pipeline", profile.renderingPipeline); profile.garbageCollector = EditorGUILayout.Toggle("Garbage Collector", profile.garbageCollector); if (profile.garbageCollector) { profile.garbageCollectorSize = EditorGUILayout.FloatField("Garbage Collector Size", profile.garbageCollectorSize); } profile.explosionPieces = (int)EditorGUILayout.Slider("Explosion Pieces", profile.explosionPieces, 1, 30); profile.componentsCopy = (Slicer2DSettings.InstantiationMethod)EditorGUILayout.EnumPopup("Instatiation Method", profile.componentsCopy); profile.triangulation = (Slicer2DSettings.Triangulation)EditorGUILayout.EnumPopup("Triangulation", profile.triangulation); profile.batching = (Slicer2DSettings.Batching)EditorGUILayout.EnumPopup("Batching", profile.batching); profile.centerOfSliceTransform = (Slicer2DSettings.CenterOfSliceTransform)EditorGUILayout.EnumPopup("Center Of Slice", profile.centerOfSliceTransform); if (GUILayout.Button("Default Settings")) { profile.garbageCollector = true; profile.garbageCollectorSize = 0.005f; profile.componentsCopy = Slicer2DSettings.InstantiationMethod.Default; profile.triangulation = Slicer2DSettings.Triangulation.Default; profile.batching = Slicer2DSettings.Batching.Default; } if (GUI.changed && EditorApplication.isPlaying == false) { EditorUtility.SetDirty(profile); } EditorGUILayout.HelpBox("Settings marked as 'default' will use local component setting", MessageType.Info); EditorGUILayout.HelpBox("Garbage Collector: When enabled, very small unuseful slices are removed", MessageType.None); EditorGUILayout.HelpBox("Instatiation Method: Performance mode would increase performance about 25%, however cannot be used in certain cases", MessageType.None); EditorGUILayout.HelpBox("Triangulation: The more reliable triangulation method, the slower most likely it performs. Simple shapes could use less complicated triangulation", MessageType.None); EditorGUILayout.HelpBox("Batching: when enabled, sliced parts of the object will use same material instance as it's origin (Improves Performance)", MessageType.None); } else { EditorGUILayout.HelpBox("Slicer2D Settings Profile Not Found!", MessageType.Error); } }
public void SetTriangulation(Slicer2D script) { Slicer2DSettingsProfile profile = Slicer2DSettings.GetProfile(); if (profile == null || profile.triangulation == Slicer2DSettings.Triangulation.Default) { script.materialSettings.triangulation = (PolygonTriangulator2D.Triangulation)EditorGUILayout.EnumPopup("Triangulation", script.materialSettings.triangulation); } else { EditorGUI.BeginDisabledGroup(true); EditorGUILayout.EnumPopup("Triangulation", Slicer2DSettings.GetTriangulation(script.materialSettings.triangulation)); EditorGUI.EndDisabledGroup(); } }
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 SetComponentsCopy(Slicer2D script) { Slicer2DSettingsProfile profile = Slicer2DSettings.GetProfile(); if (profile == null || profile.componentsCopy == Slicer2DSettings.InstantiationMethod.Default) { script.instantiateMethod = (Slicer2D.InstantiationMethod)EditorGUILayout.EnumPopup("Instantiation Method", script.instantiateMethod); } else { EditorGUI.BeginDisabledGroup(true); EditorGUILayout.EnumPopup("Instantiation", Slicer2DSettings.GetComponentsCopy(script.instantiateMethod)); EditorGUI.EndDisabledGroup(); } }