public override void OnInspectorGUI()
        {
            if (IsRootCanvas && j_Canvas != null)
            {
                ShowMRTKButton();

                List <Graphic> graphics = GetGraphicsWhichRequireScaleMeshEffect(targets);

                if (graphics.Count != 0)
                {
                    EditorGUILayout.HelpBox($"Canvas contains {graphics.Count} {typeof(Graphic).Name}(s) which require a {typeof(JMRScaleMeshEffect).Name} to work with the {JMRStandardShaderUtility.StandardShaderName} shader.", MessageType.Warning);
                    if (GUILayout.Button($"Add {typeof(JMRScaleMeshEffect).Name}(s)"))
                    {
                        foreach (var graphic in graphics)
                        {
                            Undo.AddComponent <JMRScaleMeshEffect>(graphic.gameObject);
                        }
                    }
                }

                EditorGUILayout.Space();

                if (!IsCanvasHasScene)
                {
                    return;
                }

                if (IsJMRToolkitConfigured)
                {
                    if (j_Canvas.worldCamera == null)
                    {
                        SetRaycastCameraToCanvas();
                    }
                }
                else
                {
                    EditorGUILayout.HelpBox($"Input Manager not present in scene. Event camera needed in scene to work canvas properly", MessageType.Error);
                    if (j_Timer >= 0.5f)
                    {
                        if (!j_IPManager)
                        {
                            j_IPManager = FindObjectOfType <JMRInputManager>();
                        }

                        IsJMRToolkitConfigured = (j_IPManager != null) ? true : false;
                        j_Timer = 0;
                    }
                    j_Timer += Time.deltaTime;
                }
            }

            if (j_InternalEditor != null)
            {
                j_InternalEditor.OnInspectorGUI();
            }
        }
        private void OnEnable()
        {
            j_Timer            = 0;
            j_CanvasEditorType = Type.GetType("UnityEditor.CanvasEditor, UnityEditor");

            if (j_CanvasEditorType != null)
            {
                j_InternalEditor = CreateEditor(targets, j_CanvasEditorType);
                j_Canvas         = target as Canvas;
                IsRootCanvas     = j_Canvas.transform.parent == null || j_Canvas.transform.parent.GetComponentInParent <Canvas>() == null;
                IsCanvasHasScene = j_Canvas.gameObject.scene.IsValid();
            }

            // Find id the input manager in scene
            j_IPManager            = FindObjectOfType <JMRInputManager>();
            IsJMRToolkitConfigured = (j_IPManager != null) ? true : false;
        }