private void UpdateStateInfoFields() { _stateInfoNode = FindStateInfoNode(); if (_stateInfoNode == null) { Debug.LogError("Must have a state info node!"); return; } var fields = _stateInfoNode.StateInfo.GetType().GetFields(); _stateInfoFields = fields.Where(x => x.FieldType == typeof(int) || x.FieldType == typeof(float) || x.FieldType == typeof(bool)).ToArray(); }
private void InitCondition() { if (Conditions == null) { Conditions = CreateInstance <MutiConditionEditor> (); } _stateInfoNode = FindStateInfoNode(); _serializedObject = new SerializedObject(Conditions); _conditionEditorList = new ReorderableList(_serializedObject, _serializedObject.FindProperty("Conditions"), true, true, true, true); _conditionEditorList.drawElementCallback = DisplayConditionElement; _conditionEditorList.drawHeaderCallback = DisplayConditionHealder; _conditionEditorList.onAddCallback = CreateConditionEditor; }
private void SetStateMethods() { _stateInfoNode = FindStateInfoNode(); if (_stateInfoNode == null) { return; } if (_stateInfoNode.StateScript == null) { return; } if (StateMethods == null) { StateMethods = new Dictionary <string, string> (); } StateMethods.Clear(); var methods = _stateInfoNode.StateScript.GetType().GetMethods(BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic); for (int i = 0; i < methods.Length; i++) { if (methods[i].GetCustomAttributes(typeof(CompilerGeneratedAttribute), true).Length != 0) { continue; } int lastIdx = methods[i].Name.LastIndexOf('_'); if (lastIdx < 0) { continue; } if (methods[i].Name.Substring(0, lastIdx) != StateName) { continue; } switch (methods[i].Name.Substring(lastIdx + 1)) { case "Enter": StateMethods["Enter"] = methods[i].Name; break; case "Exit": StateMethods["Exit"] = methods[i].Name; break; case "Finally": StateMethods["Finally"] = methods[i].Name; break; case "Update": StateMethods["Update"] = methods[i].Name; break; case "LateUpdate": StateMethods["LateUpdate"] = methods[i].Name; break; case "FixedUpdate": StateMethods["FixedUpdate"] = methods[i].Name; break; } } }