├── .github
├── AAR Source (Android)
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── yasirkula
│ │ │ └── unity
│ │ │ ├── DebugConsole.java
│ │ │ ├── DebugConsoleLogcatLogReceiver.java
│ │ │ └── DebugConsoleLogcatLogger.java
│ └── proguard.txt
├── Images
│ ├── 1.png
│ ├── 2.png
│ └── 3.png
└── README.md
├── LICENSE.txt
├── LICENSE.txt.meta
├── Plugins.meta
├── Plugins
├── IngameDebugConsole.meta
└── IngameDebugConsole
│ ├── Android.meta
│ ├── Android
│ ├── DebugLogLogcatListener.cs
│ ├── DebugLogLogcatListener.cs.meta
│ ├── IngameDebugConsole.aar
│ └── IngameDebugConsole.aar.meta
│ ├── Editor.meta
│ ├── Editor
│ ├── DebugLogManagerEditor.cs
│ ├── DebugLogManagerEditor.cs.meta
│ ├── IngameDebugConsole.Editor.asmdef
│ └── IngameDebugConsole.Editor.asmdef.meta
│ ├── IngameDebugConsole.Runtime.asmdef
│ ├── IngameDebugConsole.Runtime.asmdef.meta
│ ├── IngameDebugConsole.prefab
│ ├── IngameDebugConsole.prefab.meta
│ ├── Prefabs.meta
│ ├── Prefabs
│ ├── CommandSuggestion.prefab
│ ├── CommandSuggestion.prefab.meta
│ ├── DebugLogItem.prefab
│ └── DebugLogItem.prefab.meta
│ ├── README.txt
│ ├── README.txt.meta
│ ├── Scripts.meta
│ ├── Scripts
│ ├── Attributes.meta
│ ├── Attributes
│ │ ├── ConsoleAttribute.cs
│ │ ├── ConsoleAttribute.cs.meta
│ │ ├── ConsoleCustomTypeParserAttribute.cs
│ │ ├── ConsoleCustomTypeParserAttribute.cs.meta
│ │ ├── ConsoleMethodAttribute.cs
│ │ └── ConsoleMethodAttribute.cs.meta
│ ├── CircularBuffer.cs
│ ├── CircularBuffer.cs.meta
│ ├── DebugLogConsole.cs
│ ├── DebugLogConsole.cs.meta
│ ├── DebugLogEntry.cs
│ ├── DebugLogEntry.cs.meta
│ ├── DebugLogItem.cs
│ ├── DebugLogItem.cs.meta
│ ├── DebugLogItemCopyWebGL.cs
│ ├── DebugLogItemCopyWebGL.cs.meta
│ ├── DebugLogManager.cs
│ ├── DebugLogManager.cs.meta
│ ├── DebugLogPopup.cs
│ ├── DebugLogPopup.cs.meta
│ ├── DebugLogRecycledListView.cs
│ ├── DebugLogRecycledListView.cs.meta
│ ├── DebugLogResizeListener.cs
│ ├── DebugLogResizeListener.cs.meta
│ ├── DebugsOnScrollListener.cs
│ ├── DebugsOnScrollListener.cs.meta
│ ├── EventSystemHandler.cs
│ └── EventSystemHandler.cs.meta
│ ├── Sprites.meta
│ ├── Sprites
│ ├── IconClear.psd
│ ├── IconClear.psd.meta
│ ├── IconCollapse.psd
│ ├── IconCollapse.psd.meta
│ ├── IconError.psd
│ ├── IconError.psd.meta
│ ├── IconHide.psd
│ ├── IconHide.psd.meta
│ ├── IconInfo.psd
│ ├── IconInfo.psd.meta
│ ├── IconResizeAllDirections.psd
│ ├── IconResizeAllDirections.psd.meta
│ ├── IconResizeVertialOnly.psd
│ ├── IconResizeVertialOnly.psd.meta
│ ├── IconSnapToBottom.psd
│ ├── IconSnapToBottom.psd.meta
│ ├── IconSnapToBottomBg.psd
│ ├── IconSnapToBottomBg.psd.meta
│ ├── IconWarning.psd
│ ├── IconWarning.psd.meta
│ ├── IngameDebugConsoleSpriteAtlas.spriteatlas
│ ├── IngameDebugConsoleSpriteAtlas.spriteatlas.meta
│ ├── SearchIcon.psd
│ ├── SearchIcon.psd.meta
│ ├── SlicedBackground.psd
│ ├── SlicedBackground.psd.meta
│ ├── SlicedBackground2.psd
│ ├── SlicedBackground2.psd.meta
│ ├── SlicedBackground3.psd
│ ├── SlicedBackground3.psd.meta
│ ├── Unused.meta
│ └── Unused
│ │ ├── IconErrorHighRes.psd
│ │ ├── IconErrorHighRes.psd.meta
│ │ ├── IconInfoHighRes.psd
│ │ ├── IconInfoHighRes.psd.meta
│ │ ├── IconWarningHighRes.psd
│ │ └── IconWarningHighRes.psd.meta
│ ├── WebGL.meta
│ └── WebGL
│ ├── IngameDebugConsole.jslib
│ └── IngameDebugConsole.jslib.meta
├── package.json
└── package.json.meta
/.github/AAR Source (Android)/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.github/AAR Source (Android)/java/com/yasirkula/unity/DebugConsole.java:
--------------------------------------------------------------------------------
1 | package com.yasirkula.unity;
2 |
3 | import android.content.ClipData;
4 | import android.content.ClipboardManager;
5 | import android.content.Context;
6 |
7 | /**
8 | * Created by yasirkula on 6.04.2020.
9 | */
10 |
11 | public class DebugConsole
12 | {
13 | public static void CopyText( Context context, String text )
14 | {
15 | ClipboardManager clipboard = (ClipboardManager) context.getSystemService( Context.CLIPBOARD_SERVICE );
16 | ClipData clip = ClipData.newPlainText( "log", text );
17 | clipboard.setPrimaryClip( clip );
18 | }
19 | }
--------------------------------------------------------------------------------
/.github/AAR Source (Android)/java/com/yasirkula/unity/DebugConsoleLogcatLogReceiver.java:
--------------------------------------------------------------------------------
1 | package com.yasirkula.unity;
2 |
3 | /**
4 | * Created by yasirkula on 7.11.2017.
5 | */
6 |
7 | public interface DebugConsoleLogcatLogReceiver
8 | {
9 | void OnLogReceived( String log );
10 | }
--------------------------------------------------------------------------------
/.github/AAR Source (Android)/java/com/yasirkula/unity/DebugConsoleLogcatLogger.java:
--------------------------------------------------------------------------------
1 | package com.yasirkula.unity;
2 |
3 | import java.io.BufferedReader;
4 | import java.io.IOException;
5 | import java.io.InputStreamReader;
6 |
7 | /**
8 | * Created by yasirkula on 7.11.2017.
9 | */
10 |
11 | public class DebugConsoleLogcatLogger
12 | {
13 | private static class LogcatWorker implements Runnable
14 | {
15 | private DebugConsoleLogcatLogReceiver logReceiver;
16 | private String command;
17 |
18 | private volatile boolean running = true;
19 |
20 | public LogcatWorker( DebugConsoleLogcatLogReceiver logReceiver, String command )
21 | {
22 | this.logReceiver = logReceiver;
23 | this.command = command;
24 | }
25 |
26 | @Override
27 | public void run()
28 | {
29 | // Credit: http://chintanrathod.com/read-logs-programmatically-in-android/
30 | try
31 | {
32 | Runtime.getRuntime().exec( "logcat -c" );
33 |
34 | Process process = Runtime.getRuntime().exec( command );
35 | BufferedReader bufferedReader = new BufferedReader( new InputStreamReader( process.getInputStream() ) );
36 |
37 | String line;
38 | while( running )
39 | {
40 | while( ( line = bufferedReader.readLine() ) != null )
41 | logReceiver.OnLogReceived( line );
42 |
43 | try
44 | {
45 | Thread.sleep( 1000L );
46 | }
47 | catch( InterruptedException e )
48 | {
49 | }
50 | }
51 | }
52 | catch( IOException e )
53 | {
54 | }
55 | }
56 |
57 | public void terminate()
58 | {
59 | running = false;
60 | }
61 | }
62 |
63 | private LogcatWorker worker;
64 |
65 | public void Start( DebugConsoleLogcatLogReceiver logReceiver, String arguments )
66 | {
67 | Stop();
68 |
69 | if( logReceiver == null )
70 | return;
71 |
72 | String command = "logcat";
73 | if( arguments != null )
74 | {
75 | arguments = arguments.trim();
76 | if( arguments.length() > 0 )
77 | command += " " + arguments;
78 | }
79 |
80 | worker = new LogcatWorker( logReceiver, command );
81 | Thread thread = new Thread( worker );
82 | thread.start();
83 | }
84 |
85 | public void Stop()
86 | {
87 | if( worker != null )
88 | {
89 | worker.terminate();
90 | worker = null;
91 | }
92 | }
93 | }
--------------------------------------------------------------------------------
/.github/AAR Source (Android)/proguard.txt:
--------------------------------------------------------------------------------
1 | -keep class com.yasirkula.unity.* { *; }
--------------------------------------------------------------------------------
/.github/Images/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/.github/Images/1.png
--------------------------------------------------------------------------------
/.github/Images/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/.github/Images/2.png
--------------------------------------------------------------------------------
/.github/Images/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/.github/Images/3.png
--------------------------------------------------------------------------------
/.github/README.md:
--------------------------------------------------------------------------------
1 | # In-game Debug Console for Unity 3D
2 |
3 |
4 |
5 | **Available on Asset Store:** https://assetstore.unity.com/packages/tools/gui/in-game-debug-console-68068
6 |
7 | **Forum Thread:** http://forum.unity3d.com/threads/in-game-debug-console-with-ugui-free.411323/
8 |
9 | **Discord:** https://discord.gg/UJJt549AaV
10 |
11 | **[GitHub Sponsors ☕](https://github.com/sponsors/yasirkula)**
12 |
13 | ## ABOUT
14 |
15 | This asset helps you see debug messages (logs, warnings, errors, exceptions) runtime in a build (also assertions in editor) and execute commands using its built-in console. It also supports logging *logcat* messages to the console on Android platform.
16 |
17 | User interface is created with **uGUI** and costs **1 SetPass call** (and 6 to 10 batches) when *Sprite Packing* is enabled. It is possible to resize or hide the console window during the game. Once the console is hidden, a small popup will take its place (which can be dragged around). The popup will show the number of logs that arrived since it had appeared. Console window will reappear after clicking the popup.
18 |
19 | 
20 |
21 | Console window is optimized using a customized recycled list view that calls *Instantiate* function sparingly.
22 |
23 | ## INSTALLATION
24 |
25 | There are 5 ways to install this plugin:
26 |
27 | - import [IngameDebugConsole.unitypackage](https://github.com/yasirkula/UnityIngameDebugConsole/releases) via *Assets-Import Package*
28 | - clone/[download](https://github.com/yasirkula/UnityIngameDebugConsole/archive/master.zip) this repository and move the *Plugins* folder to your Unity project's *Assets* folder
29 | - import it from [Asset Store](https://assetstore.unity.com/packages/tools/gui/in-game-debug-console-68068)
30 | - *(via Package Manager)* click the + button and install the package from the following git URL:
31 | - `https://github.com/yasirkula/UnityIngameDebugConsole.git`
32 | - *(via [OpenUPM](https://openupm.com))* after installing [openupm-cli](https://github.com/openupm/openupm-cli), run the following command:
33 | - `openupm add com.yasirkula.ingamedebugconsole`
34 |
35 | ## FAQ
36 |
37 | - **New Input System isn't supported on Unity 2019.2.5 or earlier**
38 |
39 | Add `ENABLE_INPUT_SYSTEM` compiler directive to **Player Settings/Scripting Define Symbols** (these symbols are platform specific, so if you change the active platform later, you'll have to add the compiler directive again).
40 |
41 | - **"Unity.InputSystem" assembly can't be resolved on Unity 2018.4 or earlier**
42 |
43 | Remove `Unity.InputSystem` assembly from **IngameDebugConsole.Runtime** Assembly Definition File's *Assembly Definition References* list.
44 |
45 | - **"Receive Logcat Logs In Android" isn't working, it says "java.lang.ClassNotFoundException: com.yasirkula.unity.DebugConsoleLogcatLogger" in Logcat**
46 |
47 | If you are sure that your plugin is up-to-date, then enable **Custom Proguard File** option from *Player Settings* and add the following line to that file: `-keep class com.yasirkula.unity.* { *; }`
48 |
49 | ## HOW TO
50 |
51 | Simply place **IngameDebugConsole** prefab to your scene. Hovering the cursor over its properties in the Inspector will reveal explanatory tooltips.
52 |
53 | While testing on Unity editor, right clicking a log entry will open the corresponding line in external script editor, similar to double clicking a log in Unity Console.
54 |
55 | ## COMMAND CONSOLE
56 |
57 | ### Executing Commands
58 |
59 | You can enter commands using the input field at the bottom of the console. To see all available commands, simply type "*help*".
60 |
61 | A command is basically a function that can be called from the console via the command input field. This function can be **static** or an **instance function** (non static), in which case, a living instance is required to call the function. The return type of the function can be anything (including *void*). If the function returns an object, it will be printed to the console. The function can also take any number of parameters; the only restriction applies to the types of these parameters. Supported parameter types are:
62 |
63 | **Primitive types, enums, string, Vector2, Vector3, Vector4, Color, Color32, Vector2Int, Vector3Int, Quaternion, Rect, RectInt, RectOffset, Bounds, BoundsInt, GameObject, any Component type, arrays/Lists of these supported types**
64 |
65 | Note that *GameObject* and *Component* parameters are assigned value using *GameObject.Find*.
66 |
67 | To call a registered command, simply write down the command and then provide the necessary parameters. For example:
68 |
69 | `cube [0 2.5 0]`
70 |
71 | To see the syntax of a command, see the help log:
72 |
73 | `- cube: Creates a cube at specified position -> TestScript.CreateCubeAt(Vector3 position)`
74 |
75 | Here, the command is *cube* and it takes a single *Vector3* parameter. This command calls the *CreateCubeAt* function in the *TestScript* script (see example code below for implementation details).
76 |
77 | Console uses a simple algorithm to parse the command input and has some restrictions:
78 |
79 | - Wrap strings with quotation marks ( " or ' )
80 | - Wrap vectors with brackets ( \[\] ) or parentheses ( () )
81 |
82 | However, there is some flexibility in the syntax, as well:
83 |
84 | - You can provide an empty vector to represent Vector_.zero: \[\]
85 | - You can enter 1 instead of true, or 0 instead of false
86 | - You can enter `null` for null GameObject and/or Component parameters
87 |
88 | ### Registering Custom Commands
89 |
90 | If all the parameters of a function are of supported types, you can register the function to the console in four different ways (all of these methods take optional string parameter(s) at the end to specify custom display names for the registered function's parameter(s)):
91 |
92 | - **ConsoleMethod Attribute** *(not supported on UWP platform)*
93 |
94 | Simply add **IngameDebugConsole.ConsoleMethod** attribute to your functions. These functions must be *public static* and must reside in a *public* class. These constraints do not apply to the other 3 methods.
95 |
96 | ```csharp
97 | using UnityEngine;
98 | using IngameDebugConsole;
99 |
100 | public class TestScript : MonoBehaviour
101 | {
102 | [ConsoleMethod( "cube", "Creates a cube at specified position" )]
103 | public static void CreateCubeAt( Vector3 position )
104 | {
105 | GameObject.CreatePrimitive( PrimitiveType.Cube ).transform.position = position;
106 | }
107 | }
108 | ```
109 |
110 | - **Strongly Typed Functions**
111 |
112 | Use one of the `DebugLogConsole.AddCommand( string command, string description, System.Action method )` variants:
113 |
114 | ```csharp
115 | using UnityEngine;
116 | using IngameDebugConsole;
117 |
118 | public class TestScript : MonoBehaviour
119 | {
120 | void Start()
121 | {
122 | DebugLogConsole.AddCommand( "destroy", "Destroys " + name, Destroy );
123 | DebugLogConsole.AddCommand( "cube", "Creates a cube at specified position", CreateCubeAt );
124 | DebugLogConsole.AddCommand( "child", "Creates a new child object under " + name, AddChild );
125 | }
126 |
127 | void Destroy()
128 | {
129 | Destroy( gameObject );
130 | }
131 |
132 | public static void CreateCubeAt( Vector3 position )
133 | {
134 | GameObject.CreatePrimitive( PrimitiveType.Cube ).transform.position = position;
135 | }
136 |
137 | private GameObject AddChild( string name )
138 | {
139 | GameObject child = new GameObject( name );
140 | child.transform.SetParent( transform );
141 |
142 | return child;
143 | }
144 | }
145 | ```
146 |
147 | - **Static Functions (weakly typed)**
148 |
149 | Use `DebugLogConsole.AddCommandStatic( string command, string description, string methodName, System.Type ownerType )`. Here, **methodName** is the name of the method in string format, and **ownerType** is the type of the owner class. It may seem strange to provide the method name in string and/or provide the type of the class; however, after hours of research, I found it the best way to register any function with any number of parameters and parameter types into the system without knowing the signature of the method.
150 |
151 | ```csharp
152 | using UnityEngine;
153 | using IngameDebugConsole;
154 |
155 | public class TestScript : MonoBehaviour
156 | {
157 | void Start()
158 | {
159 | DebugLogConsole.AddCommandStatic( "cube", "Creates a cube at specified position", "CreateCubeAt", typeof( TestScript ) );
160 | }
161 |
162 | public static void CreateCubeAt( Vector3 position )
163 | {
164 | GameObject.CreatePrimitive( PrimitiveType.Cube ).transform.position = position;
165 | }
166 | }
167 | ```
168 |
169 | - **Instance Functions (weakly typed)**
170 |
171 | Use `DebugLogConsole.AddCommandInstance( string command, string description, string methodName, object instance )`:
172 |
173 | ```csharp
174 | using UnityEngine;
175 | using IngameDebugConsole;
176 |
177 | public class TestScript : MonoBehaviour
178 | {
179 | void Start()
180 | {
181 | DebugLogConsole.AddCommandInstance( "cube", "Creates a cube at specified position", "CreateCubeAt", this );
182 | }
183 |
184 | void CreateCubeAt( Vector3 position )
185 | {
186 | GameObject.CreatePrimitive( PrimitiveType.Cube ).transform.position = position;
187 | }
188 | }
189 | ```
190 |
191 | The only difference with *AddCommandStatic* is that, you have to provide an actual instance of the class that owns the function, instead of the type of the class.
192 |
193 | ### Removing Commands
194 |
195 | Use `DebugLogConsole.RemoveCommand( string command )` or one of the `DebugLogConsole.RemoveCommand( System.Action method )` variants.
196 |
197 | ### Extending Supported Parameter Types
198 |
199 | - **Strongly Typed Functions**
200 |
201 | Use `DebugLogConsole.AddCustomParameterType( Type type, ParseFunction parseFunction, string typeReadableName = null )`:
202 |
203 | ```csharp
204 | using UnityEngine;
205 | using IngameDebugConsole;
206 |
207 | public class TestScript : MonoBehaviour
208 | {
209 | public class Person
210 | {
211 | public string Name;
212 | public int Age;
213 | }
214 |
215 | void Start()
216 | {
217 | // Person parameters can now be used in commands, e.g. ('John Doe' 18)
218 | DebugLogConsole.AddCustomParameterType( typeof( Person ), ParsePerson );
219 | }
220 |
221 | private static bool ParsePerson( string input, out object output )
222 | {
223 | // Split the input
224 | // This will turn ('John Doe' 18) into 2 strings: "John Doe" (without quotes) and "18" (without quotes)
225 | List inputSplit = new List( 2 );
226 | DebugLogConsole.FetchArgumentsFromCommand( input, inputSplit );
227 |
228 | // We need 2 parameters: Name and Age
229 | if( inputSplit.Count != 2 )
230 | {
231 | output = null;
232 | return false;
233 | }
234 |
235 | // Try parsing the age
236 | object age;
237 | if( !DebugLogConsole.ParseInt( inputSplit[1], out age ) )
238 | {
239 | output = null;
240 | return false;
241 | }
242 |
243 | // Create the resulting object and assign it to output
244 | output = new Person()
245 | {
246 | Name = inputSplit[0],
247 | Age = (int) age
248 | };
249 |
250 | // Successfully parsed!
251 | return true;
252 | }
253 | }
254 | ```
255 |
256 | - **ConsoleCustomTypeParser Attribute**
257 |
258 | Simply add **IngameDebugConsole.ConsoleCustomTypeParser** attribute to your functions. These functions must have the following signature: `public static bool ParseFunction( string input, out object output );`
259 |
260 | ```csharp
261 | using UnityEngine;
262 | using IngameDebugConsole;
263 |
264 | public class TestScript : MonoBehaviour
265 | {
266 | [ConsoleCustomTypeParser( typeof( Person ) )]
267 | public static bool ParsePerson( string input, out object output )
268 | {
269 | // Same as above...
270 | }
271 | }
272 | ```
273 |
274 | ### Removing Supported Custom Parameter Types
275 |
276 | Use `DebugLogConsole.RemoveCustomParameterType( Type type )`.
277 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Süleyman Yasir KULA
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/LICENSE.txt.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e7f42c787785fb447918340e47e9f699
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Plugins.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8db108c766c7fbf48b8422c536f13b9d
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3c57523b63ddb094b835b6613da12763
3 | folderAsset: yes
4 | timeCreated: 1465915359
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Android.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3d7d7a61a5341904eb3c65af025b1d86
3 | folderAsset: yes
4 | timeCreated: 1510075633
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Android/DebugLogLogcatListener.cs:
--------------------------------------------------------------------------------
1 | #if (UNITY_EDITOR || UNITY_ANDROID) && UNITY_ANDROID_JNI
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | // Credit: https://stackoverflow.com/a/41018028/2373034
6 | namespace IngameDebugConsole
7 | {
8 | public class DebugLogLogcatListener : AndroidJavaProxy
9 | {
10 | private Queue queuedLogs;
11 | private AndroidJavaObject nativeObject;
12 |
13 | public DebugLogLogcatListener() : base( "com.yasirkula.unity.DebugConsoleLogcatLogReceiver" )
14 | {
15 | queuedLogs = new Queue( 16 );
16 | }
17 |
18 | ~DebugLogLogcatListener()
19 | {
20 | Stop();
21 |
22 | if( nativeObject != null )
23 | nativeObject.Dispose();
24 | }
25 |
26 | public void Start( string arguments )
27 | {
28 | if( nativeObject == null )
29 | nativeObject = new AndroidJavaObject( "com.yasirkula.unity.DebugConsoleLogcatLogger" );
30 |
31 | nativeObject.Call( "Start", this, arguments );
32 | }
33 |
34 | public void Stop()
35 | {
36 | if( nativeObject != null )
37 | nativeObject.Call( "Stop" );
38 | }
39 |
40 | [UnityEngine.Scripting.Preserve]
41 | public void OnLogReceived( string log )
42 | {
43 | queuedLogs.Enqueue( log );
44 | }
45 |
46 | public string GetLog()
47 | {
48 | if( queuedLogs.Count > 0 )
49 | return queuedLogs.Dequeue();
50 |
51 | return null;
52 | }
53 | }
54 | }
55 | #endif
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Android/DebugLogLogcatListener.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: dd3b7385882055d4a8c2b91deb6b2470
3 | timeCreated: 1510076185
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bf909fab1c14af446b0a854de42289b2
3 | timeCreated: 1510086220
4 | licenseType: Free
5 | PluginImporter:
6 | serializedVersion: 2
7 | iconMap: {}
8 | executionOrder: {}
9 | isPreloaded: 0
10 | isOverridable: 0
11 | platformData:
12 | data:
13 | first:
14 | Android: Android
15 | second:
16 | enabled: 1
17 | settings: {}
18 | data:
19 | first:
20 | Any:
21 | second:
22 | enabled: 0
23 | settings: {}
24 | data:
25 | first:
26 | Editor: Editor
27 | second:
28 | enabled: 0
29 | settings:
30 | DefaultValueInitialized: true
31 | userData:
32 | assetBundleName:
33 | assetBundleVariant:
34 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 86f54622630720f4abe279acdbb8886f
3 | folderAsset: yes
4 | timeCreated: 1561217660
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Editor/DebugLogManagerEditor.cs:
--------------------------------------------------------------------------------
1 | using UnityEditor;
2 | using UnityEngine;
3 |
4 | namespace IngameDebugConsole
5 | {
6 | [CustomEditor( typeof( DebugLogManager ) )]
7 | public class DebugLogManagerEditor : Editor
8 | {
9 | private SerializedProperty singleton;
10 | private SerializedProperty minimumHeight;
11 | private SerializedProperty enableHorizontalResizing;
12 | private SerializedProperty resizeFromRight;
13 | private SerializedProperty minimumWidth;
14 | private SerializedProperty logWindowOpacity;
15 | private SerializedProperty popupOpacity;
16 | private SerializedProperty popupVisibility;
17 | private SerializedProperty popupVisibilityLogFilter;
18 | private SerializedProperty startMinimized;
19 | private SerializedProperty toggleWithKey;
20 | private SerializedProperty toggleKey;
21 | private SerializedProperty enableSearchbar;
22 | private SerializedProperty topSearchbarMinWidth;
23 | private SerializedProperty receiveLogsWhileInactive;
24 | private SerializedProperty receiveInfoLogs;
25 | private SerializedProperty receiveWarningLogs;
26 | private SerializedProperty receiveErrorLogs;
27 | private SerializedProperty receiveExceptionLogs;
28 | private SerializedProperty captureLogTimestamps;
29 | private SerializedProperty alwaysDisplayTimestamps;
30 | private SerializedProperty maxLogCount;
31 | private SerializedProperty logsToRemoveAfterMaxLogCount;
32 | private SerializedProperty queuedLogLimit;
33 | private SerializedProperty clearCommandAfterExecution;
34 | private SerializedProperty commandHistorySize;
35 | private SerializedProperty showCommandSuggestions;
36 | private SerializedProperty receiveLogcatLogsInAndroid;
37 | private SerializedProperty logcatArguments;
38 | private SerializedProperty avoidScreenCutout;
39 | private SerializedProperty popupAvoidsScreenCutout;
40 | private SerializedProperty autoFocusOnCommandInputField;
41 |
42 | private readonly GUIContent popupVisibilityLogFilterLabel = new GUIContent( "Log Filter", "Determines which log types will show the popup on screen" );
43 | private readonly GUIContent receivedLogTypesLabel = new GUIContent( "Received Log Types", "Only these logs will be received by the console window, other logs will simply be skipped" );
44 | private readonly GUIContent receiveInfoLogsLabel = new GUIContent( "Info" );
45 | private readonly GUIContent receiveWarningLogsLabel = new GUIContent( "Warning" );
46 | private readonly GUIContent receiveErrorLogsLabel = new GUIContent( "Error" );
47 | private readonly GUIContent receiveExceptionLogsLabel = new GUIContent( "Exception" );
48 |
49 | private void OnEnable()
50 | {
51 | singleton = serializedObject.FindProperty( "singleton" );
52 | minimumHeight = serializedObject.FindProperty( "minimumHeight" );
53 | enableHorizontalResizing = serializedObject.FindProperty( "enableHorizontalResizing" );
54 | resizeFromRight = serializedObject.FindProperty( "resizeFromRight" );
55 | minimumWidth = serializedObject.FindProperty( "minimumWidth" );
56 | logWindowOpacity = serializedObject.FindProperty( "logWindowOpacity" );
57 | popupOpacity = serializedObject.FindProperty( "popupOpacity" );
58 | popupVisibility = serializedObject.FindProperty( "popupVisibility" );
59 | popupVisibilityLogFilter = serializedObject.FindProperty( "popupVisibilityLogFilter" );
60 | startMinimized = serializedObject.FindProperty( "startMinimized" );
61 | toggleWithKey = serializedObject.FindProperty( "toggleWithKey" );
62 | #if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER
63 | toggleKey = serializedObject.FindProperty( "toggleBinding" );
64 | #else
65 | toggleKey = serializedObject.FindProperty( "toggleKey" );
66 | #endif
67 | enableSearchbar = serializedObject.FindProperty( "enableSearchbar" );
68 | topSearchbarMinWidth = serializedObject.FindProperty( "topSearchbarMinWidth" );
69 | receiveLogsWhileInactive = serializedObject.FindProperty( "receiveLogsWhileInactive" );
70 | receiveInfoLogs = serializedObject.FindProperty( "receiveInfoLogs" );
71 | receiveWarningLogs = serializedObject.FindProperty( "receiveWarningLogs" );
72 | receiveErrorLogs = serializedObject.FindProperty( "receiveErrorLogs" );
73 | receiveExceptionLogs = serializedObject.FindProperty( "receiveExceptionLogs" );
74 | captureLogTimestamps = serializedObject.FindProperty( "captureLogTimestamps" );
75 | alwaysDisplayTimestamps = serializedObject.FindProperty( "alwaysDisplayTimestamps" );
76 | maxLogCount = serializedObject.FindProperty( "maxLogCount" );
77 | logsToRemoveAfterMaxLogCount = serializedObject.FindProperty( "logsToRemoveAfterMaxLogCount" );
78 | queuedLogLimit = serializedObject.FindProperty( "queuedLogLimit" );
79 | clearCommandAfterExecution = serializedObject.FindProperty( "clearCommandAfterExecution" );
80 | commandHistorySize = serializedObject.FindProperty( "commandHistorySize" );
81 | showCommandSuggestions = serializedObject.FindProperty( "showCommandSuggestions" );
82 | receiveLogcatLogsInAndroid = serializedObject.FindProperty( "receiveLogcatLogsInAndroid" );
83 | logcatArguments = serializedObject.FindProperty( "logcatArguments" );
84 | avoidScreenCutout = serializedObject.FindProperty( "avoidScreenCutout" );
85 | popupAvoidsScreenCutout = serializedObject.FindProperty( "popupAvoidsScreenCutout" );
86 | autoFocusOnCommandInputField = serializedObject.FindProperty( "autoFocusOnCommandInputField" );
87 | }
88 |
89 | public override void OnInspectorGUI()
90 | {
91 | serializedObject.Update();
92 |
93 | EditorGUILayout.PropertyField( singleton );
94 |
95 | EditorGUILayout.Space();
96 |
97 | EditorGUILayout.PropertyField( minimumHeight );
98 |
99 | EditorGUILayout.PropertyField( enableHorizontalResizing );
100 | if( enableHorizontalResizing.boolValue )
101 | {
102 | DrawSubProperty( resizeFromRight );
103 | DrawSubProperty( minimumWidth );
104 | }
105 |
106 | EditorGUILayout.PropertyField( avoidScreenCutout );
107 | DrawSubProperty( popupAvoidsScreenCutout );
108 |
109 | EditorGUILayout.Space();
110 |
111 | EditorGUILayout.PropertyField( startMinimized );
112 | EditorGUILayout.PropertyField( logWindowOpacity );
113 | EditorGUILayout.PropertyField( popupOpacity );
114 |
115 | EditorGUILayout.PropertyField( popupVisibility );
116 | if( popupVisibility.intValue == (int) PopupVisibility.WhenLogReceived )
117 | {
118 | EditorGUI.indentLevel++;
119 | Rect rect = EditorGUILayout.GetControlRect();
120 | EditorGUI.BeginProperty( rect, GUIContent.none, popupVisibilityLogFilter );
121 | popupVisibilityLogFilter.intValue = (int) (DebugLogFilter) EditorGUI.EnumFlagsField( rect, popupVisibilityLogFilterLabel, (DebugLogFilter) popupVisibilityLogFilter.intValue );
122 | EditorGUI.EndProperty();
123 | EditorGUI.indentLevel--;
124 | }
125 |
126 | EditorGUILayout.PropertyField( toggleWithKey );
127 | if( toggleWithKey.boolValue )
128 | DrawSubProperty( toggleKey );
129 |
130 | EditorGUILayout.Space();
131 |
132 | EditorGUILayout.PropertyField( enableSearchbar );
133 | if( enableSearchbar.boolValue )
134 | DrawSubProperty( topSearchbarMinWidth );
135 |
136 | EditorGUILayout.Space();
137 |
138 | EditorGUILayout.PropertyField( receiveLogsWhileInactive );
139 |
140 | EditorGUILayout.PrefixLabel( receivedLogTypesLabel );
141 | EditorGUI.indentLevel++;
142 | EditorGUILayout.PropertyField( receiveInfoLogs, receiveInfoLogsLabel );
143 | EditorGUILayout.PropertyField( receiveWarningLogs, receiveWarningLogsLabel );
144 | EditorGUILayout.PropertyField( receiveErrorLogs, receiveErrorLogsLabel );
145 | EditorGUILayout.PropertyField( receiveExceptionLogs, receiveExceptionLogsLabel );
146 | EditorGUI.indentLevel--;
147 |
148 | EditorGUILayout.PropertyField( receiveLogcatLogsInAndroid );
149 | if( receiveLogcatLogsInAndroid.boolValue )
150 | DrawSubProperty( logcatArguments );
151 |
152 | EditorGUILayout.PropertyField( captureLogTimestamps );
153 | if( captureLogTimestamps.boolValue )
154 | DrawSubProperty( alwaysDisplayTimestamps );
155 |
156 | EditorGUILayout.PropertyField( maxLogCount );
157 | DrawSubProperty( logsToRemoveAfterMaxLogCount );
158 |
159 | EditorGUILayout.PropertyField( queuedLogLimit );
160 |
161 | EditorGUILayout.Space();
162 |
163 | EditorGUILayout.PropertyField( clearCommandAfterExecution );
164 | EditorGUILayout.PropertyField( commandHistorySize );
165 | EditorGUILayout.PropertyField( showCommandSuggestions );
166 | EditorGUILayout.PropertyField( autoFocusOnCommandInputField );
167 |
168 | EditorGUILayout.Space();
169 |
170 | DrawPropertiesExcluding( serializedObject, "m_Script" );
171 | serializedObject.ApplyModifiedProperties();
172 | }
173 |
174 | private void DrawSubProperty( SerializedProperty property )
175 | {
176 | EditorGUI.indentLevel++;
177 | EditorGUILayout.PropertyField( property );
178 | EditorGUI.indentLevel--;
179 | }
180 | }
181 | }
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Editor/DebugLogManagerEditor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4c23e5c521cb0c54b9a638b2a653d1d3
3 | timeCreated: 1561217671
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Editor/IngameDebugConsole.Editor.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "IngameDebugConsole.Editor",
3 | "references": [
4 | "IngameDebugConsole.Runtime"
5 | ],
6 | "includePlatforms": [
7 | "Editor"
8 | ],
9 | "excludePlatforms": [],
10 | "allowUnsafeCode": false,
11 | "overrideReferences": false,
12 | "precompiledReferences": [],
13 | "autoReferenced": true,
14 | "defineConstraints": [],
15 | "versionDefines": [],
16 | "noEngineReferences": false
17 | }
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Editor/IngameDebugConsole.Editor.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 466e67dabd1db22468246c39eddb6c3f
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/IngameDebugConsole.Runtime.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "IngameDebugConsole.Runtime",
3 | "rootNamespace": "",
4 | "references": [
5 | "Unity.InputSystem",
6 | "Unity.TextMeshPro"
7 | ],
8 | "includePlatforms": [],
9 | "excludePlatforms": [],
10 | "allowUnsafeCode": false,
11 | "overrideReferences": false,
12 | "precompiledReferences": [],
13 | "autoReferenced": true,
14 | "defineConstraints": [],
15 | "versionDefines": [
16 | {
17 | "name": "com.unity.modules.androidjni",
18 | "expression": "",
19 | "define": "UNITY_ANDROID_JNI"
20 | }
21 | ],
22 | "noEngineReferences": false
23 | }
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/IngameDebugConsole.Runtime.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3de88c88fbbb8f944b9210d496af9762
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/IngameDebugConsole.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 67117722a812a2e46ab8cb8eafbf5f5e
3 | timeCreated: 1466014755
4 | licenseType: Free
5 | NativeFormatImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Prefabs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7dbc36665bc0d684db9a4447e27a7a4b
3 | folderAsset: yes
4 | timeCreated: 1520417401
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Prefabs/CommandSuggestion.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &1386426139070838
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 224955737853170496}
12 | - component: {fileID: 222541766812100524}
13 | - component: {fileID: 6838696818539158795}
14 | m_Layer: 5
15 | m_Name: CommandSuggestion
16 | m_TagString: Untagged
17 | m_Icon: {fileID: 0}
18 | m_NavMeshLayer: 0
19 | m_StaticEditorFlags: 0
20 | m_IsActive: 1
21 | --- !u!224 &224955737853170496
22 | RectTransform:
23 | m_ObjectHideFlags: 0
24 | m_CorrespondingSourceObject: {fileID: 0}
25 | m_PrefabInstance: {fileID: 0}
26 | m_PrefabAsset: {fileID: 0}
27 | m_GameObject: {fileID: 1386426139070838}
28 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
29 | m_LocalPosition: {x: 0, y: 0, z: 0}
30 | m_LocalScale: {x: 1, y: 1, z: 1}
31 | m_ConstrainProportionsScale: 0
32 | m_Children: []
33 | m_Father: {fileID: 0}
34 | m_RootOrder: 0
35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
36 | m_AnchorMin: {x: 0, y: 0}
37 | m_AnchorMax: {x: 0, y: 0}
38 | m_AnchoredPosition: {x: 0, y: 0}
39 | m_SizeDelta: {x: 0, y: 0}
40 | m_Pivot: {x: 0.5, y: 0.5}
41 | --- !u!222 &222541766812100524
42 | CanvasRenderer:
43 | m_ObjectHideFlags: 0
44 | m_CorrespondingSourceObject: {fileID: 0}
45 | m_PrefabInstance: {fileID: 0}
46 | m_PrefabAsset: {fileID: 0}
47 | m_GameObject: {fileID: 1386426139070838}
48 | m_CullTransparentMesh: 1
49 | --- !u!114 &6838696818539158795
50 | MonoBehaviour:
51 | m_ObjectHideFlags: 0
52 | m_CorrespondingSourceObject: {fileID: 0}
53 | m_PrefabInstance: {fileID: 0}
54 | m_PrefabAsset: {fileID: 0}
55 | m_GameObject: {fileID: 1386426139070838}
56 | m_Enabled: 1
57 | m_EditorHideFlags: 0
58 | m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
59 | m_Name:
60 | m_EditorClassIdentifier:
61 | m_Material: {fileID: 0}
62 | m_Color: {r: 1, g: 1, b: 1, a: 1}
63 | m_RaycastTarget: 0
64 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
65 | m_Maskable: 1
66 | m_OnCullStateChanged:
67 | m_PersistentCalls:
68 | m_Calls: []
69 | m_text: help
70 | m_isRightToLeft: 0
71 | m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
72 | m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
73 | m_fontSharedMaterials: []
74 | m_fontMaterial: {fileID: 0}
75 | m_fontMaterials: []
76 | m_fontColor32:
77 | serializedVersion: 2
78 | rgba: 4292335574
79 | m_fontColor: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1}
80 | m_enableVertexGradient: 0
81 | m_colorMode: 3
82 | m_fontColorGradient:
83 | topLeft: {r: 1, g: 1, b: 1, a: 1}
84 | topRight: {r: 1, g: 1, b: 1, a: 1}
85 | bottomLeft: {r: 1, g: 1, b: 1, a: 1}
86 | bottomRight: {r: 1, g: 1, b: 1, a: 1}
87 | m_fontColorGradientPreset: {fileID: 0}
88 | m_spriteAsset: {fileID: 0}
89 | m_tintAllSprites: 0
90 | m_StyleSheet: {fileID: 0}
91 | m_TextStyleHashCode: -1183493901
92 | m_overrideHtmlColors: 0
93 | m_faceColor:
94 | serializedVersion: 2
95 | rgba: 4294967295
96 | m_fontSize: 16
97 | m_fontSizeBase: 16
98 | m_fontWeight: 400
99 | m_enableAutoSizing: 0
100 | m_fontSizeMin: 1
101 | m_fontSizeMax: 40
102 | m_fontStyle: 0
103 | m_HorizontalAlignment: 1
104 | m_VerticalAlignment: 512
105 | m_textAlignment: 65535
106 | m_characterSpacing: 0
107 | m_wordSpacing: 0
108 | m_lineSpacing: 0
109 | m_lineSpacingMax: 0
110 | m_paragraphSpacing: 0
111 | m_charWidthMaxAdj: 0
112 | m_enableWordWrapping: 1
113 | m_wordWrappingRatios: 0.4
114 | m_overflowMode: 3
115 | m_linkedTextComponent: {fileID: 0}
116 | parentLinkedComponent: {fileID: 0}
117 | m_enableKerning: 1
118 | m_enableExtraPadding: 0
119 | checkPaddingRequired: 0
120 | m_isRichText: 1
121 | m_parseCtrlCharacters: 0
122 | m_isOrthographic: 1
123 | m_isCullingEnabled: 0
124 | m_horizontalMapping: 0
125 | m_verticalMapping: 0
126 | m_uvLineOffset: 0
127 | m_geometrySortingOrder: 0
128 | m_IsTextObjectScaleStatic: 0
129 | m_VertexBufferAutoSizeReduction: 0
130 | m_useMaxVisibleDescender: 1
131 | m_pageToDisplay: 1
132 | m_margin: {x: 0, y: 0, z: 0, w: 0}
133 | m_isUsingLegacyAnimationComponent: 0
134 | m_isVolumetricText: 0
135 | m_hasFontAssetChanged: 0
136 | m_baseMaterial: {fileID: 0}
137 | m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
138 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Prefabs/CommandSuggestion.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5e66896448428cf46a1854dbdc014914
3 | timeCreated: 1601390136
4 | licenseType: Free
5 | NativeFormatImporter:
6 | mainObjectFileID: 100100000
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Prefabs/DebugLogItem.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &104862
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 22461494}
12 | - component: {fileID: 22233942}
13 | - component: {fileID: 11411806}
14 | m_Layer: 5
15 | m_Name: LogCount
16 | m_TagString: Untagged
17 | m_Icon: {fileID: 0}
18 | m_NavMeshLayer: 0
19 | m_StaticEditorFlags: 0
20 | m_IsActive: 0
21 | --- !u!224 &22461494
22 | RectTransform:
23 | m_ObjectHideFlags: 0
24 | m_CorrespondingSourceObject: {fileID: 0}
25 | m_PrefabInstance: {fileID: 0}
26 | m_PrefabAsset: {fileID: 0}
27 | m_GameObject: {fileID: 104862}
28 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
29 | m_LocalPosition: {x: 0, y: 0, z: 0}
30 | m_LocalScale: {x: 1, y: 1, z: 1}
31 | m_ConstrainProportionsScale: 0
32 | m_Children:
33 | - {fileID: 22420350}
34 | m_Father: {fileID: 22479264}
35 | m_RootOrder: 2
36 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
37 | m_AnchorMin: {x: 1, y: 0.5}
38 | m_AnchorMax: {x: 1, y: 0.5}
39 | m_AnchoredPosition: {x: -20, y: 0}
40 | m_SizeDelta: {x: 30, y: 25}
41 | m_Pivot: {x: 0.5, y: 0.5}
42 | --- !u!222 &22233942
43 | CanvasRenderer:
44 | m_ObjectHideFlags: 0
45 | m_CorrespondingSourceObject: {fileID: 0}
46 | m_PrefabInstance: {fileID: 0}
47 | m_PrefabAsset: {fileID: 0}
48 | m_GameObject: {fileID: 104862}
49 | m_CullTransparentMesh: 1
50 | --- !u!114 &11411806
51 | MonoBehaviour:
52 | m_ObjectHideFlags: 0
53 | m_CorrespondingSourceObject: {fileID: 0}
54 | m_PrefabInstance: {fileID: 0}
55 | m_PrefabAsset: {fileID: 0}
56 | m_GameObject: {fileID: 104862}
57 | m_Enabled: 1
58 | m_EditorHideFlags: 0
59 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
60 | m_Name:
61 | m_EditorClassIdentifier:
62 | m_Material: {fileID: 0}
63 | m_Color: {r: 0.42647058, g: 0.42647058, b: 0.42647058, a: 1}
64 | m_RaycastTarget: 0
65 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
66 | m_Maskable: 1
67 | m_OnCullStateChanged:
68 | m_PersistentCalls:
69 | m_Calls: []
70 | m_Sprite: {fileID: 21300000, guid: b3f0d976f6d6802479d6465d11b3aa68, type: 3}
71 | m_Type: 1
72 | m_PreserveAspect: 0
73 | m_FillCenter: 1
74 | m_FillMethod: 4
75 | m_FillAmount: 1
76 | m_FillClockwise: 1
77 | m_FillOrigin: 0
78 | m_UseSpriteMesh: 0
79 | m_PixelsPerUnitMultiplier: 1.3
80 | --- !u!1 &151462
81 | GameObject:
82 | m_ObjectHideFlags: 0
83 | m_CorrespondingSourceObject: {fileID: 0}
84 | m_PrefabInstance: {fileID: 0}
85 | m_PrefabAsset: {fileID: 0}
86 | serializedVersion: 6
87 | m_Component:
88 | - component: {fileID: 22420350}
89 | - component: {fileID: 22200920}
90 | - component: {fileID: 5450305048240168820}
91 | m_Layer: 5
92 | m_Name: LogCountText
93 | m_TagString: Untagged
94 | m_Icon: {fileID: 0}
95 | m_NavMeshLayer: 0
96 | m_StaticEditorFlags: 0
97 | m_IsActive: 1
98 | --- !u!224 &22420350
99 | RectTransform:
100 | m_ObjectHideFlags: 0
101 | m_CorrespondingSourceObject: {fileID: 0}
102 | m_PrefabInstance: {fileID: 0}
103 | m_PrefabAsset: {fileID: 0}
104 | m_GameObject: {fileID: 151462}
105 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
106 | m_LocalPosition: {x: 0, y: 0, z: 0}
107 | m_LocalScale: {x: 1, y: 1, z: 1}
108 | m_ConstrainProportionsScale: 0
109 | m_Children: []
110 | m_Father: {fileID: 22461494}
111 | m_RootOrder: 0
112 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
113 | m_AnchorMin: {x: 0, y: 0}
114 | m_AnchorMax: {x: 1, y: 1}
115 | m_AnchoredPosition: {x: 0, y: 0}
116 | m_SizeDelta: {x: -2, y: 0}
117 | m_Pivot: {x: 0.5, y: 0.5}
118 | --- !u!222 &22200920
119 | CanvasRenderer:
120 | m_ObjectHideFlags: 0
121 | m_CorrespondingSourceObject: {fileID: 0}
122 | m_PrefabInstance: {fileID: 0}
123 | m_PrefabAsset: {fileID: 0}
124 | m_GameObject: {fileID: 151462}
125 | m_CullTransparentMesh: 1
126 | --- !u!114 &5450305048240168820
127 | MonoBehaviour:
128 | m_ObjectHideFlags: 0
129 | m_CorrespondingSourceObject: {fileID: 0}
130 | m_PrefabInstance: {fileID: 0}
131 | m_PrefabAsset: {fileID: 0}
132 | m_GameObject: {fileID: 151462}
133 | m_Enabled: 1
134 | m_EditorHideFlags: 0
135 | m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
136 | m_Name:
137 | m_EditorClassIdentifier:
138 | m_Material: {fileID: 0}
139 | m_Color: {r: 1, g: 1, b: 1, a: 1}
140 | m_RaycastTarget: 0
141 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
142 | m_Maskable: 1
143 | m_OnCullStateChanged:
144 | m_PersistentCalls:
145 | m_Calls: []
146 | m_text: 1
147 | m_isRightToLeft: 0
148 | m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
149 | m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
150 | m_fontSharedMaterials: []
151 | m_fontMaterial: {fileID: 0}
152 | m_fontMaterials: []
153 | m_fontColor32:
154 | serializedVersion: 2
155 | rgba: 4292335574
156 | m_fontColor: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1}
157 | m_enableVertexGradient: 0
158 | m_colorMode: 3
159 | m_fontColorGradient:
160 | topLeft: {r: 1, g: 1, b: 1, a: 1}
161 | topRight: {r: 1, g: 1, b: 1, a: 1}
162 | bottomLeft: {r: 1, g: 1, b: 1, a: 1}
163 | bottomRight: {r: 1, g: 1, b: 1, a: 1}
164 | m_fontColorGradientPreset: {fileID: 0}
165 | m_spriteAsset: {fileID: 0}
166 | m_tintAllSprites: 0
167 | m_StyleSheet: {fileID: 0}
168 | m_TextStyleHashCode: -1183493901
169 | m_overrideHtmlColors: 0
170 | m_faceColor:
171 | serializedVersion: 2
172 | rgba: 4294967295
173 | m_fontSize: 14
174 | m_fontSizeBase: 36
175 | m_fontWeight: 400
176 | m_enableAutoSizing: 1
177 | m_fontSizeMin: 8
178 | m_fontSizeMax: 14
179 | m_fontStyle: 0
180 | m_HorizontalAlignment: 2
181 | m_VerticalAlignment: 512
182 | m_textAlignment: 65535
183 | m_characterSpacing: 0
184 | m_wordSpacing: 0
185 | m_lineSpacing: 0
186 | m_lineSpacingMax: 0
187 | m_paragraphSpacing: 0
188 | m_charWidthMaxAdj: 0
189 | m_enableWordWrapping: 1
190 | m_wordWrappingRatios: 0.4
191 | m_overflowMode: 0
192 | m_linkedTextComponent: {fileID: 0}
193 | parentLinkedComponent: {fileID: 0}
194 | m_enableKerning: 0
195 | m_enableExtraPadding: 0
196 | checkPaddingRequired: 0
197 | m_isRichText: 1
198 | m_parseCtrlCharacters: 0
199 | m_isOrthographic: 1
200 | m_isCullingEnabled: 0
201 | m_horizontalMapping: 0
202 | m_verticalMapping: 0
203 | m_uvLineOffset: 0
204 | m_geometrySortingOrder: 0
205 | m_IsTextObjectScaleStatic: 0
206 | m_VertexBufferAutoSizeReduction: 0
207 | m_useMaxVisibleDescender: 1
208 | m_pageToDisplay: 1
209 | m_margin: {x: 0, y: 0, z: 0, w: 0}
210 | m_isUsingLegacyAnimationComponent: 0
211 | m_isVolumetricText: 0
212 | m_hasFontAssetChanged: 0
213 | m_baseMaterial: {fileID: 0}
214 | m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
215 | --- !u!1 &152362
216 | GameObject:
217 | m_ObjectHideFlags: 0
218 | m_CorrespondingSourceObject: {fileID: 0}
219 | m_PrefabInstance: {fileID: 0}
220 | m_PrefabAsset: {fileID: 0}
221 | serializedVersion: 6
222 | m_Component:
223 | - component: {fileID: 22427300}
224 | - component: {fileID: 22262284}
225 | - component: {fileID: 11404142}
226 | m_Layer: 5
227 | m_Name: LogType
228 | m_TagString: Untagged
229 | m_Icon: {fileID: 0}
230 | m_NavMeshLayer: 0
231 | m_StaticEditorFlags: 0
232 | m_IsActive: 1
233 | --- !u!224 &22427300
234 | RectTransform:
235 | m_ObjectHideFlags: 0
236 | m_CorrespondingSourceObject: {fileID: 0}
237 | m_PrefabInstance: {fileID: 0}
238 | m_PrefabAsset: {fileID: 0}
239 | m_GameObject: {fileID: 152362}
240 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
241 | m_LocalPosition: {x: 0, y: 0, z: 0}
242 | m_LocalScale: {x: 1, y: 1, z: 1}
243 | m_ConstrainProportionsScale: 0
244 | m_Children: []
245 | m_Father: {fileID: 22479264}
246 | m_RootOrder: 0
247 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
248 | m_AnchorMin: {x: 0, y: 0.5}
249 | m_AnchorMax: {x: 0, y: 0.5}
250 | m_AnchoredPosition: {x: 15, y: 0}
251 | m_SizeDelta: {x: 25, y: 25}
252 | m_Pivot: {x: 0.5, y: 0.5}
253 | --- !u!222 &22262284
254 | CanvasRenderer:
255 | m_ObjectHideFlags: 0
256 | m_CorrespondingSourceObject: {fileID: 0}
257 | m_PrefabInstance: {fileID: 0}
258 | m_PrefabAsset: {fileID: 0}
259 | m_GameObject: {fileID: 152362}
260 | m_CullTransparentMesh: 1
261 | --- !u!114 &11404142
262 | MonoBehaviour:
263 | m_ObjectHideFlags: 0
264 | m_CorrespondingSourceObject: {fileID: 0}
265 | m_PrefabInstance: {fileID: 0}
266 | m_PrefabAsset: {fileID: 0}
267 | m_GameObject: {fileID: 152362}
268 | m_Enabled: 1
269 | m_EditorHideFlags: 0
270 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
271 | m_Name:
272 | m_EditorClassIdentifier:
273 | m_Material: {fileID: 0}
274 | m_Color: {r: 1, g: 1, b: 1, a: 1}
275 | m_RaycastTarget: 0
276 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
277 | m_Maskable: 1
278 | m_OnCullStateChanged:
279 | m_PersistentCalls:
280 | m_Calls: []
281 | m_Sprite: {fileID: 21300000, guid: 5a97d5afa6254804f81b7ba956296996, type: 3}
282 | m_Type: 0
283 | m_PreserveAspect: 0
284 | m_FillCenter: 1
285 | m_FillMethod: 4
286 | m_FillAmount: 1
287 | m_FillClockwise: 1
288 | m_FillOrigin: 0
289 | m_UseSpriteMesh: 0
290 | m_PixelsPerUnitMultiplier: 1
291 | --- !u!1 &166880
292 | GameObject:
293 | m_ObjectHideFlags: 0
294 | m_CorrespondingSourceObject: {fileID: 0}
295 | m_PrefabInstance: {fileID: 0}
296 | m_PrefabAsset: {fileID: 0}
297 | serializedVersion: 6
298 | m_Component:
299 | - component: {fileID: 22479264}
300 | - component: {fileID: 22288988}
301 | - component: {fileID: 11459012}
302 | - component: {fileID: 11408050}
303 | - component: {fileID: 11456372}
304 | - component: {fileID: 225819852034701160}
305 | m_Layer: 5
306 | m_Name: DebugLogItem
307 | m_TagString: Untagged
308 | m_Icon: {fileID: 0}
309 | m_NavMeshLayer: 0
310 | m_StaticEditorFlags: 0
311 | m_IsActive: 1
312 | --- !u!224 &22479264
313 | RectTransform:
314 | m_ObjectHideFlags: 0
315 | m_CorrespondingSourceObject: {fileID: 0}
316 | m_PrefabInstance: {fileID: 0}
317 | m_PrefabAsset: {fileID: 0}
318 | m_GameObject: {fileID: 166880}
319 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
320 | m_LocalPosition: {x: 0, y: 0, z: 0}
321 | m_LocalScale: {x: 1, y: 1, z: 1}
322 | m_ConstrainProportionsScale: 0
323 | m_Children:
324 | - {fileID: 22427300}
325 | - {fileID: 224737693311518052}
326 | - {fileID: 22461494}
327 | - {fileID: 224006190298411330}
328 | m_Father: {fileID: 0}
329 | m_RootOrder: 0
330 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
331 | m_AnchorMin: {x: 0, y: 1}
332 | m_AnchorMax: {x: 1, y: 1}
333 | m_AnchoredPosition: {x: 0, y: 0}
334 | m_SizeDelta: {x: 0, y: 35}
335 | m_Pivot: {x: 0, y: 1}
336 | --- !u!222 &22288988
337 | CanvasRenderer:
338 | m_ObjectHideFlags: 0
339 | m_CorrespondingSourceObject: {fileID: 0}
340 | m_PrefabInstance: {fileID: 0}
341 | m_PrefabAsset: {fileID: 0}
342 | m_GameObject: {fileID: 166880}
343 | m_CullTransparentMesh: 1
344 | --- !u!114 &11459012
345 | MonoBehaviour:
346 | m_ObjectHideFlags: 0
347 | m_CorrespondingSourceObject: {fileID: 0}
348 | m_PrefabInstance: {fileID: 0}
349 | m_PrefabAsset: {fileID: 0}
350 | m_GameObject: {fileID: 166880}
351 | m_Enabled: 1
352 | m_EditorHideFlags: 0
353 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
354 | m_Name:
355 | m_EditorClassIdentifier:
356 | m_Material: {fileID: 0}
357 | m_Color: {r: 0.23529412, g: 0.23529412, b: 0.23529412, a: 0.697}
358 | m_RaycastTarget: 1
359 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
360 | m_Maskable: 1
361 | m_OnCullStateChanged:
362 | m_PersistentCalls:
363 | m_Calls: []
364 | m_Sprite: {fileID: 21300000, guid: 98e8e1cf8dc7dbf469617c2e40c8a944, type: 3}
365 | m_Type: 1
366 | m_PreserveAspect: 0
367 | m_FillCenter: 1
368 | m_FillMethod: 4
369 | m_FillAmount: 1
370 | m_FillClockwise: 1
371 | m_FillOrigin: 0
372 | m_UseSpriteMesh: 0
373 | m_PixelsPerUnitMultiplier: 1
374 | --- !u!114 &11408050
375 | MonoBehaviour:
376 | m_ObjectHideFlags: 0
377 | m_CorrespondingSourceObject: {fileID: 0}
378 | m_PrefabInstance: {fileID: 0}
379 | m_PrefabAsset: {fileID: 0}
380 | m_GameObject: {fileID: 166880}
381 | m_Enabled: 1
382 | m_EditorHideFlags: 0
383 | m_Script: {fileID: 11500000, guid: d2ea291be9de70a4abfec595203c96c1, type: 3}
384 | m_Name:
385 | m_EditorClassIdentifier:
386 | transformComponent: {fileID: 22479264}
387 | imageComponent: {fileID: 11459012}
388 | canvasGroupComponent: {fileID: 225819852034701160}
389 | logText: {fileID: 3887244321031527211}
390 | logTypeImage: {fileID: 11404142}
391 | logCountParent: {fileID: 104862}
392 | logCountText: {fileID: 5450305048240168820}
393 | copyLogButton: {fileID: 114694923173451186}
394 | --- !u!114 &11456372
395 | MonoBehaviour:
396 | m_ObjectHideFlags: 0
397 | m_CorrespondingSourceObject: {fileID: 0}
398 | m_PrefabInstance: {fileID: 0}
399 | m_PrefabAsset: {fileID: 0}
400 | m_GameObject: {fileID: 166880}
401 | m_Enabled: 1
402 | m_EditorHideFlags: 0
403 | m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
404 | m_Name:
405 | m_EditorClassIdentifier:
406 | m_Navigation:
407 | m_Mode: 3
408 | m_WrapAround: 0
409 | m_SelectOnUp: {fileID: 0}
410 | m_SelectOnDown: {fileID: 0}
411 | m_SelectOnLeft: {fileID: 0}
412 | m_SelectOnRight: {fileID: 0}
413 | m_Transition: 1
414 | m_Colors:
415 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
416 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
417 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
418 | m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
419 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
420 | m_ColorMultiplier: 1
421 | m_FadeDuration: 0.1
422 | m_SpriteState:
423 | m_HighlightedSprite: {fileID: 0}
424 | m_PressedSprite: {fileID: 0}
425 | m_SelectedSprite: {fileID: 0}
426 | m_DisabledSprite: {fileID: 0}
427 | m_AnimationTriggers:
428 | m_NormalTrigger: Normal
429 | m_HighlightedTrigger: Highlighted
430 | m_PressedTrigger: Pressed
431 | m_SelectedTrigger: Highlighted
432 | m_DisabledTrigger: Disabled
433 | m_Interactable: 1
434 | m_TargetGraphic: {fileID: 11459012}
435 | m_OnClick:
436 | m_PersistentCalls:
437 | m_Calls: []
438 | --- !u!225 &225819852034701160
439 | CanvasGroup:
440 | m_ObjectHideFlags: 0
441 | m_CorrespondingSourceObject: {fileID: 0}
442 | m_PrefabInstance: {fileID: 0}
443 | m_PrefabAsset: {fileID: 0}
444 | m_GameObject: {fileID: 166880}
445 | m_Enabled: 1
446 | m_Alpha: 1
447 | m_Interactable: 1
448 | m_BlocksRaycasts: 1
449 | m_IgnoreParentGroups: 0
450 | --- !u!1 &1396836967994216
451 | GameObject:
452 | m_ObjectHideFlags: 0
453 | m_CorrespondingSourceObject: {fileID: 0}
454 | m_PrefabInstance: {fileID: 0}
455 | m_PrefabAsset: {fileID: 0}
456 | serializedVersion: 6
457 | m_Component:
458 | - component: {fileID: 224006190298411330}
459 | - component: {fileID: 222870443111501910}
460 | - component: {fileID: 114119781176956926}
461 | - component: {fileID: 114694923173451186}
462 | m_Layer: 5
463 | m_Name: CopyLogButton
464 | m_TagString: Untagged
465 | m_Icon: {fileID: 0}
466 | m_NavMeshLayer: 0
467 | m_StaticEditorFlags: 0
468 | m_IsActive: 0
469 | --- !u!224 &224006190298411330
470 | RectTransform:
471 | m_ObjectHideFlags: 0
472 | m_CorrespondingSourceObject: {fileID: 0}
473 | m_PrefabInstance: {fileID: 0}
474 | m_PrefabAsset: {fileID: 0}
475 | m_GameObject: {fileID: 1396836967994216}
476 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
477 | m_LocalPosition: {x: 0, y: 0, z: 0}
478 | m_LocalScale: {x: 1, y: 1, z: 1}
479 | m_ConstrainProportionsScale: 0
480 | m_Children:
481 | - {fileID: 224887990600088790}
482 | m_Father: {fileID: 22479264}
483 | m_RootOrder: 3
484 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
485 | m_AnchorMin: {x: 0, y: 0}
486 | m_AnchorMax: {x: 1, y: 0}
487 | m_AnchoredPosition: {x: 0, y: 2}
488 | m_SizeDelta: {x: -80, y: 36}
489 | m_Pivot: {x: 0.5, y: 0}
490 | --- !u!222 &222870443111501910
491 | CanvasRenderer:
492 | m_ObjectHideFlags: 0
493 | m_CorrespondingSourceObject: {fileID: 0}
494 | m_PrefabInstance: {fileID: 0}
495 | m_PrefabAsset: {fileID: 0}
496 | m_GameObject: {fileID: 1396836967994216}
497 | m_CullTransparentMesh: 1
498 | --- !u!114 &114119781176956926
499 | MonoBehaviour:
500 | m_ObjectHideFlags: 0
501 | m_CorrespondingSourceObject: {fileID: 0}
502 | m_PrefabInstance: {fileID: 0}
503 | m_PrefabAsset: {fileID: 0}
504 | m_GameObject: {fileID: 1396836967994216}
505 | m_Enabled: 1
506 | m_EditorHideFlags: 0
507 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
508 | m_Name:
509 | m_EditorClassIdentifier:
510 | m_Material: {fileID: 0}
511 | m_Color: {r: 0.42647058, g: 0.42647058, b: 0.42647058, a: 1}
512 | m_RaycastTarget: 1
513 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
514 | m_Maskable: 1
515 | m_OnCullStateChanged:
516 | m_PersistentCalls:
517 | m_Calls: []
518 | m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3}
519 | m_Type: 1
520 | m_PreserveAspect: 0
521 | m_FillCenter: 1
522 | m_FillMethod: 4
523 | m_FillAmount: 1
524 | m_FillClockwise: 1
525 | m_FillOrigin: 0
526 | m_UseSpriteMesh: 0
527 | m_PixelsPerUnitMultiplier: 1
528 | --- !u!114 &114694923173451186
529 | MonoBehaviour:
530 | m_ObjectHideFlags: 0
531 | m_CorrespondingSourceObject: {fileID: 0}
532 | m_PrefabInstance: {fileID: 0}
533 | m_PrefabAsset: {fileID: 0}
534 | m_GameObject: {fileID: 1396836967994216}
535 | m_Enabled: 1
536 | m_EditorHideFlags: 0
537 | m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
538 | m_Name:
539 | m_EditorClassIdentifier:
540 | m_Navigation:
541 | m_Mode: 3
542 | m_WrapAround: 0
543 | m_SelectOnUp: {fileID: 0}
544 | m_SelectOnDown: {fileID: 0}
545 | m_SelectOnLeft: {fileID: 0}
546 | m_SelectOnRight: {fileID: 0}
547 | m_Transition: 1
548 | m_Colors:
549 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
550 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
551 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
552 | m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
553 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
554 | m_ColorMultiplier: 1
555 | m_FadeDuration: 0.1
556 | m_SpriteState:
557 | m_HighlightedSprite: {fileID: 0}
558 | m_PressedSprite: {fileID: 0}
559 | m_SelectedSprite: {fileID: 0}
560 | m_DisabledSprite: {fileID: 0}
561 | m_AnimationTriggers:
562 | m_NormalTrigger: Normal
563 | m_HighlightedTrigger: Highlighted
564 | m_PressedTrigger: Pressed
565 | m_SelectedTrigger: Highlighted
566 | m_DisabledTrigger: Disabled
567 | m_Interactable: 1
568 | m_TargetGraphic: {fileID: 114119781176956926}
569 | m_OnClick:
570 | m_PersistentCalls:
571 | m_Calls: []
572 | --- !u!1 &1503640463151286
573 | GameObject:
574 | m_ObjectHideFlags: 0
575 | m_CorrespondingSourceObject: {fileID: 0}
576 | m_PrefabInstance: {fileID: 0}
577 | m_PrefabAsset: {fileID: 0}
578 | serializedVersion: 6
579 | m_Component:
580 | - component: {fileID: 224887990600088790}
581 | - component: {fileID: 222313182602304162}
582 | - component: {fileID: 6497267641603342931}
583 | m_Layer: 5
584 | m_Name: Text
585 | m_TagString: Untagged
586 | m_Icon: {fileID: 0}
587 | m_NavMeshLayer: 0
588 | m_StaticEditorFlags: 0
589 | m_IsActive: 1
590 | --- !u!224 &224887990600088790
591 | RectTransform:
592 | m_ObjectHideFlags: 0
593 | m_CorrespondingSourceObject: {fileID: 0}
594 | m_PrefabInstance: {fileID: 0}
595 | m_PrefabAsset: {fileID: 0}
596 | m_GameObject: {fileID: 1503640463151286}
597 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
598 | m_LocalPosition: {x: 0, y: 0, z: 0}
599 | m_LocalScale: {x: 1, y: 1, z: 1}
600 | m_ConstrainProportionsScale: 0
601 | m_Children: []
602 | m_Father: {fileID: 224006190298411330}
603 | m_RootOrder: 0
604 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
605 | m_AnchorMin: {x: 0, y: 0}
606 | m_AnchorMax: {x: 1, y: 1}
607 | m_AnchoredPosition: {x: 0, y: 0}
608 | m_SizeDelta: {x: 0, y: 0}
609 | m_Pivot: {x: 0.5, y: 0.5}
610 | --- !u!222 &222313182602304162
611 | CanvasRenderer:
612 | m_ObjectHideFlags: 0
613 | m_CorrespondingSourceObject: {fileID: 0}
614 | m_PrefabInstance: {fileID: 0}
615 | m_PrefabAsset: {fileID: 0}
616 | m_GameObject: {fileID: 1503640463151286}
617 | m_CullTransparentMesh: 1
618 | --- !u!114 &6497267641603342931
619 | MonoBehaviour:
620 | m_ObjectHideFlags: 0
621 | m_CorrespondingSourceObject: {fileID: 0}
622 | m_PrefabInstance: {fileID: 0}
623 | m_PrefabAsset: {fileID: 0}
624 | m_GameObject: {fileID: 1503640463151286}
625 | m_Enabled: 1
626 | m_EditorHideFlags: 0
627 | m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
628 | m_Name:
629 | m_EditorClassIdentifier:
630 | m_Material: {fileID: 0}
631 | m_Color: {r: 1, g: 1, b: 1, a: 1}
632 | m_RaycastTarget: 0
633 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
634 | m_Maskable: 1
635 | m_OnCullStateChanged:
636 | m_PersistentCalls:
637 | m_Calls: []
638 | m_text: Copy
639 | m_isRightToLeft: 0
640 | m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
641 | m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
642 | m_fontSharedMaterials: []
643 | m_fontMaterial: {fileID: 0}
644 | m_fontMaterials: []
645 | m_fontColor32:
646 | serializedVersion: 2
647 | rgba: 4292335574
648 | m_fontColor: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1}
649 | m_enableVertexGradient: 0
650 | m_colorMode: 3
651 | m_fontColorGradient:
652 | topLeft: {r: 1, g: 1, b: 1, a: 1}
653 | topRight: {r: 1, g: 1, b: 1, a: 1}
654 | bottomLeft: {r: 1, g: 1, b: 1, a: 1}
655 | bottomRight: {r: 1, g: 1, b: 1, a: 1}
656 | m_fontColorGradientPreset: {fileID: 0}
657 | m_spriteAsset: {fileID: 0}
658 | m_tintAllSprites: 0
659 | m_StyleSheet: {fileID: 0}
660 | m_TextStyleHashCode: -1183493901
661 | m_overrideHtmlColors: 0
662 | m_faceColor:
663 | serializedVersion: 2
664 | rgba: 4294967295
665 | m_fontSize: 16
666 | m_fontSizeBase: 16
667 | m_fontWeight: 400
668 | m_enableAutoSizing: 0
669 | m_fontSizeMin: 1
670 | m_fontSizeMax: 40
671 | m_fontStyle: 0
672 | m_HorizontalAlignment: 2
673 | m_VerticalAlignment: 512
674 | m_textAlignment: 65535
675 | m_characterSpacing: 0
676 | m_wordSpacing: 0
677 | m_lineSpacing: 0
678 | m_lineSpacingMax: 0
679 | m_paragraphSpacing: 0
680 | m_charWidthMaxAdj: 0
681 | m_enableWordWrapping: 1
682 | m_wordWrappingRatios: 0.4
683 | m_overflowMode: 0
684 | m_linkedTextComponent: {fileID: 0}
685 | parentLinkedComponent: {fileID: 0}
686 | m_enableKerning: 0
687 | m_enableExtraPadding: 0
688 | checkPaddingRequired: 0
689 | m_isRichText: 1
690 | m_parseCtrlCharacters: 0
691 | m_isOrthographic: 1
692 | m_isCullingEnabled: 0
693 | m_horizontalMapping: 0
694 | m_verticalMapping: 0
695 | m_uvLineOffset: 0
696 | m_geometrySortingOrder: 0
697 | m_IsTextObjectScaleStatic: 0
698 | m_VertexBufferAutoSizeReduction: 0
699 | m_useMaxVisibleDescender: 1
700 | m_pageToDisplay: 1
701 | m_margin: {x: 0, y: 0, z: 0, w: 0}
702 | m_isUsingLegacyAnimationComponent: 0
703 | m_isVolumetricText: 0
704 | m_hasFontAssetChanged: 0
705 | m_baseMaterial: {fileID: 0}
706 | m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
707 | --- !u!1 &1785910143472904
708 | GameObject:
709 | m_ObjectHideFlags: 0
710 | m_CorrespondingSourceObject: {fileID: 0}
711 | m_PrefabInstance: {fileID: 0}
712 | m_PrefabAsset: {fileID: 0}
713 | serializedVersion: 6
714 | m_Component:
715 | - component: {fileID: 224737693311518052}
716 | - component: {fileID: 222175805939703770}
717 | - component: {fileID: 3887244321031527211}
718 | m_Layer: 5
719 | m_Name: LogText
720 | m_TagString: Untagged
721 | m_Icon: {fileID: 0}
722 | m_NavMeshLayer: 0
723 | m_StaticEditorFlags: 0
724 | m_IsActive: 1
725 | --- !u!224 &224737693311518052
726 | RectTransform:
727 | m_ObjectHideFlags: 0
728 | m_CorrespondingSourceObject: {fileID: 0}
729 | m_PrefabInstance: {fileID: 0}
730 | m_PrefabAsset: {fileID: 0}
731 | m_GameObject: {fileID: 1785910143472904}
732 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
733 | m_LocalPosition: {x: 0, y: 0, z: 0}
734 | m_LocalScale: {x: 1, y: 1, z: 1}
735 | m_ConstrainProportionsScale: 0
736 | m_Children: []
737 | m_Father: {fileID: 22479264}
738 | m_RootOrder: 1
739 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
740 | m_AnchorMin: {x: 0, y: 0}
741 | m_AnchorMax: {x: 1, y: 1}
742 | m_AnchoredPosition: {x: 12.5, y: 0}
743 | m_SizeDelta: {x: -35, y: 0}
744 | m_Pivot: {x: 0.5, y: 0.5}
745 | --- !u!222 &222175805939703770
746 | CanvasRenderer:
747 | m_ObjectHideFlags: 0
748 | m_CorrespondingSourceObject: {fileID: 0}
749 | m_PrefabInstance: {fileID: 0}
750 | m_PrefabAsset: {fileID: 0}
751 | m_GameObject: {fileID: 1785910143472904}
752 | m_CullTransparentMesh: 1
753 | --- !u!114 &3887244321031527211
754 | MonoBehaviour:
755 | m_ObjectHideFlags: 0
756 | m_CorrespondingSourceObject: {fileID: 0}
757 | m_PrefabInstance: {fileID: 0}
758 | m_PrefabAsset: {fileID: 0}
759 | m_GameObject: {fileID: 1785910143472904}
760 | m_Enabled: 1
761 | m_EditorHideFlags: 0
762 | m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
763 | m_Name:
764 | m_EditorClassIdentifier:
765 | m_Material: {fileID: 0}
766 | m_Color: {r: 1, g: 1, b: 1, a: 1}
767 | m_RaycastTarget: 0
768 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
769 | m_Maskable: 1
770 | m_OnCullStateChanged:
771 | m_PersistentCalls:
772 | m_Calls: []
773 | m_text: Debug.Log summary
774 | m_isRightToLeft: 0
775 | m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
776 | m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
777 | m_fontSharedMaterials: []
778 | m_fontMaterial: {fileID: 0}
779 | m_fontMaterials: []
780 | m_fontColor32:
781 | serializedVersion: 2
782 | rgba: 4292335574
783 | m_fontColor: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1}
784 | m_enableVertexGradient: 0
785 | m_colorMode: 3
786 | m_fontColorGradient:
787 | topLeft: {r: 1, g: 1, b: 1, a: 1}
788 | topRight: {r: 1, g: 1, b: 1, a: 1}
789 | bottomLeft: {r: 1, g: 1, b: 1, a: 1}
790 | bottomRight: {r: 1, g: 1, b: 1, a: 1}
791 | m_fontColorGradientPreset: {fileID: 0}
792 | m_spriteAsset: {fileID: 0}
793 | m_tintAllSprites: 0
794 | m_StyleSheet: {fileID: 0}
795 | m_TextStyleHashCode: -1183493901
796 | m_overrideHtmlColors: 0
797 | m_faceColor:
798 | serializedVersion: 2
799 | rgba: 4294967295
800 | m_fontSize: 13.5
801 | m_fontSizeBase: 13.5
802 | m_fontWeight: 400
803 | m_enableAutoSizing: 0
804 | m_fontSizeMin: 1
805 | m_fontSizeMax: 40
806 | m_fontStyle: 0
807 | m_HorizontalAlignment: 1
808 | m_VerticalAlignment: 512
809 | m_textAlignment: 65535
810 | m_characterSpacing: 0
811 | m_wordSpacing: 0
812 | m_lineSpacing: 0
813 | m_lineSpacingMax: 0
814 | m_paragraphSpacing: 0
815 | m_charWidthMaxAdj: 0
816 | m_enableWordWrapping: 1
817 | m_wordWrappingRatios: 0.4
818 | m_overflowMode: 1
819 | m_linkedTextComponent: {fileID: 0}
820 | parentLinkedComponent: {fileID: 0}
821 | m_enableKerning: 1
822 | m_enableExtraPadding: 0
823 | checkPaddingRequired: 0
824 | m_isRichText: 1
825 | m_parseCtrlCharacters: 0
826 | m_isOrthographic: 1
827 | m_isCullingEnabled: 0
828 | m_horizontalMapping: 0
829 | m_verticalMapping: 0
830 | m_uvLineOffset: 0
831 | m_geometrySortingOrder: 0
832 | m_IsTextObjectScaleStatic: 0
833 | m_VertexBufferAutoSizeReduction: 0
834 | m_useMaxVisibleDescender: 1
835 | m_pageToDisplay: 1
836 | m_margin: {x: 0, y: 0, z: 0, w: 0}
837 | m_isUsingLegacyAnimationComponent: 0
838 | m_isVolumetricText: 0
839 | m_hasFontAssetChanged: 0
840 | m_baseMaterial: {fileID: 0}
841 | m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
842 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Prefabs/DebugLogItem.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 391be5df5ef62f345bb76a1051c04da7
3 | timeCreated: 1465919887
4 | licenseType: Free
5 | NativeFormatImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/README.txt:
--------------------------------------------------------------------------------
1 | = In-game Debug Console (v1.8.1) =
2 |
3 | Documentation: https://github.com/yasirkula/UnityIngameDebugConsole
4 | FAQ: https://github.com/yasirkula/UnityIngameDebugConsole#faq
5 | E-mail: yasirkula@gmail.com
6 |
7 | You can simply place the IngameDebugConsole prefab to your scene. Hovering the cursor over its properties in the Inspector will reveal explanatory tooltips.
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/README.txt.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: edf2ac73f7bc3064c96d53009106dc53
3 | timeCreated: 1563307881
4 | licenseType: Free
5 | TextScriptImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 860c08388401a6d4e858fe4910ea9337
3 | folderAsset: yes
4 | timeCreated: 1465930645
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/Attributes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7de74709c0f949d42853e89b41f0c939
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/Attributes/ConsoleAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 |
4 | namespace IngameDebugConsole
5 | {
6 | public abstract class ConsoleAttribute : Attribute
7 | {
8 | public MethodInfo Method { get; private set; }
9 | public abstract int Order { get; }
10 |
11 | public void SetMethod(MethodInfo method)
12 | {
13 | if (Method != null)
14 | throw new Exception("Method was already initialized.");
15 |
16 | Method = method;
17 | }
18 |
19 | public abstract void Load();
20 | }
21 | }
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/Attributes/ConsoleAttribute.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: efc4511f2eea8034ca3a0a29cac8f554
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/Attributes/ConsoleCustomTypeParserAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace IngameDebugConsole
4 | {
5 | [AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = false)]
6 | public class ConsoleCustomTypeParserAttribute : ConsoleAttribute
7 | {
8 | public readonly Type type;
9 | public readonly string readableName;
10 |
11 | public override int Order { get { return 0; } }
12 |
13 | public ConsoleCustomTypeParserAttribute(Type type, string readableName = null)
14 | {
15 | this.type = type;
16 | this.readableName = readableName;
17 | }
18 |
19 | public override void Load()
20 | {
21 | DebugLogConsole.AddCustomParameterType(type, (DebugLogConsole.ParseFunction)Delegate.CreateDelegate(typeof(DebugLogConsole.ParseFunction), Method), readableName);
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/Attributes/ConsoleCustomTypeParserAttribute.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b014aa072d9631848babd5dafb325d3d
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/Attributes/ConsoleMethodAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace IngameDebugConsole
4 | {
5 | [AttributeUsage( AttributeTargets.Method, Inherited = false, AllowMultiple = true )]
6 | public class ConsoleMethodAttribute : ConsoleAttribute
7 | {
8 | private string m_command;
9 | private string m_description;
10 | private string[] m_parameterNames;
11 |
12 | public string Command { get { return m_command; } }
13 | public string Description { get { return m_description; } }
14 | public string[] ParameterNames { get { return m_parameterNames; } }
15 |
16 | public override int Order { get { return 1; } }
17 |
18 | public ConsoleMethodAttribute( string command, string description, params string[] parameterNames )
19 | {
20 | m_command = command;
21 | m_description = description;
22 | m_parameterNames = parameterNames;
23 | }
24 |
25 | public override void Load()
26 | {
27 | DebugLogConsole.AddCommand(Command, Description, Method, null, ParameterNames);
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/Attributes/ConsoleMethodAttribute.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 324bb39c0bff0f74fa42f83e91f07e3a
3 | timeCreated: 1520710946
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/CircularBuffer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using UnityEngine;
3 |
4 | namespace IngameDebugConsole
5 | {
6 | public class CircularBuffer
7 | {
8 | private readonly T[] array;
9 | private int startIndex;
10 |
11 | public int Count { get; private set; }
12 | public T this[int index] { get { return array[( startIndex + index ) % array.Length]; } }
13 |
14 | public CircularBuffer( int capacity )
15 | {
16 | array = new T[capacity];
17 | }
18 |
19 | // Old elements are overwritten when capacity is reached
20 | public void Add( T value )
21 | {
22 | if( Count < array.Length )
23 | array[Count++] = value;
24 | else
25 | {
26 | array[startIndex] = value;
27 | if( ++startIndex >= array.Length )
28 | startIndex = 0;
29 | }
30 | }
31 | }
32 |
33 | public class DynamicCircularBuffer
34 | {
35 | private T[] array;
36 | private int startIndex;
37 |
38 | public int Count { get; private set; }
39 | public int Capacity { get { return array.Length; } }
40 |
41 | public T this[int index]
42 | {
43 | get { return array[( startIndex + index ) % array.Length]; }
44 | set { array[( startIndex + index ) % array.Length] = value; }
45 | }
46 |
47 | public DynamicCircularBuffer( int initialCapacity = 2 )
48 | {
49 | array = new T[initialCapacity];
50 | }
51 |
52 | private void SetCapacity( int capacity )
53 | {
54 | T[] newArray = new T[capacity];
55 | if( Count > 0 )
56 | {
57 | int elementsBeforeWrap = Mathf.Min( Count, array.Length - startIndex );
58 | Array.Copy( array, startIndex, newArray, 0, elementsBeforeWrap );
59 | if( elementsBeforeWrap < Count )
60 | Array.Copy( array, 0, newArray, elementsBeforeWrap, Count - elementsBeforeWrap );
61 | }
62 |
63 | array = newArray;
64 | startIndex = 0;
65 | }
66 |
67 | /// Inserts the value to the beginning of the collection.
68 | public void AddFirst( T value )
69 | {
70 | if( array.Length == Count )
71 | SetCapacity( Mathf.Max( array.Length * 2, 4 ) );
72 |
73 | startIndex = ( startIndex > 0 ) ? ( startIndex - 1 ) : ( array.Length - 1 );
74 | array[startIndex] = value;
75 | Count++;
76 | }
77 |
78 | /// Adds the value to the end of the collection.
79 | public void Add( T value )
80 | {
81 | if( array.Length == Count )
82 | SetCapacity( Mathf.Max( array.Length * 2, 4 ) );
83 |
84 | this[Count++] = value;
85 | }
86 |
87 | public void AddRange( DynamicCircularBuffer other )
88 | {
89 | if( other.Count == 0 )
90 | return;
91 |
92 | if( array.Length < Count + other.Count )
93 | SetCapacity( Mathf.Max( array.Length * 2, Count + other.Count ) );
94 |
95 | int insertStartIndex = ( startIndex + Count ) % array.Length;
96 | int elementsBeforeWrap = Mathf.Min( other.Count, array.Length - insertStartIndex );
97 | int otherElementsBeforeWrap = Mathf.Min( other.Count, other.array.Length - other.startIndex );
98 |
99 | Array.Copy( other.array, other.startIndex, array, insertStartIndex, Mathf.Min( elementsBeforeWrap, otherElementsBeforeWrap ) );
100 | if( elementsBeforeWrap < otherElementsBeforeWrap ) // This array wrapped before the other array
101 | Array.Copy( other.array, other.startIndex + elementsBeforeWrap, array, 0, otherElementsBeforeWrap - elementsBeforeWrap );
102 | else if( elementsBeforeWrap > otherElementsBeforeWrap ) // The other array wrapped before this array
103 | Array.Copy( other.array, 0, array, insertStartIndex + otherElementsBeforeWrap, elementsBeforeWrap - otherElementsBeforeWrap );
104 |
105 | int copiedElements = Mathf.Max( elementsBeforeWrap, otherElementsBeforeWrap );
106 | if( copiedElements < other.Count ) // Both arrays wrapped and there's still some elements left to copy
107 | Array.Copy( other.array, copiedElements - otherElementsBeforeWrap, array, copiedElements - elementsBeforeWrap, other.Count - copiedElements );
108 |
109 | Count += other.Count;
110 | }
111 |
112 | public T RemoveFirst()
113 | {
114 | T element = array[startIndex];
115 | array[startIndex] = default( T );
116 |
117 | if( ++startIndex == array.Length )
118 | startIndex = 0;
119 |
120 | Count--;
121 | return element;
122 | }
123 |
124 | public T RemoveLast()
125 | {
126 | int index = ( startIndex + Count - 1 ) % array.Length;
127 | T element = array[index];
128 | array[index] = default( T );
129 |
130 | Count--;
131 | return element;
132 | }
133 |
134 | public int RemoveAll( Predicate shouldRemoveElement )
135 | {
136 | return RemoveAll( shouldRemoveElement, null, null );
137 | }
138 |
139 | public int RemoveAll( Predicate shouldRemoveElement, Action onElementIndexChanged, DynamicCircularBuffer synchronizedBuffer )
140 | {
141 | Y[] synchronizedArray = ( synchronizedBuffer != null ) ? synchronizedBuffer.array : null;
142 | int elementsBeforeWrap = Mathf.Min( Count, array.Length - startIndex );
143 | int removedElements = 0;
144 | int i = startIndex, newIndex = startIndex, endIndex = startIndex + elementsBeforeWrap;
145 | for( ; i < endIndex; i++ )
146 | {
147 | if( shouldRemoveElement( array[i] ) )
148 | removedElements++;
149 | else
150 | {
151 | if( removedElements > 0 )
152 | {
153 | T element = array[i];
154 | array[newIndex] = element;
155 |
156 | if( synchronizedArray != null )
157 | synchronizedArray[newIndex] = synchronizedArray[i];
158 |
159 | if( onElementIndexChanged != null )
160 | onElementIndexChanged( element, newIndex - startIndex );
161 | }
162 |
163 | newIndex++;
164 | }
165 | }
166 |
167 | i = 0;
168 | endIndex = Count - elementsBeforeWrap;
169 |
170 | if( newIndex < array.Length )
171 | {
172 | for( ; i < endIndex; i++ )
173 | {
174 | if( shouldRemoveElement( array[i] ) )
175 | removedElements++;
176 | else
177 | {
178 | T element = array[i];
179 | array[newIndex] = element;
180 |
181 | if( synchronizedArray != null )
182 | synchronizedArray[newIndex] = synchronizedArray[i];
183 |
184 | if( onElementIndexChanged != null )
185 | onElementIndexChanged( element, newIndex - startIndex );
186 |
187 | if( ++newIndex == array.Length )
188 | {
189 | i++;
190 | break;
191 | }
192 | }
193 | }
194 | }
195 |
196 | if( newIndex == array.Length )
197 | {
198 | newIndex = 0;
199 | for( ; i < endIndex; i++ )
200 | {
201 | if( shouldRemoveElement( array[i] ) )
202 | removedElements++;
203 | else
204 | {
205 | if( removedElements > 0 )
206 | {
207 | T element = array[i];
208 | array[newIndex] = element;
209 |
210 | if( synchronizedArray != null )
211 | synchronizedArray[newIndex] = synchronizedArray[i];
212 |
213 | if( onElementIndexChanged != null )
214 | onElementIndexChanged( element, newIndex + elementsBeforeWrap );
215 | }
216 |
217 | newIndex++;
218 | }
219 | }
220 | }
221 |
222 | TrimEnd( removedElements );
223 | if( synchronizedBuffer != null )
224 | synchronizedBuffer.TrimEnd( removedElements );
225 |
226 | return removedElements;
227 | }
228 |
229 | public void TrimStart( int trimCount, Action perElementCallback = null )
230 | {
231 | TrimInternal( trimCount, startIndex, perElementCallback );
232 | startIndex = ( startIndex + trimCount ) % array.Length;
233 | }
234 |
235 | public void TrimEnd( int trimCount, Action perElementCallback = null )
236 | {
237 | TrimInternal( trimCount, ( startIndex + Count - trimCount ) % array.Length, perElementCallback );
238 | }
239 |
240 | private void TrimInternal( int trimCount, int startIndex, Action perElementCallback )
241 | {
242 | int elementsBeforeWrap = Mathf.Min( trimCount, array.Length - startIndex );
243 | if( perElementCallback == null )
244 | {
245 | Array.Clear( array, startIndex, elementsBeforeWrap );
246 | if( elementsBeforeWrap < trimCount )
247 | Array.Clear( array, 0, trimCount - elementsBeforeWrap );
248 | }
249 | else
250 | {
251 | for( int i = startIndex, endIndex = startIndex + elementsBeforeWrap; i < endIndex; i++ )
252 | {
253 | perElementCallback( array[i] );
254 | array[i] = default( T );
255 | }
256 |
257 | for( int i = 0, endIndex = trimCount - elementsBeforeWrap; i < endIndex; i++ )
258 | {
259 | perElementCallback( array[i] );
260 | array[i] = default( T );
261 | }
262 | }
263 |
264 | Count -= trimCount;
265 | }
266 |
267 | public void Clear()
268 | {
269 | int elementsBeforeWrap = Mathf.Min( Count, array.Length - startIndex );
270 | Array.Clear( array, startIndex, elementsBeforeWrap );
271 | if( elementsBeforeWrap < Count )
272 | Array.Clear( array, 0, Count - elementsBeforeWrap );
273 |
274 | startIndex = 0;
275 | Count = 0;
276 | }
277 |
278 | public int IndexOf( T value )
279 | {
280 | int elementsBeforeWrap = Mathf.Min( Count, array.Length - startIndex );
281 | int index = Array.IndexOf( array, value, startIndex, elementsBeforeWrap );
282 | if( index >= 0 )
283 | return index - startIndex;
284 |
285 | if( elementsBeforeWrap < Count )
286 | {
287 | index = Array.IndexOf( array, value, 0, Count - elementsBeforeWrap );
288 | if( index >= 0 )
289 | return index + elementsBeforeWrap;
290 | }
291 |
292 | return -1;
293 | }
294 |
295 | public void ForEach( Action action )
296 | {
297 | int elementsBeforeWrap = Mathf.Min( Count, array.Length - startIndex );
298 | for( int i = startIndex, endIndex = startIndex + elementsBeforeWrap; i < endIndex; i++ )
299 | action( array[i] );
300 | for( int i = 0, endIndex = Count - elementsBeforeWrap; i < endIndex; i++ )
301 | action( array[i] );
302 | }
303 | }
304 | }
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/CircularBuffer.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6136cb3c00eac0149901b8e7f2fecef8
3 | timeCreated: 1550943949
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugLogConsole.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d15693a03d0d33b4892c6365a2a97e19
3 | timeCreated: 1472036503
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugLogEntry.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Globalization;
3 | using System.Text;
4 | using UnityEngine;
5 |
6 | // Container for a simple debug entry
7 | namespace IngameDebugConsole
8 | {
9 | public class DebugLogEntry
10 | {
11 | private const int HASH_NOT_CALCULATED = -623218;
12 |
13 | public string logString;
14 | public string stackTrace;
15 | private string completeLog;
16 |
17 | // Sprite to show with this entry
18 | public LogType logType;
19 |
20 | // Collapsed count
21 | public int count;
22 |
23 | // Index of this entry among all collapsed entries
24 | public int collapsedIndex;
25 |
26 | private int hashValue;
27 |
28 | public void Initialize( string logString, string stackTrace )
29 | {
30 | this.logString = logString;
31 | this.stackTrace = stackTrace;
32 |
33 | completeLog = null;
34 | count = 1;
35 | hashValue = HASH_NOT_CALCULATED;
36 | }
37 |
38 | public void Clear()
39 | {
40 | logString = null;
41 | stackTrace = null;
42 | completeLog = null;
43 | }
44 |
45 | // Checks if logString or stackTrace contains the search term
46 | public bool MatchesSearchTerm( string searchTerm )
47 | {
48 | return ( logString != null && DebugLogConsole.caseInsensitiveComparer.IndexOf( logString, searchTerm, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) >= 0 ) ||
49 | ( stackTrace != null && DebugLogConsole.caseInsensitiveComparer.IndexOf( stackTrace, searchTerm, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) >= 0 );
50 | }
51 |
52 | // Return a string containing complete information about this debug entry
53 | public override string ToString()
54 | {
55 | if( completeLog == null )
56 | completeLog = string.Concat( logString, "\n", stackTrace );
57 |
58 | return completeLog;
59 | }
60 |
61 | // Credit: https://stackoverflow.com/a/19250516/2373034
62 | public int GetContentHashCode()
63 | {
64 | if( hashValue == HASH_NOT_CALCULATED )
65 | {
66 | unchecked
67 | {
68 | hashValue = 17;
69 | hashValue = hashValue * 23 + ( logString == null ? 0 : logString.GetHashCode() );
70 | hashValue = hashValue * 23 + ( stackTrace == null ? 0 : stackTrace.GetHashCode() );
71 | }
72 | }
73 |
74 | return hashValue;
75 | }
76 | }
77 |
78 | public struct QueuedDebugLogEntry
79 | {
80 | public readonly string logString;
81 | public readonly string stackTrace;
82 | public readonly LogType logType;
83 |
84 | public QueuedDebugLogEntry( string logString, string stackTrace, LogType logType )
85 | {
86 | this.logString = logString;
87 | this.stackTrace = stackTrace;
88 | this.logType = logType;
89 | }
90 |
91 | // Checks if logString or stackTrace contains the search term
92 | public bool MatchesSearchTerm( string searchTerm )
93 | {
94 | return ( logString != null && DebugLogConsole.caseInsensitiveComparer.IndexOf( logString, searchTerm, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) >= 0 ) ||
95 | ( stackTrace != null && DebugLogConsole.caseInsensitiveComparer.IndexOf( stackTrace, searchTerm, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) >= 0 );
96 | }
97 | }
98 |
99 | public struct DebugLogEntryTimestamp
100 | {
101 | public readonly System.DateTime dateTime;
102 | #if !IDG_OMIT_ELAPSED_TIME
103 | public readonly float elapsedSeconds;
104 | #endif
105 | #if !IDG_OMIT_FRAMECOUNT
106 | public readonly int frameCount;
107 | #endif
108 |
109 | #if !IDG_OMIT_ELAPSED_TIME && !IDG_OMIT_FRAMECOUNT
110 | public DebugLogEntryTimestamp( System.DateTime dateTime, float elapsedSeconds, int frameCount )
111 | #elif !IDG_OMIT_ELAPSED_TIME
112 | public DebugLogEntryTimestamp( System.DateTime dateTime, float elapsedSeconds )
113 | #elif !IDG_OMIT_FRAMECOUNT
114 | public DebugLogEntryTimestamp( System.DateTime dateTime, int frameCount )
115 | #else
116 | public DebugLogEntryTimestamp( System.DateTime dateTime )
117 | #endif
118 | {
119 | this.dateTime = dateTime;
120 | #if !IDG_OMIT_ELAPSED_TIME
121 | this.elapsedSeconds = elapsedSeconds;
122 | #endif
123 | #if !IDG_OMIT_FRAMECOUNT
124 | this.frameCount = frameCount;
125 | #endif
126 | }
127 |
128 | public void AppendTime( StringBuilder sb )
129 | {
130 | // Add DateTime in format: [HH:mm:ss]
131 | sb.Append( "[" );
132 |
133 | int hour = dateTime.Hour;
134 | if( hour >= 10 )
135 | sb.Append( hour );
136 | else
137 | sb.Append( "0" ).Append( hour );
138 |
139 | sb.Append( ":" );
140 |
141 | int minute = dateTime.Minute;
142 | if( minute >= 10 )
143 | sb.Append( minute );
144 | else
145 | sb.Append( "0" ).Append( minute );
146 |
147 | sb.Append( ":" );
148 |
149 | int second = dateTime.Second;
150 | if( second >= 10 )
151 | sb.Append( second );
152 | else
153 | sb.Append( "0" ).Append( second );
154 |
155 | sb.Append( "]" );
156 | }
157 |
158 | public void AppendFullTimestamp( StringBuilder sb )
159 | {
160 | AppendTime( sb );
161 |
162 | #if !IDG_OMIT_ELAPSED_TIME && !IDG_OMIT_FRAMECOUNT
163 | // Append elapsed seconds and frame count in format: [1.0s at #Frame]
164 | sb.Append( "[" ).Append( elapsedSeconds.ToString( "F1" ) ).Append( "s at " ).Append( "#" ).Append( frameCount ).Append( "]" );
165 | #elif !IDG_OMIT_ELAPSED_TIME
166 | // Append elapsed seconds in format: [1.0s]
167 | sb.Append( "[" ).Append( elapsedSeconds.ToString( "F1" ) ).Append( "s]" );
168 | #elif !IDG_OMIT_FRAMECOUNT
169 | // Append frame count in format: [#Frame]
170 | sb.Append( "[#" ).Append( frameCount ).Append( "]" );
171 | #endif
172 | }
173 | }
174 |
175 | public class DebugLogEntryContentEqualityComparer : EqualityComparer
176 | {
177 | public override bool Equals( DebugLogEntry x, DebugLogEntry y )
178 | {
179 | return x.logString == y.logString && x.stackTrace == y.stackTrace;
180 | }
181 |
182 | public override int GetHashCode( DebugLogEntry obj )
183 | {
184 | return obj.GetContentHashCode();
185 | }
186 | }
187 | }
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugLogEntry.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e7b1a420c564be040bf73b8a377fc2c2
3 | timeCreated: 1466375168
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugLogItem.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEngine.UI;
3 | using UnityEngine.EventSystems;
4 | using System.Text;
5 | using TMPro;
6 | #if UNITY_EDITOR
7 | using UnityEditor;
8 | using System.Text.RegularExpressions;
9 | #endif
10 |
11 | // A UI element to show information about a debug entry
12 | namespace IngameDebugConsole
13 | {
14 | public class DebugLogItem : MonoBehaviour, IPointerClickHandler
15 | {
16 | #pragma warning disable 0649
17 | // Cached components
18 | [SerializeField]
19 | private RectTransform transformComponent;
20 | public RectTransform Transform { get { return transformComponent; } }
21 |
22 | [SerializeField]
23 | private Image imageComponent;
24 | public Image Image { get { return imageComponent; } }
25 |
26 | [SerializeField]
27 | private CanvasGroup canvasGroupComponent;
28 | public CanvasGroup CanvasGroup { get { return canvasGroupComponent; } }
29 |
30 | [SerializeField]
31 | private TextMeshProUGUI logText;
32 | [SerializeField]
33 | private Image logTypeImage;
34 |
35 | // Objects related to the collapsed count of the debug entry
36 | [SerializeField]
37 | private GameObject logCountParent;
38 | [SerializeField]
39 | private TextMeshProUGUI logCountText;
40 |
41 | [SerializeField]
42 | private Button copyLogButton;
43 | #pragma warning restore 0649
44 |
45 | // Debug entry to show with this log item
46 | private DebugLogEntry logEntry;
47 | public DebugLogEntry Entry { get { return logEntry; } }
48 |
49 | private DebugLogEntryTimestamp? logEntryTimestamp;
50 | public DebugLogEntryTimestamp? Timestamp { get { return logEntryTimestamp; } }
51 |
52 | // Index of the entry in the list of entries
53 | [System.NonSerialized] public int Index;
54 |
55 | private bool isExpanded;
56 | public bool Expanded { get { return isExpanded; } }
57 |
58 | private Vector2 logTextOriginalPosition;
59 | private Vector2 logTextOriginalSize;
60 | private float copyLogButtonHeight;
61 |
62 | private DebugLogRecycledListView listView;
63 |
64 | public void Initialize( DebugLogRecycledListView listView )
65 | {
66 | this.listView = listView;
67 |
68 | logTextOriginalPosition = logText.rectTransform.anchoredPosition;
69 | logTextOriginalSize = logText.rectTransform.sizeDelta;
70 | copyLogButtonHeight = ( copyLogButton.transform as RectTransform ).anchoredPosition.y + ( copyLogButton.transform as RectTransform ).sizeDelta.y + 2f; // 2f: space between text and button
71 |
72 | logText.maxVisibleCharacters = listView.manager.maxLogLength;
73 |
74 | copyLogButton.onClick.AddListener( CopyLog );
75 | #if !UNITY_EDITOR && UNITY_WEBGL
76 | copyLogButton.gameObject.AddComponent().Initialize( this );
77 | #endif
78 | }
79 |
80 | public void SetContent( DebugLogEntry logEntry, DebugLogEntryTimestamp? logEntryTimestamp, int entryIndex, bool isExpanded )
81 | {
82 | this.logEntry = logEntry;
83 | this.logEntryTimestamp = logEntryTimestamp;
84 | this.Index = entryIndex;
85 | this.isExpanded = isExpanded;
86 |
87 | Vector2 size = transformComponent.sizeDelta;
88 | if( isExpanded )
89 | {
90 | size.y = listView.SelectedItemHeight;
91 |
92 | if( !copyLogButton.gameObject.activeSelf )
93 | {
94 | copyLogButton.gameObject.SetActive( true );
95 |
96 | logText.rectTransform.anchoredPosition = new Vector2( logTextOriginalPosition.x, logTextOriginalPosition.y + copyLogButtonHeight * 0.5f );
97 | logText.rectTransform.sizeDelta = logTextOriginalSize - new Vector2( 0f, copyLogButtonHeight );
98 | }
99 | }
100 | else
101 | {
102 | size.y = listView.ItemHeight;
103 |
104 | if( copyLogButton.gameObject.activeSelf )
105 | {
106 | copyLogButton.gameObject.SetActive( false );
107 |
108 | logText.rectTransform.anchoredPosition = logTextOriginalPosition;
109 | logText.rectTransform.sizeDelta = logTextOriginalSize;
110 | }
111 | }
112 |
113 | transformComponent.sizeDelta = size;
114 |
115 | SetText( logEntry, logEntryTimestamp, isExpanded );
116 | logTypeImage.sprite = DebugLogManager.logSpriteRepresentations[(int) logEntry.logType];
117 | }
118 |
119 | // Show the collapsed count of the debug entry
120 | public void ShowCount()
121 | {
122 | logCountText.SetText( "{0}", logEntry.count );
123 |
124 | if( !logCountParent.activeSelf )
125 | logCountParent.SetActive( true );
126 | }
127 |
128 | // Hide the collapsed count of the debug entry
129 | public void HideCount()
130 | {
131 | if( logCountParent.activeSelf )
132 | logCountParent.SetActive( false );
133 | }
134 |
135 | // Update the debug entry's displayed timestamp
136 | public void UpdateTimestamp( DebugLogEntryTimestamp timestamp )
137 | {
138 | logEntryTimestamp = timestamp;
139 |
140 | if( isExpanded || listView.manager.alwaysDisplayTimestamps )
141 | SetText( logEntry, timestamp, isExpanded );
142 | }
143 |
144 | private void SetText( DebugLogEntry logEntry, DebugLogEntryTimestamp? logEntryTimestamp, bool isExpanded )
145 | {
146 | if( !logEntryTimestamp.HasValue || ( !isExpanded && !listView.manager.alwaysDisplayTimestamps ) )
147 | logText.text = isExpanded ? logEntry.ToString() : logEntry.logString;
148 | else
149 | {
150 | StringBuilder sb = listView.manager.sharedStringBuilder;
151 | sb.Length = 0;
152 |
153 | if( isExpanded )
154 | {
155 | logEntryTimestamp.Value.AppendFullTimestamp( sb );
156 | sb.Append( ": " ).Append( logEntry.ToString() );
157 | }
158 | else
159 | {
160 | logEntryTimestamp.Value.AppendTime( sb );
161 | sb.Append( " " ).Append( logEntry.logString );
162 | }
163 |
164 | logText.text = sb.ToString();
165 | }
166 | }
167 |
168 | // This log item is clicked, show the debug entry's stack trace
169 | public void OnPointerClick( PointerEventData eventData )
170 | {
171 | #if UNITY_EDITOR
172 | if( eventData.button == PointerEventData.InputButton.Right )
173 | {
174 | Match regex = Regex.Match( logEntry.stackTrace, @"\(at .*\.cs:[0-9]+\)$", RegexOptions.Multiline );
175 | if( regex.Success )
176 | {
177 | string line = logEntry.stackTrace.Substring( regex.Index + 4, regex.Length - 5 );
178 | int lineSeparator = line.IndexOf( ':' );
179 | MonoScript script = AssetDatabase.LoadAssetAtPath( line.Substring( 0, lineSeparator ) );
180 | if( script != null )
181 | AssetDatabase.OpenAsset( script, int.Parse( line.Substring( lineSeparator + 1 ) ) );
182 | }
183 | }
184 | else
185 | listView.OnLogItemClicked( this );
186 | #else
187 | listView.OnLogItemClicked( this );
188 | #endif
189 | }
190 |
191 | private void CopyLog()
192 | {
193 | #if UNITY_EDITOR || !UNITY_WEBGL
194 | string log = GetCopyContent();
195 | if( !string.IsNullOrEmpty( log ) )
196 | GUIUtility.systemCopyBuffer = log;
197 | #endif
198 | }
199 |
200 | internal string GetCopyContent()
201 | {
202 | if( !logEntryTimestamp.HasValue )
203 | return logEntry.ToString();
204 | else
205 | {
206 | StringBuilder sb = listView.manager.sharedStringBuilder;
207 | sb.Length = 0;
208 |
209 | logEntryTimestamp.Value.AppendFullTimestamp( sb );
210 | sb.Append( ": " ).Append( logEntry.ToString() );
211 |
212 | return sb.ToString();
213 | }
214 | }
215 |
216 | /// Here, we're using instead of because the latter doesn't take
217 | /// into account. However, for to work, we need to give it
218 | /// enough space (increase log item's height) and let it regenerate its mesh .
219 | public float CalculateExpandedHeight( DebugLogEntry logEntry, DebugLogEntryTimestamp? logEntryTimestamp )
220 | {
221 | string text = logText.text;
222 | Vector2 size = ( transform as RectTransform ).sizeDelta;
223 |
224 | ( transform as RectTransform ).sizeDelta = new Vector2( size.x, 10000f );
225 | SetText( logEntry, logEntryTimestamp, true );
226 | logText.ForceMeshUpdate();
227 | float result = logText.GetRenderedValues( true ).y + copyLogButtonHeight;
228 |
229 | ( transform as RectTransform ).sizeDelta = size;
230 | logText.text = text;
231 |
232 | return Mathf.Max( listView.ItemHeight, result );
233 | }
234 |
235 | // Return a string containing complete information about the debug entry
236 | public override string ToString()
237 | {
238 | return logEntry.ToString();
239 | }
240 | }
241 | }
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugLogItem.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d2ea291be9de70a4abfec595203c96c1
3 | timeCreated: 1465919949
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugLogItemCopyWebGL.cs:
--------------------------------------------------------------------------------
1 | #if !UNITY_EDITOR && UNITY_WEBGL
2 | using System.Runtime.InteropServices;
3 | using UnityEngine;
4 | using UnityEngine.EventSystems;
5 |
6 | namespace IngameDebugConsole
7 | {
8 | public class DebugLogItemCopyWebGL : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
9 | {
10 | [DllImport( "__Internal" )]
11 | private static extern void IngameDebugConsoleStartCopy( string textToCopy );
12 | [DllImport( "__Internal" )]
13 | private static extern void IngameDebugConsoleCancelCopy();
14 |
15 | private DebugLogItem logItem;
16 |
17 | public void Initialize( DebugLogItem logItem )
18 | {
19 | this.logItem = logItem;
20 | }
21 |
22 | public void OnPointerDown( PointerEventData eventData )
23 | {
24 | string log = logItem.GetCopyContent();
25 | if( !string.IsNullOrEmpty( log ) )
26 | IngameDebugConsoleStartCopy( log );
27 | }
28 |
29 | public void OnPointerUp( PointerEventData eventData )
30 | {
31 | if( eventData.dragging )
32 | IngameDebugConsoleCancelCopy();
33 | }
34 | }
35 | }
36 | #endif
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugLogItemCopyWebGL.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5a7d9d894141e704d8160fb4632121ac
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugLogManager.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6a4f16ed905adcd4ab0d7c8c11f0d72c
3 | timeCreated: 1522092746
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: -9869
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugLogPopup.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEngine.UI;
3 | using UnityEngine.EventSystems;
4 | using System.Collections;
5 | using TMPro;
6 | #if UNITY_EDITOR && UNITY_2021_1_OR_NEWER
7 | using Screen = UnityEngine.Device.Screen; // To support Device Simulator on Unity 2021.1+
8 | #endif
9 |
10 | // Manager class for the debug popup
11 | namespace IngameDebugConsole
12 | {
13 | public class DebugLogPopup : MonoBehaviour, IPointerClickHandler, IBeginDragHandler, IDragHandler, IEndDragHandler
14 | {
15 | private RectTransform popupTransform;
16 |
17 | // Dimensions of the popup divided by 2
18 | private Vector2 halfSize;
19 |
20 | // Background image that will change color to indicate an alert
21 | private Image backgroundImage;
22 |
23 | // Canvas group to modify visibility of the popup
24 | private CanvasGroup canvasGroup;
25 |
26 | #pragma warning disable 0649
27 | [SerializeField]
28 | private DebugLogManager debugManager;
29 |
30 | [SerializeField]
31 | private TextMeshProUGUI newInfoCountText;
32 | [SerializeField]
33 | private TextMeshProUGUI newWarningCountText;
34 | [SerializeField]
35 | private TextMeshProUGUI newErrorCountText;
36 |
37 | [SerializeField]
38 | private Color alertColorInfo;
39 | [SerializeField]
40 | private Color alertColorWarning;
41 | [SerializeField]
42 | private Color alertColorError;
43 | #pragma warning restore 0649
44 |
45 | // Number of new debug entries since the log window has been closed
46 | private int newInfoCount = 0, newWarningCount = 0, newErrorCount = 0;
47 |
48 | private Color normalColor;
49 |
50 | private bool isPopupBeingDragged = false;
51 | private Vector2 normalizedPosition;
52 |
53 | // Coroutines for simple code-based animations
54 | private IEnumerator moveToPosCoroutine = null;
55 |
56 | public bool IsVisible { get; private set; }
57 |
58 | private void Awake()
59 | {
60 | popupTransform = (RectTransform) transform;
61 | backgroundImage = GetComponent();
62 | canvasGroup = GetComponent();
63 |
64 | normalColor = backgroundImage.color;
65 |
66 | halfSize = popupTransform.sizeDelta * 0.5f;
67 |
68 | Vector2 pos = popupTransform.anchoredPosition;
69 | if( pos.x != 0f || pos.y != 0f )
70 | normalizedPosition = pos.normalized; // Respect the initial popup position set in the prefab
71 | else
72 | normalizedPosition = new Vector2( 0.5f, 0f ); // Right edge by default
73 | }
74 |
75 | public void NewLogsArrived( int newInfo, int newWarning, int newError )
76 | {
77 | if( newInfo > 0 )
78 | {
79 | newInfoCount += newInfo;
80 | newInfoCountText.text = newInfoCount.ToString();
81 | }
82 |
83 | if( newWarning > 0 )
84 | {
85 | newWarningCount += newWarning;
86 | newWarningCountText.text = newWarningCount.ToString();
87 | }
88 |
89 | if( newError > 0 )
90 | {
91 | newErrorCount += newError;
92 | newErrorCountText.text = newErrorCount.ToString();
93 | }
94 |
95 | if( newErrorCount > 0 )
96 | backgroundImage.color = alertColorError;
97 | else if( newWarningCount > 0 )
98 | backgroundImage.color = alertColorWarning;
99 | else
100 | backgroundImage.color = alertColorInfo;
101 | }
102 |
103 | private void ResetValues()
104 | {
105 | newInfoCount = 0;
106 | newWarningCount = 0;
107 | newErrorCount = 0;
108 |
109 | newInfoCountText.text = "0";
110 | newWarningCountText.text = "0";
111 | newErrorCountText.text = "0";
112 |
113 | backgroundImage.color = normalColor;
114 | }
115 |
116 | // A simple smooth movement animation
117 | private IEnumerator MoveToPosAnimation( Vector2 targetPos )
118 | {
119 | float modifier = 0f;
120 | Vector2 initialPos = popupTransform.anchoredPosition;
121 |
122 | while( modifier < 1f )
123 | {
124 | modifier += 4f * Time.unscaledDeltaTime;
125 | popupTransform.anchoredPosition = Vector2.Lerp( initialPos, targetPos, modifier );
126 |
127 | yield return null;
128 | }
129 | }
130 |
131 | // Popup is clicked
132 | public void OnPointerClick( PointerEventData data )
133 | {
134 | // Hide the popup and show the log window
135 | if( !isPopupBeingDragged )
136 | debugManager.ShowLogWindow();
137 | }
138 |
139 | // Hides the log window and shows the popup
140 | public void Show()
141 | {
142 | canvasGroup.blocksRaycasts = true;
143 | canvasGroup.alpha = debugManager.popupOpacity;
144 | IsVisible = true;
145 |
146 | // Reset the counters
147 | ResetValues();
148 |
149 | // Update position in case resolution was changed while the popup was hidden
150 | UpdatePosition( true );
151 | }
152 |
153 | // Hide the popup
154 | public void Hide()
155 | {
156 | canvasGroup.blocksRaycasts = false;
157 | canvasGroup.alpha = 0f;
158 |
159 | IsVisible = false;
160 | isPopupBeingDragged = false;
161 | }
162 |
163 | public void OnBeginDrag( PointerEventData data )
164 | {
165 | isPopupBeingDragged = true;
166 |
167 | // If a smooth movement animation is in progress, cancel it
168 | if( moveToPosCoroutine != null )
169 | {
170 | StopCoroutine( moveToPosCoroutine );
171 | moveToPosCoroutine = null;
172 | }
173 | }
174 |
175 | // Reposition the popup
176 | public void OnDrag( PointerEventData data )
177 | {
178 | Vector2 localPoint;
179 | if( RectTransformUtility.ScreenPointToLocalPointInRectangle( debugManager.canvasTR, data.position, data.pressEventCamera, out localPoint ) )
180 | popupTransform.anchoredPosition = localPoint;
181 | }
182 |
183 | // Smoothly translate the popup to the nearest edge
184 | public void OnEndDrag( PointerEventData data )
185 | {
186 | isPopupBeingDragged = false;
187 | UpdatePosition( false );
188 | }
189 |
190 | // There are 2 different spaces used in these calculations:
191 | // RectTransform space: raw anchoredPosition of the popup that's in range [-canvasSize/2, canvasSize/2]
192 | // Safe area space: Screen.safeArea space that's in range [safeAreaBottomLeft, safeAreaTopRight] where these corner positions
193 | // are all positive (calculated from bottom left corner of the screen instead of the center of the screen)
194 | public void UpdatePosition( bool immediately )
195 | {
196 | Vector2 canvasRawSize = debugManager.canvasTR.rect.size;
197 |
198 | // Calculate safe area bounds
199 | float canvasWidth = canvasRawSize.x;
200 | float canvasHeight = canvasRawSize.y;
201 |
202 | float canvasBottomLeftX = 0f;
203 | float canvasBottomLeftY = 0f;
204 |
205 | if( debugManager.popupAvoidsScreenCutout )
206 | {
207 | #if UNITY_EDITOR || UNITY_ANDROID || UNITY_IOS
208 | Rect safeArea = Screen.safeArea;
209 |
210 | int screenWidth = Screen.width;
211 | int screenHeight = Screen.height;
212 |
213 | canvasWidth *= safeArea.width / screenWidth;
214 | canvasHeight *= safeArea.height / screenHeight;
215 |
216 | canvasBottomLeftX = canvasRawSize.x * ( safeArea.x / screenWidth );
217 | canvasBottomLeftY = canvasRawSize.y * ( safeArea.y / screenHeight );
218 | #endif
219 | }
220 |
221 | // Calculate safe area position of the popup
222 | // normalizedPosition allows us to glue the popup to a specific edge of the screen. It becomes useful when
223 | // the popup is at the right edge and we switch from portrait screen orientation to landscape screen orientation.
224 | // Without normalizedPosition, popup could jump to bottom or top edges instead of staying at the right edge
225 | Vector2 pos = canvasRawSize * 0.5f + ( immediately ? new Vector2( normalizedPosition.x * canvasWidth, normalizedPosition.y * canvasHeight ) : ( popupTransform.anchoredPosition - new Vector2( canvasBottomLeftX, canvasBottomLeftY ) ) );
226 |
227 | // Find distances to all four edges of the safe area
228 | float distToLeft = pos.x;
229 | float distToRight = canvasWidth - distToLeft;
230 |
231 | float distToBottom = pos.y;
232 | float distToTop = canvasHeight - distToBottom;
233 |
234 | float horDistance = Mathf.Min( distToLeft, distToRight );
235 | float vertDistance = Mathf.Min( distToBottom, distToTop );
236 |
237 | // Find the nearest edge's safe area coordinates
238 | if( horDistance < vertDistance )
239 | {
240 | if( distToLeft < distToRight )
241 | pos = new Vector2( halfSize.x, pos.y );
242 | else
243 | pos = new Vector2( canvasWidth - halfSize.x, pos.y );
244 |
245 | pos.y = Mathf.Clamp( pos.y, halfSize.y, canvasHeight - halfSize.y );
246 | }
247 | else
248 | {
249 | if( distToBottom < distToTop )
250 | pos = new Vector2( pos.x, halfSize.y );
251 | else
252 | pos = new Vector2( pos.x, canvasHeight - halfSize.y );
253 |
254 | pos.x = Mathf.Clamp( pos.x, halfSize.x, canvasWidth - halfSize.x );
255 | }
256 |
257 | pos -= canvasRawSize * 0.5f;
258 |
259 | normalizedPosition.Set( pos.x / canvasWidth, pos.y / canvasHeight );
260 |
261 | // Safe area's bottom left coordinates are added to pos only after normalizedPosition's value
262 | // is set because normalizedPosition is in range [-canvasWidth / 2, canvasWidth / 2]
263 | pos += new Vector2( canvasBottomLeftX, canvasBottomLeftY );
264 |
265 | // If another smooth movement animation is in progress, cancel it
266 | if( moveToPosCoroutine != null )
267 | {
268 | StopCoroutine( moveToPosCoroutine );
269 | moveToPosCoroutine = null;
270 | }
271 |
272 | if( immediately )
273 | popupTransform.anchoredPosition = pos;
274 | else
275 | {
276 | // Smoothly translate the popup to the specified position
277 | moveToPosCoroutine = MoveToPosAnimation( pos );
278 | StartCoroutine( moveToPosCoroutine );
279 | }
280 | }
281 | }
282 | }
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugLogPopup.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 05cc4b1999716644c9308528e38e7081
3 | timeCreated: 1466533184
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugLogRecycledListView.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 | using UnityEngine.UI;
4 |
5 | // Handles the log items in an optimized way such that existing log items are
6 | // recycled within the list instead of creating a new log item at each chance
7 | namespace IngameDebugConsole
8 | {
9 | public class DebugLogRecycledListView : MonoBehaviour
10 | {
11 | #pragma warning disable 0649
12 | // Cached components
13 | [SerializeField]
14 | private RectTransform transformComponent;
15 | [SerializeField]
16 | private RectTransform viewportTransform;
17 |
18 | [SerializeField]
19 | private Color logItemNormalColor1;
20 | [SerializeField]
21 | private Color logItemNormalColor2;
22 | [SerializeField]
23 | private Color logItemSelectedColor;
24 | #pragma warning restore 0649
25 |
26 | internal DebugLogManager manager;
27 | private ScrollRect scrollView;
28 |
29 | private float logItemHeight;
30 |
31 | private DynamicCircularBuffer entriesToShow = null;
32 | private DynamicCircularBuffer timestampsOfEntriesToShow = null;
33 |
34 | private DebugLogEntry selectedLogEntry;
35 | private int indexOfSelectedLogEntry = int.MaxValue;
36 | private float heightOfSelectedLogEntry;
37 | private float DeltaHeightOfSelectedLogEntry { get { return heightOfSelectedLogEntry - logItemHeight; } }
38 |
39 | /// These properties are used by and .
40 | private int collapsedOrderOfSelectedLogEntry;
41 | private float scrollDistanceToSelectedLogEntry;
42 |
43 | // Log items used to visualize the visible debug entries
44 | private readonly DynamicCircularBuffer visibleLogItems = new DynamicCircularBuffer( 32 );
45 |
46 | private bool isCollapseOn = false;
47 |
48 | // Current indices of debug entries shown on screen
49 | private int currentTopIndex = -1, currentBottomIndex = -1;
50 |
51 | private System.Predicate shouldRemoveLogItemPredicate;
52 | private System.Action poolLogItemAction;
53 |
54 | public float ItemHeight { get { return logItemHeight; } }
55 | public float SelectedItemHeight { get { return heightOfSelectedLogEntry; } }
56 |
57 | private void Awake()
58 | {
59 | scrollView = viewportTransform.GetComponentInParent();
60 | scrollView.onValueChanged.AddListener( ( pos ) =>
61 | {
62 | if( manager.IsLogWindowVisible )
63 | UpdateItemsInTheList( false );
64 | } );
65 | }
66 |
67 | public void Initialize( DebugLogManager manager, DynamicCircularBuffer entriesToShow, DynamicCircularBuffer timestampsOfEntriesToShow, float logItemHeight )
68 | {
69 | this.manager = manager;
70 | this.entriesToShow = entriesToShow;
71 | this.timestampsOfEntriesToShow = timestampsOfEntriesToShow;
72 | this.logItemHeight = logItemHeight;
73 |
74 | shouldRemoveLogItemPredicate = ShouldRemoveLogItem;
75 | poolLogItemAction = manager.PoolLogItem;
76 | }
77 |
78 | public void SetCollapseMode( bool collapse )
79 | {
80 | isCollapseOn = collapse;
81 | }
82 |
83 | // A log item is clicked, highlight it
84 | public void OnLogItemClicked( DebugLogItem item )
85 | {
86 | OnLogItemClickedInternal( item.Index, item );
87 | }
88 |
89 | // Force expand the log item at specified index
90 | public void SelectAndFocusOnLogItemAtIndex( int itemIndex )
91 | {
92 | if( indexOfSelectedLogEntry != itemIndex ) // Make sure that we aren't deselecting the target log item
93 | OnLogItemClickedInternal( itemIndex );
94 |
95 | float viewportHeight = viewportTransform.rect.height;
96 | float transformComponentCenterYAtTop = viewportHeight * 0.5f;
97 | float transformComponentCenterYAtBottom = transformComponent.sizeDelta.y - viewportHeight * 0.5f;
98 | float transformComponentTargetCenterY = itemIndex * logItemHeight + viewportHeight * 0.5f;
99 | if( transformComponentCenterYAtTop == transformComponentCenterYAtBottom )
100 | scrollView.verticalNormalizedPosition = 0.5f;
101 | else
102 | scrollView.verticalNormalizedPosition = Mathf.Clamp01( Mathf.InverseLerp( transformComponentCenterYAtBottom, transformComponentCenterYAtTop, transformComponentTargetCenterY ) );
103 |
104 | manager.SnapToBottom = false;
105 | }
106 |
107 | private void OnLogItemClickedInternal( int itemIndex, DebugLogItem referenceItem = null )
108 | {
109 | int indexOfPreviouslySelectedLogEntry = indexOfSelectedLogEntry;
110 | DeselectSelectedLogItem();
111 |
112 | if( indexOfPreviouslySelectedLogEntry != itemIndex )
113 | {
114 | selectedLogEntry = entriesToShow[itemIndex];
115 | indexOfSelectedLogEntry = itemIndex;
116 | CalculateSelectedLogEntryHeight( referenceItem );
117 |
118 | manager.SnapToBottom = false;
119 | }
120 |
121 | CalculateContentHeight();
122 | UpdateItemsInTheList( true );
123 |
124 | manager.ValidateScrollPosition();
125 | }
126 |
127 | // Deselect the currently selected log item
128 | public void DeselectSelectedLogItem()
129 | {
130 | selectedLogEntry = null;
131 | indexOfSelectedLogEntry = int.MaxValue;
132 | heightOfSelectedLogEntry = 0f;
133 | }
134 |
135 | ///
136 | /// Cache the currently selected log item's properties so that its position can be restored after is called.
137 | ///
138 | public void OnBeforeFilterLogs()
139 | {
140 | collapsedOrderOfSelectedLogEntry = 0;
141 | scrollDistanceToSelectedLogEntry = 0f;
142 |
143 | if( selectedLogEntry != null )
144 | {
145 | if( !isCollapseOn )
146 | {
147 | for( int i = 0; i < indexOfSelectedLogEntry; i++ )
148 | {
149 | if( entriesToShow[i] == selectedLogEntry )
150 | collapsedOrderOfSelectedLogEntry++;
151 | }
152 | }
153 |
154 | scrollDistanceToSelectedLogEntry = indexOfSelectedLogEntry * ItemHeight - transformComponent.anchoredPosition.y;
155 | }
156 | }
157 |
158 | ///
159 | /// See .
160 | ///
161 | public void OnAfterFilterLogs()
162 | {
163 | // Refresh selected log entry's index
164 | int newIndexOfSelectedLogEntry = -1;
165 | if( selectedLogEntry != null )
166 | {
167 | for( int i = 0; i < entriesToShow.Count; i++ )
168 | {
169 | if( entriesToShow[i] == selectedLogEntry && collapsedOrderOfSelectedLogEntry-- == 0 )
170 | {
171 | newIndexOfSelectedLogEntry = i;
172 | break;
173 | }
174 | }
175 | }
176 |
177 | if( newIndexOfSelectedLogEntry < 0 )
178 | DeselectSelectedLogItem();
179 | else
180 | {
181 | indexOfSelectedLogEntry = newIndexOfSelectedLogEntry;
182 | transformComponent.anchoredPosition = new Vector2( 0f, newIndexOfSelectedLogEntry * ItemHeight - scrollDistanceToSelectedLogEntry );
183 | }
184 | }
185 |
186 | // Number of debug entries may have changed, update the list
187 | public void OnLogEntriesUpdated( bool updateAllVisibleItemContents )
188 | {
189 | CalculateContentHeight();
190 | UpdateItemsInTheList( updateAllVisibleItemContents );
191 | }
192 |
193 | // A single collapsed log entry at specified index is updated, refresh its item if visible
194 | public void OnCollapsedLogEntryAtIndexUpdated( int index )
195 | {
196 | if( index >= currentTopIndex && index <= currentBottomIndex )
197 | {
198 | DebugLogItem logItem = GetLogItemAtIndex( index );
199 | logItem.ShowCount();
200 |
201 | if( timestampsOfEntriesToShow != null )
202 | logItem.UpdateTimestamp( timestampsOfEntriesToShow[index] );
203 | }
204 | }
205 |
206 | public void RefreshCollapsedLogEntryCounts()
207 | {
208 | for( int i = 0; i < visibleLogItems.Count; i++ )
209 | visibleLogItems[i].ShowCount();
210 | }
211 |
212 | public void OnLogEntriesRemoved( int removedLogCount )
213 | {
214 | if( selectedLogEntry != null )
215 | {
216 | bool isSelectedLogEntryRemoved = isCollapseOn ? ( selectedLogEntry.count == 0 ) : ( indexOfSelectedLogEntry < removedLogCount );
217 | if( isSelectedLogEntryRemoved )
218 | DeselectSelectedLogItem();
219 | else
220 | indexOfSelectedLogEntry = isCollapseOn ? FindIndexOfLogEntryInReverseDirection( selectedLogEntry, indexOfSelectedLogEntry ) : ( indexOfSelectedLogEntry - removedLogCount );
221 | }
222 |
223 | if( !manager.IsLogWindowVisible && manager.SnapToBottom )
224 | {
225 | // When log window becomes visible, it refreshes all logs. So unless snap to bottom is disabled, we don't need to
226 | // keep track of either the scroll position or the visible log items' positions.
227 | visibleLogItems.TrimStart( visibleLogItems.Count, poolLogItemAction );
228 | }
229 | else if( !isCollapseOn )
230 | visibleLogItems.TrimStart( Mathf.Clamp( removedLogCount - currentTopIndex, 0, visibleLogItems.Count ), poolLogItemAction );
231 | else
232 | {
233 | visibleLogItems.RemoveAll( shouldRemoveLogItemPredicate );
234 | if( visibleLogItems.Count > 0 )
235 | removedLogCount = currentTopIndex - FindIndexOfLogEntryInReverseDirection( visibleLogItems[0].Entry, visibleLogItems[0].Index );
236 | }
237 |
238 | if( visibleLogItems.Count == 0 )
239 | {
240 | currentTopIndex = -1;
241 |
242 | if( !manager.SnapToBottom )
243 | transformComponent.anchoredPosition = Vector2.zero;
244 | }
245 | else
246 | {
247 | currentTopIndex = Mathf.Max( 0, currentTopIndex - removedLogCount );
248 | currentBottomIndex = currentTopIndex + visibleLogItems.Count - 1;
249 |
250 | float firstVisibleLogItemInitialYPos = visibleLogItems[0].Transform.anchoredPosition.y;
251 | for( int i = 0; i < visibleLogItems.Count; i++ )
252 | {
253 | DebugLogItem logItem = visibleLogItems[i];
254 | logItem.Index = currentTopIndex + i;
255 |
256 | // If log window is visible, we need to manually refresh the visible items' visual properties. Otherwise, all log items will be refreshed when log window is opened
257 | if( manager.IsLogWindowVisible )
258 | {
259 | RepositionLogItem( logItem );
260 | ColorLogItem( logItem );
261 |
262 | // Update collapsed count of the log items in collapsed mode
263 | if( isCollapseOn )
264 | logItem.ShowCount();
265 | }
266 | }
267 |
268 | // Shift the ScrollRect
269 | if( !manager.SnapToBottom )
270 | transformComponent.anchoredPosition = new Vector2( 0f, Mathf.Max( 0f, transformComponent.anchoredPosition.y - ( visibleLogItems[0].Transform.anchoredPosition.y - firstVisibleLogItemInitialYPos ) ) );
271 | }
272 | }
273 |
274 | private bool ShouldRemoveLogItem( DebugLogItem logItem )
275 | {
276 | if( logItem.Entry.count == 0 )
277 | {
278 | poolLogItemAction( logItem );
279 | return true;
280 | }
281 |
282 | return false;
283 | }
284 |
285 | private int FindIndexOfLogEntryInReverseDirection( DebugLogEntry logEntry, int startIndex )
286 | {
287 | for( int i = Mathf.Min( startIndex, entriesToShow.Count - 1 ); i >= 0; i-- )
288 | {
289 | if( entriesToShow[i] == logEntry )
290 | return i;
291 | }
292 |
293 | return -1;
294 | }
295 |
296 | // Log window's width has changed, update the expanded (currently selected) log's height
297 | public void OnViewportWidthChanged()
298 | {
299 | if( indexOfSelectedLogEntry >= entriesToShow.Count )
300 | return;
301 |
302 | CalculateSelectedLogEntryHeight();
303 | CalculateContentHeight();
304 | UpdateItemsInTheList( true );
305 |
306 | manager.ValidateScrollPosition();
307 | }
308 |
309 | // Log window's height has changed, update the list
310 | public void OnViewportHeightChanged()
311 | {
312 | UpdateItemsInTheList( false );
313 | }
314 |
315 | private void CalculateContentHeight()
316 | {
317 | float newHeight = Mathf.Max( 1f, entriesToShow.Count * logItemHeight );
318 | if( selectedLogEntry != null )
319 | newHeight += DeltaHeightOfSelectedLogEntry;
320 |
321 | transformComponent.sizeDelta = new Vector2( 0f, newHeight );
322 | }
323 |
324 | private void CalculateSelectedLogEntryHeight( DebugLogItem referenceItem = null )
325 | {
326 | if( !referenceItem )
327 | {
328 | if( visibleLogItems.Count == 0 )
329 | {
330 | UpdateItemsInTheList( false ); // Try to generate some DebugLogItems, we need one DebugLogItem to calculate the text height
331 | if( visibleLogItems.Count == 0 ) // No DebugLogItems are generated, weird
332 | return;
333 | }
334 |
335 | referenceItem = visibleLogItems[0];
336 | }
337 |
338 | heightOfSelectedLogEntry = referenceItem.CalculateExpandedHeight( selectedLogEntry, ( timestampsOfEntriesToShow != null ) ? timestampsOfEntriesToShow[indexOfSelectedLogEntry] : (DebugLogEntryTimestamp?) null );
339 | }
340 |
341 | // Calculate the indices of log entries to show
342 | // and handle log items accordingly
343 | private void UpdateItemsInTheList( bool updateAllVisibleItemContents )
344 | {
345 | if( entriesToShow.Count > 0 )
346 | {
347 | float contentPosTop = transformComponent.anchoredPosition.y - 1f;
348 | float contentPosBottom = contentPosTop + viewportTransform.rect.height + 2f;
349 | float positionOfSelectedLogEntry = indexOfSelectedLogEntry * logItemHeight;
350 |
351 | if( positionOfSelectedLogEntry <= contentPosBottom )
352 | {
353 | if( positionOfSelectedLogEntry <= contentPosTop )
354 | {
355 | contentPosTop = Mathf.Max( contentPosTop - DeltaHeightOfSelectedLogEntry, positionOfSelectedLogEntry - 1f );
356 | contentPosBottom = Mathf.Max( contentPosBottom - DeltaHeightOfSelectedLogEntry, contentPosTop + 2f );
357 | }
358 | else
359 | contentPosBottom = Mathf.Max( contentPosBottom - DeltaHeightOfSelectedLogEntry, positionOfSelectedLogEntry + 1f );
360 | }
361 |
362 | int newBottomIndex = Mathf.Min( (int) ( contentPosBottom / logItemHeight ), entriesToShow.Count - 1 );
363 | int newTopIndex = Mathf.Clamp( (int) ( contentPosTop / logItemHeight ), 0, newBottomIndex );
364 |
365 | if( currentTopIndex == -1 )
366 | {
367 | // There are no log items visible on screen,
368 | // just create the new log items
369 | updateAllVisibleItemContents = true;
370 | for( int i = 0, count = newBottomIndex - newTopIndex + 1; i < count; i++ )
371 | visibleLogItems.Add( manager.PopLogItem() );
372 | }
373 | else
374 | {
375 | // There are some log items visible on screen
376 |
377 | if( newBottomIndex < currentTopIndex || newTopIndex > currentBottomIndex )
378 | {
379 | // If user scrolled a lot such that, none of the log items are now within
380 | // the bounds of the scroll view, pool all the previous log items and create
381 | // new log items for the new list of visible debug entries
382 | updateAllVisibleItemContents = true;
383 |
384 | visibleLogItems.TrimStart( visibleLogItems.Count, poolLogItemAction );
385 | for( int i = 0, count = newBottomIndex - newTopIndex + 1; i < count; i++ )
386 | visibleLogItems.Add( manager.PopLogItem() );
387 | }
388 | else
389 | {
390 | // User did not scroll a lot such that, there are still some log items within
391 | // the bounds of the scroll view. Don't destroy them but update their content,
392 | // if necessary
393 | if( newTopIndex > currentTopIndex )
394 | visibleLogItems.TrimStart( newTopIndex - currentTopIndex, poolLogItemAction );
395 |
396 | if( newBottomIndex < currentBottomIndex )
397 | visibleLogItems.TrimEnd( currentBottomIndex - newBottomIndex, poolLogItemAction );
398 |
399 | if( newTopIndex < currentTopIndex )
400 | {
401 | for( int i = 0, count = currentTopIndex - newTopIndex; i < count; i++ )
402 | visibleLogItems.AddFirst( manager.PopLogItem() );
403 |
404 | // If it is not necessary to update all the log items,
405 | // then just update the newly created log items. Otherwise,
406 | // wait for the major update
407 | if( !updateAllVisibleItemContents )
408 | UpdateLogItemContentsBetweenIndices( newTopIndex, currentTopIndex - 1, newTopIndex );
409 | }
410 |
411 | if( newBottomIndex > currentBottomIndex )
412 | {
413 | for( int i = 0, count = newBottomIndex - currentBottomIndex; i < count; i++ )
414 | visibleLogItems.Add( manager.PopLogItem() );
415 |
416 | // If it is not necessary to update all the log items,
417 | // then just update the newly created log items. Otherwise,
418 | // wait for the major update
419 | if( !updateAllVisibleItemContents )
420 | UpdateLogItemContentsBetweenIndices( currentBottomIndex + 1, newBottomIndex, newTopIndex );
421 | }
422 | }
423 | }
424 |
425 | currentTopIndex = newTopIndex;
426 | currentBottomIndex = newBottomIndex;
427 |
428 | if( updateAllVisibleItemContents )
429 | {
430 | // Update all the log items
431 | UpdateLogItemContentsBetweenIndices( currentTopIndex, currentBottomIndex, newTopIndex );
432 | }
433 | }
434 | else if( currentTopIndex != -1 )
435 | {
436 | // There is nothing to show but some log items are still visible; pool them
437 | visibleLogItems.TrimStart( visibleLogItems.Count, poolLogItemAction );
438 | currentTopIndex = -1;
439 | }
440 | }
441 |
442 | private DebugLogItem GetLogItemAtIndex( int index )
443 | {
444 | return visibleLogItems[index - currentTopIndex];
445 | }
446 |
447 | private void UpdateLogItemContentsBetweenIndices( int topIndex, int bottomIndex, int logItemOffset )
448 | {
449 | for( int i = topIndex; i <= bottomIndex; i++ )
450 | {
451 | DebugLogItem logItem = visibleLogItems[i - logItemOffset];
452 | logItem.SetContent( entriesToShow[i], ( timestampsOfEntriesToShow != null ) ? timestampsOfEntriesToShow[i] : (DebugLogEntryTimestamp?) null, i, i == indexOfSelectedLogEntry );
453 |
454 | RepositionLogItem( logItem );
455 | ColorLogItem( logItem );
456 |
457 | if( isCollapseOn )
458 | logItem.ShowCount();
459 | else
460 | logItem.HideCount();
461 | }
462 | }
463 |
464 | private void RepositionLogItem( DebugLogItem logItem )
465 | {
466 | int index = logItem.Index;
467 | Vector2 anchoredPosition = new Vector2( 1f, -index * logItemHeight );
468 | if( index > indexOfSelectedLogEntry )
469 | anchoredPosition.y -= DeltaHeightOfSelectedLogEntry;
470 |
471 | logItem.Transform.anchoredPosition = anchoredPosition;
472 | }
473 |
474 | private void ColorLogItem( DebugLogItem logItem )
475 | {
476 | int index = logItem.Index;
477 | if( index == indexOfSelectedLogEntry )
478 | logItem.Image.color = logItemSelectedColor;
479 | else if( index % 2 == 0 )
480 | logItem.Image.color = logItemNormalColor1;
481 | else
482 | logItem.Image.color = logItemNormalColor2;
483 | }
484 | }
485 | }
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugLogRecycledListView.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ce231987d32488f43b6fb798f7df43f6
3 | timeCreated: 1466373025
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugLogResizeListener.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEngine.EventSystems;
3 |
4 | // Listens to drag event on the DebugLogManager's resize button
5 | namespace IngameDebugConsole
6 | {
7 | public class DebugLogResizeListener : MonoBehaviour, IBeginDragHandler, IDragHandler
8 | {
9 | #pragma warning disable 0649
10 | [SerializeField]
11 | private DebugLogManager debugManager;
12 | #pragma warning restore 0649
13 |
14 | // This interface must be implemented in order to receive drag events
15 | void IBeginDragHandler.OnBeginDrag( PointerEventData eventData )
16 | {
17 | }
18 |
19 | void IDragHandler.OnDrag( PointerEventData eventData )
20 | {
21 | debugManager.Resize( eventData );
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugLogResizeListener.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6565f2084f5aef44abe57c988745b9c3
3 | timeCreated: 1601221093
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugsOnScrollListener.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEngine.UI;
3 | using UnityEngine.EventSystems;
4 |
5 | // Listens to scroll events on the scroll rect that debug items are stored
6 | // and decides whether snap to bottom should be true or not
7 | //
8 | // Procedure: if, after a user input (drag or scroll), scrollbar is at the bottom, then
9 | // snap to bottom shall be true, otherwise it shall be false
10 | namespace IngameDebugConsole
11 | {
12 | public class DebugsOnScrollListener : MonoBehaviour, IScrollHandler, IBeginDragHandler, IEndDragHandler
13 | {
14 | public ScrollRect debugsScrollRect;
15 | public DebugLogManager debugLogManager;
16 |
17 | public void OnScroll( PointerEventData data )
18 | {
19 | debugLogManager.SnapToBottom = IsScrollbarAtBottom();
20 | }
21 |
22 | public void OnBeginDrag( PointerEventData data )
23 | {
24 | debugLogManager.SnapToBottom = false;
25 | }
26 |
27 | public void OnEndDrag( PointerEventData data )
28 | {
29 | debugLogManager.SnapToBottom = IsScrollbarAtBottom();
30 | }
31 |
32 | public void OnScrollbarDragStart( BaseEventData data )
33 | {
34 | debugLogManager.SnapToBottom = false;
35 | }
36 |
37 | public void OnScrollbarDragEnd( BaseEventData data )
38 | {
39 | debugLogManager.SnapToBottom = IsScrollbarAtBottom();
40 | }
41 |
42 | private bool IsScrollbarAtBottom()
43 | {
44 | return debugsScrollRect.verticalNormalizedPosition <= 1E-6f;
45 | }
46 | }
47 | }
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/DebugsOnScrollListener.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cb564dcb180e586429c57456166a76b5
3 | timeCreated: 1466004663
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/EventSystemHandler.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEngine.EventSystems;
3 | using UnityEngine.SceneManagement;
4 | #if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER
5 | using UnityEngine.InputSystem.UI;
6 | #endif
7 |
8 | namespace IngameDebugConsole
9 | {
10 | // Avoid multiple EventSystems in the scene by activating the embedded EventSystem only if one doesn't already exist in the scene
11 | [DefaultExecutionOrder( 1000 )]
12 | public class EventSystemHandler : MonoBehaviour
13 | {
14 | #pragma warning disable 0649
15 | [SerializeField]
16 | private GameObject embeddedEventSystem;
17 | #pragma warning restore 0649
18 |
19 | #if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER
20 | private void Awake()
21 | {
22 | StandaloneInputModule legacyInputModule = embeddedEventSystem.GetComponent();
23 | if( legacyInputModule )
24 | {
25 | DestroyImmediate( legacyInputModule );
26 | embeddedEventSystem.AddComponent();
27 | }
28 | }
29 | #endif
30 |
31 | private void OnEnable()
32 | {
33 | SceneManager.sceneLoaded -= OnSceneLoaded;
34 | SceneManager.sceneLoaded += OnSceneLoaded;
35 | SceneManager.sceneUnloaded -= OnSceneUnloaded;
36 | SceneManager.sceneUnloaded += OnSceneUnloaded;
37 |
38 | ActivateEventSystemIfNeeded();
39 | }
40 |
41 | private void OnDisable()
42 | {
43 | SceneManager.sceneLoaded -= OnSceneLoaded;
44 | SceneManager.sceneUnloaded -= OnSceneUnloaded;
45 |
46 | DeactivateEventSystem();
47 | }
48 |
49 | private void OnSceneLoaded( Scene scene, LoadSceneMode mode )
50 | {
51 | DeactivateEventSystem();
52 | ActivateEventSystemIfNeeded();
53 | }
54 |
55 | private void OnSceneUnloaded( Scene current )
56 | {
57 | // Deactivate the embedded EventSystem before changing scenes because the new scene might have its own EventSystem
58 | DeactivateEventSystem();
59 | }
60 |
61 | private void ActivateEventSystemIfNeeded()
62 | {
63 | if( embeddedEventSystem && !EventSystem.current )
64 | embeddedEventSystem.SetActive( true );
65 | }
66 |
67 | private void DeactivateEventSystem()
68 | {
69 | if( embeddedEventSystem )
70 | embeddedEventSystem.SetActive( false );
71 | }
72 | }
73 | }
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Scripts/EventSystemHandler.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c3cc1b407f337e641ad32a2e91d5b478
3 | timeCreated: 1658741613
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cb5d7b23a9e684a41a6a5d4f300eb1e6
3 | folderAsset: yes
4 | timeCreated: 1465925237
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconClear.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/IconClear.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconClear.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7a9e374666ad6cc47807bb001844f3d8
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: 5
33 | maxTextureSize: 32
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 16
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 32
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 1
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 32
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 1
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 32
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 1
104 | - serializedVersion: 3
105 | buildTarget: WebGL
106 | maxTextureSize: 32
107 | resizeAlgorithm: 0
108 | textureFormat: -1
109 | textureCompression: 0
110 | compressionQuality: 50
111 | crunchedCompression: 0
112 | allowsAlphaSplitting: 0
113 | overridden: 0
114 | androidETC2FallbackOverride: 0
115 | forceMaximumCompressionQuality_BC6H_BC7: 1
116 | spriteSheet:
117 | serializedVersion: 2
118 | sprites: []
119 | outline: []
120 | physicsShape: []
121 | bones: []
122 | spriteID: 5e97eb03825dee720800000000000000
123 | internalID: 0
124 | vertices: []
125 | indices:
126 | edges: []
127 | weights: []
128 | secondaryTextures: []
129 | nameFileIdTable: {}
130 | spritePackingTag: DebugLogUI
131 | pSDRemoveMatte: 1
132 | pSDShowRemoveMatteOption: 1
133 | userData:
134 | assetBundleName:
135 | assetBundleVariant:
136 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconCollapse.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/IconCollapse.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconCollapse.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d1546f8db185caf4dafcfa58efa3ba2c
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: 5
33 | maxTextureSize: 32
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 16
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 32
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 0
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 32
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 0
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 32
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 0
104 | spriteSheet:
105 | serializedVersion: 2
106 | sprites: []
107 | outline: []
108 | physicsShape: []
109 | bones: []
110 | spriteID: 5e97eb03825dee720800000000000000
111 | internalID: 0
112 | vertices: []
113 | indices:
114 | edges: []
115 | weights: []
116 | secondaryTextures: []
117 | nameFileIdTable: {}
118 | spritePackingTag: DebugLogUI
119 | pSDRemoveMatte: 1
120 | pSDShowRemoveMatteOption: 1
121 | userData:
122 | assetBundleName:
123 | assetBundleVariant:
124 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconError.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/IconError.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconError.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 66305a19e3614694f868c75a982e6b68
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: 5
33 | maxTextureSize: 32
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 16
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 32
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 0
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 32
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 0
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 32
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 0
104 | spriteSheet:
105 | serializedVersion: 2
106 | sprites: []
107 | outline: []
108 | physicsShape: []
109 | bones: []
110 | spriteID: 5e97eb03825dee720800000000000000
111 | internalID: 0
112 | vertices: []
113 | indices:
114 | edges: []
115 | weights: []
116 | secondaryTextures: []
117 | nameFileIdTable: {}
118 | spritePackingTag: DebugLogUI
119 | pSDRemoveMatte: 1
120 | pSDShowRemoveMatteOption: 1
121 | userData:
122 | assetBundleName:
123 | assetBundleVariant:
124 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconHide.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/IconHide.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconHide.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b3905a73a6672d9449647aaf036e23fc
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: 5
33 | maxTextureSize: 32
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 16
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 32
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 0
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 32
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 0
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 32
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 0
104 | spriteSheet:
105 | serializedVersion: 2
106 | sprites: []
107 | outline: []
108 | physicsShape: []
109 | bones: []
110 | spriteID: 5e97eb03825dee720800000000000000
111 | internalID: 0
112 | vertices: []
113 | indices:
114 | edges: []
115 | weights: []
116 | secondaryTextures: []
117 | nameFileIdTable: {}
118 | spritePackingTag: DebugLogUI
119 | pSDRemoveMatte: 1
120 | pSDShowRemoveMatteOption: 1
121 | userData:
122 | assetBundleName:
123 | assetBundleVariant:
124 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconInfo.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/IconInfo.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconInfo.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5a97d5afa6254804f81b7ba956296996
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: 5
33 | maxTextureSize: 32
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 16
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 32
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 0
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 32
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 0
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 32
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 0
104 | spriteSheet:
105 | serializedVersion: 2
106 | sprites: []
107 | outline: []
108 | physicsShape: []
109 | bones: []
110 | spriteID: 5e97eb03825dee720800000000000000
111 | internalID: 0
112 | vertices: []
113 | indices:
114 | edges: []
115 | weights: []
116 | secondaryTextures: []
117 | nameFileIdTable: {}
118 | spritePackingTag: DebugLogUI
119 | pSDRemoveMatte: 1
120 | pSDShowRemoveMatteOption: 1
121 | userData:
122 | assetBundleName:
123 | assetBundleVariant:
124 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconResizeAllDirections.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/IconResizeAllDirections.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconResizeAllDirections.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7f0db3cf23c93fc4eac01cb3a52388ee
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: 5
33 | maxTextureSize: 32
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 16
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 32
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 1
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 32
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 1
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 32
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 1
104 | spriteSheet:
105 | serializedVersion: 2
106 | sprites: []
107 | outline: []
108 | physicsShape: []
109 | bones: []
110 | spriteID: 5e97eb03825dee720800000000000000
111 | internalID: 0
112 | vertices: []
113 | indices:
114 | edges: []
115 | weights: []
116 | secondaryTextures: []
117 | nameFileIdTable: {}
118 | spritePackingTag: DebugLogUI
119 | pSDRemoveMatte: 1
120 | pSDShowRemoveMatteOption: 1
121 | userData:
122 | assetBundleName:
123 | assetBundleVariant:
124 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconResizeVertialOnly.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/IconResizeVertialOnly.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconResizeVertialOnly.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a9fd8f6b461461f4a92eafc60921ee78
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: 5
33 | maxTextureSize: 32
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 16
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 32
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 0
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 32
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 0
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 32
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 0
104 | spriteSheet:
105 | serializedVersion: 2
106 | sprites: []
107 | outline: []
108 | physicsShape: []
109 | bones: []
110 | spriteID: 5e97eb03825dee720800000000000000
111 | internalID: 0
112 | vertices: []
113 | indices:
114 | edges: []
115 | weights: []
116 | secondaryTextures: []
117 | nameFileIdTable: {}
118 | spritePackingTag: DebugLogUI
119 | pSDRemoveMatte: 1
120 | pSDShowRemoveMatteOption: 1
121 | userData:
122 | assetBundleName:
123 | assetBundleVariant:
124 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconSnapToBottom.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/IconSnapToBottom.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconSnapToBottom.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 066c0b04be98cd348abb79add91d42bf
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: 5
33 | maxTextureSize: 32
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 16
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 32
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 0
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 32
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 0
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 32
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 0
104 | spriteSheet:
105 | serializedVersion: 2
106 | sprites: []
107 | outline: []
108 | physicsShape: []
109 | bones: []
110 | spriteID: 5e97eb03825dee720800000000000000
111 | internalID: 0
112 | vertices: []
113 | indices:
114 | edges: []
115 | weights: []
116 | secondaryTextures: []
117 | nameFileIdTable: {}
118 | spritePackingTag: DebugLogUI
119 | pSDRemoveMatte: 1
120 | pSDShowRemoveMatteOption: 1
121 | userData:
122 | assetBundleName:
123 | assetBundleVariant:
124 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconSnapToBottomBg.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/IconSnapToBottomBg.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconSnapToBottomBg.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b902f763d0e47364dae25207b7e47800
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: 5
33 | maxTextureSize: 32
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 1
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 13, y: 13, z: 13, w: 13}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 32
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 0
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 32
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 0
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 32
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 0
104 | spriteSheet:
105 | serializedVersion: 2
106 | sprites: []
107 | outline: []
108 | physicsShape: []
109 | bones: []
110 | spriteID: 5e97eb03825dee720800000000000000
111 | internalID: 0
112 | vertices: []
113 | indices:
114 | edges: []
115 | weights: []
116 | secondaryTextures: []
117 | nameFileIdTable: {}
118 | spritePackingTag: DebugLogUI
119 | pSDRemoveMatte: 1
120 | pSDShowRemoveMatteOption: 1
121 | userData:
122 | assetBundleName:
123 | assetBundleVariant:
124 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconWarning.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/IconWarning.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IconWarning.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 05c7216c78d4dd34ebe2bac9c1e274d7
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: 5
33 | maxTextureSize: 32
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 16
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 32
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 0
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 32
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 0
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 32
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 0
104 | spriteSheet:
105 | serializedVersion: 2
106 | sprites: []
107 | outline: []
108 | physicsShape: []
109 | bones: []
110 | spriteID: 5e97eb03825dee720800000000000000
111 | internalID: 0
112 | vertices: []
113 | indices:
114 | edges: []
115 | weights: []
116 | secondaryTextures: []
117 | nameFileIdTable: {}
118 | spritePackingTag: DebugLogUI
119 | pSDRemoveMatte: 1
120 | pSDShowRemoveMatteOption: 1
121 | userData:
122 | assetBundleName:
123 | assetBundleVariant:
124 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IngameDebugConsoleSpriteAtlas.spriteatlas:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!687078895 &4343727234628468602
4 | SpriteAtlas:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_Name: IngameDebugConsoleSpriteAtlas
10 | m_EditorData:
11 | serializedVersion: 2
12 | textureSettings:
13 | serializedVersion: 2
14 | anisoLevel: 1
15 | compressionQuality: 50
16 | maxTextureSize: 2048
17 | textureCompression: 0
18 | filterMode: 1
19 | generateMipMaps: 0
20 | readable: 0
21 | crunchedCompression: 0
22 | sRGB: 1
23 | platformSettings:
24 | - serializedVersion: 3
25 | m_BuildTarget: DefaultTexturePlatform
26 | m_MaxTextureSize: 2048
27 | m_ResizeAlgorithm: 0
28 | m_TextureFormat: -1
29 | m_TextureCompression: 0
30 | m_CompressionQuality: 50
31 | m_CrunchedCompression: 0
32 | m_AllowsAlphaSplitting: 0
33 | m_Overridden: 0
34 | m_AndroidETC2FallbackOverride: 0
35 | m_ForceMaximumCompressionQuality_BC6H_BC7: 1
36 | packingSettings:
37 | serializedVersion: 2
38 | padding: 8
39 | blockOffset: 1
40 | allowAlphaSplitting: 0
41 | enableRotation: 0
42 | enableTightPacking: 0
43 | enableAlphaDilation: 0
44 | secondaryTextureSettings: {}
45 | variantMultiplier: 1
46 | packables:
47 | - {fileID: 2800000, guid: 7a9e374666ad6cc47807bb001844f3d8, type: 3}
48 | - {fileID: 2800000, guid: d1546f8db185caf4dafcfa58efa3ba2c, type: 3}
49 | - {fileID: 2800000, guid: 66305a19e3614694f868c75a982e6b68, type: 3}
50 | - {fileID: 2800000, guid: b3905a73a6672d9449647aaf036e23fc, type: 3}
51 | - {fileID: 2800000, guid: 5a97d5afa6254804f81b7ba956296996, type: 3}
52 | - {fileID: 2800000, guid: 7f0db3cf23c93fc4eac01cb3a52388ee, type: 3}
53 | - {fileID: 2800000, guid: a9fd8f6b461461f4a92eafc60921ee78, type: 3}
54 | - {fileID: 2800000, guid: 066c0b04be98cd348abb79add91d42bf, type: 3}
55 | - {fileID: 2800000, guid: b902f763d0e47364dae25207b7e47800, type: 3}
56 | - {fileID: 2800000, guid: 05c7216c78d4dd34ebe2bac9c1e274d7, type: 3}
57 | - {fileID: 2800000, guid: e04e6c970b950d946a782ea08e5f971d, type: 3}
58 | - {fileID: 2800000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3}
59 | - {fileID: 2800000, guid: 98e8e1cf8dc7dbf469617c2e40c8a944, type: 3}
60 | - {fileID: 2800000, guid: b3f0d976f6d6802479d6465d11b3aa68, type: 3}
61 | bindAsDefault: 1
62 | isAtlasV2: 0
63 | cachedData: {fileID: 0}
64 | m_MasterAtlas: {fileID: 0}
65 | m_PackedSprites:
66 | - {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3}
67 | - {fileID: 21300000, guid: b902f763d0e47364dae25207b7e47800, type: 3}
68 | - {fileID: 21300000, guid: b3905a73a6672d9449647aaf036e23fc, type: 3}
69 | - {fileID: 21300000, guid: 066c0b04be98cd348abb79add91d42bf, type: 3}
70 | - {fileID: 21300000, guid: 7a9e374666ad6cc47807bb001844f3d8, type: 3}
71 | - {fileID: 21300000, guid: b3f0d976f6d6802479d6465d11b3aa68, type: 3}
72 | - {fileID: 21300000, guid: e04e6c970b950d946a782ea08e5f971d, type: 3}
73 | - {fileID: 21300000, guid: 66305a19e3614694f868c75a982e6b68, type: 3}
74 | - {fileID: 21300000, guid: a9fd8f6b461461f4a92eafc60921ee78, type: 3}
75 | - {fileID: 21300000, guid: 05c7216c78d4dd34ebe2bac9c1e274d7, type: 3}
76 | - {fileID: 21300000, guid: d1546f8db185caf4dafcfa58efa3ba2c, type: 3}
77 | - {fileID: 21300000, guid: 5a97d5afa6254804f81b7ba956296996, type: 3}
78 | - {fileID: 21300000, guid: 98e8e1cf8dc7dbf469617c2e40c8a944, type: 3}
79 | - {fileID: 21300000, guid: 7f0db3cf23c93fc4eac01cb3a52388ee, type: 3}
80 | m_PackedSpriteNamesToIndex:
81 | - SlicedBackground
82 | - IconSnapToBottomBg
83 | - IconHide
84 | - IconSnapToBottom
85 | - IconClear
86 | - SlicedBackground3
87 | - SearchIcon
88 | - IconError
89 | - IconResizeVertialOnly
90 | - IconWarning
91 | - IconCollapse
92 | - IconInfo
93 | - SlicedBackground2
94 | - IconResizeAllDirections
95 | m_RenderDataMap: {}
96 | m_Tag: IngameDebugConsoleSpriteAtlas
97 | m_IsVariant: 0
98 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/IngameDebugConsoleSpriteAtlas.spriteatlas.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d829dcfc225f56440a2b10d9ac318aea
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 4343727234628468602
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/SearchIcon.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/SearchIcon.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/SearchIcon.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e04e6c970b950d946a782ea08e5f971d
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: 1
33 | maxTextureSize: 2048
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 1
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 32
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 1
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 32
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 1
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 32
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 1
104 | - serializedVersion: 3
105 | buildTarget: WebGL
106 | maxTextureSize: 32
107 | resizeAlgorithm: 0
108 | textureFormat: -1
109 | textureCompression: 0
110 | compressionQuality: 50
111 | crunchedCompression: 0
112 | allowsAlphaSplitting: 0
113 | overridden: 0
114 | androidETC2FallbackOverride: 0
115 | forceMaximumCompressionQuality_BC6H_BC7: 1
116 | spriteSheet:
117 | serializedVersion: 2
118 | sprites: []
119 | outline: []
120 | physicsShape: []
121 | bones: []
122 | spriteID: 5e97eb03825dee720800000000000000
123 | internalID: 0
124 | vertices: []
125 | indices:
126 | edges: []
127 | weights: []
128 | secondaryTextures: []
129 | nameFileIdTable: {}
130 | spritePackingTag: DebugLogUI
131 | pSDRemoveMatte: 1
132 | pSDShowRemoveMatteOption: 1
133 | userData:
134 | assetBundleName:
135 | assetBundleVariant:
136 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/SlicedBackground.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/SlicedBackground.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/SlicedBackground.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 066d3840badf4d24dba1d42b4c59b888
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: 5
33 | maxTextureSize: 32
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 1
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 12, y: 12, z: 12, w: 12}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 32
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 1
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 32
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 1
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 32
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 1
104 | - serializedVersion: 3
105 | buildTarget: WebGL
106 | maxTextureSize: 32
107 | resizeAlgorithm: 0
108 | textureFormat: -1
109 | textureCompression: 0
110 | compressionQuality: 50
111 | crunchedCompression: 0
112 | allowsAlphaSplitting: 0
113 | overridden: 0
114 | androidETC2FallbackOverride: 0
115 | forceMaximumCompressionQuality_BC6H_BC7: 1
116 | spriteSheet:
117 | serializedVersion: 2
118 | sprites: []
119 | outline: []
120 | physicsShape: []
121 | bones: []
122 | spriteID: 5e97eb03825dee720800000000000000
123 | internalID: 0
124 | vertices: []
125 | indices:
126 | edges: []
127 | weights: []
128 | secondaryTextures: []
129 | nameFileIdTable: {}
130 | spritePackingTag: DebugLogUI
131 | pSDRemoveMatte: 1
132 | pSDShowRemoveMatteOption: 1
133 | userData:
134 | assetBundleName:
135 | assetBundleVariant:
136 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/SlicedBackground2.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/SlicedBackground2.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/SlicedBackground2.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 98e8e1cf8dc7dbf469617c2e40c8a944
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: 5
33 | maxTextureSize: 32
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 1
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 12, y: 12, z: 12, w: 12}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 32
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 0
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 32
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 0
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 32
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 0
104 | spriteSheet:
105 | serializedVersion: 2
106 | sprites: []
107 | outline: []
108 | physicsShape: []
109 | bones: []
110 | spriteID: 5e97eb03825dee720800000000000000
111 | internalID: 0
112 | vertices: []
113 | indices:
114 | edges: []
115 | weights: []
116 | secondaryTextures: []
117 | nameFileIdTable: {}
118 | spritePackingTag: DebugLogUI
119 | pSDRemoveMatte: 1
120 | pSDShowRemoveMatteOption: 1
121 | userData:
122 | assetBundleName:
123 | assetBundleVariant:
124 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/SlicedBackground3.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/SlicedBackground3.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/SlicedBackground3.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b3f0d976f6d6802479d6465d11b3aa68
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: 5
33 | maxTextureSize: 32
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 1
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 13, y: 13, z: 13, w: 13}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 32
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 0
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 32
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 0
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 32
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 0
104 | spriteSheet:
105 | serializedVersion: 2
106 | sprites: []
107 | outline: []
108 | physicsShape: []
109 | bones: []
110 | spriteID: 5e97eb03825dee720800000000000000
111 | internalID: 0
112 | vertices: []
113 | indices:
114 | edges: []
115 | weights: []
116 | secondaryTextures: []
117 | nameFileIdTable: {}
118 | spritePackingTag: DebugLogUI
119 | pSDRemoveMatte: 1
120 | pSDShowRemoveMatteOption: 1
121 | userData:
122 | assetBundleName:
123 | assetBundleVariant:
124 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/Unused.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f6caae32d463529478f2186f47c2e3fe
3 | folderAsset: yes
4 | timeCreated: 1466010601
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/Unused/IconErrorHighRes.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/Unused/IconErrorHighRes.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/Unused/IconErrorHighRes.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a97ca0b99ece2d94aaaf59653feb45dd
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: -3
33 | maxTextureSize: 64
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 16
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 64
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 0
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 64
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 0
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 64
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 0
104 | spriteSheet:
105 | serializedVersion: 2
106 | sprites: []
107 | outline: []
108 | physicsShape: []
109 | bones: []
110 | spriteID: 5e97eb03825dee720800000000000000
111 | internalID: 0
112 | vertices: []
113 | indices:
114 | edges: []
115 | weights: []
116 | secondaryTextures: []
117 | nameFileIdTable: {}
118 | spritePackingTag:
119 | pSDRemoveMatte: 1
120 | pSDShowRemoveMatteOption: 1
121 | userData:
122 | assetBundleName:
123 | assetBundleVariant:
124 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/Unused/IconInfoHighRes.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/Unused/IconInfoHighRes.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/Unused/IconInfoHighRes.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 33b115bf5efdfa04d8e2e0b70a6643cd
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: -3
33 | maxTextureSize: 64
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 16
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 64
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 0
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 64
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 0
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 64
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 0
104 | spriteSheet:
105 | serializedVersion: 2
106 | sprites: []
107 | outline: []
108 | physicsShape: []
109 | bones: []
110 | spriteID: 5e97eb03825dee720800000000000000
111 | internalID: 0
112 | vertices: []
113 | indices:
114 | edges: []
115 | weights: []
116 | secondaryTextures: []
117 | nameFileIdTable: {}
118 | spritePackingTag:
119 | pSDRemoveMatte: 1
120 | pSDShowRemoveMatteOption: 1
121 | userData:
122 | assetBundleName:
123 | assetBundleVariant:
124 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/Unused/IconWarningHighRes.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasirkula/UnityIngameDebugConsole/5ce0bc1c254eddad92daa13159864dd21ccaf763/Plugins/IngameDebugConsole/Sprites/Unused/IconWarningHighRes.psd
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/Sprites/Unused/IconWarningHighRes.psd.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: af17f91b4376d6a41a793c056c02dadc
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 12
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | ignoreMasterTextureLimit: 0
28 | grayScaleToAlpha: 0
29 | generateCubemap: 6
30 | cubemapConvolution: 0
31 | seamlessCubemap: 0
32 | textureFormat: -3
33 | maxTextureSize: 64
34 | textureSettings:
35 | serializedVersion: 2
36 | filterMode: 1
37 | aniso: 16
38 | mipBias: 0
39 | wrapU: 1
40 | wrapV: 1
41 | wrapW: 1
42 | nPOTScale: 0
43 | lightmap: 0
44 | compressionQuality: 50
45 | spriteMode: 1
46 | spriteExtrude: 1
47 | spriteMeshType: 1
48 | alignment: 0
49 | spritePivot: {x: 0.5, y: 0.5}
50 | spritePixelsToUnits: 100
51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
52 | spriteGenerateFallbackPhysicsShape: 1
53 | alphaUsage: 1
54 | alphaIsTransparency: 1
55 | spriteTessellationDetail: -1
56 | textureType: 8
57 | textureShape: 1
58 | singleChannelComponent: 0
59 | flipbookRows: 1
60 | flipbookColumns: 1
61 | maxTextureSizeSet: 0
62 | compressionQualitySet: 0
63 | textureFormatSet: 0
64 | ignorePngGamma: 0
65 | applyGammaDecoding: 1
66 | cookieLightType: 1
67 | platformSettings:
68 | - serializedVersion: 3
69 | buildTarget: DefaultTexturePlatform
70 | maxTextureSize: 64
71 | resizeAlgorithm: 0
72 | textureFormat: -1
73 | textureCompression: 0
74 | compressionQuality: 50
75 | crunchedCompression: 0
76 | allowsAlphaSplitting: 0
77 | overridden: 0
78 | androidETC2FallbackOverride: 0
79 | forceMaximumCompressionQuality_BC6H_BC7: 0
80 | - serializedVersion: 3
81 | buildTarget: Standalone
82 | maxTextureSize: 64
83 | resizeAlgorithm: 0
84 | textureFormat: -1
85 | textureCompression: 0
86 | compressionQuality: 50
87 | crunchedCompression: 0
88 | allowsAlphaSplitting: 0
89 | overridden: 0
90 | androidETC2FallbackOverride: 0
91 | forceMaximumCompressionQuality_BC6H_BC7: 0
92 | - serializedVersion: 3
93 | buildTarget: Android
94 | maxTextureSize: 64
95 | resizeAlgorithm: 0
96 | textureFormat: -1
97 | textureCompression: 0
98 | compressionQuality: 50
99 | crunchedCompression: 0
100 | allowsAlphaSplitting: 0
101 | overridden: 0
102 | androidETC2FallbackOverride: 0
103 | forceMaximumCompressionQuality_BC6H_BC7: 0
104 | spriteSheet:
105 | serializedVersion: 2
106 | sprites: []
107 | outline: []
108 | physicsShape: []
109 | bones: []
110 | spriteID: 5e97eb03825dee720800000000000000
111 | internalID: 0
112 | vertices: []
113 | indices:
114 | edges: []
115 | weights: []
116 | secondaryTextures: []
117 | nameFileIdTable: {}
118 | spritePackingTag:
119 | pSDRemoveMatte: 1
120 | pSDShowRemoveMatteOption: 1
121 | userData:
122 | assetBundleName:
123 | assetBundleVariant:
124 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/WebGL.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a091b43ce3618074d8cf2beb7e538a7d
3 | folderAsset: yes
4 | timeCreated: 1626377678
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/WebGL/IngameDebugConsole.jslib:
--------------------------------------------------------------------------------
1 | mergeInto( LibraryManager.library,
2 | {
3 | IngameDebugConsoleStartCopy: function( textToCopy )
4 | {
5 | var textToCopyJS = UTF8ToString( textToCopy );
6 |
7 | // Delete if element exist
8 | var copyTextButton = document.getElementById( 'DebugConsoleCopyButtonGL' );
9 | if( !copyTextButton )
10 | {
11 | copyTextButton = document.createElement( 'button' );
12 | copyTextButton.setAttribute( 'id', 'DebugConsoleCopyButtonGL' );
13 | copyTextButton.setAttribute( 'style','display:none; visibility:hidden;' );
14 | }
15 |
16 | copyTextButton.onclick = function( event )
17 | {
18 | // Credit: https://stackoverflow.com/a/30810322/2373034
19 | if( navigator.clipboard )
20 | {
21 | navigator.clipboard.writeText( textToCopyJS ).then( function() { }, function( err )
22 | {
23 | console.error( "Couldn't copy text to clipboard using clipboard.writeText: ", err );
24 | } );
25 | }
26 | else
27 | {
28 | var textArea = document.createElement( 'textarea' );
29 | textArea.value = textToCopyJS;
30 |
31 | // Avoid scrolling to bottom
32 | textArea.style.top = "0";
33 | textArea.style.left = "0";
34 | textArea.style.position = "fixed";
35 |
36 | document.body.appendChild( textArea );
37 | textArea.focus();
38 | textArea.select();
39 |
40 | try
41 | {
42 | document.execCommand( 'copy' );
43 | }
44 | catch( err )
45 | {
46 | console.error( "Couldn't copy text to clipboard using document.execCommand", err );
47 | }
48 |
49 | document.body.removeChild( textArea );
50 | }
51 | };
52 |
53 | document.body.appendChild( copyTextButton );
54 | document.onmouseup = function()
55 | {
56 | document.onmouseup = null;
57 | copyTextButton.click();
58 | document.body.removeChild( copyTextButton );
59 | };
60 | },
61 |
62 | IngameDebugConsoleCancelCopy: function()
63 | {
64 | var copyTextButton = document.getElementById( 'DebugConsoleCopyButtonGL' );
65 | if( copyTextButton )
66 | document.body.removeChild( copyTextButton );
67 |
68 | document.onmouseup = null;
69 | }
70 | } );
--------------------------------------------------------------------------------
/Plugins/IngameDebugConsole/WebGL/IngameDebugConsole.jslib.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: aa23dd530e9f98c4cb0766404fc0e755
3 | timeCreated: 1626377683
4 | licenseType: Free
5 | PluginImporter:
6 | serializedVersion: 2
7 | iconMap: {}
8 | executionOrder: {}
9 | isPreloaded: 0
10 | isOverridable: 0
11 | platformData:
12 | data:
13 | first:
14 | Any:
15 | second:
16 | enabled: 0
17 | settings: {}
18 | data:
19 | first:
20 | Editor: Editor
21 | second:
22 | enabled: 0
23 | settings:
24 | DefaultValueInitialized: true
25 | data:
26 | first:
27 | Facebook: WebGL
28 | second:
29 | enabled: 1
30 | settings: {}
31 | data:
32 | first:
33 | WebGL: WebGL
34 | second:
35 | enabled: 1
36 | settings: {}
37 | userData:
38 | assetBundleName:
39 | assetBundleVariant:
40 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "com.yasirkula.ingamedebugconsole",
3 | "displayName": "In-game Debug Console",
4 | "version": "1.8.1",
5 | "documentationUrl": "https://github.com/yasirkula/UnityIngameDebugConsole",
6 | "changelogUrl": "https://github.com/yasirkula/UnityIngameDebugConsole/releases",
7 | "licensesUrl": "https://github.com/yasirkula/UnityIngameDebugConsole/blob/master/LICENSE.txt",
8 | "description": "This asset helps you see debug messages (logs, warnings, errors, exceptions) runtime in a build (also assertions in editor) and execute commands using its built-in console. It also supports logging logcat messages to the console on Android platform.",
9 | "hideInEditor": false
10 | }
11 |
--------------------------------------------------------------------------------
/package.json.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 51a4ad37344e1b14bae3ca6dc5294cb5
3 | PackageManifestImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------