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