Roughly implemented z indexing.

This commit is contained in:
Mono 2022-01-11 14:13:56 +01:00
parent a98c19ad72
commit 2c3390ff13
13 changed files with 124 additions and 69 deletions

@ -2,7 +2,7 @@
[sub_resource type="Image" id=1]
data = {
"data": PoolByteArray( 146, 121, 211, 61, 105, 86, 230, 188, 0, 0, 0, 0, 252, 152, 127, 63, 240, 63, 201, 188, 72, 62, 73, 62, 0, 0, 0, 0, 29, 23, 26, 63, 192, 134, 71, 189, 169, 77, 108, 187, 0, 0, 0, 0, 0, 0, 128, 63, 192, 134, 71, 189, 169, 77, 108, 187, 0, 0, 0, 0, 0, 0, 128, 63, 225, 221, 100, 62, 58, 251, 45, 189, 0, 0, 0, 0, 220, 162, 139, 62, 30, 240, 195, 188, 186, 74, 183, 62, 0, 0, 0, 0, 248, 30, 185, 62, 11, 245, 66, 60, 50, 221, 41, 189, 0, 0, 0, 0, 0, 0, 128, 191, 11, 245, 66, 188, 50, 221, 41, 61, 0, 0, 0, 0, 0, 0, 128, 63 ),
"data": PoolByteArray( 163, 97, 129, 190, 169, 186, 124, 187, 0, 0, 0, 0, 134, 159, 23, 62, 35, 171, 151, 187, 128, 246, 130, 190, 0, 0, 0, 0, 174, 147, 27, 62, 235, 149, 61, 61, 170, 244, 29, 61, 0, 0, 0, 0, 0, 0, 128, 63, 235, 149, 61, 61, 170, 244, 29, 61, 0, 0, 0, 0, 0, 0, 128, 63, 149, 180, 151, 190, 43, 243, 217, 188, 0, 0, 0, 0, 194, 193, 28, 190, 74, 160, 139, 188, 18, 181, 131, 190, 0, 0, 0, 0, 105, 78, 11, 190, 170, 140, 27, 62, 130, 27, 96, 62, 0, 0, 0, 0, 0, 0, 128, 191, 170, 140, 27, 190, 130, 27, 96, 190, 0, 0, 0, 0, 0, 0, 128, 63 ),
"format": "RGBAFloat",
"height": 1,
"mipmaps": false,

@ -4,6 +4,7 @@ class_name SummerDayEditable
export(Resource) var table
var z_range := SummerDayZRange.new()
var preference_number = 0
@ -44,3 +45,7 @@ func draw_line(position_1: Vector3, position_2: Vector3,
SummerDay.interaction_hint.draw_line(
position_1, position_2, color, color_2
)
func get_z_range() -> Array:
return []

@ -17,6 +17,10 @@ export(PoolVector2Array) var vertices = PoolVector2Array([
var picked_point = -1
func _init():
z_range.index = 0
func _check_for_selection_candidate(event: InputEvent) -> bool: # Virtual.
if event is InputEventMouseButton:
if event.button_index == BUTTON_LEFT and event.pressed:

@ -0,0 +1,30 @@
extends Reference
class_name SummerDayZRange
signal changed_from_external
var listed: bool = false
var index: int setget _set_index, _get_index
var _index: int
var real_z_rear_limit: float
var real_z_front_limit: float
var squished_z_rear_limit: float
var squished_z_front_limit: float
func _set_index(value: int):
if listed:
SummerDay.z_range_manager.move_z_range(self, value)
_index = value
else:
_index = value
SummerDay.z_range_manager.add_z_range(self)
listed = true
func _get_index():
return _index

@ -0,0 +1,56 @@
tool
extends Reference
class_name SummerDayZRangeManager
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

@ -46,6 +46,8 @@ func _exit_tree():
remove_custom_type("SummerDayDocument")
remove_custom_type("SummerDayDisplay")
remove_control_from_bottom_panel(timeline_instance)
# $"/root/SummerDay".canvas_state.free()
# $"/root/SummerDay".z_range_manager.free()
func enable_plugin():

@ -13,6 +13,7 @@ var tool_pool := SummerDayCanvasToolPool.new()
func _ready():
SummerDay.canvas_state = canvas_state
SummerDay.interaction_hint = InteractionHint
SummerDay.debug_info = $Render/DebugInfo
canvas_state.connect("view_transform_changed",
self, "_on_view_transform_changed")
canvas_state.connect("canvas_polygon_changed",
@ -48,7 +49,6 @@ func _on_SummerDay_document_changed(new_doc):
canvas_state.update_fill_transform()
new_doc.connect("resolution_changed",
self, "_on_scene_aspect_ratio_changed")
$Render/Label.text = str(new_doc) + "\n" + str(new_doc.resolution)
func _on_Canvas_resized():

@ -51,7 +51,7 @@ void fragment() {
[sub_resource type="ShaderMaterial" id=7]
render_priority = 1
shader = SubResource( 6 )
shader_param/canvas_transform = Basis( 0.715913, 0, -0.474076, 0, -1.32223, 0.449119, 0, 0, 1 )
shader_param/canvas_transform = Basis( 0.00240964, 0, -1, 0, -0.00326797, 1, 0, 0, 1 )
[node name="Canvas" type="PanelContainer"]
anchor_right = 1.0
@ -130,6 +130,6 @@ usage = 0
render_target_update_mode = 3
gui_disable_input = true
[node name="Label" type="Label" parent="Render"]
[node name="DebugInfo" type="Label" parent="Render"]
margin_right = 40.0
margin_bottom = 14.0

@ -4,4 +4,7 @@ extends Node
var document: SummerDayDocument
var canvas_state: SummerDayCanvasState
var z_range_manager := SummerDayZRangeManager.new()
var interaction_hint: SummerDayInteractionHint
var debug_info: Label

@ -20,6 +20,7 @@ nodes/use_legacy_names=false
materials/location=1
materials/storage=1
materials/keep_on_reimport=true
meshes/octahedral_compression=true
meshes/compress=true
meshes/ensure_tangents=true
meshes/storage=0

@ -1,4 +1,4 @@
[gd_resource type="Resource" load_steps=20 format=2]
[gd_resource type="Resource" load_steps=13 format=2]
[ext_resource path="res://addons/summer_day/data/document/document.gd" type="Script" id=1]
[ext_resource path="res://addons/summer_day/data/document/cell.gd" type="Script" id=2]
@ -38,52 +38,7 @@ blueprint = ExtResource( 5 )
table = SubResource( 2 )
cells = [ SubResource( 4 ) ]
[sub_resource type="Image" id=6]
data = {
"data": PoolByteArray( 232, 246, 173, 190, 47, 95, 49, 189, 0, 0, 0, 0, 246, 232, 104, 62, 58, 231, 73, 188, 112, 8, 93, 190, 0, 0, 0, 0, 123, 148, 148, 61, 8, 97, 252, 61, 251, 182, 221, 62, 0, 0, 0, 0, 0, 0, 128, 63, 8, 97, 252, 61, 251, 182, 221, 62, 0, 0, 0, 0, 0, 0, 128, 63, 149, 180, 151, 190, 60, 243, 217, 188, 0, 0, 0, 0, 206, 193, 28, 190, 104, 160, 139, 188, 17, 181, 131, 190, 0, 0, 0, 0, 95, 78, 11, 190, 159, 140, 27, 62, 126, 27, 96, 62, 0, 0, 0, 0, 0, 0, 128, 191, 159, 140, 27, 190, 126, 27, 96, 190, 0, 0, 0, 0, 0, 0, 128, 63 ),
"format": "RGBAFloat",
"height": 1,
"mipmaps": false,
"width": 8
}
[sub_resource type="Image" id=13]
data = {
"data": PoolByteArray( 232, 246, 173, 190, 47, 95, 49, 189, 0, 0, 0, 0, 246, 232, 104, 62, 58, 231, 73, 188, 112, 8, 93, 190, 0, 0, 0, 0, 123, 148, 148, 61, 8, 97, 252, 61, 251, 182, 221, 62, 0, 0, 0, 0, 0, 0, 128, 63, 8, 97, 252, 61, 251, 182, 221, 62, 0, 0, 0, 0, 0, 0, 128, 63, 149, 180, 151, 190, 60, 243, 217, 188, 0, 0, 0, 0, 206, 193, 28, 190, 104, 160, 139, 188, 17, 181, 131, 190, 0, 0, 0, 0, 95, 78, 11, 190, 159, 140, 27, 62, 126, 27, 96, 62, 0, 0, 0, 0, 0, 0, 128, 191, 159, 140, 27, 190, 126, 27, 96, 190, 0, 0, 0, 0, 0, 0, 128, 63 ),
"format": "RGBAFloat",
"height": 1,
"mipmaps": false,
"width": 8
}
[sub_resource type="ImageTexture" id=8]
flags = 0
flags = 0
image = SubResource( 13 )
size = Vector2( 8, 1 )
[sub_resource type="Resource" id=9]
script = ExtResource( 3 )
allocation_size = 2
texture = SubResource( 8 )
image = SubResource( 6 )
[sub_resource type="Resource" id=10]
script = ExtResource( 6 )
table = SubResource( 9 )
vertices = PoolVector2Array( -0.756447, -0.652097, 0.124979, -0.403235, 0.123889, 0.100852, -0.396248, 0.0976196, -0.1, -0.1, 0.4, -0.1, 1.3759, 0.677717, -0.1, 0.4 )
[sub_resource type="Resource" id=11]
script = ExtResource( 2 )
editable_list = [ SubResource( 10 ) ]
[sub_resource type="Resource" id=12]
script = ExtResource( 4 )
blueprint = ExtResource( 5 )
table = SubResource( 9 )
cells = [ SubResource( 11 ) ]
[resource]
script = ExtResource( 1 )
resolution = Vector2( 1920, 1080 )
tracks = [ SubResource( 5 ), SubResource( 12 ) ]
tracks = [ SubResource( 5 ) ]

@ -1,4 +1,6 @@
[gd_resource type="ShaderMaterial" load_steps=4 format=2]
[gd_resource type="ShaderMaterial" load_steps=3 format=2]
[ext_resource path="res://Bullshit/THIS SHOULD FIX IThoefully.tres" type="Texture" id=1]
[sub_resource type="Shader" id=1]
code = "shader_type spatial;
@ -53,22 +55,7 @@ void fragment() {
ALBEDO = texture(table, UV).rgb;
}"
[sub_resource type="Image" id=9]
data = {
"data": PoolByteArray( 146, 121, 211, 61, 105, 86, 230, 188, 0, 0, 0, 0, 252, 152, 127, 63, 240, 63, 201, 188, 72, 62, 73, 62, 0, 0, 0, 0, 29, 23, 26, 63, 192, 134, 71, 189, 169, 77, 108, 187, 0, 0, 0, 0, 0, 0, 128, 63, 192, 134, 71, 189, 169, 77, 108, 187, 0, 0, 0, 0, 0, 0, 128, 63, 225, 221, 100, 62, 58, 251, 45, 189, 0, 0, 0, 0, 220, 162, 139, 62, 30, 240, 195, 188, 186, 74, 183, 62, 0, 0, 0, 0, 248, 30, 185, 62, 11, 245, 66, 60, 50, 221, 41, 189, 0, 0, 0, 0, 0, 0, 128, 191, 11, 245, 66, 188, 50, 221, 41, 61, 0, 0, 0, 0, 0, 0, 128, 63 ),
"format": "RGBAFloat",
"height": 1,
"mipmaps": false,
"width": 8
}
[sub_resource type="ImageTexture" id=8]
flags = 0
flags = 0
image = SubResource( 9 )
size = Vector2( 8, 1 )
[resource]
shader = SubResource( 1 )
shader_param/canvas_transform = Basis( 0.715913, 0, -0.474076, 0, -1.32223, 0.449119, 0, 0, 1 )
shader_param/table = SubResource( 8 )
shader_param/canvas_transform = Basis( 1.08434, 0, -0.963855, 0, -2, 1, 0, 0, 1 )
shader_param/table = ExtResource( 1 )

@ -179,6 +179,16 @@ _global_script_classes=[ {
"language": "GDScript",
"path": "res://addons/summer_day/user_interface/canvas/rendering/viewport_handler.gd"
}, {
"base": "Reference",
"class": "SummerDayZRange",
"language": "GDScript",
"path": "res://addons/summer_day/data/blueprint/z_range.gd"
}, {
"base": "Reference",
"class": "SummerDayZRangeManager",
"language": "GDScript",
"path": "res://addons/summer_day/data/blueprint/z_range_manager.gd"
}, {
"base": "SummerDayTool",
"class": "SummerDayZoomCanvasTool",
"language": "GDScript",
@ -224,6 +234,8 @@ _global_script_class_icons={
"SummerDayToolPool": "",
"SummerDayTrack": "",
"SummerDayViewportHandler": "",
"SummerDayZRange": "",
"SummerDayZRangeManager": "",
"SummerDayZoomCanvasTool": "",
"VeryWorse": ""
}