|  | @@ -1021,7 +1021,7 @@ void la_RegisterGeneralProps(){
 | 
	
		
			
				|  |  |      laAddOperatorProperty(p, "restore", "Restore Default", "Restore Default Value", "LA_string_set_default", U'⭯', 0);
 | 
	
		
			
				|  |  |      laAddOperatorProperty(p, "get_folder_path", "Get Folder Path", "Get a folder path", "LA_string_get_folder_path", U'📁', 0);
 | 
	
		
			
				|  |  |      laAddOperatorProperty(p, "get_file_path", "Get File Path", "Get a file path", "LA_string_get_file_path", U'🖹', 0);
 | 
	
		
			
				|  |  | -    p->UiDefine=laui_StringPropUiDefine;
 | 
	
		
			
				|  |  | +    p->MenuUiDefine=laui_StringPropUiDefine;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      p = la_SetGeneralRoot(&MAIN.GeneralOperatorSub, "__general_operator__", "Genral Operator Operations", "Genral Operator Operations");
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1081,7 +1081,7 @@ void la_RegisterTNSProps(){
 | 
	
		
			
				|  |  |      if(!MAIN.InitArgs.HasWorldObjects) return;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      p = laAddPropertyContainer("tns_world", "World", "3D World Structure", 0,0,sizeof(tnsWorld),tnspost_World,0,1);{
 | 
	
		
			
				|  |  | -        sp = laAddSubGroup(p, "root_objects", "Root Objects", "List of all root objects", "tns_object",0,0,0,-1,0,0,0,0,0,0,offsetof(tnsWorld, RootObjects), 0);
 | 
	
		
			
				|  |  | +        sp = laAddSubGroup(p, "root_objects", "Root Objects", "List of all root objects", "tns_root_object",0,0,0,-1,0,0,0,0,0,0,offsetof(tnsWorld, RootObjects), 0);
 | 
	
		
			
				|  |  |          laSubGroupDetachable(sp, tnsget_detached_FirstRootObject, laget_ListNext);
 | 
	
		
			
				|  |  |          laAddSubGroup(p, "active_root", "Active Root Object", "Global active root object", "tns_object",0,0,0,offsetof(tnsWorld,ActiveRoot),tnsget_detached_FirstRootObject,0,laget_ListNext,0,0,0,0,LA_UDF_REFER);
 | 
	
		
			
				|  |  |          sp = laAddSubGroup(p, "objects", "Objects", "List of all objects", "tns_object",tnsget_ObjectType, 0,0,-1,0,0,0,0,0,0,offsetof(tnsWorld, AllObjects), 0);
 | 
	
	
		
			
				|  | @@ -1125,7 +1125,6 @@ void la_RegisterTNSProps(){
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      p = laAddPropertyContainer("tns_object", "Object", "3D Object Item", 0,tnsui_BaseObjectProperties,sizeof(tnsObject), tnspost_Object, 0,2);{
 | 
	
		
			
				|  |  | -        laPropContainerExtraFunctions(p,0,0,0,tnspropagate_Object,tnsui_DefaultObjectPropUiDefine);
 | 
	
		
			
				|  |  |          laContainerAnimationFunctions(p,laaction_VerifyRootObject);
 | 
	
		
			
				|  |  |          TNS_PC_OBJECT_GENERIC=p;
 | 
	
		
			
				|  |  |          laAddStringProperty(p, "name", "Object Name", "The Name Of The Object", 0,0,0,0,1, offsetof(tnsObject, Name), 0,0,0,0,LA_AS_IDENTIFIER);
 | 
	
	
		
			
				|  | @@ -1170,12 +1169,11 @@ void la_RegisterTNSProps(){
 | 
	
		
			
				|  |  |          laAddSubGroup(p, "__actions__", "Actions", "Animation actions", "la_animation_action",0,0,0,-1,0,laget_CurrentAnimationAction,0,laset_CurrentAnimationAction,0,0,offsetof(tnsObject, Actions), 0);
 | 
	
		
			
				|  |  |          laAddSubGroup(p, "drivers", "Drivers", "Driver page collection","la_driver_collection",0,0,0,offsetof(tnsObject,Drivers),0,0,0,0,0,0,0,LA_UDF_SINGLE|LA_HIDE_IN_SAVE);
 | 
	
		
			
				|  |  |          laAddOperatorProperty(p, "add_driver_page", "Add Page", "Add a driver page","LA_add_driver_page",'+',0);
 | 
	
		
			
				|  |  | -        laAddOperatorProperty(p, "remove_root", "Remove root", "Remove the root node","M_remove_root",L'🗴',0);
 | 
	
		
			
				|  |  |          laAddSubGroup(p, "as_mesh", "As Mesh", "As mesh object", "tns_mesh_object",0,0,0,-1,0,tnsget_ObjectAsMesh,0,0,0,0,0,LA_UDF_REFER|LA_READ_ONLY|LA_UDF_IGNORE);
 | 
	
		
			
				|  |  |          laAddSubGroup(p, "as_root_object", "As Root Object", "As root object", "tns_root_object",0,0,0,-1,0,tnsget_ObjectAsRoot,0,0,0,0,0,LA_UDF_REFER|LA_READ_ONLY|LA_UDF_IGNORE);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      p = laAddPropertyContainer("tns_root_object", "Root Object", "Root object", 0, tnsui_RootObjectProperties,sizeof(tnsRootObject), 0,0,2);{
 | 
	
		
			
				|  |  | -        laPropContainerExtraFunctions(p,0,0,tnstouched_Object,0/*tnspropagate_Object*/,0);
 | 
	
		
			
				|  |  | +        laPropContainerExtraFunctions(p,0,0,tnstouched_Object,tnspropagate_Object,tnsui_RootObjectMenuUi);
 | 
	
		
			
				|  |  |          TNS_PC_OBJECT_ROOT=p;
 | 
	
		
			
				|  |  |          laAddStringProperty(p, "name", "Object Name", "The Name Of The Object", 0,0,0,0,1, offsetof(tnsObject, Name), 0,0,0,0,LA_AS_IDENTIFIER);
 | 
	
		
			
				|  |  |          laAddSubGroup(p, "base", "Base", "Object base", "tns_object",0,0,0,0,0,0,0,0,0,0,0,LA_UDF_LOCAL);
 | 
	
	
		
			
				|  | @@ -1184,6 +1182,7 @@ void la_RegisterTNSProps(){
 | 
	
		
			
				|  |  |              laAddEnumItemAs(ep, "3D", "3D", "Root object is in 3D", 0, 0);
 | 
	
		
			
				|  |  |              laAddEnumItemAs(ep, "2D", "2D", "Root object is in 2D", 1, 0);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        laAddOperatorProperty(p, "remove_root", "Remove root", "Remove the root node","M_remove_root",L'🗴',0);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      p = laAddPropertyContainer("tns_instancer", "Instancer", "Instance placeholder object", U'📎', tnsui_InstancerObjectProperties,sizeof(tnsInstancer), 0,0,2);{
 | 
	
		
			
				|  |  |          laPropContainerExtraFunctions(p,0,0,tnstouched_Object,0/*tnspropagate_Object*/,0);
 |