2019-08-02 08:17:32 +02:00
|
|
|
tool
|
2019-07-31 20:53:00 +02:00
|
|
|
extends Object
|
|
|
|
class_name MMGenLoader
|
|
|
|
|
|
|
|
func load_gen(filename: String) -> MMGenBase:
|
|
|
|
var file = File.new()
|
|
|
|
if file.open(filename, File.READ) == OK:
|
|
|
|
var data = parse_json(file.get_as_text())
|
|
|
|
return create_gen(data)
|
|
|
|
return null
|
|
|
|
|
|
|
|
func create_gen(data) -> MMGenBase:
|
|
|
|
var generator = null
|
|
|
|
if data.has("connections") and data.has("nodes"):
|
|
|
|
generator = MMGenGraph.new()
|
|
|
|
for n in data.nodes:
|
|
|
|
var g = create_gen(n)
|
|
|
|
if g != null:
|
|
|
|
generator.add_child(g)
|
2019-08-02 08:17:32 +02:00
|
|
|
generator.connections = data.connections
|
2019-07-31 20:53:00 +02:00
|
|
|
elif data.has("type"):
|
|
|
|
if data.type == "material":
|
|
|
|
generator = MMGenMaterial.new()
|
|
|
|
else:
|
|
|
|
generator = MMGenShader.new()
|
2019-08-02 08:17:32 +02:00
|
|
|
if data.type == "custom":
|
|
|
|
pass
|
2019-07-31 20:53:00 +02:00
|
|
|
else:
|
2019-08-02 08:17:32 +02:00
|
|
|
var file = File.new()
|
|
|
|
if file.open("res://addons/material_maker/nodes/"+data.type+".mmn", File.READ) == OK:
|
|
|
|
var model_data = parse_json(file.get_as_text())
|
|
|
|
print("loaded description "+data.type+".mmn")
|
|
|
|
generator.set_model_data(model_data)
|
|
|
|
else:
|
|
|
|
print("Cannot find description for "+data.type)
|
2019-07-31 20:53:00 +02:00
|
|
|
if generator != null and data.has("parameters"):
|
|
|
|
generator.initialize(data)
|
|
|
|
return generator
|