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()); }
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); }
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(); }
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); }
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()); }
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()); }
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); }
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()); }
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 + "\""); } }