Exemplo n.º 1
0
    private static void DumpRigidBodies(string targetFolder)
    {
        Rigidbody[]   source        = UnityEngine.Object.FindObjectsOfType <Rigidbody>();
        StringBuilder stringBuilder = new StringBuilder();

        stringBuilder.AppendLine("RigidBody");
        stringBuilder.AppendLine();
        StringBuilder stringBuilder2 = new StringBuilder();

        stringBuilder2.AppendLine("RigidBody");
        stringBuilder2.AppendLine();
        foreach (IGrouping <string, Rigidbody> item in from x in source
                 group x by TransformEx.GetRecursiveName(x.transform) into x
                 orderby x.Count() descending
                 select x)
        {
            stringBuilder.AppendFormat("{1:N0}\t{0} ({2:N0} awake) ({3:N0} kinematic) ({4:N0} non-discrete)", item.Key, item.Count(), item.Count((Rigidbody x) => !x.IsSleeping()), item.Count((Rigidbody x) => x.isKinematic), item.Count((Rigidbody x) => x.collisionDetectionMode != CollisionDetectionMode.Discrete));
            stringBuilder.AppendLine();
            foreach (Rigidbody item2 in item)
            {
                stringBuilder2.AppendFormat("{0} -{1}{2}{3}", item.Key, item2.isKinematic ? " KIN" : "", item2.IsSleeping() ? " SLEEP" : "", item2.useGravity ? " GRAVITY" : "");
                stringBuilder2.AppendLine();
                stringBuilder2.AppendFormat("Mass: {0}\tVelocity: {1}\tsleepThreshold: {2}", item2.mass, item2.velocity, item2.sleepThreshold);
                stringBuilder2.AppendLine();
                stringBuilder2.AppendLine();
            }
        }
        WriteTextToFile(targetFolder + "Physics.RigidBody.Objects.txt", stringBuilder.ToString());
        WriteTextToFile(targetFolder + "Physics.RigidBody.All.txt", stringBuilder2.ToString());
    }
Exemplo n.º 2
0
            public static RendererInstance From(Renderer renderer)
            {
                RendererInstance result = default(RendererInstance);

                result.IsVisible      = renderer.isVisible;
                result.CastShadows    = renderer.shadowCastingMode != ShadowCastingMode.Off;
                result.RecieveShadows = renderer.receiveShadows;
                result.Enabled        = renderer.enabled && renderer.gameObject.activeInHierarchy;
                result.Size           = renderer.bounds.size.magnitude;
                result.Distance       = Vector3.Distance(renderer.bounds.center, Camera.main.transform.position);
                result.MaterialCount  = renderer.sharedMaterials.Length;
                result.RenderType     = renderer.GetType().Name;
                BaseEntity baseEntity = GameObjectEx.ToBaseEntity(renderer.gameObject);

                if ((bool)baseEntity)
                {
                    result.EntityName = baseEntity.PrefabName;
                    if (baseEntity.net != null)
                    {
                        result.EntityId = baseEntity.net.ID;
                    }
                }
                else
                {
                    result.ObjectName = TransformEx.GetRecursiveName(renderer.transform);
                }
                if (renderer is MeshRenderer)
                {
                    result.BoneCount = 0;
                    MeshFilter component = renderer.GetComponent <MeshFilter>();
                    if ((bool)component)
                    {
                        result.ReadMesh(component.sharedMesh);
                    }
                }
                if (renderer is SkinnedMeshRenderer)
                {
                    SkinnedMeshRenderer skinnedMeshRenderer = renderer as SkinnedMeshRenderer;
                    result.ReadMesh(skinnedMeshRenderer.sharedMesh);
                    result.UpdateWhenOffscreen = skinnedMeshRenderer.updateWhenOffscreen;
                }
                if (renderer is ParticleSystemRenderer)
                {
                    ParticleSystem component2 = renderer.GetComponent <ParticleSystem>();
                    if ((bool)component2)
                    {
                        result.MeshName      = component2.name;
                        result.ParticleCount = component2.particleCount;
                    }
                }
                return(result);
            }
