// HANDLE EVENT //
        //
        public void HandleEvent(EventData theEventData)
        {
            bool isTriggerCountFine = infiniteTriggerCount.GetValue() ||
                                      (infiniteTriggerCount.GetValue() == false &&
                                       currentTriggerCount < maxTriggerCount.GetValue());

            if (theEventData.eventName == eventName.GetValue() &&
                isTriggerCountFine)
            {
                if (triggerToggle.GetValue())
                {
                    isTriggered = isTriggered == false;
                }
                else
                {
                    isTriggered = true;
                }

                lastEventData   = theEventData;
                lastTriggerTime = ownerBlueprint.ownerEmitter.emitterTime;
                currentTriggerCount++;
            }
        }
        // MANAGE EVENT //
        //
        void ManageEvent(Vector4 input, bool isInputFloat, int particleIndex)
        {
            bool    shouldTriggerEvent = false;
            Vector4 rawProperty;
            bool    isRawPropertyFloat = isInputFloat;
            float   thePropertyValue   = 0;

            if (useCurrentStack.GetValue() == false)
            {
                rawProperty        = AmpsHelpers.GetSystemProperty(ownerBlueprint, particleIndex, (AmpsHelpers.eCurveInputs)property.GetValue());
                isRawPropertyFloat = AmpsHelpers.isFloatInput((AmpsHelpers.eCurveInputs)property.GetValue());
            }
            else
            {
                rawProperty = input;
            }

            if (isRawPropertyFloat)
            {
                thePropertyValue = rawProperty.x;
            }
            else
            {
                switch (propertyVectorComponent.GetValue())
                {
                case (int)AmpsHelpers.eVectorComponents.X:
                    thePropertyValue = rawProperty.x;
                    break;

                case (int)AmpsHelpers.eVectorComponents.Y:
                    thePropertyValue = rawProperty.y;
                    break;

                case (int)AmpsHelpers.eVectorComponents.Z:
                    thePropertyValue = rawProperty.z;
                    break;

                case (int)AmpsHelpers.eVectorComponents.W:
                    thePropertyValue = rawProperty.w;
                    break;

                case (int)AmpsHelpers.eVectorComponents.Mag:
                    thePropertyValue = new Vector3(rawProperty.x, rawProperty.y, rawProperty.z).magnitude;
                    break;
                }
            }

            switch (condition.GetValue())
            {
            case (int)eConditions.Greater:
                shouldTriggerEvent = thePropertyValue > value.GetValue();
                break;

            case (int)eConditions.Less:
                shouldTriggerEvent = thePropertyValue < value.GetValue();
                break;

            case (int)eConditions.Equal:
                shouldTriggerEvent = thePropertyValue == value.GetValue();
                break;

            case (int)eConditions.NotEqual:
                shouldTriggerEvent = thePropertyValue != value.GetValue();
                break;
            }

            if (shouldTriggerEvent)
            {
                EventData theEventData = new EventData();
                theEventData.eventName     = eventName.GetValue();
                theEventData.particleIndex = particleIndex;
                theEventData.DataSlot1     = AmpsHelpers.GetSystemProperty(ownerBlueprint, particleIndex, (AmpsHelpers.eCurveInputs)sentProperty1.GetValue());
                theEventData.DataSlot2     = AmpsHelpers.GetSystemProperty(ownerBlueprint, particleIndex, (AmpsHelpers.eCurveInputs)sentProperty2.GetValue());
                theEventData.DataSlot3     = AmpsHelpers.GetSystemProperty(ownerBlueprint, particleIndex, (AmpsHelpers.eCurveInputs)sentProperty3.GetValue());
                theEventData.DataSlot4     = AmpsHelpers.GetSystemProperty(ownerBlueprint, particleIndex, (AmpsHelpers.eCurveInputs)sentProperty4.GetValue());

                                #if UNITY_EDITOR
                AmpsEmitter[] selfAndChildEmitters = ownerBlueprint.ownerEmitter.transform.root.GetComponentsInChildren <AmpsEmitter>();
                for (int i = 0; i < selfAndChildEmitters.Length; i++)
                {
                    selfAndChildEmitters[i].AmpsHandleEvent(theEventData);
                }
                                #else
                ownerBlueprint.ownerEmitter.BroadcastMessage("AmpsHandleEvent", theEventData, SendMessageOptions.DontRequireReceiver);
                                #endif

                currentEventCount++;
                timeOfLastEvent = ownerBlueprint.ownerEmitter.emitterTime;
            }
        }