HighNoonRoulette/addons/localization_editor/uuid/uuid.gd
2025-08-28 01:55:38 +02:00

29 lines
753 B
GDScript

# TODO Remove in future
# https://github.com/godotengine/godot/pull/42408
extends Node
class_name UUID
static func getRandomInt(max_value):
randomize()
return randi() % max_value
static func randomBytes(n):
var r = []
for index in range(0, n):
r.append(getRandomInt(256))
return r
static func uuidbin():
var b = randomBytes(16)
b[6] = (b[6] & 0x0f) | 0x40
b[8] = (b[8] & 0x3f) | 0x80
return b
static func v4():
var b = uuidbin()
var low = '%02x%02x%02x%02x' % [b[0], b[1], b[2], b[3]]
var mid = '%02x%02x' % [b[4], b[5]]
var hi = '%02x%02x' % [b[6], b[7]]
var clock = '%02x%02x' % [b[8], b[9]]
var node = '%02x%02x%02x%02x%02x%02x' % [b[10], b[11], b[12], b[13], b[14], b[15]]
return '%s-%s-%s-%s-%s' % [low, mid, hi, clock, node]