public static List <InputDescription> GetInputs(this BehaviourTask task) { var inputs = new List <InputDescription>(); if (task == null) { return(inputs); } var type = task.GetType(); var serializedFields = type.GetSerializedFieldsUpToBase(); foreach (var f in serializedFields) { if (f.FieldType.IsSubclassOf(typeof(InputBase))) { var inputObject = (InputBase)f.GetValue(task); var definition = f.FieldType.GetGenericTypeDefinition(); var description = new InputDescription(inputObject.ValueType, definition == typeof(InputValue <>), f.Name, f.Name); inputs.Add(description); } } return(inputs); }
private static bool CheckForNoEditor(BehaviourTask task) { if (task == null) { return(true); } if (task.GetType().GetCustomAttribute <NoInspectorAttribute>() != null) { return(true); } return(false); }
private void TaskFinished(BehaviourTask task) { if (_currentHighlights.TryGetValue(task.Index, out var highlight)) { _currentHighlights.Remove(task.Index); var anim = ValueAnimation <float> .Create(highlight, (a, b, t) => Mathf.Lerp(a, b, Easing.OutQuad(t))); anim.from = 1f; anim.to = 0f; anim.durationMs = 500; anim.OnCompleted(highlight.RemoveFromHierarchy); anim.valueUpdated = (e, value) => e.style.opacity = value; anim.Start(); } }
private void TaskStarted(BehaviourTask task) { var highlight = CreateHighlight(_nodeAccessor[task.Index]); _currentHighlights.Add(task.Index, highlight); }