Question about Input with Mouse's Button Left pressed with transformation like Preview 3D of Substance Designer

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By SourceSkyBoxer

Hello everyone, can I have example for Mouse Button’s press with translate, rotate or zoom in GUI with ViewportContainer ( from TextureMaker ) or ViewportSprite ( 3D_in_2D )
Example:
Button Left for translate with whole spatial,
Button Middle or Wheel for zoom with whole spatial and
Button right for rotate with whole spatial.

tool
extends ViewportContainer

var preview_maximized = false

var mouse_start = Vector2(0,0)
var mouse_end = Vector2(0,0)
var speed = 0.5

func _ready():
	var m = $MaterialPreview/Objects/Cube.get_surface_material(0).duplicate()
	$MaterialPreview/Objects/Cube.set_surface_material(0, m)
	$MaterialPreview/Objects/Cylinder.set_surface_material(0, m)
	m = $MaterialPreview/Objects/Sphere.get_surface_material(0).duplicate()
	$MaterialPreview/Objects/Sphere.set_surface_material(0, m)

func _on_Model_item_selected(id):
	var model = $Config/Model.get_item_text(id)
	for c in $MaterialPreview/Objects.get_children():
		c.visible = (c.get_name() == model)

func get_materials():
	return [ $MaterialPreview/Objects/Cube.get_surface_material(0), $MaterialPreview/Objects/Sphere.get_surface_material(0) ]

func _input(event):
	if Input.is_mouse_button_pressed(BUTTON_LEFT):
		var cam = $MaterialPreview/Objects
		var x_axis = cam.transform.basis[0]
		var y_axis = cam.transform.basis[1]
		var mouse_dir = Vector2(mouse_end.x - mouse_start.x, -mouse_end.y - -mouse_start.y)
		
		cam.rotate(y_axis, mouse_dir.x * speed)
		cam.rotate(x_axis, mouse_dir.y * speed)
		
		mouse_dir = Vector3(mouse_dir.x, mouse_dir.y, 0).normalized()

I have tried but it can’t move with meshinstance cube.
enter image description here

It is just example - I really want know how do I move, rotate and zoom with MouseButton’s Press?

PS: Check my community’s thread

Thanks and help is welcome. :slight_smile: Don’t worry! I am sorry for my bad English…