Pixel-Composer/scripts/random_function/random_function.gml

41 lines
1.1 KiB
Plaintext
Raw Normal View History

2022-12-12 09:08:03 +01:00
function random1D(seed, startRange = 0, endRange = 1) {
2023-01-09 03:14:20 +01:00
var _f = frac(seed);
if(_f == 0) {
random_set_seed(GLOBAL_SEED + seed);
return random_range(startRange, endRange);
}
random_set_seed(GLOBAL_SEED + floor(seed));
var f1 = random_range(startRange, endRange);
random_set_seed(GLOBAL_SEED + floor(seed) + 1);
var f2 = random_range(startRange, endRange);
return lerp(f1, f2, _f);
2022-12-12 09:08:03 +01:00
}
function getWiggle(_min, _max, _freq, _time, seed_shift = 0, startTime = noone, endTime = noone) {
_freq = max(1, _freq);
2023-01-09 03:14:20 +01:00
2022-12-12 09:08:03 +01:00
var sdMin = floor(_time / _freq) * _freq;
var sdMax = sdMin + _freq;
2023-01-09 03:14:20 +01:00
if(endTime) //Clip at ending
2022-12-12 09:08:03 +01:00
sdMax = min(endTime, sdMax);
2022-01-13 05:24:03 +01:00
2023-01-09 03:14:20 +01:00
var _x0 = (startTime != noone && sdMin <= startTime)? 0.5 : random1D(GLOBAL_SEED + seed_shift + sdMin);
var _x1 = (endTime != noone && sdMax >= endTime)? 0.5 : random1D(GLOBAL_SEED + seed_shift + sdMax);
2022-01-13 05:24:03 +01:00
2022-12-12 09:08:03 +01:00
var t = (_time - sdMin) / (sdMax - sdMin);
2022-09-21 06:09:40 +02:00
t = -(cos(pi * t) - 1) / 2;
2023-01-09 03:14:20 +01:00
var _lrp = lerp(_x0, _x1, t);
return lerp(_min, _max, _lrp);
2022-01-19 03:05:13 +01:00
}
function generateUUID() {
randomize();
var uuid;
do {
uuid = irandom(1000000000);
} until(!ds_map_exists(NODE_MAP, uuid))
return uuid;
2022-01-13 05:24:03 +01:00
}