Exemple #1
0
        public void RefreshPlugins()
        {
            if (_plugins == null)
            {
                _plugins = new List <PainterManagerPluginBase>();
            }
            else
            {
                for (int i = 0; i < _plugins.Count; i++)
                {
                    if (_plugins[i] == null)
                    {
                        _plugins.RemoveAt(i); i--;
                    }
                }
            }


            browsedPlugin = -1;
            List <Type> allTypes = CsharpFuncs.GetAllChildTypesOf <PainterManagerPluginBase>();

            foreach (var t in allTypes)
            {
                bool contains = false;

                foreach (var p in _plugins)
                {
                    if (p.GetType() == t)
                    {
                        contains = true; break;
                    }
                }

                if (!contains)
                {
                    var c = (PainterManagerPluginBase)gameObject.GetComponent(t);
                    if (c == null)
                    {
                        c = (PainterManagerPluginBase)gameObject.AddComponent(t);
                    }
                    _plugins.Add(c);
                    #if PEGI
                    ("Painter Plugin " + c.ToPEGIstring() + " added").showNotification();
                    #endif
                }
            }

            for (int i = 0; i < _plugins.Count; i++)
            {
                if (_plugins[i] != null && !_plugins[i].enabled)
                {
                    _plugins[i].enabled = true;
                }
            }
        }
Exemple #2
0
        public static void FindAllTriggerGroups()
        {
            all = new UnnullableSTD <TriggerGroup>();

            List <Type> triggerGroups = CsharpFuncs.GetAllChildTypesOf <TriggerGroup>();

            foreach (Type group in triggerGroups)
            {
                TriggerGroup s = (TriggerGroup)Activator.CreateInstance(group);
                Browsed = s;
            }
        }
Exemple #3
0
        public static void UpdateList(PlaytimePainter pntr)
        {
            if (allTypes == null)
            {
                allTypes = CsharpFuncs.GetAllChildTypesOf <PainterPluginBase>();
            }

            for (int i = 0; i < pntr.plugins.Count; i++)
            {
                var nt = pntr.plugins[i];

                if (nt == null)
                {
                    pntr.plugins.RemoveAt(i);
                    i--;
                }
            }

            if (pntr.plugins.Count == 0)
            {
                foreach (Type t in allTypes)
                {
                    var obj = (PainterPluginBase)ScriptableObject.CreateInstance(t);

                    pntr.plugins.Add(obj);
                }

#if UNITY_EDITOR
                foreach (var p in pntr.plugins)
                {
                    Undo.RegisterCreatedObjectUndo(p, "plgns");
                }
#endif

                return;
            }

            //Debug.Log("lst was not null");


            for (int i = 0; i < pntr.plugins.Count; i++)
            {
                if (pntr.plugins[i] == null)
                {
                    pntr.plugins.RemoveAt(i); i--; Debug.Log("Removing missing dataa");
                }
            }

            foreach (Type t in allTypes)
            {
                if (!pntr.plugins.ContainsInstanceType(t))
                {
                    Debug.Log("Creating instance of " + t.ToString());
                    var np = (PainterPluginBase)CreateInstance(t);

                    pntr.plugins.Add(np);
#if UNITY_EDITOR
                    Undo.RegisterCreatedObjectUndo(np, "plgns");
#endif
                }
            }
        }