Exemple #1
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)
        {
            // Ensure we don't parent to the target
            ParentToTarget = false;

            // Grab an instance from the pool
            base.Activate(rPreviousSpellActionState, rData);

            // Set the material
            if (mInstances != null && mInstances.Count > 0)
            {
                mSelectorCore = mInstances[0].GetComponent <SelectPositionCore>();
                if (mSelectorCore != null)
                {
                    mSelectorCore.Age               = 0f;
                    mSelectorCore.MaxAge            = 0f;
                    mSelectorCore.Prefab            = _Prefab;
                    mSelectorCore.Owner             = _Spell.Owner;
                    mSelectorCore.InputSource       = _Spell.SpellInventory._InputSource;
                    mSelectorCore.MinDistance       = MinDistance;
                    mSelectorCore.MaxDistance       = MaxDistance;
                    mSelectorCore.Radius            = Radius;
                    mSelectorCore.UseMouse          = UseMouse;
                    mSelectorCore.CollisionLayers   = CollisionLayers;
                    mSelectorCore.Tags              = Tags;
                    mSelectorCore.ActionAlias       = ActionAlias;
                    mSelectorCore.CancelActionAlias = CancelActionAlias;
                    mSelectorCore.RequireMatchingUp = RequireMatchingUp;
                    mSelectorCore.OnSelectedEvent   = OnSelected;
                    mSelectorCore.OnCancelledEvent  = OnCancelled;
                    mSelectorCore.OnReleasedEvent   = OnCoreReleased;
                    mSelectorCore.Play();
                }
                else
                {
                    mProjector = mInstances[0].GetComponent <Projector>();
                    if (mProjector != null)
                    {
                        mProjector.nearClipPlane = 0.4f;
                        mProjector.farClipPlane  = 3.0f;
                        mProjector.aspectRatio   = 4f;
                        mProjector.ignoreLayers  = 0;
                        mProjector.material      = TargetMaterial;

                        mInstances[0].transform.rotation = Quaternion.LookRotation(-_Spell.Owner.transform.up, _Spell.Owner.transform.forward);
                        mInstances[0].SetActive(true);

                        // Initialize the position
                        mPosition = _Spell.Owner.transform.position + (_Spell.Owner.transform.forward * 2f);
                    }
                }
            }
            else
            {
                Deactivate();
            }
        }
Exemple #2
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)
        {
            if (mSelectorCore != null)
            {
                mSelectorCore.Owner           = null;
                mSelectorCore.InputSource     = null;
                mSelectorCore.OnSelectedEvent = null;
                mSelectorCore.OnReleasedEvent = null;
                mSelectorCore = null;
            }

            // If our state isn't set to succes (meaning we have something)
            // we are going to flag this node as a failure
            if (State != EnumSpellActionState.SUCCEEDED)
            {
                State = EnumSpellActionState.FAILED;
            }

            base.Deactivate();
        }
Exemple #3
0
 /// <summary>
 /// Called when the object is selected in the editor
 /// </summary>
 private void OnEnable()
 {
     // Grab the serialized objects
     mTarget   = (SelectPositionCore)target;
     mTargetSO = new SerializedObject(target);
 }