material-maker/addons/procedural_material/preview.gd
RodZill4 279b0e0103 Improved SpatialMaterial support
Now the material node is aimed at Godot's SpatialMaterial. Textures are generated and passed to the SpatialMaterial (and not generated as shaders anymore).
Rendering textures requires a Timer (to wait for the viewport to be rendered). There has to be a better solution...
Added a couple more examples.
2018-07-29 23:43:24 +02:00

35 lines
1.1 KiB
GDScript

tool
extends ViewportContainer
var preview_maximized = false
const ENVIRONMENTS = [
"experiment", "lobby", "night", "park", "schelde"
]
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)
$ObjectRotate.play("rotate")
_on_Environment_item_selected($Environment.selected)
func _on_SelectedPreview_gui_input(ev):
if ev is InputEventMouseButton && ev.button_index == 1 && ev.doubleclick:
if preview_maximized:
$SelectedPreviewAnimation.play("minimize")
else:
$SelectedPreviewAnimation.play("maximize")
preview_maximized = !preview_maximized
func _on_Environment_item_selected(id):
$MaterialPreview/WorldEnvironment.environment.background_sky.panorama = load("res://addons/procedural_material/panoramas/"+ENVIRONMENTS[id]+".hdr")
func _on_Model_item_selected(id):
var model = $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) ]