public bool Test(Animator animator) { if (this.conditions.Count == 0) { return(true); } for (int i = 0; i < this.conditions.Count; i++) { EventConditionEntry eventConditionEntry = this.conditions[i]; if (!string.IsNullOrEmpty(eventConditionEntry.conditionParam)) { EventConditionParamTypes conditionParamType = eventConditionEntry.conditionParamType; if (conditionParamType != EventConditionParamTypes.Int) { if (conditionParamType != EventConditionParamTypes.Float) { if (conditionParamType == EventConditionParamTypes.Boolean) { bool @bool = animator.GetBool(eventConditionEntry.conditionParam); if (@bool != eventConditionEntry.boolValue) { return(false); } } } else { float @float = animator.GetFloat(eventConditionEntry.conditionParam); EventConditionModes conditionMode = eventConditionEntry.conditionMode; if (conditionMode != EventConditionModes.GreaterThan) { if (conditionMode == EventConditionModes.LessThan) { if (@float >= eventConditionEntry.floatValue) { return(false); } } } else if (@float <= eventConditionEntry.floatValue) { return(false); } } } else { int integer = animator.GetInteger(eventConditionEntry.conditionParam); switch (eventConditionEntry.conditionMode) { case EventConditionModes.Equal: if (integer != eventConditionEntry.intValue) { return(false); } break; case EventConditionModes.NotEqual: if (integer == eventConditionEntry.intValue) { return(false); } break; case EventConditionModes.GreaterThan: if (integer <= eventConditionEntry.intValue) { return(false); } break; case EventConditionModes.LessThan: if (integer >= eventConditionEntry.intValue) { return(false); } break; case EventConditionModes.GreaterEqualThan: if (integer < eventConditionEntry.intValue) { return(false); } break; case EventConditionModes.LessEqualThan: if (integer > eventConditionEntry.intValue) { return(false); } break; } } } } return(true); }
private void DrawConditionsElement(Rect rect, int index, bool selected, bool focused) { EventConditionEntry conditionAtIndex = eventTemp.condition.conditions[index]; //EditorGUIUtility.LookLikeControls(); Rect paramRect = new Rect(rect.x, rect.y, rect.width / 3, rect.height); string[] paramPopup = new string[availableParameters.Length]; int paramSelected = 0; for (int i = 0; i < availableParameters.Length; i++) { paramPopup[i] = availableParameters[i].Key; if (paramPopup[i] == conditionAtIndex.conditionParam) { paramSelected = i; } } paramSelected = EditorGUI.Popup(paramRect, paramSelected, paramPopup); conditionAtIndex.conditionParam = paramPopup[paramSelected]; switch (availableParameters[paramSelected].Value) { case EventConditionParamTypes.Int: { conditionAtIndex.conditionParamType = EventConditionParamTypes.Int; Rect modeRect = new Rect(rect.x + rect.width / 3, rect.y, rect.width / 3, rect.height); Rect valueRect = new Rect(rect.x + rect.width * 2 / 3, rect.y, rect.width / 3, rect.height - 4); conditionAtIndex.conditionMode = (EventConditionModes)EditorGUI.EnumPopup(modeRect, conditionAtIndex.conditionMode); conditionAtIndex.intValue = EditorGUI.IntField(valueRect, conditionAtIndex.intValue); } break; case EventConditionParamTypes.Float: { conditionAtIndex.conditionParamType = EventConditionParamTypes.Float; Rect modeRect = new Rect(rect.x + rect.width / 3, rect.y, rect.width / 3, rect.height); Rect valueRect = new Rect(rect.x + rect.width * 2 / 3, rect.y, rect.width / 3, rect.height - 4); string[] floatConditionMode = new string[] { EventConditionModes.GreaterThan.ToString(), EventConditionModes.LessThan.ToString() }; int selectMode = conditionAtIndex.conditionMode == EventConditionModes.LessThan ? 1 : 0; selectMode = EditorGUI.Popup(modeRect, selectMode, floatConditionMode); conditionAtIndex.conditionMode = selectMode == 0 ? EventConditionModes.GreaterThan : EventConditionModes.LessThan; conditionAtIndex.floatValue = EditorGUI.FloatField(valueRect, conditionAtIndex.floatValue); } break; case EventConditionParamTypes.Boolean: { conditionAtIndex.conditionParamType = EventConditionParamTypes.Boolean; Rect valueRect = new Rect(rect.x + rect.width / 3, rect.y, rect.width * 2 / 3, rect.height - 4); string[] boolConditionValue = new string[] { "true", "false" }; conditionAtIndex.conditionMode = EventConditionModes.Equal; int selectedValue = conditionAtIndex.boolValue ? 0 : 1; conditionAtIndex.boolValue = EditorGUI.Popup(valueRect, selectedValue, boolConditionValue) == 0 ? true : false; } break; } }