2022-01-11 14:13:56 +01:00
tool
extends Reference
2022-01-11 21:57:07 +01:00
class_name SummerDayZSpaceManager
2022-01-11 14:13:56 +01:00
var z_ranges : = [ ]
# FIXME: Binary is probably only relevant when readding all the z_ranges
# from a loaded document. But not when adding entirely new ones, as the
# z_index should be aquivalent to the array index.
func load_z_index ( z_range_instance ) :
var from = z_range_instance . _index
var dest = z_ranges . bsearch_custom ( from , self , " _compare_index " )
for i in range ( from , z_ranges . size ( ) ) :
z_ranges [ i ] . _index += 1
z_ranges . insert ( dest , z_range_instance )
_print_indices ( )
func add_z_range ( z_range_instance ) :
var from = z_range_instance . _index
for i in range ( from , z_ranges . size ( ) ) :
z_ranges [ i ] . _index += 1
z_ranges . insert ( from , z_range_instance )
_print_indices ( )
func move_z_range ( z_range_instance , to : int ) :
var from = z_range_instance . _index
if from < to : # Index raises.
z_ranges . remove ( from )
for i in range ( from , to ) :
z_ranges [ i ] . _index -= 1
z_ranges . insert ( to , z_range_instance )
else : # Index lowers.
for i in range ( to , from ) :
z_ranges [ i ] . _index += 1
z_ranges . remove ( from )
z_ranges . insert ( to , z_range_instance )
_print_indices ( )
func _compare_index ( a , b ) - > bool :
return a . _index < b
func _print_indices ( ) :
var debug_str = " "
for j in z_ranges :
debug_str += str ( j . _index ) + " , \n "
SummerDay . debug_info . text = debug_str