private void ManualOnEnable()
        {
            stats = target as Stats;

            statsNetwork = stats.GetComponent <StatsNetwork>();
            hasComponent = statsNetwork != null;

            if (hasComponent)
            {
                statsAsset2 = DatabaseStatsEditor.GetStatsAsset();
                attrsAsset2 = DatabaseStatsEditor.GetAttrsAsset();

                serializedStatObject = new SerializedObject(statsNetwork);

                this.spStats      = serializedStatObject.FindProperty("networkStats");
                this.spAttributes = serializedStatObject.FindProperty("networkAttributes");

                SyncStats();
                SyncAttributes();
            }
        }
        public override void OnInspectorGUI()
        {
            if (serializedObject == null)
            {
                return;
            }

            base.OnInspectorGUI();
            stats = target as Stats;

            bool statsChanged = this.statsAsset2 == null ? false : this.statsAssetHash2 != this.statsAsset2.GetHashCode();
            bool attrsChanged = this.attrsAsset2 == null ? false : this.attrsAssetHash2 != this.attrsAsset2.GetHashCode();

            if (!initialized || statsChanged || attrsChanged)
            {
                this.ManualOnEnable();
                initialized = true;
                serializedObject.ApplyModifiedProperties();
            }

            if (this.section == null)
            {
                this.section = new Section("Network Settings", "ActionNetwork.png", this.Repaint);
            }

            bool hasChanged = false;

            this.section.PaintSection();
            using (var group = new EditorGUILayout.FadeGroupScope(this.section.state.faded))
            {
                if (group.visible)
                {
                    EditorGUILayout.BeginVertical(CoreGUIStyles.GetBoxExpanded());

                    EditorGUI.BeginChangeCheck();
                    hasComponent = EditorGUILayout.Toggle(GUI_SYNC, hasComponent);
                    hasChanged   = EditorGUI.EndChangeCheck();

                    if (statsNetwork != null)
                    {
                        EditorGUI.BeginChangeCheck();
                        PaintAttributes();
                        EditorGUILayout.Space();
                        PaintStats();
                        if (EditorGUI.EndChangeCheck())
                        {
                            serializedStatObject.ApplyModifiedPropertiesWithoutUndo();
                        }
                    }

                    EditorGUILayout.EndVertical();
                }
            }

            if (hasChanged)
            {
                if (statsNetwork != null)
                {
                    DestroyImmediate(statsNetwork, true);
                    statsNetwork = null;
                    initialized  = false;
                }
                else
                {
                    statsNetwork = stats.gameObject.GetComponent <StatsNetwork>() ?? stats.gameObject.AddComponent <StatsNetwork>();
                    statsNetwork.SetupPhotonView();

                    serializedStatObject = new UnityEditor.SerializedObject(statsNetwork);

                    serializedStatObject.ApplyModifiedProperties();
                    serializedStatObject.Update();

                    hasComponent = true;
                }
                hasChanged = false;
            }
            EditorGUILayout.Space();
        }