public override IEnumerable <CheckResult> GetResults(SceneObjects so)
        {
            try
            {
                int count = so.sceneObjects.Length;
                int i     = 0;

                foreach (var go in so.sceneObjects)
                {
                    float progress = ++i / count;
                    if (EditorUtility.DisplayCancelableProgressBar("Finding Transforms...", $"{go.name}", progress))
                    {
                        break;
                    }

                    Transform t = go.transform;
                    if (t.localScale.sqrMagnitude == 0)
                    {
                        yield return(new CheckResult(this, CheckResult.Result.Warning, $"Transform of Game Object \"{go.name}\" has zero Scale.", go));
                    }
                }
            }
            finally
            {
                EditorUtility.ClearProgressBar();
            }
        }
        public override IEnumerable <CheckResult> GetResults(SceneObjects so)
        {
            try
            {
                int count = so.allObjects.Length;
                int i     = 0;

                foreach (var go in so.allObjects)
                {
                    float progress = ++i / count;
                    if (EditorUtility.DisplayCancelableProgressBar("Finding Empty Game Objects...", $"{go.name}", progress))
                    {
                        break;
                    }

                    var allComps = go.GetComponents <Component>();
                    if (allComps.Length == 1)
                    {
                        if (!go.isStatic)
                        {
                            if (!so.referencedGameObjects.Contains(go))
                            {
                                var result = new CheckResult(this, CheckResult.Result.Warning, $"Empty Game Object {go.name} is not static", go);
                                result.resolutionActionIndex = 0;
                                yield return(result);
                            }
                        }
                        else
                        {
                            if (go.transform.childCount == 0)
                            {
                                if (!so.referencedGameObjects.Contains(go) && !so.referencedComponents.Contains(go.transform))
                                {
                                    var result = new CheckResult(this, CheckResult.Result.Notice, "Empty Static Game Object is not referenced, and has no children", go);
                                    result.resolutionActionIndex = 1;
                                    yield return(result);
                                }
                            }
                        }
                    }
                }
            }
            finally
            {
                EditorUtility.ClearProgressBar();
            }
        }
        void PerformChecks()
        {
            List <CheckResult> results = new List <CheckResult>();
            bool canceled = false;

            try
            {
                var so = new SceneObjects();

                int count = s_CheckStates.Count;
                int i     = 0;
                foreach (var kvp in s_CheckStates)
                {
                    float t = (float)i / count;
                    if (EditorUtility.DisplayCancelableProgressBar("Performing Checks", kvp.Key.name, t))
                    {
                        canceled = true;
                        break;
                    }

                    if (kvp.Value)
                    {
                        results.AddRange(kvp.Key.GetResults(so));
                    }
                    i++;
                }
            }
            finally
            {
                EditorUtility.ClearProgressBar();
            }

            if (!canceled)
            {
                m_Results = results;
            }

            sortMode = SortMode.None;

            noticeCount  = m_Results.Where(o => o.result == CheckResult.Result.Notice).Count();
            warningCount = m_Results.Where(o => o.result == CheckResult.Result.Warning).Count();
            errorCount   = m_Results.Where(o => o.result == CheckResult.Result.Failed).Count();

            BuildIgnoredList();
            Repaint();
        }
        public override IEnumerable <CheckResult> GetResults(SceneObjects sceneObjects)
        {
            foreach (var obj in sceneObjects.allObjects)
            {
                if (obj.TryGetComponent(out Renderer r))
                {
                    foreach (var mat in r.sharedMaterials)
                    {
                        if (mat == null)
                        {
                            yield return(new CheckResult(this, CheckResult.Result.Failed, $"Missing Material for Object {obj.name}", obj));

                            break;
                        }
                    }
                }
            }
        }
Ejemplo n.º 5
0
 public abstract IEnumerable <CheckResult> GetResults(SceneObjects sceneObjects);