public static MappedToken For(Type type)
        {
            MappedToken t;

            if (Cache.TryGetValue(type, out t))
            {
                return(t);
            }

            return(Cache[type] = new MappedToken(type));
        }
示例#2
0
        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();
 }