2017-11-24 09:16:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								<?xml version="1.0" encoding="UTF-8" ?>  
						 
					
						
							
								
									
										
										
										
											2020-01-31 17:03:48 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<class  name= "EditorScenePostImport"  inherits= "Reference"  version= "4.0" >  
						 
					
						
							
								
									
										
										
										
											2017-11-24 09:16:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									<brief_description > 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-22 01:04:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Post-processes scenes after import.
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 09:16:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									</brief_description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									<description > 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-22 01:04:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Imported scenes can be automatically modified right after import by setting their [b]Custom Script[/b] Import property to a [code]tool[/code] script that inherits from this class.
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 15:34:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										The [method post_import] callback receives the imported scene's root node and returns the modified version of the scene. Usage example:
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										[codeblocks]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[gdscript]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tool # Needed so it runs in editor.
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 15:34:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										extends EditorScenePostImport
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										# This sample changes all node names.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										# Called right after the scene is imported and gets the root node.
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 15:34:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func post_import(scene):
							 
						 
					
						
							
								
									
										
										
										
											2019-06-22 01:04:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    # Change all node names to "modified_[oldnodename]"
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 15:34:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    iterate(scene)
							 
						 
					
						
							
								
									
										
										
										
											2019-06-22 01:04:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										    return scene # Remember to return the imported scene
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 15:34:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										func iterate(node):
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    if node != null:
							 
						 
					
						
							
								
									
										
										
										
											2018-12-14 09:37:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										        node.name = "modified_" + node.name
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 15:34:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										        for child in node.get_children():
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            iterate(child)
							 
						 
					
						
							
								
									
										
										
										
											2020-09-13 14:45:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										[/gdscript]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[csharp]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										using Godot;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// This sample changes all node names.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Called right after the scene is imported and gets the root node.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[Tool]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										public class NodeRenamer : EditorScenePostImport
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    public override Object PostImport(Object scene)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        // Change all node names to "modified_[oldnodename]"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        Iterate(scene as Node);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        return scene; // Remember to return the imported scene
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    public void Iterate(Node node)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        if (node != null)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            node.Name = "modified_" + node.Name;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            foreach (Node child in node.GetChildren())
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										                Iterate(child);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										            }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[/csharp]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[/codeblocks]
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 15:34:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									<tutorials > 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-05 14:43:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										<link  title= "Importing 3D scenes: Custom script" > https://docs.godotengine.org/en/latest/getting_started/workflow/assets/importing_scenes.html#custom-script</link> 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 15:34:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									</tutorials> 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 09:16:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									<methods > 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-20 00:48:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										<method  name= "get_source_file"  qualifiers= "const" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											<return  type= "String" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											</return> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											<description > 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 15:34:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												Returns the source file path which got imported (e.g. [code]res://scene.dae[/code]).
							 
						 
					
						
							
								
									
										
										
										
											2018-01-20 00:48:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</method> 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 09:16:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										<method  name= "post_import"  qualifiers= "virtual" > 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-20 00:48:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											<return  type= "Object" > 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 09:16:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											</return> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											<argument  index= "0"  name= "scene"  type= "Object" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											</argument> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											<description > 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-22 01:04:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												Called after the scene was imported. This method must return the modified version of the scene.
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 09:16:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										</method> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									</methods> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									<constants > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									</constants> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								</class>