/// <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(); } }
/// <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(); }
/// <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); }