Initial data
This commit is contained in:
parent
c18c7f4db7
commit
f65cb11474
12 changed files with 340 additions and 48 deletions
|
|
@ -0,0 +1,42 @@
|
|||
@tool
|
||||
extends TextureRect
|
||||
|
||||
@onready var subview = $Viewport
|
||||
@onready var camera = $Viewport/Camera2D
|
||||
var scene : Node
|
||||
|
||||
func set_path(path):
|
||||
if scene:
|
||||
scene.queue_free()
|
||||
if ResourceLoader.exists(path) == false:
|
||||
return
|
||||
var packed_scene : PackedScene = load(path)
|
||||
render_scene(path, packed_scene)
|
||||
|
||||
|
||||
func render_scene(path: String,packed : PackedScene):
|
||||
scene = packed.instantiate()
|
||||
subview.add_child(scene)
|
||||
|
||||
var bb = get_bounding_box(scene)
|
||||
subview.size = Vector2(max(bb.size.x,bb.size.y),max(bb.size.x,bb.size.y))
|
||||
|
||||
camera.position = bb.position * Vector2(0.5,0.5)
|
||||
|
||||
var vtexture : ViewportTexture = subview.get_texture()
|
||||
texture = vtexture
|
||||
|
||||
|
||||
func get_bounding_box(root: Node2D) -> Rect2:
|
||||
var rect := Rect2();
|
||||
var children := root.get_children();
|
||||
while children:
|
||||
var child = children.pop_back();
|
||||
children.append_array(child.get_children());
|
||||
|
||||
if child.has_method('get_rect') and child.has_method('to_global'):
|
||||
var child_rect := child.get_rect() as Rect2;
|
||||
child_rect.position = child.to_global(child_rect.position);
|
||||
rect = rect.merge(child_rect);
|
||||
|
||||
return rect;
|
||||
Loading…
Add table
Add a link
Reference in a new issue