Exemplo n.º 3
0
 private void PutAnimatorToSleep()
 {
     if (!model || !model.animator)
     {
         Debug.LogWarning(TransformEx.GetRecursiveName(base.transform) + " has missing model/animator", base.gameObject);
         return;
     }
     model.animator.enabled = false;
     if (base.isServer)
     {
         SetFlag(Flags.Busy, false);
     }
     OnAnimatorDisabled();
 }
Exemplo n.º 4
0
        public static void ls(Arg args)
        {
            string text   = "";
            string filter = args.GetString(0);

            text = ((!currentDir) ? (text + "Listing .\n\n") : (text + "Listing " + TransformEx.GetRecursiveName(currentDir.transform) + "\n\n"));
            foreach (Transform item in (from x in GetCurrent()
                                        where string.IsNullOrEmpty(filter) || x.name.Contains(filter)
                                        select x).Take(40))
            {
                text += $"   {item.name} [{item.childCount}]\n";
            }
            text += "\n";
            args.ReplyWith(text);
        }
Exemplo n.º 5
0
    private static void DumpLODGroupTotals(string targetFolder)
    {
        LODGroup[]    source        = UnityEngine.Object.FindObjectsOfType <LODGroup>();
        StringBuilder stringBuilder = new StringBuilder();

        stringBuilder.AppendLine("LODGroups");
        stringBuilder.AppendLine();
        foreach (IGrouping <string, LODGroup> item in from x in source
                 group x by TransformEx.GetRecursiveName(x.transform) into x
                 orderby x.Count() descending
                 select x)
        {
            stringBuilder.AppendFormat("{1:N0}\t{0}", item.Key, item.Count());
            stringBuilder.AppendLine();
        }
        WriteTextToFile(targetFolder + "LODGroups.Objects.txt", stringBuilder.ToString());
    }
Exemplo n.º 6
0
    private static void DumpColliders(string targetFolder)
    {
        Collider[]    source        = UnityEngine.Object.FindObjectsOfType <Collider>();
        StringBuilder stringBuilder = new StringBuilder();

        stringBuilder.AppendLine("Physics Colliders");
        stringBuilder.AppendLine();
        foreach (IGrouping <string, Collider> item in from x in source
                 group x by TransformEx.GetRecursiveName(x.transform) into x
                 orderby x.Count() descending
                 select x)
        {
            stringBuilder.AppendFormat("{1:N0}\t{0} ({2:N0} triggers) ({3:N0} enabled)", item.Key, item.Count(), item.Count((Collider x) => x.isTrigger), item.Count((Collider x) => x.enabled));
            stringBuilder.AppendLine();
        }
        WriteTextToFile(targetFolder + "Physics.Colliders.Objects.txt", stringBuilder.ToString());
    }
Exemplo n.º 7
0
    public void CreateScreenshots()
    {
        RenderTexture renderTexture = new RenderTexture(width, height, 0);
        GameObject    gameObject    = new GameObject();
        Camera        camera        = gameObject.AddComponent <Camera>();

        camera.targetTexture   = renderTexture;
        camera.orthographic    = false;
        camera.fieldOfView     = fieldOfView;
        camera.nearClipPlane   = 0.1f;
        camera.farClipPlane    = 2000f;
        camera.cullingMask     = LayerMask.GetMask("TransparentFX");
        camera.clearFlags      = CameraClearFlags.Color;
        camera.backgroundColor = new Color(0f, 0f, 0f, 0f);
        camera.renderingPath   = RenderingPath.DeferredShading;
        Texture2D texture2D = new Texture2D(renderTexture.width, renderTexture.height, TextureFormat.ARGB32, false);

        foreach (Transform item in base.transform.Cast <Transform>())
        {
            PositionCamera(camera, item.gameObject);
            int layer = item.gameObject.layer;
            TransformEx.SetLayerRecursive(item.gameObject, 1);
            camera.Render();
            TransformEx.SetLayerRecursive(item.gameObject, layer);
            string recursiveName = TransformEx.GetRecursiveName(item);
            recursiveName        = recursiveName.Replace('/', '.');
            RenderTexture.active = renderTexture;
            texture2D.ReadPixels(new Rect(0f, 0f, renderTexture.width, renderTexture.height), 0, 0, false);
            RenderTexture.active = null;
            byte[] bytes         = texture2D.EncodeToPNG();
            string path          = string.Format(folder, recursiveName, item.name);
            string directoryName = Path.GetDirectoryName(path);
            if (!Directory.Exists(directoryName))
            {
                Directory.CreateDirectory(directoryName);
            }
            File.WriteAllBytes(path, bytes);
        }
        UnityEngine.Object.DestroyImmediate(texture2D, true);
        UnityEngine.Object.DestroyImmediate(renderTexture, true);
        UnityEngine.Object.DestroyImmediate(gameObject, true);
    }
