40 lines
990 B
GDScript
40 lines
990 B
GDScript
class_name VSTUtils
|
|
|
|
const LUMINANCE_LOW := 0.2
|
|
const LUMINANCE_HIGH := 0.8
|
|
|
|
const DEFAULT_NAME_COLORS:Array[String] = [
|
|
"#FF0000",
|
|
"#00FF00",
|
|
"#0000FF",
|
|
"#B22222",
|
|
"#FF7F50",
|
|
"#9ACD32",
|
|
"#FF4500",
|
|
"#2E8B57",
|
|
"#DAA520",
|
|
"#D2691E",
|
|
"#5F9EA0",
|
|
"#1E90FF",
|
|
"#FF69B4",
|
|
"#8A2BE2",
|
|
"#00FF7F",
|
|
]
|
|
|
|
# Returns a random non-unique color from a name and a seed
|
|
static func get_random_name_color(login: String, session_seed:int = 0):
|
|
var position: int = session_seed + hash(login)
|
|
return DEFAULT_NAME_COLORS[position % DEFAULT_NAME_COLORS.size()]
|
|
|
|
# Normalize color in order to be not bright or darker
|
|
static func normalize_color(color: Color) -> Color:
|
|
var luminance = color.get_luminance()
|
|
if luminance > LUMINANCE_HIGH:
|
|
return color.darkened(0.2)
|
|
if luminance < LUMINANCE_LOW:
|
|
return color.lightened(0.2)
|
|
return color
|
|
|
|
# Normalize color from string representation
|
|
static func normalize_hex_color(color: String) -> Color:
|
|
return normalize_color(Color(color))
|