private static TriggerZonePhysics CreateTriggerPhysic()
        {
            GameObject         triggerGameObject = CreateGameObject("Trigger Physic", typeof(TriggerZonePhysics));
            TriggerZonePhysics trigger           = triggerGameObject.GetComponent <TriggerZonePhysics>();

            ExtGameObjectIcon.SetIcon(triggerGameObject, ExtGameObjectIcon.Icon.CircleYellow);

            SerializedObject triggerObject = new SerializedObject(trigger);
            BoxCollider      collider      = trigger.gameObject.AddComponent <BoxCollider>();

            collider.isTrigger = true;
            ExampleAction action = AddActionGuid(trigger);

            LinkActionToTriggerZoneArray(trigger, triggerObject, action);

            return(trigger);
        }
        private static void PopulateSystem()
        {
            if (GameObject.FindObjectOfType <DependencyInjectorSingleton>())
            {
                Debug.LogError("There is already a DependencyInjectorSingleton in the scene!");
                return;
            }

            GameObject systemParent = new GameObject("[Action Trigger] System");
            GameObject dependencyInjectorSingleton = new GameObject("DependencyInjectorSingleton    (must be only one)", typeof(DependencyInjectorSingleton));

            dependencyInjectorSingleton.transform.SetParent(systemParent.transform);
            GameObject entityLister = new GameObject("Entity Lister      (keep track of every EntityBase in every Scenes)", typeof(EntityListerInScenes));

            entityLister.transform.SetParent(systemParent.transform);
            Undo.RegisterCreatedObjectUndo(systemParent, systemParent.name);

            Selection.activeGameObject = null;
            TriggerZoneNoPhysics zoneNoPhysics = CreateTrigger();

            zoneNoPhysics.gameObject.name = "[Action Trigger] Zone With Custom OnEnter/Exit Calculation";

            Selection.activeGameObject = null;
            TriggerZonePhysics zonePhysics = CreateTriggerPhysic();

            zonePhysics.gameObject.name     = "[Action Trigger] Zone using OnEnter/Exit of the physic engine";
            zonePhysics.transform.position += new Vector3(3, 0, 0);

            Selection.activeGameObject = null;
            Entity entity = CreateEntity();

            entity.gameObject.name     = "[Action Trigger] Entity";
            entity.transform.position += new Vector3(0, 0, 3);

            Selection.activeGameObject = null;
            Entity entityPhysic = CreateEntityPhysic();

            entityPhysic.gameObject.name     = "[Action Trigger] Entity with RigidBody";
            entityPhysic.transform.position += new Vector3(3, 0, 3);
        }