private void OnAteCollisionEnded(EventData_Collision eventData) { if (AreExitBehavioursEmpty) { return; } if (areaType != AreaType.CollisionArea) { return; } if (collisionArea == null) { return; } if (eventData.HitArea == null) { return; } if (collisionArea.InstanceID != eventData.HitArea.InstanceID) { return; } AteObject triggerer = eventData.HittingArea.gameObject.AteObject(); if (triggerer == null) { return; } AttemptExitTriggers(triggerer); }
public override void OnInspectorGUI() { _target = (AteObject)target; _target.DrawInspector(); EditorHelper.SetDirtyIfChanged(_target); }
public void ManualExitArea(AteObject triggerer) { if (AreExitBehavioursEmpty) { return; } AttemptExitTriggers(triggerer); }
public void ManualEnterArea(AteObject triggerer) { if (AreEnterBehavioursEmpty) { return; } AttemptEnterTriggers(triggerer); }
/// <summary> /// Calls RequestPlaying() on all Ready _behaviours. /// </summary> private void OnRequestedPlaying_Simultaneous(AteObject triggerer) { for (int i = 0; i < _behaviours.Count; i++) { if (_behaviours[i].IsReady) { _behaviours[i].RequestPlaying(triggerer); } } }
/// <summary> /// Calls RequestPlaying() on the first Ready _behaviour. /// </summary> private void OnRequestedPlaying_OneAtATime(AteObject triggerer) { for (int i = 0; i < _behaviours.Count; i++) { if (_behaviours[i].IsReady) { _behaviours[i].RequestPlaying(triggerer); break; } } }
private void AttemptEnterTriggers(AteObject triggerer) { if (!GameObjectIsAllowedType(triggerer)) { return; } if (!_currentlyInTrigger.Contains(triggerer)) { _currentlyInTrigger.Add(triggerer); } TriggerBehaviourList(behavioursOnEnter, triggerer); }
/// <summary> /// Requests putting the FSM into Playing state. /// Only works if FSM is in Ready state. /// </summary> public void RequestPlaying(AteObject triggerer) { if (!isActive && cancelRequestsWhileInactive) { return; } //if (IsReady) { _playsRequested++; _requestedPlaying = true; OnRequestedPlaying(triggerer); } }
/// <summary> /// Draws the inspector. /// Child classes overriding this should call base.DrawInspector() at the top. /// </summary> public virtual void DrawInspector() { // Shouldn't happen if designers are using the custom add/remove buttons if (_myObject == null) { _myObject = gameObject.GetComponent <AteObject> () as AteObject; } if (_myObject == null) { return; } if (_myObject.CanRemoveComponents()) { DrawRemoveOption(); } }
private bool GameObjectIsAllowedType(AteObject theGameObject) { //TODO: This is a bit hacky and specific, will be confusing for designers. if (triggeredByTypes == null) { return(true); } if (triggeredByTypes.Count <= 0) { return(true); } if (triggeredByTypes.Contains(theGameObject.type)) { return(true); } return(false); }
void OnTriggerExit(Collider theCollider) { #if UNITY_EDITOR Debug.LogError("Trigger_InArea_SubTrigger is obsolete. Use ATEColliders with CollisionDetectors on object: " + gameObject.name); #endif if (toTrigger == null) { #if UNITY_EDITOR Debug.LogError("SubTrigger attempted OnTriggerEnter with no toTrigger object."); #endif return; } AteObject triggerer = theCollider.gameObject.AteObject(); if (triggerer != null) { toTrigger.ManualExitArea(triggerer); } }
/// <summary> /// Called when parent class had a request to play. /// If inactive and cancelRequestsWhileInactive is true, won't be called. /// </summary> protected override void OnRequestedPlaying(AteObject triggerer) { //TODO: HACK way to switch targets //TODO: HACK way to switch targets //TODO: HACK way to switch targets switch (destroyType) { case DestroyType.Target: // Target should be set by designer already break; case DestroyType.Self: targetGameObject = gameObject; break; case DestroyType.Triggerer: targetGameObject = triggerer == null ? null : triggerer.gameObject; break; } }
/// <summary> /// Called when parent class had a request to play. /// If inactive and cancelRequestsWhileInactive is true, won't be called. /// </summary> protected override void OnRequestedPlaying(AteObject triggerer) { _lastTriggerer = triggerer; switch (sequenceType) { case SequenceType.Simultaneous: OnRequestedPlaying_Simultaneous(triggerer); break; case SequenceType.RapidInOrder: OnRequestedPlaying_RapidInOrder(triggerer); break; case SequenceType.OneAtATime: case SequenceType.OneAtATime_AutomaticPlayReady: OnRequestedPlaying_OneAtATime(triggerer); break; } }
/// <summary> /// For when this instance is reset. Used to automatically /// add this component to MyObject. /// </summary> private void Reset() { AteObject myObj = gameObject.GetComponent <AteObject> () as AteObject; // Should never happen if (myObj == null) { return; } myObj.AddComponent_ByReference(this); EditorUtility.SetDirty(myObj); // If it is a scene object and the application isn't playing if (!string.IsNullOrEmpty(myObj.gameObject.scene.name) && !Application.isPlaying) { EditorApplication.MarkSceneDirty(); } }
void OnTriggerExit(UnityEngine.Collider theCollider) { if (AreExitBehavioursEmpty) { return; } if (areaType != AreaType.UnityTriggers) { return; } AteObject triggerer = theCollider.gameObject.AteObject(); if (triggerer == null) { return; } AttemptExitTriggers(triggerer); }
private void TriggerBehaviourList(List <TriggeredBehaviour> behaviours, AteObject triggerer) { if (behaviours == null) { return; } if (behaviours.Count <= 0) { return; } for (int i = 0; i < behaviours.Count; i++) { if (behaviours[i] == null) { continue; } behaviours[i].RequestPlaying(triggerer); } }
private void AttemptExitTriggers(AteObject triggerer) { if (AreExitBehavioursEmpty) { return; } if (behavioursOnExit.Count == 0) { return; } if (!GameObjectIsAllowedType(triggerer)) { return; } if (_currentlyInTrigger.Contains(triggerer)) { _currentlyInTrigger.Remove(triggerer); } TriggerBehaviourList(behavioursOnExit, triggerer); }
public void SetMyObject(AteObject myObject) { _myObject = myObject; }
/// <summary> /// Currently does nothing. RequestPlaying() is handled in OnUpdatePlaying_RapidInOrder(). /// </summary> private void OnRequestedPlaying_RapidInOrder(AteObject triggerer) { }
/// <summary> /// Called when parent class had a request to play. /// If inactive and cancelRequestsWhileInactive is true, won't be called. /// </summary> protected override void OnRequestedPlaying(AteObject triggerer) { Debug.Log("<color=maroon>Projectile Hit: </color>" + name + " hit by -> " + triggerer.name); }
/// <summary> /// Called when parent class had a request to play. /// If inactive and cancelRequestsWhileInactive is true, won't be called. /// </summary> protected override void OnRequestedPlaying(AteObject triggerer) { }
protected abstract void OnRequestedPlaying(AteObject triggerer);