Exemple #1
0
        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);
        }
Exemple #3
0
        public void ManualExitArea(AteObject triggerer)
        {
            if (AreExitBehavioursEmpty)
            {
                return;
            }

            AttemptExitTriggers(triggerer);
        }
Exemple #4
0
        public void ManualEnterArea(AteObject triggerer)
        {
            if (AreEnterBehavioursEmpty)
            {
                return;
            }

            AttemptEnterTriggers(triggerer);
        }
Exemple #5
0
 /// <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);
         }
     }
 }
Exemple #6
0
 /// <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;
         }
     }
 }
Exemple #7
0
        private void AttemptEnterTriggers(AteObject triggerer)
        {
            if (!GameObjectIsAllowedType(triggerer))
            {
                return;
            }

            if (!_currentlyInTrigger.Contains(triggerer))
            {
                _currentlyInTrigger.Add(triggerer);
            }

            TriggerBehaviourList(behavioursOnEnter, triggerer);
        }
Exemple #8
0
        /// <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();
            }
        }
Exemple #10
0
        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);
            }
        }
Exemple #12
0
        /// <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;
            }
        }
Exemple #13
0
        /// <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();
            }
        }
Exemple #15
0
        void OnTriggerExit(UnityEngine.Collider theCollider)
        {
            if (AreExitBehavioursEmpty)
            {
                return;
            }

            if (areaType != AreaType.UnityTriggers)
            {
                return;
            }

            AteObject triggerer = theCollider.gameObject.AteObject();

            if (triggerer == null)
            {
                return;
            }

            AttemptExitTriggers(triggerer);
        }
Exemple #16
0
        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);
            }
        }
Exemple #17
0
        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;
 }
Exemple #19
0
 /// <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);
 }
Exemple #21
0
 /// <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)
 {
 }
Exemple #22
0
 protected abstract void OnRequestedPlaying(AteObject triggerer);