public override void OnInspectorGUI()
        {
            EntityObserver entityObserver = target as EntityObserver;

            if (mCurrSelectedEntity != entityObserver)
            {
                Array.Clear(mComponentsFoldOutInfo, 0, mComponentsFoldOutInfo.Length);

                mCurrSelectedEntity = entityObserver;
            }

            IEntity entity = entityObserver.Entity;

            EditorGUILayout.BeginVertical(GUI.skin.box);

            EditorGUILayout.LabelField("Entity Info:", EditorStyles.boldLabel);

            EditorGUILayout.LabelField("Id", entity.Id.ToString());
            EditorGUILayout.LabelField("Name", entity.Name);

            EditorGUILayout.Separator();
            GUILayout.Space(20.0f);

            // display all components that are attached to the entity
            IComponentIterator componentIter = entity.GetComponentsIterator();

            int i = 0;

            while (componentIter.MoveNext())
            {
                _displayComponent(componentIter.Get(), i++, ref mComponentsFoldOutInfo);
            }

            EditorGUILayout.EndVertical();

            Repaint();
        }