示例#1
0
        private void OnEnable()
        {
#if UNITY_2019_1_OR_NEWER || UNITY_2019_OR_NEWER
            string windowLayoutPath = "Packages/com.utj.framedebuggersave/Editor/UI/UXML/FrameEventsViewer.uxml";
            string shaderParamPath  = "Packages/com.utj.framedebuggersave/Editor/UI/UXML/ShaderParameterTemplate.uxml";
            string namedValuePath   = "Packages/com.utj.framedebuggersave/Editor/UI/UXML/NamedValueTemplate.uxml";
#else
            lastHeight = -1.0f;
            string windowLayoutPath = "Packages/com.utj.framedebuggersave/Editor/UI/UXML2018/FrameEventsViewer.uxml";
            string shaderParamPath  = "Packages/com.utj.framedebuggersave/Editor/UI/UXML2018/ShaderParameterTemplate.uxml";
            string namedValuePath   = "Packages/com.utj.framedebuggersave/Editor/UI/UXML2018/NamedValueTemplate.uxml";
#endif
            this.variantFlag = (ShaderVariantCollectionCreator.EFlag)(-1);
            this.captureFlag = (FrameInfoCrawler.CaptureFlag)(-1);


            var tree          = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(windowLayoutPath);
            var visualElement = CloneTree(tree);

            this.rootVisualElement.Add(visualElement);
            this.textureLoader       = new TextureLoader();
            this.shaderParamTemplate = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(shaderParamPath);

            this.namedValueParamTemplate = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(namedValuePath);

#if !UNITY_2019_1_OR_NEWER && !UNITY_2019_OR_NEWER
            InitIMGUIArea();
#else
            this.InitNewCaptureUI();
            this.InitShaderVariantCollectionUI();
#endif
            this.RefreshCaptures();
        }
示例#2
0
 private void OnGUINewCapture()
 {
     captureFlag = (FrameInfoCrawler.CaptureFlag)EditorGUILayout.EnumFlagsField(captureFlag);
     if (GUILayout.Button("capture"))
     {
         frameDebugSave.Execute(this.captureFlag, this.RefreshCaptures);
     }
 }
示例#3
0
        private void InitNewCaptureUI()
        {
            var enumField = this.rootVisualElement.Q <EnumFlagsField>("CaptureFlag");

            enumField.Init(this.captureFlag);
            enumField.RegisterValueChangedCallback((val) =>
            {
                this.captureFlag = (FrameInfoCrawler.CaptureFlag)val.newValue;
            });
            var btn = this.rootVisualElement.Q <Button>("CaptureBtn");

            btn.clickable.clicked += () =>
            {
                frameDebugSave.Execute(this.captureFlag, () => {
                    EditorUtility.DisplayDialog("Saved", "Saved FrameDebugger Information", "ok");
                    this.RefreshCaptures();
                });
            };
        }
示例#4
0
        public void Execute(FrameInfoCrawler.CaptureFlag flag, System.Action endCall = null)
        {
            this.captureFlag = flag;
            if (this.reflectionCache == null)
            {
                this.reflectionCache = new ReflectionCache();
            }
            this.OnEndAct = endCall;

            var frameDebuggeUtil = reflectionCache.GetTypeObject("UnityEditorInternal.FrameDebuggerUtility");

            // show FrameDebuggerWindow
            var    frameDebuggerWindow = reflectionCache.GetTypeObject("UnityEditor.FrameDebuggerWindow");
            object windowObj           = frameDebuggerWindow.CallMethod <object>("ShowFrameDebuggerWindow", null, null);

            frameDebuggerWindow.CallMethod <object>("EnableIfNeeded", windowObj, null);
            if (crawler == null)
            {
                crawler = new FrameInfoCrawler(this.reflectionCache);
            }
            crawler.Request(flag, EndCrawler);
        }