216 lines
4.8 KiB
GDScript
216 lines
4.8 KiB
GDScript
@tool
|
|
class_name TreeRow
|
|
extends Resource
|
|
|
|
|
|
enum FieldMode{
|
|
INT,
|
|
FLOAT,
|
|
RANGE,
|
|
STRING,
|
|
VECTOR2,
|
|
VECTOR2I,
|
|
ENUM,
|
|
FILE_PATH,
|
|
COLOR
|
|
}
|
|
|
|
@export var label : String = ""
|
|
@export var field : FieldMode = 0
|
|
|
|
@export_subgroup("Int")
|
|
@export var int_value : int = 0
|
|
@export var int_min : int = 0
|
|
@export var int_max : int = 100
|
|
@export var int_step : int = 1
|
|
|
|
@export_subgroup("Float")
|
|
@export var float_value : float = 0
|
|
@export var float_min : float = 0
|
|
@export var float_max : float = 1
|
|
@export var float_step : float = 0.001
|
|
|
|
@export_subgroup("Range")
|
|
@export var range_value : float = 0
|
|
@export var range_min : float = 0
|
|
@export var range_max : float = 1
|
|
@export var range_step : float = 0.001
|
|
|
|
@export_subgroup("String")
|
|
@export var string_value : String = ""
|
|
|
|
@export_subgroup("Vector2")
|
|
@export var vector2_label_x : String = "X"
|
|
@export var vector2_label_y : String = "Y"
|
|
@export var vector2_value : Vector2 = Vector2.ZERO
|
|
@export var vector2_min : Vector2 = Vector2.ZERO
|
|
@export var vector2_max : Vector2 = Vector2.ONE
|
|
@export var vector2_step : Vector2 = Vector2(0.001, 0.001)
|
|
|
|
@export_subgroup("Vector2i")
|
|
@export var vector2i_label_x : String = "X"
|
|
@export var vector2i_label_y : String = "Y"
|
|
@export var vector2i_value : Vector2i = Vector2i.ZERO
|
|
@export var vector2i_min : Vector2i = Vector2i.ZERO
|
|
@export var vector2i_max : Vector2i = Vector2i(100, 100)
|
|
@export var vector2i_step : Vector2i = Vector2i.ONE
|
|
|
|
@export_subgroup("Enum")
|
|
@export var enum_value : int = 0
|
|
@export var enum_option : Array[String] = []
|
|
|
|
@export_subgroup("File")
|
|
@export_file() var file_value : String = ""
|
|
@export var file_mode : FileDialog.FileMode = FileDialog.FILE_MODE_SAVE_FILE
|
|
@export var file_dialog_filters : PackedStringArray = ["*.png, *.jpg, *.jpeg ; Supported Images"]
|
|
|
|
@export_subgroup("Color")
|
|
@export var color_value : Color = Color.WHITE
|
|
@export var color_alpha : bool = true
|
|
|
|
|
|
static func create_int(
|
|
d_label : String,
|
|
d_value : int,
|
|
d_min : int,
|
|
d_max : int,
|
|
d_step : int = 1
|
|
) -> TreeRow:
|
|
var row = TreeRow.new()
|
|
row.field = FieldMode.INT
|
|
row.label = d_label
|
|
row.int_min = d_min
|
|
row.int_max = d_max
|
|
row.int_value = d_value
|
|
row.int_step = d_step
|
|
return row
|
|
|
|
|
|
static func create_float(
|
|
d_label : String,
|
|
d_value : float,
|
|
d_min : float,
|
|
d_max : float,
|
|
d_step : float = 0.001
|
|
) -> TreeRow:
|
|
var row = TreeRow.new()
|
|
row.field = FieldMode.FLOAT
|
|
row.label = d_label
|
|
row.float_min = d_min
|
|
row.float_max = d_max
|
|
row.float_value = d_value
|
|
row.float_step = d_step
|
|
return row
|
|
|
|
|
|
static func create_range(
|
|
d_label : String,
|
|
d_value : float,
|
|
d_min : float,
|
|
d_max : float,
|
|
d_step : float = 0.001
|
|
) -> TreeRow:
|
|
var row = TreeRow.new()
|
|
row.field = FieldMode.RANGE
|
|
row.label = d_label
|
|
row.range_min = d_min
|
|
row.range_max = d_max
|
|
row.range_value = d_value
|
|
row.range_step = d_step
|
|
return row
|
|
|
|
|
|
static func create_string(
|
|
d_label : String,
|
|
d_value : String
|
|
) -> TreeRow:
|
|
var row = TreeRow.new()
|
|
row.field = FieldMode.STRING
|
|
row.label = d_label
|
|
row.string_value = d_value
|
|
return row
|
|
|
|
|
|
static func create_vector2(
|
|
d_label : String,
|
|
d_label_a : String,
|
|
d_label_b : String,
|
|
d_value : Vector2,
|
|
d_min : Vector2,
|
|
d_max : Vector2,
|
|
d_step : Vector2 = Vector2.ONE
|
|
) -> TreeRow:
|
|
var row : TreeRow = TreeRow.new()
|
|
row.label = d_label
|
|
row.field = FieldMode.VECTOR2
|
|
row.vector2_label_x = d_label_a
|
|
row.vector2_label_y = d_label_b
|
|
row.vector2_min = d_min
|
|
row.vector2_max = d_max
|
|
row.vector2_value = d_value
|
|
row.vector2_step = d_step
|
|
return row
|
|
|
|
|
|
static func create_vector2i(
|
|
d_label : String,
|
|
d_label_a : String,
|
|
d_label_b : String,
|
|
d_value : Vector2i,
|
|
d_min : Vector2i,
|
|
d_max : Vector2i,
|
|
d_step : Vector2i = Vector2i.ONE
|
|
) -> TreeRow:
|
|
var row : TreeRow = TreeRow.new()
|
|
row.label = d_label
|
|
row.field = FieldMode.VECTOR2I
|
|
row.vector2i_label_x = d_label_a
|
|
row.vector2i_label_y = d_label_b
|
|
row.vector2i_min = d_min
|
|
row.vector2i_max = d_max
|
|
row.vector2i_value = d_value
|
|
row.vector2i_step = d_step
|
|
return row
|
|
|
|
|
|
static func create_enum(
|
|
d_label : String,
|
|
d_value : int,
|
|
d_option : Array[String]
|
|
) -> TreeRow:
|
|
var row = TreeRow.new()
|
|
row.field = FieldMode.ENUM
|
|
row.label = d_label
|
|
row.enum_value = d_value
|
|
row.enum_option = d_option
|
|
return row
|
|
|
|
|
|
static func create_file_path(
|
|
d_label : String,
|
|
d_value : String,
|
|
d_file_mode : FileDialog.FileMode = FileDialog.FILE_MODE_SAVE_FILE,
|
|
d_file_dialog_filters : PackedStringArray = ["*.png, *.jpg, *.jpeg ; Supported Images"]
|
|
) -> TreeRow:
|
|
var row = TreeRow.new()
|
|
row.field = FieldMode.FILE_PATH
|
|
row.label = d_label
|
|
row.file_value = d_value
|
|
row.file_mode = d_file_mode
|
|
row.file_dialog_filters = d_file_dialog_filters
|
|
return row
|
|
|
|
|
|
static func create_color(
|
|
d_label : String,
|
|
d_value : Color,
|
|
d_alpha : bool
|
|
) -> TreeRow:
|
|
var row = TreeRow.new()
|
|
row.field = FieldMode.COLOR
|
|
row.label = d_label
|
|
row.color_value = d_value
|
|
row.color_alpha = d_alpha
|
|
return row
|
|
|