Exemplo n.º 8
0
    private static void DumpAnimators(string targetFolder)
    {
        Animator[]    array         = UnityEngine.Object.FindObjectsOfType <Animator>();
        StringBuilder stringBuilder = new StringBuilder();

        stringBuilder.AppendLine("All animators");
        stringBuilder.AppendLine();
        Animator[] array2 = array;
        foreach (Animator animator in array2)
        {
            stringBuilder.AppendFormat("{1}\t{0}", TransformEx.GetRecursiveName(animator.transform), animator.enabled);
            stringBuilder.AppendLine();
        }
        WriteTextToFile(targetFolder + "UnityEngine.Animators.List.txt", stringBuilder.ToString());
        StringBuilder stringBuilder2 = new StringBuilder();

        stringBuilder2.AppendLine("All animators - grouped by object name");
        stringBuilder2.AppendLine();
        foreach (IGrouping <string, Animator> item in from x in array
                 group x by TransformEx.GetRecursiveName(x.transform) into x
                 orderby x.Count() descending
                 select x)
        {
            stringBuilder2.AppendFormat("{1:N0}\t{0}", TransformEx.GetRecursiveName(item.First().transform), item.Count());
            stringBuilder2.AppendLine();
        }
        WriteTextToFile(targetFolder + "UnityEngine.Animators.Counts.txt", stringBuilder2.ToString());
        StringBuilder stringBuilder3 = new StringBuilder();

        stringBuilder3.AppendLine("All animators - grouped by enabled/disabled");
        stringBuilder3.AppendLine();
        foreach (IGrouping <string, Animator> item2 in from x in array
                 group x by TransformEx.GetRecursiveName(x.transform, x.enabled ? "" : " (DISABLED)") into x
                 orderby x.Count() descending
                 select x)
        {
            stringBuilder3.AppendFormat("{1:N0}\t{0}", TransformEx.GetRecursiveName(item2.First().transform, item2.First().enabled ? "" : " (DISABLED)"), item2.Count());
            stringBuilder3.AppendLine();
        }
        WriteTextToFile(targetFolder + "UnityEngine.Animators.Counts.Enabled.txt", stringBuilder3.ToString());
    }
Exemplo n.º 9
0
        public static void cd(Arg args)
        {
            if (args.FullString == ".")
            {
                currentDir = null;
                args.ReplyWith("Changed to .");
                return;
            }
            if (args.FullString == "..")
            {
                if ((bool)currentDir)
                {
                    currentDir = (currentDir.transform.parent ? currentDir.transform.parent.gameObject : null);
                }
                currentDir = null;
                if ((bool)currentDir)
                {
                    args.ReplyWith("Changed to " + TransformEx.GetRecursiveName(currentDir.transform));
                }
                else
                {
                    args.ReplyWith("Changed to .");
                }
                return;
            }
            Transform transform = GetCurrent().FirstOrDefault((Transform x) => x.name.ToLower() == args.FullString.ToLower());

            if (transform == null)
            {
                transform = GetCurrent().FirstOrDefault((Transform x) => x.name.StartsWith(args.FullString, StringComparison.CurrentCultureIgnoreCase));
            }
            if ((bool)transform)
            {
                currentDir = transform.gameObject;
                args.ReplyWith("Changed to " + TransformEx.GetRecursiveName(currentDir.transform));
            }
            else
            {
                args.ReplyWith("Couldn't find \"" + args.FullString + "\"");
            }
        }