Пример #1
0
 public static RenderInfo.RendererInstance From(Renderer renderer)
 {
     RenderInfo.RendererInstance rendererInstance = new RenderInfo.RendererInstance();
     rendererInstance.IsVisible      = renderer.get_isVisible();
     rendererInstance.CastShadows    = renderer.get_shadowCastingMode() > 0;
     rendererInstance.RecieveShadows = renderer.get_receiveShadows();
     rendererInstance.Enabled        = renderer.get_enabled() && ((Component)renderer).get_gameObject().get_activeInHierarchy();
     ref RenderInfo.RendererInstance local1 = ref rendererInstance;
Пример #2
0
            public static RenderInfo.RendererInstance From(Renderer renderer)
            {
                RenderInfo.RendererInstance length = new RenderInfo.RendererInstance()
                {
                    IsVisible      = renderer.isVisible,
                    CastShadows    = renderer.shadowCastingMode != ShadowCastingMode.Off,
                    RecieveShadows = renderer.receiveShadows,
                    Enabled        = (!renderer.enabled ? false : renderer.gameObject.activeInHierarchy),
                    Size           = renderer.bounds.size.magnitude
                };
                Bounds bound = renderer.bounds;

                length.Distance      = Vector3.Distance(bound.center, Camera.main.transform.position);
                length.MaterialCount = (int)renderer.sharedMaterials.Length;
                length.RenderType    = renderer.GetType().Name;
                BaseEntity baseEntity = renderer.gameObject.ToBaseEntity();

                if (!baseEntity)
                {
                    length.ObjectName = renderer.transform.GetRecursiveName("");
                }
                else
                {
                    length.EntityName = baseEntity.PrefabName;
                    if (baseEntity.net != null)
                    {
                        length.EntityId = baseEntity.net.ID;
                    }
                }
                if (renderer is MeshRenderer)
                {
                    length.BoneCount = 0;
                    MeshFilter component = renderer.GetComponent <MeshFilter>();
                    if (component)
                    {
                        length.ReadMesh(component.sharedMesh);
                    }
                }
                if (renderer is SkinnedMeshRenderer)
                {
                    SkinnedMeshRenderer skinnedMeshRenderer = renderer as SkinnedMeshRenderer;
                    length.ReadMesh(skinnedMeshRenderer.sharedMesh);
                    length.UpdateWhenOffscreen = skinnedMeshRenderer.updateWhenOffscreen;
                }
                if (renderer is ParticleSystemRenderer)
                {
                    ParticleSystem particleSystem = renderer.GetComponent <ParticleSystem>();
                    if (particleSystem)
                    {
                        length.MeshName      = particleSystem.name;
                        length.ParticleCount = particleSystem.particleCount;
                    }
                }
                return(length);
            }
Пример #3
0
        public static void GenerateReport()
        {
            M0[] objectsOfType = Object.FindObjectsOfType <Renderer>();
            List <RenderInfo.RendererInstance> rendererInstanceList = new List <RenderInfo.RendererInstance>();

            foreach (Renderer renderer in (Renderer[])objectsOfType)
            {
                RenderInfo.RendererInstance rendererInstance = RenderInfo.RendererInstance.From(renderer);
                rendererInstanceList.Add(rendererInstance);
            }
            string path     = string.Format(Application.get_dataPath() + "/../RenderInfo-{0:yyyy-MM-dd_hh-mm-ss-tt}.txt", (object)DateTime.Now);
            string contents = JsonConvert.SerializeObject((object)rendererInstanceList, (Formatting)1);

            File.WriteAllText(path, contents);
            string fileName  = Application.get_streamingAssetsPath() + "/RenderInfo.exe";
            string arguments = "\"" + path + "\"";

            Debug.Log((object)("Launching " + fileName + " " + arguments));
            Process.Start(fileName, arguments);
        }