├── .gitignore
├── Foundation Terminal
├── Assets
│ ├── Foundation.meta
│ ├── Foundation
│ │ ├── Terminal.meta
│ │ └── Terminal
│ │ │ ├── Internal.meta
│ │ │ ├── Internal
│ │ │ ├── ClearCommand.cs
│ │ │ ├── ClearCommand.cs.meta
│ │ │ ├── ObservableList.cs
│ │ │ ├── ObservableList.cs.meta
│ │ │ ├── SpamCommand.cs
│ │ │ ├── SpamCommand.cs.meta
│ │ │ ├── TerminalCommandView.cs
│ │ │ ├── TerminalCommandView.cs.meta
│ │ │ ├── TerminalItemView.cs
│ │ │ ├── TerminalItemView.cs.meta
│ │ │ ├── TerminalView.cs
│ │ │ └── TerminalView.cs.meta
│ │ │ ├── NVentimiglia_Unity3d-uGUI-Terminal.pdf
│ │ │ ├── NVentimiglia_Unity3d-uGUI-Terminal.pdf.meta
│ │ │ ├── Terminal.cs
│ │ │ ├── Terminal.cs.meta
│ │ │ ├── Terminal.prefab
│ │ │ ├── Terminal.prefab.meta
│ │ │ ├── TerminalExample.unity
│ │ │ └── TerminalExample.unity.meta
│ ├── UnityVS.meta
│ └── UnityVS
│ │ ├── Editor.meta
│ │ └── Editor
│ │ ├── SyntaxTree.VisualStudio.Unity.Bridge.dll
│ │ ├── SyntaxTree.VisualStudio.Unity.Bridge.dll.meta
│ │ ├── SyntaxTree.VisualStudio.Unity.Messaging.dll
│ │ ├── SyntaxTree.VisualStudio.Unity.Messaging.dll.meta
│ │ ├── UnityVS.VersionSpecific.dll
│ │ └── UnityVS.VersionSpecific.dll.meta
├── Foundation
│ ├── Console.meta
│ └── Console
│ │ ├── ClearCommand.cs
│ │ ├── ClearCommand.cs.meta
│ │ ├── ObservableList.cs
│ │ ├── ObservableList.cs.meta
│ │ ├── QuitCommand.cs
│ │ ├── QuitCommand.cs.meta
│ │ ├── README.txt
│ │ ├── README.txt.meta
│ │ ├── Terminal.cs
│ │ ├── Terminal.cs.meta
│ │ ├── Terminal.prefab
│ │ ├── Terminal.prefab.meta
│ │ ├── Terminal.unity
│ │ ├── Terminal.unity.meta
│ │ ├── TerminalView.cs
│ │ ├── TerminalView.cs.meta
│ │ ├── TerminalViewCommand.cs
│ │ ├── TerminalViewCommand.cs.meta
│ │ ├── TerminalViewItem.cs
│ │ └── TerminalViewItem.cs.meta
├── ProjectSettings
│ ├── AudioManager.asset
│ ├── DynamicsManager.asset
│ ├── EditorBuildSettings.asset
│ ├── EditorSettings.asset
│ ├── GraphicsSettings.asset
│ ├── InputManager.asset
│ ├── NavMeshAreas.asset
│ ├── NetworkManager.asset
│ ├── Physics2DSettings.asset
│ ├── ProjectSettings.asset
│ ├── ProjectVersion.txt
│ ├── QualitySettings.asset
│ ├── TagManager.asset
│ └── TimeManager.asset
├── UnityVS.Foundation Console.CSharp.Editor.csproj.DotSettings
└── UnityVS.Foundation Console.v12.suo
├── Foundation.Terminal 2015.7.30.unitypackage
├── README.md
└── Terminal.gif
/.gitignore:
--------------------------------------------------------------------------------
1 | [Ll]ibrary/
2 | [Tt]emp/
3 | [Oo]bj/
4 | [Bb]uilds/
5 | UnityVS/
6 |
7 | # Autogenerated VS/MD solution and project files
8 | *.csproj
9 | *.unityproj
10 | *.sln
11 | *.userprefs
12 |
13 | *.pidb
14 | *.booproj
15 |
16 |
17 |
18 |
19 | #Fast Platform Switch
20 | /LocalCache/
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3079f9d6caef70e439f2eafe123c78b3
3 | folderAsset: yes
4 | timeCreated: 1425665077
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b5e9048b2d2e117498b3759bee9aabab
3 | folderAsset: yes
4 | timeCreated: 1425664880
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Internal.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5780e176f34b8544f84ffbda791bea0b
3 | folderAsset: yes
4 | timeCreated: 1425665610
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Internal/ClearCommand.cs:
--------------------------------------------------------------------------------
1 | // -------------------------------------
2 | // Domain : Avariceonline.com
3 | // Author : Nicholas Ventimiglia
4 | // Product : Unity3d Foundation
5 | // Published : 2015
6 | // -------------------------------------
7 | using UnityEngine;
8 |
9 | namespace Foundation.Console.Internal
10 | {
11 | ///
12 | /// Extends the console with a 'clear' command
13 | ///
14 | [AddComponentMenu("Foundation/Terminal/ClearCommand")]
15 | public class ClearCommand : MonoBehaviour
16 | {
17 | protected void Awake()
18 | {
19 | Terminal.Add(new TerminalCommand
20 | {
21 | Label = "Clear",
22 | Method = () => Terminal.Clear()
23 | });
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Internal/ClearCommand.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: de0ee7071d38a1c488937d7d28152841
3 | timeCreated: 1425665611
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Internal/ObservableList.cs:
--------------------------------------------------------------------------------
1 | // -------------------------------------
2 | // Domain : Avariceonline.com
3 | // Author : Nicholas Ventimiglia
4 | // Product : Unity3d Foundation
5 | // Published : 2015
6 | // -------------------------------------
7 | using System;
8 | using System.Collections;
9 | using System.Collections.Generic;
10 |
11 | namespace Foundation.Console.Internal
12 | {
13 | ///
14 | /// A List with on change delegates
15 | ///
16 | ///
17 | public class ObservableList : IList
18 | {
19 | protected List InternalList = new List();
20 |
21 | public event Action OnAdd;
22 | public event Action OnInset;
23 | public event Action OnRemove;
24 | #pragma warning disable 0067
25 | public event Action OnClear;
26 | #pragma warning restore 0067
27 |
28 |
29 | public IEnumerator GetEnumerator()
30 | {
31 | return InternalList.GetEnumerator();
32 | }
33 |
34 | IEnumerator IEnumerable.GetEnumerator()
35 | {
36 | return InternalList.GetEnumerator();
37 | }
38 |
39 | public int IndexOf(T item)
40 | {
41 | return InternalList.IndexOf(item);
42 | }
43 |
44 | public void Insert(int index, T item)
45 | {
46 | InternalList.Insert(index, item);
47 |
48 | if (OnInset != null)
49 | OnInset(index, item);
50 | }
51 |
52 | public void RemoveAt(int index)
53 | {
54 | InternalList.RemoveAt(index);
55 | }
56 |
57 | public T this[int index]
58 | {
59 | get { return InternalList[index]; }
60 | set { InternalList[index] = value; }
61 | }
62 |
63 | public void Add(T item)
64 | {
65 | InternalList.Add(item);
66 |
67 | if (OnAdd != null)
68 | OnAdd(item);
69 | }
70 |
71 | public void Clear()
72 | {
73 | InternalList.Clear();
74 |
75 | if (OnClear != null)
76 | OnClear();
77 | }
78 |
79 | public bool Contains(T item)
80 | {
81 | return InternalList.Contains(item);
82 | }
83 |
84 | public void CopyTo(T[] array, int arrayIndex)
85 | {
86 | InternalList.CopyTo(array, arrayIndex);
87 | }
88 |
89 | public int Count
90 | {
91 | get { return InternalList.Count; }
92 | }
93 |
94 | public bool IsReadOnly
95 | {
96 | get { return false; }
97 | }
98 |
99 | public bool Remove(T item)
100 | {
101 | if (InternalList.Remove(item))
102 | {
103 | if (OnRemove != null)
104 | OnRemove(item);
105 |
106 | return true;
107 | }
108 |
109 | return false;
110 |
111 | }
112 | }
113 | }
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Internal/ObservableList.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5b8e55185932713459d2f883db6e14e3
3 | timeCreated: 1425665611
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Internal/SpamCommand.cs:
--------------------------------------------------------------------------------
1 | // -------------------------------------
2 | // Domain : Avariceonline.com
3 | // Author : Nicholas Ventimiglia
4 | // Product : Unity3d Foundation
5 | // Published : 2015
6 | // -------------------------------------
7 | using System;
8 | using System.Collections;
9 | using UnityEngine;
10 |
11 | namespace Foundation.Console.Internal
12 | {
13 | ///
14 | /// Test script
15 | ///
16 | [AddComponentMenu("Foundation/Terminal/SpamCommand")]
17 | public class SpamCommand : MonoBehaviour
18 | {
19 | protected void Awake()
20 | {
21 | Terminal.Add(new TerminalCommand
22 | {
23 | Label = "Spam",
24 | Method = () => StartCoroutine(DoSpam())
25 | });
26 | }
27 |
28 | IEnumerator DoSpam()
29 | {
30 | for (int i = 0; i < 50; i++)
31 | {
32 | yield return new WaitForSeconds(.1f);
33 |
34 | Terminal.Log(DateTime.UtcNow.ToLongTimeString());
35 | }
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Internal/SpamCommand.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: aa8dcb6c438cc504fa2b10a96d89e218
3 | timeCreated: 1425668501
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Internal/TerminalCommandView.cs:
--------------------------------------------------------------------------------
1 | // -------------------------------------
2 | // Domain : Avariceonline.com
3 | // Author : Nicholas Ventimiglia
4 | // Product : Unity3d Foundation
5 | // Published : 2015
6 | // -------------------------------------
7 | using System;
8 | using UnityEngine;
9 | using UnityEngine.UI;
10 |
11 | namespace Foundation.Console.Internal
12 | {
13 | ///
14 | /// Presentation script for a Terminal Button Item
15 | ///
16 | public class TerminalCommandView : MonoBehaviour
17 | {
18 | public TerminalCommand Model { get; set; }
19 |
20 | public Text Label;
21 |
22 | public Action Handler;
23 |
24 | public void OnClick()
25 | {
26 | if (Handler != null)
27 | Handler();
28 | }
29 |
30 | }
31 | }
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Internal/TerminalCommandView.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 01b397446a9cefe41bb9474a9aeb7fd3
3 | timeCreated: 1425665610
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Internal/TerminalItemView.cs:
--------------------------------------------------------------------------------
1 | // -------------------------------------
2 | // Domain : Avariceonline.com
3 | // Author : Nicholas Ventimiglia
4 | // Product : Unity3d Foundation
5 | // Published : 2015
6 | // -------------------------------------
7 | using UnityEngine;
8 | using UnityEngine.UI;
9 |
10 | namespace Foundation.Console.Internal
11 | {
12 | ///
13 | /// Presentation script for a Terminal Text Item
14 | ///
15 | [AddComponentMenu("Foundation/Terminal/TerminalItemView")]
16 | public class TerminalItemView : MonoBehaviour
17 | {
18 | public TerminalItem Model { get; set; }
19 |
20 | public Text Label;
21 | }
22 | }
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Internal/TerminalItemView.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ee09d0e47d5738441bc2526d57b17a09
3 | timeCreated: 1425665612
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Internal/TerminalView.cs:
--------------------------------------------------------------------------------
1 | // -------------------------------------
2 | // Domain : Avariceonline.com
3 | // Author : Nicholas Ventimiglia
4 | // Product : Unity3d Foundation
5 | // Published : 2015
6 | // -------------------------------------
7 | using System;
8 | using System.Collections;
9 | using System.Collections.Generic;
10 | using System.Linq;
11 | using UnityEngine;
12 | using UnityEngine.UI;
13 |
14 | namespace Foundation.Console.Internal
15 | {
16 | ///
17 | /// renders the Terminal using new 4.6 uGUI
18 | ///
19 | [AddComponentMenu("Foundation/Terminal/TerminalView")]
20 | public class TerminalView : MonoBehaviour
21 | {
22 | ///
23 | /// Option
24 | ///
25 | public bool DoDontDestoryOnLoad = true;
26 |
27 | ///
28 | /// For Hide / show
29 | ///
30 | public GameObject DisplayRoot;
31 |
32 | ///
33 | /// For Input
34 | ///
35 | public InputField TextInput;
36 |
37 | ///
38 | /// Button View Template
39 | ///
40 | public TerminalCommandView CommandPrototype;
41 |
42 | ///
43 | /// Log View Template
44 | ///
45 | public TerminalItemView ItemPrototype;
46 |
47 | ///
48 | /// Parent for Command Views
49 | ///
50 | public Transform CommandLayout;
51 | ///
52 | /// Parent for Log Views
53 | ///
54 | public Transform ItemLayout;
55 |
56 | ///
57 | /// Snap to bottom
58 | ///
59 | public Scrollbar ItemScrollBar;
60 | [HideInInspector]
61 | public List CommandItems = new List();
62 | [HideInInspector]
63 | public List TextItems = new List();
64 |
65 | public bool IsVisible
66 | {
67 | get
68 | {
69 | return DisplayRoot.activeSelf;
70 |
71 | }
72 | set
73 | {
74 | DisplayRoot.SetActive(value);
75 | }
76 | }
77 |
78 | public KeyCode VisiblityKey = KeyCode.BackQuote;
79 |
80 | public Color LogColor = Color.white;
81 | public Color WarningColor = Color.yellow;
82 | public Color ErrorColor = Color.red;
83 |
84 | public Color SuccessColor = Color.green;
85 | public Color InputColor = Color.cyan;
86 | public Color ImportantColor = Color.yellow;
87 |
88 | protected void Awake()
89 | {
90 | // Display
91 | Terminal.Instance.LogColor = LogColor;
92 | Terminal.Instance.WarningColor = WarningColor;
93 | Terminal.Instance.ErrorColor = ErrorColor;
94 | Terminal.Instance.SuccessColor = SuccessColor;
95 | Terminal.Instance.InputColor = InputColor;
96 | Terminal.Instance.ImportantColor = ImportantColor;
97 |
98 | //Hide prototypes
99 | CommandPrototype.gameObject.SetActive(false);
100 | ItemPrototype.gameObject.SetActive(false);
101 |
102 | //wire
103 | Terminal.Instance.Items.OnAdd += Items_OnAdd;
104 | Terminal.Instance.Items.OnClear += Items_OnClear;
105 | Terminal.Instance.Items.OnRemove += Items_OnRemove;
106 |
107 | Terminal.Instance.Commands.OnAdd += Commands_OnAdd;
108 | Terminal.Instance.Commands.OnClear += Commands_OnClear;
109 | Terminal.Instance.Commands.OnRemove += Commands_OnRemove;
110 |
111 | //add items preadded
112 | foreach (var item in Terminal.Instance.Items)
113 | {
114 | Items_OnAdd(item);
115 | }
116 |
117 | foreach (var item in Terminal.Instance.Commands)
118 | {
119 | Commands_OnAdd(item);
120 | }
121 |
122 | Application.logMessageReceived += HandlerLog;
123 |
124 | if (DoDontDestoryOnLoad)
125 | DontDestroyOnLoad(gameObject);
126 |
127 | Debug.Log("Console Ready");
128 | }
129 |
130 |
131 | protected void OnDestroy()
132 | {
133 | //remove handlers
134 | Terminal.Instance.Items.OnAdd -= Items_OnAdd;
135 | Terminal.Instance.Items.OnClear -= Items_OnClear;
136 | Terminal.Instance.Items.OnRemove -= Items_OnRemove;
137 |
138 | Terminal.Instance.Commands.OnAdd -= Commands_OnAdd;
139 | Terminal.Instance.Commands.OnClear -= Commands_OnClear;
140 | Terminal.Instance.Commands.OnRemove -= Commands_OnRemove;
141 |
142 | Application.logMessageReceived -= HandlerLog;
143 | }
144 |
145 | private void HandlerLog(string condition, string stackTrace, LogType type)
146 | {
147 | switch (type)
148 | {
149 | case LogType.Error:
150 | case LogType.Exception:
151 | Terminal.LogError(condition);
152 | break;
153 | case LogType.Warning:
154 | Terminal.LogWarning(condition);
155 | break;
156 | case LogType.Log:
157 | case LogType.Assert:
158 | Terminal.Log(condition);
159 | break;
160 | }
161 | }
162 |
163 | void Commands_OnRemove(TerminalCommand obj)
164 | {
165 | var item = CommandItems.FirstOrDefault(o => o.Model.Equals(obj));
166 | if (item != null)
167 | {
168 | CommandItems.Remove(item);
169 | Destroy(item.gameObject);
170 | }
171 | }
172 |
173 | void Commands_OnClear()
174 | {
175 | foreach (var item in CommandItems)
176 | {
177 | Destroy(item.gameObject);
178 | }
179 | CommandItems.Clear();
180 | }
181 |
182 | void Commands_OnAdd(TerminalCommand obj)
183 | {
184 | //inst
185 | var instance = Instantiate(CommandPrototype.gameObject);
186 | var script = instance.GetComponent();
187 | script.Label.text = obj.Label;
188 | script.Handler = obj.Method;
189 | script.Model = obj;
190 |
191 | //parent
192 | instance.transform.SetParent(CommandLayout);
193 | //wtf
194 | instance.transform.localScale = new Vector3(1, 1, 1);
195 | instance.SetActive(true);
196 |
197 | CommandItems.Add(script);
198 | }
199 |
200 | void Items_OnRemove(TerminalItem obj)
201 | {
202 | var item = TextItems.FirstOrDefault(o => o.Model.Equals(obj));
203 | if (item != null)
204 | {
205 | TextItems.Remove(item);
206 | Destroy(item.gameObject);
207 | }
208 | }
209 |
210 | void Items_OnClear()
211 | {
212 | foreach (var item in TextItems)
213 | {
214 | Destroy(item.gameObject);
215 | }
216 | TextItems.Clear();
217 | }
218 |
219 | void Items_OnAdd(TerminalItem obj)
220 | {
221 | StartCoroutine(AddItemAsync(obj));
222 | }
223 |
224 | IEnumerator AddItemAsync(TerminalItem obj)
225 | {
226 |
227 | //inst
228 | var instance = Instantiate(ItemPrototype.gameObject);
229 | var script = instance.GetComponent();
230 | script.Label.text = obj.Text;
231 | script.Label.color = obj.Color;
232 | script.Model = obj;
233 |
234 | //parent
235 | instance.transform.SetParent(ItemLayout);
236 | instance.SetActive(true);
237 | //wtf
238 | instance.transform.localScale = new Vector3(1, 1, 1);
239 |
240 | TextItems.Add(script);
241 |
242 | yield return 1;
243 |
244 | if (ItemScrollBar)
245 | ItemScrollBar.value = 0;
246 | }
247 |
248 |
249 | protected void Update()
250 | {
251 | if (Input.GetKeyUp(VisiblityKey))
252 | {
253 | IsVisible = !IsVisible;
254 | }
255 |
256 | }
257 |
258 | public void DoSend()
259 | {
260 | var text = TextInput.text.Replace(Environment.NewLine, "");
261 |
262 | if (string.IsNullOrEmpty(text))
263 | return;
264 |
265 | Terminal.Submit(text);
266 |
267 | TextInput.text = string.Empty;
268 | }
269 |
270 | public void DoClear()
271 | {
272 | Terminal.Clear();
273 | }
274 | }
275 | }
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Internal/TerminalView.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bcaf0e3760f100140a82131e9631882f
3 | timeCreated: 1425665611
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/NVentimiglia_Unity3d-uGUI-Terminal.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/Assets/Foundation/Terminal/NVentimiglia_Unity3d-uGUI-Terminal.pdf
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/NVentimiglia_Unity3d-uGUI-Terminal.pdf.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9a029371c983b8642bdab28fa2de47e1
3 | timeCreated: 1438275121
4 | licenseType: Free
5 | DefaultImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Terminal.cs:
--------------------------------------------------------------------------------
1 | // -------------------------------------
2 | // Domain : Avariceonline.com
3 | // Author : Nicholas Ventimiglia
4 | // Product : Unity3d Foundation
5 | // Published : 2015
6 | // -------------------------------------
7 | using System;
8 | using Foundation.Console.Internal;
9 | using UnityEngine;
10 |
11 | namespace Foundation.Console
12 | {
13 | #region sub objects
14 |
15 | ///
16 | /// Message Formatting
17 | ///
18 | public enum TerminalType
19 | {
20 | Log,
21 | Warning,
22 | Error,
23 | Exception,
24 | Success,
25 | Important,
26 | Input,
27 | }
28 |
29 | ///
30 | /// A Terminal line item
31 | ///
32 | public struct TerminalItem
33 | {
34 | readonly string _text;
35 | public string Text
36 | {
37 | get { return _text; }
38 | }
39 |
40 | readonly string _formatted;
41 | public string Formatted
42 | {
43 | get { return _formatted; }
44 | }
45 |
46 | readonly TerminalType _type;
47 | public TerminalType Type
48 | {
49 | get { return _type; }
50 | }
51 |
52 | readonly Color _color;
53 | public Color Color
54 | {
55 | get { return _color; }
56 | }
57 |
58 | public TerminalItem(TerminalType type, string text)
59 | {
60 | _text = text;
61 | _type = type;
62 | switch (_type)
63 | {
64 | case TerminalType.Warning:
65 | _formatted = string.Format("<< {0}", text);
66 | _color = Terminal.Instance.WarningColor;
67 | break;
68 | case TerminalType.Error:
69 | _formatted = string.Format("<< {0}", text);
70 | _color = Terminal.Instance.ErrorColor;
71 | break;
72 | case TerminalType.Success:
73 | _formatted = string.Format("<< {0}", text);
74 | _color = Terminal.Instance.SuccessColor;
75 | break;
76 | case TerminalType.Important:
77 | _formatted = string.Format("<< {0}", text);
78 | _color = Terminal.Instance.ImportantColor;
79 | break;
80 | case TerminalType.Input:
81 | _formatted = string.Format(">> {0}", text);
82 | _color = Terminal.Instance.InputColor;
83 | break;
84 | default:
85 | _formatted = text;
86 | _color = Terminal.Instance.LogColor;
87 | break;
88 | }
89 | }
90 | }
91 |
92 | ///
93 | /// For processing Text input
94 | ///
95 | public class TerminalInterpreter
96 | {
97 | public string Label;
98 | public Action Method;
99 | }
100 |
101 | ///
102 | /// Button to add to the menu
103 | ///
104 | public class TerminalCommand
105 | {
106 | public string Label;
107 | public Action Method;
108 | }
109 | #endregion
110 |
111 | ///
112 | /// The Terminal Model.
113 | ///
114 | public class Terminal
115 | {
116 | #region static
117 | public static readonly Terminal Instance = new Terminal();
118 | #endregion
119 |
120 | #region props / fields
121 |
122 | // Default color of the standard display text.
123 |
124 | public Color LogColor = Color.white;
125 | public Color WarningColor = Color.yellow;
126 | public Color ErrorColor = Color.red;
127 | public Color SuccessColor = Color.green;
128 | public Color InputColor = Color.green;
129 | public Color ImportantColor = Color.cyan;
130 |
131 | public readonly ObservableList Items = new ObservableList();
132 | public readonly ObservableList Commands = new ObservableList();
133 | public readonly ObservableList Interpreters = new ObservableList();
134 |
135 | #endregion
136 |
137 | ///
138 | /// Add Command
139 | ///
140 | public static void Add(TerminalCommand arg)
141 | {
142 | Instance.Commands.Add(arg);
143 | }
144 |
145 | ///
146 | /// Add Interpreter
147 | ///
148 | public static void Add(TerminalInterpreter arg)
149 | {
150 | Instance.Interpreters.Add(arg);
151 | }
152 |
153 |
154 | ///
155 | /// write only
156 | ///
157 | public static void Add(TerminalItem message)
158 | {
159 | Instance.Items.Add(message);
160 | }
161 |
162 | ///
163 | /// write only
164 | ///
165 | public static void Add(object message, TerminalType type)
166 | {
167 | Add(new TerminalItem(type, message.ToString()));
168 | }
169 |
170 | ///
171 | /// write only
172 | ///
173 | public static void Log(object message)
174 | {
175 | Add(new TerminalItem(TerminalType.Log, message.ToString()));
176 | }
177 |
178 | ///
179 | /// write only
180 | ///
181 | public static void LogError(object message)
182 | {
183 | Add(new TerminalItem(TerminalType.Error, message.ToString()));
184 | }
185 |
186 | ///
187 | /// write only
188 | ///
189 | public static void LogWarning(object message)
190 | {
191 | Add(new TerminalItem(TerminalType.Warning, message.ToString()));
192 | }
193 |
194 | ///
195 | /// write only
196 | ///
197 | public static void LogSuccess(object message)
198 | {
199 | Add(new TerminalItem(TerminalType.Success, message.ToString()));
200 | }
201 |
202 | ///
203 | /// write only
204 | ///
205 | public static void LogImportant(object message)
206 | {
207 | Add(new TerminalItem(TerminalType.Important, message.ToString()));
208 | }
209 |
210 | ///
211 | /// write only
212 | ///
213 | public static void LogInput(object message)
214 | {
215 | Add(new TerminalItem(TerminalType.Input, message.ToString()));
216 | }
217 |
218 |
219 | ///
220 | /// Input for a command
221 | ///
222 | ///
223 | public static void Submit(string message)
224 | {
225 | if (string.IsNullOrEmpty(message))
226 | {
227 | LogInput(string.Empty);
228 | return;
229 | }
230 |
231 | message = message.Trim();
232 |
233 | Add(new TerminalItem(TerminalType.Input, message));
234 |
235 | foreach (var interpreter in Instance.Interpreters)
236 | {
237 | interpreter.Method.Invoke(message);
238 | }
239 | }
240 |
241 | ///
242 | /// clear writes
243 | ///
244 | public static void Clear()
245 | {
246 | Instance.Items.Clear();
247 | }
248 | }
249 | }
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Terminal.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0585a6c49ee9bfc488f3656df23018f2
3 | MonoImporter:
4 | serializedVersion: 2
5 | defaultReferences: []
6 | executionOrder: 0
7 | icon: {instanceID: 0}
8 | userData:
9 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Terminal.prefab:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/Assets/Foundation/Terminal/Terminal.prefab
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/Terminal.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6f2bf694ca907014bbed527957d67e3f
3 | NativeFormatImporter:
4 | userData:
5 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/TerminalExample.unity:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/Assets/Foundation/Terminal/TerminalExample.unity
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/Foundation/Terminal/TerminalExample.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a5396dae58f76584da07a1df929928b2
3 | DefaultImporter:
4 | userData:
5 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/UnityVS.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c1a6427821d90af47a3059f20289ef53
3 | folderAsset: yes
4 | timeCreated: 1425664940
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/UnityVS/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6e71a3e2fb5854e43823a9da25b68e21
3 | folderAsset: yes
4 | DefaultImporter:
5 | userData:
6 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/UnityVS/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/Assets/UnityVS/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/UnityVS/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 38d405c119fcc7c4e83d4a478a40ff2f
3 | PluginImporter:
4 | serializedVersion: 1
5 | iconMap: {}
6 | executionOrder: {}
7 | isPreloaded: 0
8 | platformData:
9 | Any:
10 | enabled: 0
11 | settings: {}
12 | Editor:
13 | enabled: 1
14 | settings:
15 | DefaultValueInitialized: true
16 | userData:
17 | assetBundleName:
18 | assetBundleVariant:
19 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/UnityVS/Editor/SyntaxTree.VisualStudio.Unity.Messaging.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/Assets/UnityVS/Editor/SyntaxTree.VisualStudio.Unity.Messaging.dll
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/UnityVS/Editor/SyntaxTree.VisualStudio.Unity.Messaging.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4ad02dc83da735c4e8d945332b9202f6
3 | PluginImporter:
4 | serializedVersion: 1
5 | iconMap: {}
6 | executionOrder: {}
7 | isPreloaded: 0
8 | platformData:
9 | Any:
10 | enabled: 0
11 | settings: {}
12 | Editor:
13 | enabled: 1
14 | settings:
15 | DefaultValueInitialized: true
16 | userData:
17 | assetBundleName:
18 | assetBundleVariant:
19 |
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/UnityVS/Editor/UnityVS.VersionSpecific.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/Assets/UnityVS/Editor/UnityVS.VersionSpecific.dll
--------------------------------------------------------------------------------
/Foundation Terminal/Assets/UnityVS/Editor/UnityVS.VersionSpecific.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8b9e715ee2c325d4d8b9463cffd11c82
3 | timeCreated: 1438275134
4 | licenseType: Free
5 | PluginImporter:
6 | serializedVersion: 1
7 | iconMap: {}
8 | executionOrder: {}
9 | isPreloaded: 0
10 | platformData:
11 | Any:
12 | enabled: 0
13 | settings: {}
14 | Editor:
15 | enabled: 1
16 | settings:
17 | DefaultValueInitialized: true
18 | userData:
19 | assetBundleName:
20 | assetBundleVariant:
21 |
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b5e9048b2d2e117498b3759bee9aabab
3 | folderAsset: yes
4 | timeCreated: 1425664880
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/ClearCommand.cs:
--------------------------------------------------------------------------------
1 | // -------------------------------------
2 | // Domain : IBT / Realtime.co
3 | // Author : Nicholas Ventimiglia
4 | // Product : Messaging and Storage
5 | // Published : 2014
6 | // -------------------------------------
7 |
8 | using UnityEngine;
9 |
10 | namespace Realtime.Demos.TerminalConsole.Commands
11 | {
12 | ///
13 | /// Extends the console with 'about me' command
14 | ///
15 | [AddComponentMenu("Realtime/Demos/Terminal/Clear")]
16 | public class ClearCommand : MonoBehaviour
17 | {
18 | protected void Awake()
19 | {
20 | Terminal.Add(new TerminalCommand
21 | {
22 | Label = "Clear",
23 | Method = () => Terminal.Clear()
24 | });
25 | }
26 |
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/ClearCommand.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0e2e4db7721a4094fbfa5bfeeac12b4e
3 | MonoImporter:
4 | serializedVersion: 2
5 | defaultReferences: []
6 | executionOrder: 0
7 | icon: {instanceID: 0}
8 | userData:
9 |
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/ObservableList.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Collections.Generic;
4 |
5 | namespace Realtime.Demos.TerminalConsole
6 | {
7 | ///
8 | /// A List with on change delegates
9 | ///
10 | ///
11 | public class ObservableList : IList
12 | {
13 | protected List InternalList = new List();
14 |
15 | public event Action OnAdd;
16 | public event Action OnInset;
17 | public event Action OnRemove;
18 | #pragma warning disable 0067
19 | public event Action OnClear;
20 | #pragma warning restore 0067
21 |
22 |
23 | public IEnumerator GetEnumerator()
24 | {
25 | return InternalList.GetEnumerator();
26 | }
27 |
28 | IEnumerator IEnumerable.GetEnumerator()
29 | {
30 | return InternalList.GetEnumerator();
31 | }
32 |
33 | public int IndexOf(T item)
34 | {
35 | return InternalList.IndexOf(item);
36 | }
37 |
38 | public void Insert(int index, T item)
39 | {
40 | InternalList.Insert(index, item);
41 |
42 | if (OnInset != null)
43 | OnInset(index, item);
44 | }
45 |
46 | public void RemoveAt(int index)
47 | {
48 | InternalList.RemoveAt(index);
49 | }
50 |
51 | public T this[int index]
52 | {
53 | get { return InternalList[index]; }
54 | set { InternalList[index] = value; }
55 | }
56 |
57 | public void Add(T item)
58 | {
59 | InternalList.Add(item);
60 |
61 | if (OnAdd != null)
62 | OnAdd(item);
63 | }
64 |
65 | public void Clear()
66 | {
67 | InternalList.Clear();
68 |
69 | if (OnClear != null)
70 | OnClear();
71 | }
72 |
73 | public bool Contains(T item)
74 | {
75 | return InternalList.Contains(item);
76 | }
77 |
78 | public void CopyTo(T[] array, int arrayIndex)
79 | {
80 | InternalList.CopyTo(array, arrayIndex);
81 | }
82 |
83 | public int Count
84 | {
85 | get { return InternalList.Count; }
86 | }
87 |
88 | public bool IsReadOnly
89 | {
90 | get { return false; }
91 | }
92 |
93 | public bool Remove(T item)
94 | {
95 | if (InternalList.Remove(item))
96 | {
97 | if (OnRemove != null)
98 | OnRemove(item);
99 |
100 | return true;
101 | }
102 |
103 | return false;
104 |
105 | }
106 | }
107 | }
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/ObservableList.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3cdc4222dc796ed4cbcfae6834677a0a
3 | MonoImporter:
4 | serializedVersion: 2
5 | defaultReferences: []
6 | executionOrder: 0
7 | icon: {instanceID: 0}
8 | userData:
9 |
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/QuitCommand.cs:
--------------------------------------------------------------------------------
1 | // -------------------------------------
2 | // Domain : IBT / Realtime.co
3 | // Author : Nicholas Ventimiglia
4 | // Product : Messaging and Storage
5 | // Published : 2014
6 | // -------------------------------------
7 |
8 | using UnityEngine;
9 |
10 | namespace Realtime.Demos.TerminalConsole.Commands
11 | {
12 | ///
13 | /// exit app command
14 | ///
15 | [AddComponentMenu("Realtime/Demos/Terminal/Quit")]
16 | public class QuitCommand : MonoBehaviour
17 | {
18 | protected void Awake()
19 | {
20 |
21 |
22 | #if UNITY_EDITOR
23 | Terminal.Add(new TerminalCommand
24 | {
25 | Label = "Quit",
26 | Method = () =>
27 | {
28 | UnityEditor.EditorApplication.isPlaying = false;
29 | }
30 | });
31 | #elif UNITY_STANDALONE || UNITY_ANDROID
32 | Terminal.Add(new TerminalCommand
33 | {
34 | Label = "Quit",
35 | Method = () => Application.Quit()
36 | });
37 | #endif
38 |
39 | }
40 | }
41 | }
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/QuitCommand.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0f4a3b476ead56b4cab6dfed968fce3d
3 | MonoImporter:
4 | serializedVersion: 2
5 | defaultReferences: []
6 | executionOrder: 0
7 | icon: {instanceID: 0}
8 | userData:
9 |
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/README.txt:
--------------------------------------------------------------------------------
1 | # Foundation Terminal (v4.0)
2 |
3 | Nicholas Ventimiglia | AvariceOnline.com
4 |
5 | ## Terminal for in game debugging
6 |
7 | The goal of this library to provide a UI for testing low level libraries and debugging in game. Built using uGUI. Is Unity3d 5 ready !
8 |
9 | - Log many message types with color coding
10 | - Hooks into Debug.Log
11 | - A command button bar for testing methods
12 | - A text input with optional input handling (text processors)
13 | - Hide and close with the ` key
14 |
15 | 
16 |
17 | ## Setup
18 |
19 | Drop the Terminal Prefab into your scene.
20 |
21 | ## Example Usage
22 |
23 | ```c#
24 |
25 | // Write
26 | Terminal.Log("blag blah");
27 | Terminal.LogError("blag blah");
28 | Terminal.LogSuccess("blag blah");
29 | Terminal.LogWarning("blag blah");
30 | Terminal.LogImportant("blag blah");
31 | // Wired to Application Log
32 | Debug.Log("blah");
33 |
34 | // Register button commands. (Do this in Awake)
35 | Terminal.Add(new TerminalCommand
36 | {
37 | Label = "Main",
38 | Method = MainTest
39 | });
40 |
41 | void MainTest()
42 | {
43 | // Run When Clicked
44 | }
45 |
46 | // Register new Text Processors (invoked when text is submitted)
47 | Terminal.Add(new TerminalInterpreter
48 | {
49 | Label = "Chat",
50 | Method = ChatExample
51 | });
52 |
53 | void ChatExample(string text)
54 | {
55 | // Run When inputted
56 | }
57 | ```
58 |
59 | ## More
60 |
61 | Part of the Unity3d Foundation toolkit. A collection of utilities for making high quality data driven games. http://unity3dFoundation.com
62 |
63 | - **Console** : A in game terminal for debugging !
64 |
65 | - **Tasks** : An async task library for doing background work or extending coroutines with return results.
66 |
67 | - **Localization** : Supports in editor translation, multiple files and automatic translation of scripts using the [Localized] annotation.
68 |
69 | - **Messenger** : Listener pattern. A message broker for relaying events in a loose way. Supports auto subscription via the [Subscribe] annotation.
70 |
71 | - **Injector** : Service Injector for resolving services and other components. Supports auto injection using the [Inject] annotation
72 |
73 | - **DataBinding** : For MVVM / MVC style databinding. Supports the new uGUI ui library.
74 |
75 | - **Cloud** : Parse-like storage and account services using a ASP.NET MVC back end. Need to authenticate your users? Reset passwords with branded emails? Save high scores or character data in a database? Maybe write your own authoritative back end? This is it.
76 |
77 | - **Lobby** : The ultimate example scene. Everything you need to deploy for a game, minus the actual game play.
78 |
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/README.txt.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 44f8610f89142034b90a221d6aed5d03
3 | TextScriptImporter:
4 | userData:
5 |
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/Terminal.cs:
--------------------------------------------------------------------------------
1 | // -------------------------------------
2 | // Domain : IBT / Realtime.co
3 | // Author : Nicholas Ventimiglia
4 | // Product : Messaging and Storage
5 | // Published : 2014
6 | // -------------------------------------
7 |
8 | using System;
9 | using UnityEngine;
10 |
11 | namespace Realtime.Demos.TerminalConsole
12 | {
13 | #region sub objects
14 |
15 | ///
16 | /// Message Formatting
17 | ///
18 | public enum TerminalType
19 | {
20 | Log,
21 | Warning,
22 | Error,
23 | Exception,
24 | Success,
25 | Important,
26 | Input,
27 | }
28 |
29 | ///
30 | /// A Terminal line item
31 | ///
32 | public struct TerminalItem
33 | {
34 | readonly string _text;
35 | public string Text
36 | {
37 | get { return _text; }
38 | }
39 |
40 | readonly string _formatted;
41 | public string Formatted
42 | {
43 | get { return _formatted; }
44 | }
45 |
46 | readonly TerminalType _type;
47 | public TerminalType Type
48 | {
49 | get { return _type; }
50 | }
51 |
52 | readonly Color _color;
53 | public Color Color
54 | {
55 | get { return _color; }
56 | }
57 |
58 | public TerminalItem(TerminalType type, string text)
59 | {
60 | _text = text;
61 | _type = type;
62 | switch (_type)
63 | {
64 | case TerminalType.Warning:
65 | _formatted = string.Format("<< {0}", text);
66 | _color = Terminal.Instance.WarningColor;
67 | break;
68 | case TerminalType.Error:
69 | _formatted = string.Format("<< {0}", text);
70 | _color = Terminal.Instance.ErrorColor;
71 | break;
72 | case TerminalType.Success:
73 | _formatted = string.Format("<< {0}", text);
74 | _color = Terminal.Instance.SuccessColor;
75 | break;
76 | case TerminalType.Important:
77 | _formatted = string.Format("<< {0}", text);
78 | _color = Terminal.Instance.ImportantColor;
79 | break;
80 | case TerminalType.Input:
81 | _formatted = string.Format(">> {0}", text);
82 | _color = Terminal.Instance.InputColor;
83 | break;
84 | default:
85 | _formatted = text;
86 | _color = Terminal.Instance.LogColor;
87 | break;
88 | }
89 | }
90 | }
91 |
92 | ///
93 | /// For processing Text input
94 | ///
95 | public class TerminalInterpreter
96 | {
97 | public string Label;
98 | public Action Method;
99 | }
100 |
101 | ///
102 | /// Button to add to the menu
103 | ///
104 | public class TerminalCommand
105 | {
106 | public string Label;
107 | public Action Method;
108 | }
109 | #endregion
110 |
111 | ///
112 | /// The Terminal Model.
113 | ///
114 | public class Terminal
115 | {
116 | #region static
117 | public static readonly Terminal Instance = new Terminal();
118 | #endregion
119 |
120 | #region props / fields
121 |
122 | // Default color of the standard display text.
123 |
124 | public Color LogColor = Color.white;
125 | public Color WarningColor = Color.yellow;
126 | public Color ErrorColor = Color.red;
127 | public Color SuccessColor = Color.green;
128 | public Color InputColor = Color.green;
129 | public Color ImportantColor = Color.cyan;
130 |
131 | public readonly ObservableList Items = new ObservableList();
132 | public readonly ObservableList Commands = new ObservableList();
133 | public readonly ObservableList Interpreters = new ObservableList();
134 |
135 | #endregion
136 |
137 | ///
138 | /// Add Command
139 | ///
140 | public static void Add(TerminalCommand arg)
141 | {
142 | Instance.Commands.Add(arg);
143 | }
144 |
145 | ///
146 | /// Add Interpreter
147 | ///
148 | public static void Add(TerminalInterpreter arg)
149 | {
150 | Instance.Interpreters.Add(arg);
151 | }
152 |
153 |
154 | ///
155 | /// write only
156 | ///
157 | public static void Add(TerminalItem message)
158 | {
159 | Instance.Items.Add(message);
160 | }
161 |
162 | ///
163 | /// write only
164 | ///
165 | public static void Add(object message, TerminalType type)
166 | {
167 | Add(new TerminalItem(type, message.ToString()));
168 | }
169 |
170 | ///
171 | /// write only
172 | ///
173 | public static void Log(object message)
174 | {
175 | Add(new TerminalItem(TerminalType.Log, message.ToString()));
176 | }
177 |
178 | ///
179 | /// write only
180 | ///
181 | public static void LogError(object message)
182 | {
183 | Add(new TerminalItem(TerminalType.Error, message.ToString()));
184 | }
185 |
186 | ///
187 | /// write only
188 | ///
189 | public static void LogWarning(object message)
190 | {
191 | Add(new TerminalItem(TerminalType.Warning, message.ToString()));
192 | }
193 |
194 | ///
195 | /// write only
196 | ///
197 | public static void LogSuccess(object message)
198 | {
199 | Add(new TerminalItem(TerminalType.Success, message.ToString()));
200 | }
201 |
202 | ///
203 | /// write only
204 | ///
205 | public static void LogImportant(object message)
206 | {
207 | Add(new TerminalItem(TerminalType.Important, message.ToString()));
208 | }
209 |
210 | ///
211 | /// write only
212 | ///
213 | public static void LogInput(object message)
214 | {
215 | Add(new TerminalItem(TerminalType.Input, message.ToString()));
216 | }
217 |
218 |
219 | ///
220 | /// Input for a command
221 | ///
222 | ///
223 | public static void Submit(string message)
224 | {
225 | if (string.IsNullOrEmpty(message))
226 | {
227 | LogInput(string.Empty);
228 | return;
229 | }
230 |
231 | message = message.Trim();
232 |
233 | Add(new TerminalItem(TerminalType.Input, message));
234 |
235 | foreach (var interpreter in Instance.Interpreters)
236 | {
237 | interpreter.Method.Invoke(message);
238 | }
239 | }
240 |
241 | ///
242 | /// clear writes
243 | ///
244 | public static void Clear()
245 | {
246 | Instance.Items.Clear();
247 | }
248 | }
249 | }
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/Terminal.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0585a6c49ee9bfc488f3656df23018f2
3 | MonoImporter:
4 | serializedVersion: 2
5 | defaultReferences: []
6 | executionOrder: 0
7 | icon: {instanceID: 0}
8 | userData:
9 |
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/Terminal.prefab:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/Foundation/Console/Terminal.prefab
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/Terminal.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6f2bf694ca907014bbed527957d67e3f
3 | NativeFormatImporter:
4 | userData:
5 |
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/Terminal.unity:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/Foundation/Console/Terminal.unity
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/Terminal.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a5396dae58f76584da07a1df929928b2
3 | DefaultImporter:
4 | userData:
5 |
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/TerminalView.cs:
--------------------------------------------------------------------------------
1 | // -------------------------------------
2 | // Domain : IBT / Realtime.co
3 | // Author : Nicholas Ventimiglia
4 | // Product : Messaging and Storage
5 | // Published : 2014
6 | // -------------------------------------
7 |
8 | using System;
9 | using System.Collections;
10 | using System.Collections.Generic;
11 | using System.Linq;
12 | using Realtime.Tasks;
13 | using UnityEngine;
14 | using UnityEngine.UI;
15 |
16 | namespace Realtime.Demos.TerminalConsole.Views
17 | {
18 | ///
19 | /// renders the Terminal using new 4.6 uGUI
20 | ///
21 | [AddComponentMenu("Realtime/Demos/Terminal/TerminalView")]
22 | public class TerminalView : MonoBehaviour
23 | {
24 | ///
25 | /// Option
26 | ///
27 | public bool DoDontDestoryOnLoad = true;
28 |
29 | public GameObject DisplayRoot;
30 | public InputField TextInput;
31 |
32 | public TerminalViewCommand CommandPrototype;
33 | public TerminalViewItem ItemPrototype;
34 |
35 | public Transform CommandLayout;
36 | public Transform ItemLayout;
37 | public Scrollbar CommandScrollBar;
38 | public Scrollbar ItemScrollBar;
39 | [HideInInspector]
40 | public List CommandItems = new List();
41 | [HideInInspector]
42 | public List TextItems = new List();
43 |
44 | public bool IsVisible
45 | {
46 | get
47 | {
48 | return DisplayRoot.activeSelf;
49 |
50 | }
51 | set
52 | {
53 | DisplayRoot.SetActive(value);
54 | }
55 | }
56 |
57 | public KeyCode VisiblityKey = KeyCode.BackQuote;
58 |
59 | public Color LogColor = Color.white;
60 | public Color WarningColor = Color.yellow;
61 | public Color ErrorColor = Color.red;
62 |
63 | public Color SuccessColor = Color.green;
64 | public Color InputColor = Color.cyan;
65 | public Color ImportantColor = Color.yellow;
66 |
67 | void Awake()
68 | {
69 | // Display
70 | Terminal.Instance.LogColor = LogColor;
71 | Terminal.Instance.WarningColor = WarningColor;
72 | Terminal.Instance.ErrorColor = ErrorColor;
73 | Terminal.Instance.SuccessColor = SuccessColor;
74 | Terminal.Instance.InputColor = InputColor;
75 | Terminal.Instance.ImportantColor = ImportantColor;
76 |
77 | //Hide prototypes
78 | CommandPrototype.gameObject.SetActive(false);
79 | ItemPrototype.gameObject.SetActive(false);
80 |
81 | //wire
82 | Terminal.Instance.Items.OnAdd += Items_OnAdd;
83 | Terminal.Instance.Items.OnClear += Items_OnClear;
84 | Terminal.Instance.Items.OnRemove += Items_OnRemove;
85 |
86 | Terminal.Instance.Commands.OnAdd += Commands_OnAdd;
87 | Terminal.Instance.Commands.OnClear += Commands_OnClear;
88 | Terminal.Instance.Commands.OnRemove += Commands_OnRemove;
89 |
90 | //add items preadded
91 | foreach (var item in Terminal.Instance.Items)
92 | {
93 | Items_OnAdd(item);
94 | }
95 |
96 | foreach (var item in Terminal.Instance.Commands)
97 | {
98 | Commands_OnAdd(item);
99 | }
100 |
101 | Application.RegisterLogCallback(HandlerLog);
102 |
103 | if (DoDontDestoryOnLoad)
104 | DontDestroyOnLoad(gameObject);
105 |
106 | Debug.Log("Console Ready");
107 | }
108 |
109 | void OnDestroy()
110 | {
111 | //remove handlers
112 | Terminal.Instance.Items.OnAdd -= Items_OnAdd;
113 | Terminal.Instance.Items.OnClear -= Items_OnClear;
114 | Terminal.Instance.Items.OnRemove -= Items_OnRemove;
115 |
116 | Terminal.Instance.Commands.OnAdd -= Commands_OnAdd;
117 | Terminal.Instance.Commands.OnClear -= Commands_OnClear;
118 | Terminal.Instance.Commands.OnRemove -= Commands_OnRemove;
119 | }
120 |
121 | private void HandlerLog(string condition, string stackTrace, LogType type)
122 | {
123 | switch (type)
124 | {
125 | case LogType.Error:
126 | case LogType.Exception:
127 | Terminal.LogError(condition);
128 | break;
129 | case LogType.Warning:
130 | Terminal.LogWarning(condition);
131 | break;
132 | case LogType.Log:
133 | case LogType.Assert:
134 | Terminal.Log(condition);
135 | break;
136 | }
137 | }
138 |
139 | void Commands_OnRemove(TerminalCommand obj)
140 | {
141 | var item = CommandItems.FirstOrDefault(o => o.Model.Equals(obj));
142 | if (item != null)
143 | {
144 | CommandItems.Remove(item);
145 | Destroy(item.gameObject);
146 | }
147 | }
148 |
149 | void Commands_OnClear()
150 | {
151 | foreach (var item in CommandItems)
152 | {
153 | Destroy(item.gameObject);
154 | }
155 | CommandItems.Clear();
156 | }
157 |
158 | void Commands_OnAdd(TerminalCommand obj)
159 | {
160 | //inst
161 | var instance = (GameObject)Instantiate(CommandPrototype.gameObject);
162 | var script = instance.GetComponent();
163 | script.Label.text = obj.Label;
164 | script.Handler = obj.Method;
165 | script.Model = obj;
166 |
167 | //parent
168 | instance.transform.SetParent(CommandLayout.transform);
169 | instance.SetActive(true);
170 |
171 | CommandItems.Add(script);
172 |
173 | Invoke("ResetCommandScroll", .01f);
174 | }
175 |
176 | void ResetCommandScroll()
177 | {
178 | CommandScrollBar.value = 1;
179 | }
180 |
181 | void Items_OnRemove(TerminalItem obj)
182 | {
183 | var item = TextItems.FirstOrDefault(o => o.Model.Equals(obj));
184 | if (item != null)
185 | {
186 | TextItems.Remove(item);
187 | Destroy(item.gameObject);
188 | }
189 | }
190 |
191 | void Items_OnClear()
192 | {
193 | foreach (var item in TextItems)
194 | {
195 | Destroy(item.gameObject);
196 | }
197 | TextItems.Clear();
198 | }
199 |
200 | void Items_OnAdd(TerminalItem obj)
201 | {
202 | StartCoroutine(AddItemAsync(obj));
203 | }
204 |
205 | IEnumerator AddItemAsync(TerminalItem obj)
206 | {
207 |
208 | //inst
209 | var instance = (GameObject)Instantiate(ItemPrototype.gameObject);
210 | var script = instance.GetComponent();
211 | script.Label.text = obj.Text;
212 | script.Label.color = obj.Color;
213 | script.Model = obj;
214 |
215 | //parent
216 | instance.transform.SetParent(ItemLayout.transform);
217 | instance.SetActive(true);
218 |
219 | TextItems.Add(script);
220 |
221 | yield return 1;
222 |
223 | ItemScrollBar.value = 0;
224 |
225 | yield return 1;
226 |
227 | ItemScrollBar.value = 0;
228 | }
229 |
230 |
231 | void Update()
232 | {
233 | if (Input.GetKeyUp(VisiblityKey))
234 | {
235 | IsVisible = !IsVisible;
236 | }
237 |
238 | }
239 |
240 | public void DoSend()
241 | {
242 | var text = TextInput.text.Replace(Environment.NewLine, "");
243 |
244 | if (string.IsNullOrEmpty(text))
245 | return;
246 |
247 | Terminal.Submit(text);
248 |
249 | TextInput.text = string.Empty;
250 | }
251 |
252 | public void DoClear()
253 | {
254 | Terminal.Clear();
255 | }
256 | }
257 | }
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/TerminalView.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3c14d55c8e178fa4dba0ec728416acbd
3 | MonoImporter:
4 | serializedVersion: 2
5 | defaultReferences: []
6 | executionOrder: 0
7 | icon: {instanceID: 0}
8 | userData:
9 |
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/TerminalViewCommand.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using UnityEngine;
3 | using UnityEngine.UI;
4 |
5 | namespace Realtime.Demos.TerminalConsole.Views
6 | {
7 | ///
8 | /// Command View Controller
9 | ///
10 | [AddComponentMenu("Realtime/Demos/Terminal/TerminalViewCommand")]
11 | public class TerminalViewCommand : MonoBehaviour
12 | {
13 | public TerminalCommand Model { get; set; }
14 |
15 | public Text Label;
16 |
17 | public Action Handler;
18 |
19 | public void OnClick()
20 | {
21 | if (Handler != null)
22 | Handler();
23 | }
24 |
25 | }
26 | }
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/TerminalViewCommand.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0aec2c1c384994741842833157c9d287
3 | MonoImporter:
4 | serializedVersion: 2
5 | defaultReferences: []
6 | executionOrder: 0
7 | icon: {instanceID: 0}
8 | userData:
9 |
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/TerminalViewItem.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEngine.UI;
3 |
4 | namespace Realtime.Demos.TerminalConsole.Views
5 | {
6 | ///
7 | /// Item View Controller
8 | ///
9 | [AddComponentMenu("Realtime/Demos/Terminal/TerminalViewItem")]
10 | public class TerminalViewItem : MonoBehaviour
11 | {
12 | public TerminalItem Model { get; set; }
13 |
14 | public Text Label;
15 | }
16 | }
--------------------------------------------------------------------------------
/Foundation Terminal/Foundation/Console/TerminalViewItem.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f0420699e292ffc4c95b26553e032592
3 | MonoImporter:
4 | serializedVersion: 2
5 | defaultReferences: []
6 | executionOrder: 0
7 | icon: {instanceID: 0}
8 | userData:
9 |
--------------------------------------------------------------------------------
/Foundation Terminal/ProjectSettings/AudioManager.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/ProjectSettings/AudioManager.asset
--------------------------------------------------------------------------------
/Foundation Terminal/ProjectSettings/DynamicsManager.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/ProjectSettings/DynamicsManager.asset
--------------------------------------------------------------------------------
/Foundation Terminal/ProjectSettings/EditorBuildSettings.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/ProjectSettings/EditorBuildSettings.asset
--------------------------------------------------------------------------------
/Foundation Terminal/ProjectSettings/EditorSettings.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/ProjectSettings/EditorSettings.asset
--------------------------------------------------------------------------------
/Foundation Terminal/ProjectSettings/GraphicsSettings.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/ProjectSettings/GraphicsSettings.asset
--------------------------------------------------------------------------------
/Foundation Terminal/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/ProjectSettings/InputManager.asset
--------------------------------------------------------------------------------
/Foundation Terminal/ProjectSettings/NavMeshAreas.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/ProjectSettings/NavMeshAreas.asset
--------------------------------------------------------------------------------
/Foundation Terminal/ProjectSettings/NetworkManager.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/ProjectSettings/NetworkManager.asset
--------------------------------------------------------------------------------
/Foundation Terminal/ProjectSettings/Physics2DSettings.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/ProjectSettings/Physics2DSettings.asset
--------------------------------------------------------------------------------
/Foundation Terminal/ProjectSettings/ProjectSettings.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/ProjectSettings/ProjectSettings.asset
--------------------------------------------------------------------------------
/Foundation Terminal/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 5.1.2f1
2 | m_StandardAssetsVersion: 0
3 |
--------------------------------------------------------------------------------
/Foundation Terminal/ProjectSettings/QualitySettings.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/ProjectSettings/QualitySettings.asset
--------------------------------------------------------------------------------
/Foundation Terminal/ProjectSettings/TagManager.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/ProjectSettings/TagManager.asset
--------------------------------------------------------------------------------
/Foundation Terminal/ProjectSettings/TimeManager.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/ProjectSettings/TimeManager.asset
--------------------------------------------------------------------------------
/Foundation Terminal/UnityVS.Foundation Console.CSharp.Editor.csproj.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | True
--------------------------------------------------------------------------------
/Foundation Terminal/UnityVS.Foundation Console.v12.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation Terminal/UnityVS.Foundation Console.v12.suo
--------------------------------------------------------------------------------
/Foundation.Terminal 2015.7.30.unitypackage:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Foundation.Terminal 2015.7.30.unitypackage
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Foundation Terminal (v4.0)
2 |
3 | Nicholas Ventimiglia | AvariceOnline.com
4 |
5 | ## Terminal for in game debugging
6 |
7 | The goal of this library to provide a UI for testing low level libraries and debugging in game. Built using uGUI. Is Unity3d 5 ready !
8 |
9 | - Log many message types with color coding
10 | - Hooks into Debug.Log
11 | - A command button bar for testing methods
12 | - A text input with optional input handling (text processors)
13 | - Hide and close with the ` key
14 |
15 | 
16 |
17 | ## Setup
18 |
19 | Drop the Terminal Prefab into your scene.
20 |
21 | ## Example Usage
22 |
23 | ````
24 |
25 | // Write
26 | Terminal.Log("blag blah");
27 | Terminal.LogError("blag blah");
28 | Terminal.LogSuccess("blag blah");
29 | Terminal.LogWarning("blag blah");
30 | Terminal.LogImportant("blag blah");
31 | // Wired to Application Log
32 | Debug.Log("blah");
33 |
34 | // Register button commands. (Do this in Awake)
35 | Terminal.Add(new TerminalCommand
36 | {
37 | Label = "Main",
38 | Method = MainTest
39 | });
40 |
41 | void MainTest()
42 | {
43 | // Run When Clicked
44 | }
45 |
46 | // Register new Text Processors (invoked when text is submitted)
47 | Terminal.Add(new TerminalInterpreter
48 | {
49 | Label = "Chat",
50 | Method = ChatExample
51 | });
52 |
53 | void ChatExample(string text)
54 | {
55 | // Run When inputted
56 | }
57 | ````
58 |
59 | ## More
60 |
61 | Part of the Unity3d Foundation toolkit. A collection of utilities for making high quality data driven games. http://unity3dFoundation.com
62 |
63 | - [**Tasks**](https://github.com/NVentimiglia/Unity3d-Async-Task) : An async task library for doing background work or extending coroutines with return results.
64 | - [**Messenger**](https://github.com/NVentimiglia/Unity3d-Event-Messenger) : Listener pattern. A message broker for relaying events in a loosely coupled way. Supports auto subscription via the [Subscribe] annotation.
65 | - [**Terminal**](https://github.com/NVentimiglia/Unity3d-uGUI-Terminal): A in game terminal for debugging !
66 | - [**Injector**](https://github.com/NVentimiglia/Unity3d-Service-Injector): Service Injector for resolving services and other components. Supports auto injection using the [Inject] annotation
67 | - [**DataBinding**](https://github.com/NVentimiglia/Unity3d-Databinding-Mvvm-Mvc) : For MVVM / MVC style databinding. Supports the new uGUI ui library.
68 | - [**Localization**](https://github.com/NVentimiglia/Unity3d-Localization) : Supports in editor translation, multiple files and automatic translation of scripts using the [Localized] annotation.
69 | - **Cloud** : Parse-like storage and account services using a ASP.NET MVC back end. Need to authenticate your users? Reset passwords with branded emails? Save high scores or character data in a database? Maybe write your own authoritative back end? This is it.
70 | - **Lobby** : The ultimate example scene. Everything you need to deploy for a game, minus the actual game play.
71 |
72 | ## Donations
73 | [I accept donations via papal. Your money is an objective measure of my self esteem.](https://www.paypal.com/us/cgi-bin/webscr?cmd=_send-money&nav=1&email=nick@simplesys.us)
74 |
--------------------------------------------------------------------------------
/Terminal.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NVentimiglia/Unity3d-uGUI-Terminal/3bfb830d6e5da7b90f74e64ed3645b0d6abaf3ee/Terminal.gif
--------------------------------------------------------------------------------