2020-05-18 20:25:49 +05:30 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								<?xml version="1.0" encoding="UTF-8" ?>  
						 
					
						
							
								
									
										
										
										
											2023-07-06 10:08:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<class  name= "EditorDebuggerPlugin"  inherits= "RefCounted"  xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"  xsi:noNamespaceSchemaLocation= "../class.xsd" >  
						 
					
						
							
								
									
										
										
										
											2020-05-18 20:25:49 +05:30 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									<brief_description > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										A base class to implement debugger plugins.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									</brief_description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									<description > 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-15 14:30:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										[EditorDebuggerPlugin] provides functions related to the editor side of the debugger.
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 15:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										To interact with the debugger, an instance of this class must be added to the editor via [method EditorPlugin.add_debugger_plugin].
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Once added, the [method _setup_session] callback will be called for every [EditorDebuggerSession] available to the plugin, and when new ones are created (the sessions may be inactive during this stage).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										You can retrieve the available [EditorDebuggerSession]s via [method get_sessions] or get a specific one via [method get_session].
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[codeblocks]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[gdscript]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										@tool
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										extends EditorPlugin
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class ExampleEditorDebugger extends EditorDebuggerPlugin:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    func _has_capture(prefix):
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        # Return true if you wish to handle message with this prefix.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        return prefix == "my_plugin"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    func _capture(message, data, session_id):
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        if message == "my_plugin:ping":
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            get_session(session_id).send_message("my_plugin:echo", data)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    func _setup_session(session_id):
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        # Add a new tab in the debugger session UI containing a label.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        var label = Label.new()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        label.name = "Example plugin"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        label.text = "Example plugin"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        var session = get_session(session_id)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        # Listens to the session started and stopped signals.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        session.started.connect(func (): print("Session started"))
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        session.stopped.connect(func (): print("Session stopped"))
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        session.add_session_tab(label)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var debugger = ExampleEditorDebugger.new()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										func _enter_tree():
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    add_debugger_plugin(debugger)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										func _exit_tree():
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    remove_debugger_plugin(debugger)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[/gdscript]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[/codeblocks]
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 20:25:49 +05:30 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									<tutorials > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									</tutorials> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									<methods > 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 15:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										<method  name= "_capture"  qualifiers= "virtual" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 15:28:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											<return  type= "bool"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 15:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											<param  index= "0"  name= "message"  type= "String"  /> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											<param  index= "1"  name= "data"  type= "Array"  /> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											<param  index= "2"  name= "session_id"  type= "int"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 20:25:49 +05:30 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											<description > 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 15:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												Override this method to process incoming messages. The [param session_id] is the ID of the [EditorDebuggerSession] that received the message (which you can retrieve via [method get_session]).
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 20:25:49 +05:30 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</method> 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 15:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										<method  name= "_has_capture"  qualifiers= "virtual const" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 15:28:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											<return  type= "bool"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 15:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											<param  index= "0"  name= "capture"  type= "String"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 20:25:49 +05:30 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											<description > 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 15:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												Override this method to enable receiving messages from the debugger. If [param capture] is "my_message" then messages starting with "my_message:" will be passes to the [method _capture] method.
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 20:25:49 +05:30 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</method> 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 15:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										<method  name= "_setup_session"  qualifiers= "virtual" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 15:28:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											<return  type= "void"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 15:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											<param  index= "0"  name= "session_id"  type= "int"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 20:25:49 +05:30 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											<description > 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 15:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												Override this method to be notified whenever a new [EditorDebuggerSession] is created (the session may be inactive during this stage).
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 20:25:49 +05:30 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</method> 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 15:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										<method  name= "get_session" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											<return  type= "EditorDebuggerSession"  /> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											<param  index= "0"  name= "id"  type= "int"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 20:25:49 +05:30 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											<description > 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 15:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												Returns the [EditorDebuggerSession] with the given [param id].
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 20:25:49 +05:30 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</method> 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 15:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										<method  name= "get_sessions" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											<return  type= "Array"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 20:25:49 +05:30 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											<description > 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 15:21:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												Returns an array of [EditorDebuggerSession] currently available to this debugger plugin.
							 
						 
					
						
							
								
									
										
										
										
											2023-07-12 05:33:49 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												[b]Note:[/b] Not sessions in the array may be inactive, check their state via [method EditorDebuggerSession.is_active]
							 
						 
					
						
							
								
									
										
										
										
											2020-05-18 20:25:49 +05:30 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</method> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									</methods> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								</class>