コード例 #1
0
        static public Slicer2DSettingsProfile GetProfile()
        {
            if (profile == null)
            {
                profile = Resources.Load("Profiles/Default") as Slicer2DSettingsProfile;
            }

            return(profile);
        }
コード例 #2
0
        public static int GetExplosionSlices()
        {
            Slicer2DSettingsProfile profile = GetProfile();

            if (profile == null)
            {
                Debug.LogWarning("Profile Settings Are Missing");
                return(2);
            }

            return(profile.explosionPieces);
        }
コード例 #3
0
        public static RenderingPipeline GetRenderingPipeline()
        {
            Slicer2DSettingsProfile profile = GetProfile();

            if (profile == null)
            {
                Debug.LogWarning("Profile Settings Are Missing");
                return(RenderingPipeline.Universal);
            }


            return(profile.renderingPipeline);
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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();
            }
        }
コード例 #6
0
        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();
            }
        }
コード例 #7
0
        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();
            }
        }
コード例 #8
0
        public static float GetGarbageCollector()
        {
            Slicer2DSettingsProfile profile = GetProfile();

            if (profile == null)
            {
                Debug.LogWarning("Profile Settings Are Missing");
                return(-1);
            }

            if (profile.garbageCollector)
            {
                return(profile.garbageCollectorSize);
            }
            else
            {
                return(-1);
            }
        }
コード例 #9
0
        public static PolygonTriangulator2D.Triangulation GetTriangulation(PolygonTriangulator2D.Triangulation setting)
        {
            Slicer2DSettingsProfile profile = GetProfile();

            if (profile == null)
            {
                Debug.LogWarning("Profile Settings Are Missing");
                return(setting);
            }

            if (profile.triangulation == Triangulation.Default)
            {
                return(setting);
            }
            else
            {
                int triangulationID = (int)profile.triangulation - 1;
                return((PolygonTriangulator2D.Triangulation)triangulationID);
            }
        }
コード例 #10
0
        public static Slicer2D.CenterOfSliceTransform GetCenterOfSliceTransform(Slicer2D.CenterOfSliceTransform setting)
        {
            Slicer2DSettingsProfile profile = GetProfile();

            if (profile == null)
            {
                Debug.LogWarning("Profile Settings Are Missing");
                return(setting);
            }

            if (profile.centerOfSliceTransform == CenterOfSliceTransform.Default)
            {
                return(setting);
            }
            else
            {
                int settingID = (int)profile.centerOfSliceTransform - 1;
                return((Slicer2D.CenterOfSliceTransform)settingID);
            }
        }
コード例 #11
0
        public static Slicer2D.InstantiationMethod GetComponentsCopy(Slicer2D.InstantiationMethod setting)
        {
            Slicer2DSettingsProfile profile = GetProfile();

            if (profile == null)
            {
                Debug.LogWarning("Profile Settings Are Missing");
                return(setting);
            }

            if (profile.componentsCopy == InstantiationMethod.Default)
            {
                return(setting);
            }
            else
            {
                int copyID = (int)profile.componentsCopy - 1;
                return((Slicer2D.InstantiationMethod)copyID);
            }
        }
コード例 #12
0
        public static bool GetBatching(bool setting)
        {
            Slicer2DSettingsProfile profile = GetProfile();

            if (profile == null)
            {
                Debug.LogWarning("Profile Settings Are Missing");
                return(setting);
            }

            switch (profile.batching)
            {
            case Batching.On:
                return(true);

            case Batching.Off:
                return(false);

            default:
                return(setting);
            }
        }