Files

60 lines
1.5 KiB
GDScript

@tool
extends Node
# NOTE: in theory this would extend from resource, but until saving and loading resources
# works in godot, we'll stick with extending from node
# and using JSON files to save/load data
#
# See material_import.gd for more information
var albedo_color
var metallic_strength
var roughness_strength
func init():
albedo_color = Color()
metallic_strength = 0
roughness_strength = 0
# Convert our data into an dictonary so we can convert it
# into the JSON format
func make_json():
var json_dict = {}
json_dict["albedo_color"] = {}
json_dict["albedo_color"]["r"] = albedo_color.r
json_dict["albedo_color"]["g"] = albedo_color.g
json_dict["albedo_color"]["b"] = albedo_color.b
json_dict["metallic_strength"] = metallic_strength
json_dict["roughness_strength"] = roughness_strength
return JSON.new().stringify(json_dict)
# Convert the passed in string to a json dictonary, and then
# fill in our data.
func from_json(json_dict_as_string):
var json = JSON.new()
json.parse(json_dict_as_string)
var json_dict = json.get_data()
albedo_color.r = json_dict["albedo_color"]["r"]
albedo_color.g = json_dict["albedo_color"]["g"]
albedo_color.b = json_dict["albedo_color"]["b"]
metallic_strength = json_dict["metallic_strength"]
roughness_strength = json_dict["roughness_strength"]
# Make a StandardMaterial3D using our variables.
func make_material():
var mat = StandardMaterial3D.new()
mat.albedo_color = albedo_color
mat.metallic = metallic_strength
mat.roughness = roughness_strength
return mat