UnityEditor.LayerMatrixGUI.DoGUI C# (CSharp) Method

DoGUI() public static method

public static DoGUI ( string title, bool &show, Vector2 &scrollPos, GetValueFunc getValue, SetValueFunc setValue ) : void
title string
show bool
scrollPos Vector2
getValue GetValueFunc
setValue SetValueFunc
return void
        public static void DoGUI(string title, ref bool show, ref Vector2 scrollPos, GetValueFunc getValue, SetValueFunc setValue)
        {
            int num5 = 0;
            for (int i = 0; i < 0x20; i++)
            {
                if (LayerMask.LayerToName(i) != string.Empty)
                {
                    num5++;
                }
            }
            GUILayout.BeginHorizontal(new GUILayoutOption[0]);
            GUILayout.Space(0f);
            show = EditorGUILayout.Foldout(show, title);
            GUILayout.EndHorizontal();
            if (show)
            {
                GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.MinHeight(120f), GUILayout.MaxHeight((float) (100 + ((num5 + 1) * 0x10))) };
                scrollPos = GUILayout.BeginScrollView(scrollPos, options);
                Rect rect = GUILayoutUtility.GetRect((float) ((0x10 * num5) + 100), 100f);
                Rect topmostRect = GUIClip.topmostRect;
                Vector2 vector = GUIClip.Unclip(new Vector2(rect.x, rect.y));
                int num7 = 0;
                for (int j = 0; j < 0x20; j++)
                {
                    if (LayerMask.LayerToName(j) != string.Empty)
                    {
                        float num9 = (130 + ((num5 - num7) * 0x10)) - (topmostRect.width + scrollPos.x);
                        if (num9 < 0f)
                        {
                            num9 = 0f;
                        }
                        Vector3 pos = new Vector3(((((130 + (0x10 * (num5 - num7))) + vector.y) + vector.x) + scrollPos.y) - num9, vector.y + scrollPos.y, 0f);
                        GUI.matrix = Matrix4x4.TRS(pos, Quaternion.identity, Vector3.one) * Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(0f, 0f, 90f), Vector3.one);
                        if (SystemInfo.graphicsDeviceVersion.StartsWith("Direct3D 9.0"))
                        {
                            GUI.matrix *= Matrix4x4.TRS(new Vector3(-0.5f, -0.5f, 0f), Quaternion.identity, Vector3.one);
                        }
                        GUI.Label(new Rect((2f - vector.x) - scrollPos.y, scrollPos.y - num9, 100f, 16f), LayerMask.LayerToName(j), "RightLabel");
                        num7++;
                    }
                }
                GUI.matrix = Matrix4x4.identity;
                num7 = 0;
                for (int k = 0; k < 0x20; k++)
                {
                    if (LayerMask.LayerToName(k) != string.Empty)
                    {
                        int num11 = 0;
                        Rect rect3 = GUILayoutUtility.GetRect((float) ((30 + (0x10 * num5)) + 100), 16f);
                        GUI.Label(new Rect(rect3.x + 30f, rect3.y, 100f, 16f), LayerMask.LayerToName(k), "RightLabel");
                        for (int m = 0x1f; m >= 0; m--)
                        {
                            if (LayerMask.LayerToName(m) != string.Empty)
                            {
                                if (num11 < (num5 - num7))
                                {
                                    GUIContent content = new GUIContent(string.Empty, LayerMask.LayerToName(k) + "/" + LayerMask.LayerToName(m));
                                    bool flag = getValue(k, m);
                                    bool val = GUI.Toggle(new Rect((130f + rect3.x) + (num11 * 0x10), rect3.y, 16f, 16f), flag, content);
                                    if (val != flag)
                                    {
                                        setValue(k, m, val);
                                    }
                                }
                                num11++;
                            }
                        }
                        num7++;
                    }
                }
                GUILayout.EndScrollView();
            }
        }

Usage Example

        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            DrawPropertiesExcluding(serializedObject, "m_JobOptions");

            GUILayout.BeginHorizontal();
            GUILayout.Space(0);
            EditorGUILayout.PropertyField(m_JobOptions, Styles.kJobOptionsLabel, true);
            GUILayout.EndHorizontal();

            m_GizmoSettingsFade.value = m_GizmoSettingsFade.target = EditorGUILayout.Foldout(m_GizmoSettingsFade.target, Styles.kGizmosLabel, true);

            if (m_GizmoSettingsFade.value)
            {
                if (EditorGUILayout.BeginFadeGroup(m_GizmoSettingsFade.faded))
                {
                    EditorGUI.indentLevel++;
                    EditorGUILayout.PropertyField(m_AlwaysShowColliders);
                    EditorGUILayout.PropertyField(m_ShowColliderSleep);
                    EditorGUILayout.PropertyField(m_ColliderAwakeColor);
                    EditorGUILayout.PropertyField(m_ColliderAsleepColor);
                    EditorGUILayout.PropertyField(m_ShowColliderContacts);
                    EditorGUILayout.Slider(m_ContactArrowScale, 0.1f, 1.0f, m_ContactArrowScale.displayName);
                    EditorGUILayout.PropertyField(m_ColliderContactColor);
                    EditorGUILayout.PropertyField(m_ShowColliderAABB);
                    EditorGUILayout.PropertyField(m_ColliderAABBColor);
                    EditorGUI.indentLevel--;
                }
                EditorGUILayout.EndFadeGroup();
            }
            serializedObject.ApplyModifiedProperties();

            LayerMatrixGUI.DoGUI(Styles.kLayerCollisionMatrixLabel, ref m_ShowLayerCollisionMatrix, GetValue, SetValue);
        }
All Usage Examples Of UnityEditor.LayerMatrixGUI::DoGUI
LayerMatrixGUI