diff --git a/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn b/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn index 3b026ea..5401633 100644 --- a/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn +++ b/DungeonShooting_Godot/prefab/ui/TileSetEditorTerrain.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=10 format=3 uid="uid://dfqb73y4br8yd"] +[gd_scene load_steps=11 format=3 uid="uid://dfqb73y4br8yd"] [ext_resource type="Script" path="res://src/game/ui/tileSetEditorTerrain/TileSetEditorTerrainPanel.cs" id="1_6jjk7"] +[ext_resource type="Texture2D" uid="uid://bn47bmilcw4x0" path="res://resource/sprite/ui/commonIcon/Select2.png" id="2_0v4fp"] [ext_resource type="Script" path="res://src/game/ui/tileSetEditorTerrain/left/TileEditArea.cs" id="2_ynf0r"] [ext_resource type="Script" path="res://src/game/common/ui/EditorMaskBrush.cs" id="3_gydh0"] [ext_resource type="Script" path="res://src/game/ui/tileSetEditorTerrain/left/TerrainCellDragHandler.cs" id="3_ssd86"] @@ -19,7 +20,7 @@ grow_vertical = 2 script = ExtResource("1_6jjk7") -[node name="HSplitContainer" type="HSplitContainer" parent="."] +[node name="VSplitContainer" type="VSplitContainer" parent="."] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -27,13 +28,13 @@ grow_horizontal = 2 grow_vertical = 2 -[node name="LeftBottom" type="Panel" parent="HSplitContainer"] +[node name="LeftBottom2" type="Panel" parent="VSplitContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 size_flags_stretch_ratio = 50.0 -[node name="MarginContainer" type="MarginContainer" parent="HSplitContainer/LeftBottom"] +[node name="MarginContainer" type="MarginContainer" parent="VSplitContainer/LeftBottom2"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -45,99 +46,57 @@ theme_override_constants/margin_right = 2 theme_override_constants/margin_bottom = 2 -[node name="LeftBg" type="ColorRect" parent="HSplitContainer/LeftBottom/MarginContainer"] -clip_children = 2 -z_index = 1 +[node name="HBoxContainer" type="HBoxContainer" parent="VSplitContainer/LeftBottom2/MarginContainer"] layout_mode = 2 -color = Color(0.203922, 0.203922, 0.203922, 1) -script = ExtResource("2_ynf0r") +theme_override_constants/separation = 0 -[node name="TileTexture" type="TextureRect" parent="HSplitContainer/LeftBottom/MarginContainer/LeftBg"] -layout_mode = 1 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -grow_horizontal = 2 -grow_vertical = 2 -scale = Vector2(2, 2) -mouse_filter = 2 +[node name="Panel" type="Panel" parent="VSplitContainer/LeftBottom2/MarginContainer/HBoxContainer"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 -[node name="CellRoot" type="Control" parent="HSplitContainer/LeftBottom/MarginContainer/LeftBg/TileTexture"] -anchors_preset = 0 -offset_right = 1.0 -offset_bottom = 1.0 -mouse_filter = 2 - -[node name="LeftCell" type="TextureButton" parent="HSplitContainer/LeftBottom/MarginContainer/LeftBg/TileTexture/CellRoot"] -layout_mode = 0 -offset_right = 16.0 -offset_bottom = 16.0 -mouse_filter = 1 -script = ExtResource("3_ssd86") - -[node name="MaskBrush" type="Control" parent="HSplitContainer/LeftBottom/MarginContainer/LeftBg/TileTexture"] +[node name="ScrollContainer" type="ScrollContainer" parent="VSplitContainer/LeftBottom2/MarginContainer/HBoxContainer/Panel"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 +offset_left = 2.0 +offset_top = 2.0 +offset_right = -2.0 +offset_bottom = -2.0 grow_horizontal = 2 grow_vertical = 2 -mouse_filter = 2 -script = ExtResource("3_gydh0") -[node name="Grid" type="ColorRect" parent="HSplitContainer/LeftBottom/MarginContainer/LeftBg"] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 -color = Color(1, 1, 1, 0) - -[node name="FocusBtn" type="TextureButton" parent="HSplitContainer/LeftBottom/MarginContainer/LeftBg"] -layout_mode = 1 -anchors_preset = 1 -anchor_left = 1.0 -anchor_right = 1.0 -offset_left = -79.0 -offset_top = 14.0 -offset_right = -15.0 -offset_bottom = 78.0 -grow_horizontal = 0 -tooltip_text = "聚焦" -texture_normal = ExtResource("5_08bc4") -ignore_texture_size = true -stretch_mode = 5 - -[node name="LeftBottom2" type="Panel" parent="HSplitContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="VSplitContainer/LeftBottom2/MarginContainer/HBoxContainer/Panel/ScrollContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -size_flags_stretch_ratio = 50.0 -[node name="MarginContainer" type="MarginContainer" parent="HSplitContainer/LeftBottom2"] +[node name="TabButton" type="Button" parent="VSplitContainer/LeftBottom2/MarginContainer/HBoxContainer/Panel/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "button" + +[node name="NinePatchRect" type="NinePatchRect" parent="VSplitContainer/LeftBottom2/MarginContainer/HBoxContainer/Panel/ScrollContainer/VBoxContainer/TabButton"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -theme_override_constants/margin_left = 2 -theme_override_constants/margin_top = 2 -theme_override_constants/margin_right = 2 -theme_override_constants/margin_bottom = 2 +texture = ExtResource("2_0v4fp") +patch_margin_left = 3 +patch_margin_top = 3 +patch_margin_right = 3 +patch_margin_bottom = 3 -[node name="LeftBottomBg" type="ColorRect" parent="HSplitContainer/LeftBottom2/MarginContainer"] +[node name="LeftBottomBg" type="ColorRect" parent="VSplitContainer/LeftBottom2/MarginContainer/HBoxContainer"] clip_children = 2 z_index = 1 layout_mode = 2 +size_flags_horizontal = 3 color = Color(0.496094, 0.496094, 0.496094, 1) script = ExtResource("5_0x7yx") -[node name="TerrainRoot" type="Control" parent="HSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg"] +[node name="TerrainRoot" type="Control" parent="VSplitContainer/LeftBottom2/MarginContainer/HBoxContainer/LeftBottomBg"] layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 @@ -153,24 +112,24 @@ scale = Vector2(3, 3) mouse_filter = 2 -[node name="CellRoot" type="Control" parent="HSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot"] +[node name="CellRoot" type="Control" parent="VSplitContainer/LeftBottom2/MarginContainer/HBoxContainer/LeftBottomBg/TerrainRoot"] layout_mode = 3 anchors_preset = 0 offset_right = 1.0 offset_bottom = 1.0 mouse_filter = 2 -[node name="RightCell" type="Control" parent="HSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot/CellRoot"] +[node name="RightCell" type="Control" parent="VSplitContainer/LeftBottom2/MarginContainer/HBoxContainer/LeftBottomBg/TerrainRoot/CellRoot"] anchors_preset = 0 offset_right = 16.0 offset_bottom = 16.0 mouse_filter = 1 script = ExtResource("8_7xxcq") -[node name="CellTexture" type="Sprite2D" parent="HSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot/CellRoot/RightCell"] +[node name="CellTexture" type="Sprite2D" parent="VSplitContainer/LeftBottom2/MarginContainer/HBoxContainer/LeftBottomBg/TerrainRoot/CellRoot/RightCell"] centered = false -[node name="TerrainTexture" type="TextureRect" parent="HSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot"] +[node name="TerrainTexture" type="TextureRect" parent="VSplitContainer/LeftBottom2/MarginContainer/HBoxContainer/LeftBottomBg/TerrainRoot"] self_modulate = Color(1, 1, 1, 0.27451) layout_mode = 1 anchors_preset = 15 @@ -181,7 +140,7 @@ mouse_filter = 2 texture = ExtResource("7_g8dxk") -[node name="Brush" type="Control" parent="HSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg/TerrainRoot"] +[node name="Brush" type="Control" parent="VSplitContainer/LeftBottom2/MarginContainer/HBoxContainer/LeftBottomBg/TerrainRoot"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -191,7 +150,7 @@ mouse_filter = 2 script = ExtResource("7_lmu64") -[node name="Grid" type="ColorRect" parent="HSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg"] +[node name="Grid" type="ColorRect" parent="VSplitContainer/LeftBottom2/MarginContainer/HBoxContainer/LeftBottomBg"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -201,7 +160,92 @@ mouse_filter = 2 color = Color(1, 1, 1, 0) -[node name="FocusBtn" type="TextureButton" parent="HSplitContainer/LeftBottom2/MarginContainer/LeftBottomBg"] +[node name="FocusBtn" type="TextureButton" parent="VSplitContainer/LeftBottom2/MarginContainer/HBoxContainer/LeftBottomBg"] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -79.0 +offset_top = 14.0 +offset_right = -15.0 +offset_bottom = 78.0 +grow_horizontal = 0 +tooltip_text = "聚焦" +texture_normal = ExtResource("5_08bc4") +ignore_texture_size = true +stretch_mode = 5 + +[node name="LeftBottom" type="Panel" parent="VSplitContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 50.0 + +[node name="MarginContainer" type="MarginContainer" parent="VSplitContainer/LeftBottom"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 2 +theme_override_constants/margin_top = 2 +theme_override_constants/margin_right = 2 +theme_override_constants/margin_bottom = 2 + +[node name="LeftBg" type="ColorRect" parent="VSplitContainer/LeftBottom/MarginContainer"] +clip_children = 2 +z_index = 1 +layout_mode = 2 +color = Color(0.203922, 0.203922, 0.203922, 1) +script = ExtResource("2_ynf0r") + +[node name="TileTexture" type="TextureRect" parent="VSplitContainer/LeftBottom/MarginContainer/LeftBg"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +grow_horizontal = 2 +grow_vertical = 2 +scale = Vector2(2, 2) +mouse_filter = 2 + +[node name="CellRoot" type="Control" parent="VSplitContainer/LeftBottom/MarginContainer/LeftBg/TileTexture"] +anchors_preset = 0 +offset_right = 1.0 +offset_bottom = 1.0 +mouse_filter = 2 + +[node name="LeftCell" type="TextureButton" parent="VSplitContainer/LeftBottom/MarginContainer/LeftBg/TileTexture/CellRoot"] +layout_mode = 0 +offset_right = 16.0 +offset_bottom = 16.0 +mouse_filter = 1 +script = ExtResource("3_ssd86") + +[node name="MaskBrush" type="Control" parent="VSplitContainer/LeftBottom/MarginContainer/LeftBg/TileTexture"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("3_gydh0") + +[node name="Grid" type="ColorRect" parent="VSplitContainer/LeftBottom/MarginContainer/LeftBg"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +color = Color(1, 1, 1, 0) + +[node name="FocusBtn" type="TextureButton" parent="VSplitContainer/LeftBottom/MarginContainer/LeftBg"] layout_mode = 1 anchors_preset = 1 anchor_left = 1.0 diff --git a/DungeonShooting_Godot/resource/material/GodRays.gdshader b/DungeonShooting_Godot/resource/material/GodRays.gdshader new file mode 100644 index 0000000..4892b88 --- /dev/null +++ b/DungeonShooting_Godot/resource/material/GodRays.gdshader @@ -0,0 +1,107 @@ +/* +Shader from Godot Shaders - the free shader library. +godotshaders.com/shader/god-rays + +Feel free to use, improve and change this shader according to your needs +and consider sharing the modified result on godotshaders.com. +*/ + +shader_type canvas_item; + +uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; + +uniform float angle = -0.3; +uniform float position = -0.2; +uniform float spread : hint_range(0.0, 1.0) = 0.5; +uniform float cutoff : hint_range(-1.0, 1.0) = 0.1; +uniform float falloff : hint_range(0.0, 1.0) = 0.2; +uniform float edge_fade : hint_range(0.0, 1.0) = 0.15; + +uniform float speed = 1.0; +uniform float ray1_density = 8.0; +uniform float ray2_density = 30.0; +uniform float ray2_intensity : hint_range(0.0, 1.0) = 0.3; + +uniform vec4 color : source_color = vec4(1.0, 0.9, 0.65, 0.8); + +uniform bool hdr = false; +uniform float seed = 5.0; + +float random(vec2 _uv) { + _uv += min(TIME,0.0); + return fract(sin(dot(_uv.xy, vec2(12.9898, 78.233))) * 43758.5453123); +} + +float noise (in vec2 uv) { + vec2 i = floor(uv); + vec2 f = fract(uv); + + // Four corners in 2D of a tile + float a = random(i); + float b = random(i + vec2(1.0, 0.0)); + float c = random(i + vec2(0.0, 1.0)); + float d = random(i + vec2(1.0, 1.0)); + + + // Smooth Interpolation + + // Cubic Hermine Curve. Same as SmoothStep() + vec2 u = f * f * (3.0-2.0 * f); + + // Mix 4 coorners percentages + return mix(a, b, u.x) + + (c - a)* u.y * (1.0 - u.x) + + (d - b) * u.x * u.y; +} + +mat2 rotate(float _angle){ + return mat2(vec2(cos(_angle), -sin(_angle)), + vec2(sin(_angle), cos(_angle))); +} + +vec4 screen(vec4 base, vec4 blend){ + return 1.0 - (1.0 - base) * (1.0 - blend); +} + +void fragment() +{ + + // Rotate, skew and move the UVs + vec2 transformed_uv = ( rotate(angle) * (UV - position) ) / ( (UV.y + spread) - (UV.y * spread) ); + + // Animate the ray according the the new transformed UVs + vec2 ray1 = vec2(transformed_uv.x * ray1_density + sin(TIME * 0.1 * speed) * (ray1_density * 0.2) + seed, 1.0); + vec2 ray2 = vec2(transformed_uv.x * ray2_density + sin(TIME * 0.2 * speed) * (ray1_density * 0.2) + seed, 1.0); + + // Cut off the ray's edges + float cut = step(cutoff, transformed_uv.x) * step(cutoff, 1.0 - transformed_uv.x); + ray1 *= cut; + ray2 *= cut; + + // Apply the noise pattern (i.e. create the rays) + float rays; + + if (hdr){ + // This is not really HDR, but check this to not clamp the two merged rays making + // their values go over 1.0. Can make for some nice effect + rays = noise(ray1) + (noise(ray2) * ray2_intensity); + } + else{ + rays = clamp(noise(ray1) + (noise(ray2) * ray2_intensity), 0., 1.); + } + + // Fade out edges + rays *= smoothstep(0.0, falloff, (1.0 - UV.y)); // Bottom + rays *= smoothstep(0.0 + cutoff, edge_fade + cutoff, transformed_uv.x); // Left + rays *= smoothstep(0.0 + cutoff, edge_fade + cutoff, 1.0 - transformed_uv.x); // Right + + // Color to the rays + vec3 shine = vec3(rays) * color.rgb; + + // Try different blending modes for a nicer effect. "Screen" is included in the code, + // but take a look at https://godotshaders.com/snippet/blending-modes/ for more. + // With "Screen" blend mode: + shine = screen(texture(SCREEN_TEXTURE, SCREEN_UV), vec4(color)).rgb; + + COLOR = vec4(shine, rays * color.a); +} \ No newline at end of file diff --git a/DungeonShooting_Godot/scene/test/TestNewTerrain.tscn b/DungeonShooting_Godot/scene/test/TestNewTerrain.tscn index 0309654..0574cfd 100644 --- a/DungeonShooting_Godot/scene/test/TestNewTerrain.tscn +++ b/DungeonShooting_Godot/scene/test/TestNewTerrain.tscn @@ -1,10 +1,12 @@ -[gd_scene load_steps=7 format=3 uid="uid://iwm27vpirfef"] +[gd_scene load_steps=10 format=3 uid="uid://iwm27vpirfef"] [ext_resource type="Script" path="res://src/test/TestNewTerrain.cs" id="1_68mbo"] [ext_resource type="TileSet" uid="uid://cu80e6kxc3c3x" path="res://resource/tileSet/map2/TileSet2.tres" id="1_ig8lo"] [ext_resource type="PackedScene" uid="uid://cxhrcytrx0kcf" path="res://prefab/role/Role0001.tscn" id="3_bo13a"] [ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="4_iy0ux"] [ext_resource type="Texture2D" uid="uid://bda63puujv425" path="res://resource/sprite/role/common/Role_query.png" id="5_rv0km"] +[ext_resource type="Shader" path="res://resource/material/GodRays.gdshader" id="6_bcjt6"] +[ext_resource type="Texture2D" uid="uid://uhhfgdhpk7i4" path="res://icon.png" id="7_34lsg"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_7va3f"] resource_local_to_scene = true @@ -18,6 +20,22 @@ shader_parameter/outline_use_blend = true shader_parameter/grey = 0.0 +[sub_resource type="ShaderMaterial" id="ShaderMaterial_fwac7"] +shader = ExtResource("6_bcjt6") +shader_parameter/angle = 0.535 +shader_parameter/position = 0.28 +shader_parameter/spread = 0.5 +shader_parameter/cutoff = 0.1 +shader_parameter/falloff = 0.221 +shader_parameter/edge_fade = 0.15 +shader_parameter/speed = 1.0 +shader_parameter/ray1_density = 8.0 +shader_parameter/ray2_density = 30.0 +shader_parameter/ray2_intensity = 0.3 +shader_parameter/color = Color(1, 0.901961, 0.65098, 0.619608) +shader_parameter/hdr = false +shader_parameter/seed = 5.0 + [node name="TestNewTerrain" type="Node2D"] scale = Vector2(2, 2) script = ExtResource("1_68mbo") @@ -100,5 +118,11 @@ position = Vector2(103, 32.5) texture = ExtResource("5_rv0km") +[node name="Sprite2D" type="Sprite2D" parent="."] +material = SubResource("ShaderMaterial_fwac7") +position = Vector2(420, 252) +scale = Vector2(3.09375, 2.65625) +texture = ExtResource("7_34lsg") + [editable path="TileMap2/NormalLayer/Role0001"] [editable path="TileMap2/YSortLayer/Role0001"] diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrain.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrain.cs index ce24c4f..57b15ea 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrain.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/TileSetEditorTerrain.cs @@ -6,17 +6,17 @@ public abstract partial class TileSetEditorTerrain : UiBase { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer /// - public HSplitContainer L_HSplitContainer + public VSplitContainer L_VSplitContainer { get { - if (_L_HSplitContainer == null) _L_HSplitContainer = new HSplitContainer((TileSetEditorTerrainPanel)this, GetNode("HSplitContainer")); - return _L_HSplitContainer; + if (_L_VSplitContainer == null) _L_VSplitContainer = new VSplitContainer((TileSetEditorTerrainPanel)this, GetNode("VSplitContainer")); + return _L_VSplitContainer; } } - private HSplitContainer _L_HSplitContainer; + private VSplitContainer _L_VSplitContainer; public TileSetEditorTerrain() : base(nameof(TileSetEditorTerrain)) @@ -25,198 +25,110 @@ public sealed override void OnInitNestedUi() { - _ = L_HSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg; - _ = L_HSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg; + _ = L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_HBoxContainer.L_LeftBottomBg; + _ = L_VSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg; } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.CellRoot.LeftCell + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.Panel.ScrollContainer.VBoxContainer.TabButton.NinePatchRect /// - public class LeftCell : UiNode + public class NinePatchRect : UiNode { - public LeftCell(TileSetEditorTerrainPanel uiPanel, UI.TileSetEditorTerrain.TerrainCellDragHandler node) : base(uiPanel, node) { } - public override LeftCell Clone() => new (UiPanel, (UI.TileSetEditorTerrain.TerrainCellDragHandler)Instance.Duplicate()); + public NinePatchRect(TileSetEditorTerrainPanel uiPanel, Godot.NinePatchRect node) : base(uiPanel, node) { } + public override NinePatchRect Clone() => new (UiPanel, (Godot.NinePatchRect)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.CellRoot + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.Panel.ScrollContainer.VBoxContainer.TabButton /// - public class CellRoot : UiNode + public class TabButton : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.LeftCell + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.Panel.ScrollContainer.VBoxContainer.NinePatchRect /// - public LeftCell L_LeftCell + public NinePatchRect L_NinePatchRect { get { - if (_L_LeftCell == null) _L_LeftCell = new LeftCell(UiPanel, Instance.GetNode("LeftCell")); - return _L_LeftCell; + if (_L_NinePatchRect == null) _L_NinePatchRect = new NinePatchRect(UiPanel, Instance.GetNode("NinePatchRect")); + return _L_NinePatchRect; } } - private LeftCell _L_LeftCell; + private NinePatchRect _L_NinePatchRect; - public CellRoot(TileSetEditorTerrainPanel uiPanel, Godot.Control node) : base(uiPanel, node) { } - public override CellRoot Clone() => new (UiPanel, (Godot.Control)Instance.Duplicate()); + public TabButton(TileSetEditorTerrainPanel uiPanel, Godot.Button node) : base(uiPanel, node) { } + public override TabButton Clone() => new (UiPanel, (Godot.Button)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.MaskBrush + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.Panel.ScrollContainer.VBoxContainer /// - public class MaskBrush : UiNode - { - public MaskBrush(TileSetEditorTerrainPanel uiPanel, EditorMaskBrush node) : base(uiPanel, node) { } - public override MaskBrush Clone() => new (UiPanel, (EditorMaskBrush)Instance.Duplicate()); - } - - /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture - /// - public class TileTexture : UiNode + public class VBoxContainer : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.LeftBg.CellRoot + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.Panel.ScrollContainer.TabButton /// - public CellRoot L_CellRoot + public TabButton L_TabButton { get { - if (_L_CellRoot == null) _L_CellRoot = new CellRoot(UiPanel, Instance.GetNode("CellRoot")); - return _L_CellRoot; + if (_L_TabButton == null) _L_TabButton = new TabButton(UiPanel, Instance.GetNode("TabButton")); + return _L_TabButton; } } - private CellRoot _L_CellRoot; + private TabButton _L_TabButton; - /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.LeftBg.MaskBrush - /// - public MaskBrush L_MaskBrush - { - get - { - if (_L_MaskBrush == null) _L_MaskBrush = new MaskBrush(UiPanel, Instance.GetNode("MaskBrush")); - return _L_MaskBrush; - } - } - private MaskBrush _L_MaskBrush; - - public TileTexture(TileSetEditorTerrainPanel uiPanel, Godot.TextureRect node) : base(uiPanel, node) { } - public override TileTexture Clone() => new (UiPanel, (Godot.TextureRect)Instance.Duplicate()); + public VBoxContainer(TileSetEditorTerrainPanel uiPanel, Godot.VBoxContainer node) : base(uiPanel, node) { } + public override VBoxContainer Clone() => new (UiPanel, (Godot.VBoxContainer)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.LeftBg.Grid + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.Panel.ScrollContainer /// - public class Grid : UiNode - { - public Grid(TileSetEditorTerrainPanel uiPanel, Godot.ColorRect node) : base(uiPanel, node) { } - public override Grid Clone() => new (UiPanel, (Godot.ColorRect)Instance.Duplicate()); - } - - /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.LeftBg.FocusBtn - /// - public class FocusBtn : UiNode - { - public FocusBtn(TileSetEditorTerrainPanel uiPanel, Godot.TextureButton node) : base(uiPanel, node) { } - public override FocusBtn Clone() => new (UiPanel, (Godot.TextureButton)Instance.Duplicate()); - } - - /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.LeftBg - /// - public class LeftBg : UiNode + public class ScrollContainer : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.TileTexture + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.Panel.VBoxContainer /// - public TileTexture L_TileTexture + public VBoxContainer L_VBoxContainer { get { - if (_L_TileTexture == null) _L_TileTexture = new TileTexture(UiPanel, Instance.GetNode("TileTexture")); - return _L_TileTexture; + if (_L_VBoxContainer == null) _L_VBoxContainer = new VBoxContainer(UiPanel, Instance.GetNode("VBoxContainer")); + return _L_VBoxContainer; } } - private TileTexture _L_TileTexture; + private VBoxContainer _L_VBoxContainer; - /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.Grid - /// - public Grid L_Grid - { - get - { - if (_L_Grid == null) _L_Grid = new Grid(UiPanel, Instance.GetNode("Grid")); - return _L_Grid; - } - } - private Grid _L_Grid; - - /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.FocusBtn - /// - public FocusBtn L_FocusBtn - { - get - { - if (_L_FocusBtn == null) _L_FocusBtn = new FocusBtn(UiPanel, Instance.GetNode("FocusBtn")); - return _L_FocusBtn; - } - } - private FocusBtn _L_FocusBtn; - - public LeftBg(TileSetEditorTerrainPanel uiPanel, UI.TileSetEditorTerrain.TileEditArea node) : base(uiPanel, node) { } - public override LeftBg Clone() => new (UiPanel, (UI.TileSetEditorTerrain.TileEditArea)Instance.Duplicate()); + public ScrollContainer(TileSetEditorTerrainPanel uiPanel, Godot.ScrollContainer node) : base(uiPanel, node) { } + public override ScrollContainer Clone() => new (UiPanel, (Godot.ScrollContainer)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.Panel /// - public class MarginContainer : UiNode + public class Panel : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.LeftBg + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.ScrollContainer /// - public LeftBg L_LeftBg + public ScrollContainer L_ScrollContainer { get { - if (_L_LeftBg == null) _L_LeftBg = new LeftBg(UiPanel, Instance.GetNode("LeftBg")); - return _L_LeftBg; + if (_L_ScrollContainer == null) _L_ScrollContainer = new ScrollContainer(UiPanel, Instance.GetNode("ScrollContainer")); + return _L_ScrollContainer; } } - private LeftBg _L_LeftBg; + private ScrollContainer _L_ScrollContainer; - public MarginContainer(TileSetEditorTerrainPanel uiPanel, Godot.MarginContainer node) : base(uiPanel, node) { } - public override MarginContainer Clone() => new (UiPanel, (Godot.MarginContainer)Instance.Duplicate()); + public Panel(TileSetEditorTerrainPanel uiPanel, Godot.Panel node) : base(uiPanel, node) { } + public override Panel Clone() => new (UiPanel, (Godot.Panel)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom - /// - public class LeftBottom : UiNode - { - /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.MarginContainer - /// - public MarginContainer L_MarginContainer - { - get - { - if (_L_MarginContainer == null) _L_MarginContainer = new MarginContainer(UiPanel, Instance.GetNode("MarginContainer")); - return _L_MarginContainer; - } - } - private MarginContainer _L_MarginContainer; - - public LeftBottom(TileSetEditorTerrainPanel uiPanel, Godot.Panel node) : base(uiPanel, node) { } - public override LeftBottom Clone() => new (UiPanel, (Godot.Panel)Instance.Duplicate()); - } - - /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.CellRoot.RightCell.CellTexture + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.TerrainRoot.CellRoot.RightCell.CellTexture /// public class CellTexture : UiNode { @@ -225,12 +137,12 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.CellRoot.RightCell + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.TerrainRoot.CellRoot.RightCell /// public class RightCell : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.CellRoot.CellTexture + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.TerrainRoot.CellRoot.CellTexture /// public CellTexture L_CellTexture { @@ -247,12 +159,12 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.CellRoot + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.TerrainRoot.CellRoot /// - public class CellRoot_1 : UiNode + public class CellRoot : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.RightCell + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.TerrainRoot.RightCell /// public RightCell L_RightCell { @@ -264,12 +176,12 @@ } private RightCell _L_RightCell; - public CellRoot_1(TileSetEditorTerrainPanel uiPanel, Godot.Control node) : base(uiPanel, node) { } - public override CellRoot_1 Clone() => new (UiPanel, (Godot.Control)Instance.Duplicate()); + public CellRoot(TileSetEditorTerrainPanel uiPanel, Godot.Control node) : base(uiPanel, node) { } + public override CellRoot Clone() => new (UiPanel, (Godot.Control)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.TerrainTexture + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.TerrainRoot.TerrainTexture /// public class TerrainTexture : UiNode { @@ -278,7 +190,7 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.Brush + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.TerrainRoot.Brush /// public class Brush : UiNode { @@ -287,25 +199,25 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.TerrainRoot /// public class TerrainRoot : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.CellRoot + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.CellRoot /// - public CellRoot_1 L_CellRoot + public CellRoot L_CellRoot { get { - if (_L_CellRoot == null) _L_CellRoot = new CellRoot_1(UiPanel, Instance.GetNode("CellRoot")); + if (_L_CellRoot == null) _L_CellRoot = new CellRoot(UiPanel, Instance.GetNode("CellRoot")); return _L_CellRoot; } } - private CellRoot_1 _L_CellRoot; + private CellRoot _L_CellRoot; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainTexture + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.TerrainTexture /// public TerrainTexture L_TerrainTexture { @@ -318,7 +230,7 @@ private TerrainTexture _L_TerrainTexture; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.Brush + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.Brush /// public Brush L_Brush { @@ -335,30 +247,30 @@ } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.Grid + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.Grid /// - public class Grid_1 : UiNode + public class Grid : UiNode { - public Grid_1(TileSetEditorTerrainPanel uiPanel, Godot.ColorRect node) : base(uiPanel, node) { } - public override Grid_1 Clone() => new (UiPanel, (Godot.ColorRect)Instance.Duplicate()); + public Grid(TileSetEditorTerrainPanel uiPanel, Godot.ColorRect node) : base(uiPanel, node) { } + public override Grid Clone() => new (UiPanel, (Godot.ColorRect)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.FocusBtn + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.FocusBtn /// - public class FocusBtn_1 : UiNode + public class FocusBtn : UiNode { - public FocusBtn_1(TileSetEditorTerrainPanel uiPanel, Godot.TextureButton node) : base(uiPanel, node) { } - public override FocusBtn_1 Clone() => new (UiPanel, (Godot.TextureButton)Instance.Duplicate()); + public FocusBtn(TileSetEditorTerrainPanel uiPanel, Godot.TextureButton node) : base(uiPanel, node) { } + public override FocusBtn Clone() => new (UiPanel, (Godot.TextureButton)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg /// public class LeftBottomBg : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.TerrainRoot + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.TerrainRoot /// public TerrainRoot L_TerrainRoot { @@ -371,7 +283,227 @@ private TerrainRoot _L_TerrainRoot; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.Grid + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.Grid + /// + public Grid L_Grid + { + get + { + if (_L_Grid == null) _L_Grid = new Grid(UiPanel, Instance.GetNode("Grid")); + return _L_Grid; + } + } + private Grid _L_Grid; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.FocusBtn + /// + public FocusBtn L_FocusBtn + { + get + { + if (_L_FocusBtn == null) _L_FocusBtn = new FocusBtn(UiPanel, Instance.GetNode("FocusBtn")); + return _L_FocusBtn; + } + } + private FocusBtn _L_FocusBtn; + + public LeftBottomBg(TileSetEditorTerrainPanel uiPanel, UI.TileSetEditorTerrain.TileEditTerrain node) : base(uiPanel, node) { } + public override LeftBottomBg Clone() => new (UiPanel, (UI.TileSetEditorTerrain.TileEditTerrain)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer + /// + public class HBoxContainer : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.Panel + /// + public Panel L_Panel + { + get + { + if (_L_Panel == null) _L_Panel = new Panel(UiPanel, Instance.GetNode("Panel")); + return _L_Panel; + } + } + private Panel _L_Panel; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg + /// + public LeftBottomBg L_LeftBottomBg + { + get + { + if (_L_LeftBottomBg == null) _L_LeftBottomBg = new LeftBottomBg(UiPanel, Instance.GetNode("LeftBottomBg")); + return _L_LeftBottomBg; + } + } + private LeftBottomBg _L_LeftBottomBg; + + public HBoxContainer(TileSetEditorTerrainPanel uiPanel, Godot.HBoxContainer node) : base(uiPanel, node) { } + public override HBoxContainer Clone() => new (UiPanel, (Godot.HBoxContainer)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer + /// + public class MarginContainer : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.HBoxContainer + /// + public HBoxContainer L_HBoxContainer + { + get + { + if (_L_HBoxContainer == null) _L_HBoxContainer = new HBoxContainer(UiPanel, Instance.GetNode("HBoxContainer")); + return _L_HBoxContainer; + } + } + private HBoxContainer _L_HBoxContainer; + + public MarginContainer(TileSetEditorTerrainPanel uiPanel, Godot.MarginContainer node) : base(uiPanel, node) { } + public override MarginContainer Clone() => new (UiPanel, (Godot.MarginContainer)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2 + /// + public class LeftBottom2 : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.MarginContainer + /// + public MarginContainer L_MarginContainer + { + get + { + if (_L_MarginContainer == null) _L_MarginContainer = new MarginContainer(UiPanel, Instance.GetNode("MarginContainer")); + return _L_MarginContainer; + } + } + private MarginContainer _L_MarginContainer; + + public LeftBottom2(TileSetEditorTerrainPanel uiPanel, Godot.Panel node) : base(uiPanel, node) { } + public override LeftBottom2 Clone() => new (UiPanel, (Godot.Panel)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.CellRoot.LeftCell + /// + public class LeftCell : UiNode + { + public LeftCell(TileSetEditorTerrainPanel uiPanel, UI.TileSetEditorTerrain.TerrainCellDragHandler node) : base(uiPanel, node) { } + public override LeftCell Clone() => new (UiPanel, (UI.TileSetEditorTerrain.TerrainCellDragHandler)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.CellRoot + /// + public class CellRoot_1 : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.LeftCell + /// + public LeftCell L_LeftCell + { + get + { + if (_L_LeftCell == null) _L_LeftCell = new LeftCell(UiPanel, Instance.GetNode("LeftCell")); + return _L_LeftCell; + } + } + private LeftCell _L_LeftCell; + + public CellRoot_1(TileSetEditorTerrainPanel uiPanel, Godot.Control node) : base(uiPanel, node) { } + public override CellRoot_1 Clone() => new (UiPanel, (Godot.Control)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.MaskBrush + /// + public class MaskBrush : UiNode + { + public MaskBrush(TileSetEditorTerrainPanel uiPanel, EditorMaskBrush node) : base(uiPanel, node) { } + public override MaskBrush Clone() => new (UiPanel, (EditorMaskBrush)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture + /// + public class TileTexture : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.CellRoot + /// + public CellRoot_1 L_CellRoot + { + get + { + if (_L_CellRoot == null) _L_CellRoot = new CellRoot_1(UiPanel, Instance.GetNode("CellRoot")); + return _L_CellRoot; + } + } + private CellRoot_1 _L_CellRoot; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.MaskBrush + /// + public MaskBrush L_MaskBrush + { + get + { + if (_L_MaskBrush == null) _L_MaskBrush = new MaskBrush(UiPanel, Instance.GetNode("MaskBrush")); + return _L_MaskBrush; + } + } + private MaskBrush _L_MaskBrush; + + public TileTexture(TileSetEditorTerrainPanel uiPanel, Godot.TextureRect node) : base(uiPanel, node) { } + public override TileTexture Clone() => new (UiPanel, (Godot.TextureRect)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.Grid + /// + public class Grid_1 : UiNode + { + public Grid_1(TileSetEditorTerrainPanel uiPanel, Godot.ColorRect node) : base(uiPanel, node) { } + public override Grid_1 Clone() => new (UiPanel, (Godot.ColorRect)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.FocusBtn + /// + public class FocusBtn_1 : UiNode + { + public FocusBtn_1(TileSetEditorTerrainPanel uiPanel, Godot.TextureButton node) : base(uiPanel, node) { } + public override FocusBtn_1 Clone() => new (UiPanel, (Godot.TextureButton)Instance.Duplicate()); + } + + /// + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg + /// + public class LeftBg : UiNode + { + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.TileTexture + /// + public TileTexture L_TileTexture + { + get + { + if (_L_TileTexture == null) _L_TileTexture = new TileTexture(UiPanel, Instance.GetNode("TileTexture")); + return _L_TileTexture; + } + } + private TileTexture _L_TileTexture; + + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.Grid /// public Grid_1 L_Grid { @@ -384,7 +516,7 @@ private Grid_1 _L_Grid; /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.FocusBtn + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.FocusBtn /// public FocusBtn_1 L_FocusBtn { @@ -396,39 +528,39 @@ } private FocusBtn_1 _L_FocusBtn; - public LeftBottomBg(TileSetEditorTerrainPanel uiPanel, UI.TileSetEditorTerrain.TileEditTerrain node) : base(uiPanel, node) { } - public override LeftBottomBg Clone() => new (UiPanel, (UI.TileSetEditorTerrain.TileEditTerrain)Instance.Duplicate()); + public LeftBg(TileSetEditorTerrainPanel uiPanel, UI.TileSetEditorTerrain.TileEditArea node) : base(uiPanel, node) { } + public override LeftBg Clone() => new (UiPanel, (UI.TileSetEditorTerrain.TileEditArea)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer /// public class MarginContainer_1 : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.LeftBottomBg + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.LeftBg /// - public LeftBottomBg L_LeftBottomBg + public LeftBg L_LeftBg { get { - if (_L_LeftBottomBg == null) _L_LeftBottomBg = new LeftBottomBg(UiPanel, Instance.GetNode("LeftBottomBg")); - return _L_LeftBottomBg; + if (_L_LeftBg == null) _L_LeftBg = new LeftBg(UiPanel, Instance.GetNode("LeftBg")); + return _L_LeftBg; } } - private LeftBottomBg _L_LeftBottomBg; + private LeftBg _L_LeftBg; public MarginContainer_1(TileSetEditorTerrainPanel uiPanel, Godot.MarginContainer node) : base(uiPanel, node) { } public override MarginContainer_1 Clone() => new (UiPanel, (Godot.MarginContainer)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2 + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer.LeftBottom /// - public class LeftBottom2 : UiNode + public class LeftBottom : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.MarginContainer + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.MarginContainer /// public MarginContainer_1 L_MarginContainer { @@ -440,29 +572,16 @@ } private MarginContainer_1 _L_MarginContainer; - public LeftBottom2(TileSetEditorTerrainPanel uiPanel, Godot.Panel node) : base(uiPanel, node) { } - public override LeftBottom2 Clone() => new (UiPanel, (Godot.Panel)Instance.Duplicate()); + public LeftBottom(TileSetEditorTerrainPanel uiPanel, Godot.Panel node) : base(uiPanel, node) { } + public override LeftBottom Clone() => new (UiPanel, (Godot.Panel)Instance.Duplicate()); } /// - /// 类型: , 路径: TileSetEditorTerrain.HSplitContainer + /// 类型: , 路径: TileSetEditorTerrain.VSplitContainer /// - public class HSplitContainer : UiNode + public class VSplitContainer : UiNode { /// - /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.LeftBottom - /// - public LeftBottom L_LeftBottom - { - get - { - if (_L_LeftBottom == null) _L_LeftBottom = new LeftBottom(UiPanel, Instance.GetNode("LeftBottom")); - return _L_LeftBottom; - } - } - private LeftBottom _L_LeftBottom; - - /// /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.LeftBottom2 /// public LeftBottom2 L_LeftBottom2 @@ -475,74 +594,117 @@ } private LeftBottom2 _L_LeftBottom2; - public HSplitContainer(TileSetEditorTerrainPanel uiPanel, Godot.HSplitContainer node) : base(uiPanel, node) { } - public override HSplitContainer Clone() => new (UiPanel, (Godot.HSplitContainer)Instance.Duplicate()); + /// + /// 使用 Instance 属性获取当前节点实例对象, 节点类型: , 节点路径: TileSetEditorTerrain.LeftBottom + /// + public LeftBottom L_LeftBottom + { + get + { + if (_L_LeftBottom == null) _L_LeftBottom = new LeftBottom(UiPanel, Instance.GetNode("LeftBottom")); + return _L_LeftBottom; + } + } + private LeftBottom _L_LeftBottom; + + public VSplitContainer(TileSetEditorTerrainPanel uiPanel, Godot.VSplitContainer node) : base(uiPanel, node) { } + public override VSplitContainer Clone() => new (UiPanel, (Godot.VSplitContainer)Instance.Duplicate()); } /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.CellRoot.LeftCell + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.Panel.ScrollContainer.VBoxContainer.TabButton.NinePatchRect /// - public LeftCell S_LeftCell => L_HSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg.L_TileTexture.L_CellRoot.L_LeftCell; + public NinePatchRect S_NinePatchRect => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_HBoxContainer.L_Panel.L_ScrollContainer.L_VBoxContainer.L_TabButton.L_NinePatchRect; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.MaskBrush + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.Panel.ScrollContainer.VBoxContainer.TabButton /// - public MaskBrush S_MaskBrush => L_HSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg.L_TileTexture.L_MaskBrush; + public TabButton S_TabButton => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_HBoxContainer.L_Panel.L_ScrollContainer.L_VBoxContainer.L_TabButton; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.Panel.ScrollContainer.VBoxContainer /// - public TileTexture S_TileTexture => L_HSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg.L_TileTexture; + public VBoxContainer S_VBoxContainer => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_HBoxContainer.L_Panel.L_ScrollContainer.L_VBoxContainer; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom.MarginContainer.LeftBg + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.Panel.ScrollContainer /// - public LeftBg S_LeftBg => L_HSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg; + public ScrollContainer S_ScrollContainer => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_HBoxContainer.L_Panel.L_ScrollContainer; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.Panel /// - public LeftBottom S_LeftBottom => L_HSplitContainer.L_LeftBottom; + public Panel S_Panel => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_HBoxContainer.L_Panel; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.CellRoot.RightCell.CellTexture + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.TerrainRoot.CellRoot.RightCell.CellTexture /// - public CellTexture S_CellTexture => L_HSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg.L_TerrainRoot.L_CellRoot.L_RightCell.L_CellTexture; + public CellTexture S_CellTexture => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_HBoxContainer.L_LeftBottomBg.L_TerrainRoot.L_CellRoot.L_RightCell.L_CellTexture; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.CellRoot.RightCell + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.TerrainRoot.CellRoot.RightCell /// - public RightCell S_RightCell => L_HSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg.L_TerrainRoot.L_CellRoot.L_RightCell; + public RightCell S_RightCell => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_HBoxContainer.L_LeftBottomBg.L_TerrainRoot.L_CellRoot.L_RightCell; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.TerrainTexture + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.TerrainRoot.TerrainTexture /// - public TerrainTexture S_TerrainTexture => L_HSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg.L_TerrainRoot.L_TerrainTexture; + public TerrainTexture S_TerrainTexture => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_HBoxContainer.L_LeftBottomBg.L_TerrainRoot.L_TerrainTexture; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot.Brush + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.TerrainRoot.Brush /// - public Brush S_Brush => L_HSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg.L_TerrainRoot.L_Brush; + public Brush S_Brush => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_HBoxContainer.L_LeftBottomBg.L_TerrainRoot.L_Brush; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg.TerrainRoot + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg.TerrainRoot /// - public TerrainRoot S_TerrainRoot => L_HSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg.L_TerrainRoot; + public TerrainRoot S_TerrainRoot => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_HBoxContainer.L_LeftBottomBg.L_TerrainRoot; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2.MarginContainer.LeftBottomBg + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer.LeftBottomBg /// - public LeftBottomBg S_LeftBottomBg => L_HSplitContainer.L_LeftBottom2.L_MarginContainer.L_LeftBottomBg; + public LeftBottomBg S_LeftBottomBg => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_HBoxContainer.L_LeftBottomBg; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer.LeftBottom2 + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2.MarginContainer.HBoxContainer /// - public LeftBottom2 S_LeftBottom2 => L_HSplitContainer.L_LeftBottom2; + public HBoxContainer S_HBoxContainer => L_VSplitContainer.L_LeftBottom2.L_MarginContainer.L_HBoxContainer; /// - /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.HSplitContainer + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom2 /// - public HSplitContainer S_HSplitContainer => L_HSplitContainer; + public LeftBottom2 S_LeftBottom2 => L_VSplitContainer.L_LeftBottom2; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.CellRoot.LeftCell + /// + public LeftCell S_LeftCell => L_VSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg.L_TileTexture.L_CellRoot.L_LeftCell; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture.MaskBrush + /// + public MaskBrush S_MaskBrush => L_VSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg.L_TileTexture.L_MaskBrush; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg.TileTexture + /// + public TileTexture S_TileTexture => L_VSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg.L_TileTexture; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom.MarginContainer.LeftBg + /// + public LeftBg S_LeftBg => L_VSplitContainer.L_LeftBottom.L_MarginContainer.L_LeftBg; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer.LeftBottom + /// + public LeftBottom S_LeftBottom => L_VSplitContainer.L_LeftBottom; + + /// + /// 场景中唯一名称的节点, 节点类型: , 节点路径: TileSetEditorTerrain.VSplitContainer + /// + public VSplitContainer S_VSplitContainer => L_VSplitContainer; } diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/right/TileEditTerrain.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/right/TileEditTerrain.cs index e4b5d2a..7a40a66 100644 --- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/right/TileEditTerrain.cs +++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/right/TileEditTerrain.cs @@ -15,13 +15,6 @@ UiNode.L_FocusBtn.Instance.Pressed += OnFocusClick; } - public override void _Process(double delta) - { - var flag = UiNode.UiPanel.IsDraggingCell; - UiNode.L_Grid.Instance.Visible = flag; - UiNode.L_TerrainRoot.L_Brush.Instance.Visible = flag; - } - /// /// 改变TileSet纹理 ///