Exemplo n.º 1
0
        /// <summary>
        /// Called when the core has finished running and is released
        /// </summary>
        /// <param name="rCore"></param>
        private void OnCoreReleased(ILifeCore rCore, object rUserData = null)
        {
            TriggerAreaCore lTriggerAreaCore = rCore as TriggerAreaCore;

            if (lTriggerAreaCore != null && lTriggerAreaCore != null)
            {
                mTriggerAreaCores.Remove(lTriggerAreaCore);
            }

            if (mTriggerAreaCores == null || mTriggerAreaCores.Count == 0)
            {
                base.Deactivate();
            }

            base.Deactivate();
        }
Exemplo n.º 2
0
 /// <summary>
 /// Called when the object is selected in the editor
 /// </summary>
 private void OnEnable()
 {
     // Grab the serialized objects
     mTarget   = (TriggerAreaCore)target;
     mTargetSO = new SerializedObject(target);
 }
Exemplo n.º 3
0
        /// <summary>
        /// Called when the action is first activated
        /// <param name="rPreviousSpellActionState">State of the action prior to this one activating</param>
        public override void Activate(int rPreviousSpellActionState = -1, object rData = null)
        {
            base.Activate(rPreviousSpellActionState, rData);

            if (mInstances != null && mInstances.Count > 0)
            {
                if (_Spell.ShowDebug)
                {
                    for (int i = 0; i < mInstances.Count; i++)
                    {
                        mInstances[i].hideFlags = HideFlags.None;
                    }
                }

                if (mTriggerAreaCores == null)
                {
                    mTriggerAreaCores = new List <TriggerAreaCore>();
                }

                for (int i = 0; i < mInstances.Count; i++)
                {
                    //// Ensure we have a position
                    //Vector3 lPosition = Vector3.zero;
                    //if (_Spell.Data.Positions != null && _Spell.Data.Positions.Count > 0)
                    //{
                    //    lPosition = _Spell.Data.Positions[0];
                    //}

                    //if (lPosition.sqrMagnitude == 0)
                    //{
                    //    OnFailure();
                    //    return;
                    //}

                    Vector3 lForward = _Spell.Owner.transform.forward;
                    //if (_Spell.Data.Forwards != null && _Spell.Data.Forwards.Count > 0)
                    //{
                    //    lForward = _Spell.Data.Forwards[0];
                    //}

                    // Set the basics
                    //mInstances[i].transform.parent = null;
                    mInstances[i].transform.localScale = Size;
                    //mInstance.transform.position = lPosition;
                    mInstances[i].transform.rotation = Quaternion.LookRotation(lForward, _Spell.Owner.transform.up);

                    // Now we want to define the area
                    TriggerAreaCore lTriggerAreaCore = mInstances[i].GetComponent <TriggerAreaCore>();
                    if (lTriggerAreaCore != null)
                    {
                        lTriggerAreaCore.Age = 0f;

                        if (MaxAge > 0f)
                        {
                            lTriggerAreaCore.MaxAge = MaxAge;
                        }

                        lTriggerAreaCore.Prefab              = _Prefab;
                        lTriggerAreaCore.OnReleasedEvent     = OnCoreReleased;
                        lTriggerAreaCore.OnTriggerEnterEvent = OnAreaEnter;
                        lTriggerAreaCore.OnTriggerStayEvent  = OnAreaStay;
                        lTriggerAreaCore.OnTriggerExitEvent  = OnAreaExit;
                        lTriggerAreaCore.Play();

                        mTriggerAreaCores.Add(lTriggerAreaCore);
                    }

                    // Determine how we release the spell
                    if (_Spell.ReleaseFromCamera && Camera.main != null)
                    {
                        mInstances[i].transform.rotation = Camera.main.transform.rotation;
                    }
                    else if (ReleaseFromCameraForward && Camera.main != null)
                    {
                        mInstances[i].transform.rotation = Camera.main.transform.rotation;
                    }
                }
            }
            else
            {
                Deactivate();
            }

            // Determine if we're returnning immediately
            if (_DeactivationIndex == EnumSpellActionDeactivation.IMMEDIATELY)
            {
                mIsShuttingDown = true;
                State           = EnumSpellActionState.SUCCEEDED;
            }
        }