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; } } }
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; } }
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 } } }