void DrawTransition(Transition.Data tr) { EditorGUIDrawUtility.DrawHorizontalLine(); var transitionRequest = TransitionRequest.Factory.BuildRequest(tr.ReqeustType); var info = transitionRequest.GetInfo(); if (info != null) { EditorGUILayout.LabelField("Transitioning On:", info.DisplayName); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Cause:", new GUIStyle("BoldLabel")); var detailedLabelStyle = new GUIStyle("Label"); detailedLabelStyle.wordWrap = true; EditorGUILayout.LabelField(new GUIContent(info.Type.ToString(), info.DetailedCause), detailedLabelStyle); EditorGUILayout.EndHorizontal(); } else { EditorGUILayout.LabelField("Transitioning On:", tr.ReqeustType); } EditorGUILayout.LabelField("Next State ID: ", $"{tr.NextState}"); EditorGUIDrawUtility.DrawHorizontalLine(); }
/** Decodes data transitions. */ private static Transition.Data decodeDTr( string encStates, string encDTr, State.Single[] states, int s, Transition.Data next, Datatype[] datatypes ) { int start = encStates[ s*sizeOfState+3 ]; int end = (s!=states.Length-1)?encStates[ (s+1)*sizeOfState+3 ]:encDTr.Length; for( int i=end-sizeOfDTr; i>=start; i-=sizeOfDTr ) { next = new Transition.Data( datatypes[ encDTr[ i+2 ] ], states[encDTr[i+0]], states[encDTr[i+1]], next ); } return next; }