public static MappedToken For(Type type) { MappedToken t; if (Cache.TryGetValue(type, out t)) { return(t); } return(Cache[type] = new MappedToken(type)); }
private void DrawFutures(Rect rect) { GUI.Box(rect, GUIContent.none, ShiroiStyles.DefaultBackground); var futures = Cutscene.FutureManager.GetFutures(); var totalFutures = futures.Count; EditorGUI.LabelField(rect.GetLine(0), ShiroiStyles.FuturesStats, ShiroiStyles.Header); var labelRect = rect.GetLine(1); if (totalFutures == 0) { EditorGUI.LabelField(labelRect, "No futures registered."); } else { futures.Sort(); EditorGUI.LabelField( labelRect, totalFutures + " futures found!", ShiroiStyles.Header); const int iconSize = ShiroiStyles.IconSize; var yOffset = EditorGUIUtility.singleLineHeight * ShiroiStyles.FuturesHeaderLines; var initColor = GUI.backgroundColor; var totalTokens = Cutscene.Count; for (var i = 0; i < futures.Count; i++) { var future = futures[i]; var index = future.Provider; string msg; Color color; var futureRect = rect.GetLine( (uint)i, collumHeight: iconSize, yOffset: yOffset); if (index < 0 || index >= totalTokens) { msg = string.Format("{0} #{1} (Error! Owner not found)", future.Name, index); EditorGUI.LabelField(futureRect, msg); color = ShiroiStyles.ErrorBackgroundColor; } else { var token = Cutscene[index]; var tokenName = MappedToken.For(token).Label; msg = string.Format( "{0} @ {3} (Owner: {1} @ #{2})", future.Name, tokenName, index, future.Id); var mappedToken = MappedToken.For(token); color = TokenList.index == index ? mappedToken.SelectedColor : mappedToken.Color; } var content = EditorGUIUtility.ObjectContent(null, future.Type); Rect iconRect; Rect msgRect; futureRect.Split(iconSize, out iconRect, out msgRect); content.text = null; GUI.backgroundColor = color; GUI.Box(futureRect, GUIContent.none); GUI.Box(iconRect, content); EditorGUI.LabelField(msgRect, msg); } GUI.backgroundColor = initColor; } }
private static void Reload() { KnownTokenTypes = new List <Type>(); MappedToken.Clear(); }