/// <summary> /// Add a movable shape to the TriggerZone /// </summary> /// <param name="trigger"></param> /// <returns></returns> private static T AddZoneShape <T>(TriggerZoneNoPhysics trigger, SerializedObject triggerObject) where T : MovableShape { T shape = trigger.gameObject.AddComponent(typeof(T)) as T; ExtSerializedProperties.SetObjectReferenceValueIfEmpty <T>(triggerObject.GetPropertie("_shape"), trigger.transform); return(shape); }
private static TriggerZoneNoPhysics CreateTrigger() { GameObject triggerGameObject = CreateGameObject("Trigger No Physic", typeof(TriggerZoneNoPhysics)); TriggerZoneNoPhysics trigger = triggerGameObject.GetComponent <TriggerZoneNoPhysics>(); ExtGameObjectIcon.SetIcon(triggerGameObject, ExtGameObjectIcon.Icon.CircleYellow); SerializedObject triggerObject = new SerializedObject(trigger); MovableCube cube = AddZoneShape <MovableCube>(trigger, triggerObject); 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); }