Breakpoint

This commit is contained in:
CortexCore 2023-09-16 01:16:31 +08:00
parent eabf0c6188
commit 964e1a5875
145 changed files with 89 additions and 11999 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,6 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading;
using BITKit.Core.Entites;
// ReSharper disable All
namespace BITKit;
/// <summary>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bxt8k0tmbxas0"
path="res://.godot/imported/Icon_充电模组.png-9e040ac4f3effe84fb8ebecdc7c2aac0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Mods/CAICT/Arts/Icons/Icon_充电模组.png"
dest_files=["res://.godot/imported/Icon_充电模组.png-9e040ac4f3effe84fb8ebecdc7c2aac0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b8bffxqcl5co1"
path="res://.godot/imported/Icon_卡扣.png-4548b7b67aa0e124c6676e419b7daf09.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Mods/CAICT/Arts/Icons/Icon_卡扣.png"
dest_files=["res://.godot/imported/Icon_卡扣.png-4548b7b67aa0e124c6676e419b7daf09.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ibj6hkvlarxe"
path="res://.godot/imported/Icon_笔记本壳.png-897d6ccd4d88bdc1ca9474194694e0b0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Mods/CAICT/Arts/Icons/Icon_笔记本壳.png"
dest_files=["res://.godot/imported/Icon_笔记本壳.png-897d6ccd4d88bdc1ca9474194694e0b0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bem13xcchfapu"
path="res://.godot/imported/Icon_纸张.png-77d6aeaaa54c7af7b0766c96e50065c9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Mods/CAICT/Arts/Icons/Icon_纸张.png"
dest_files=["res://.godot/imported/Icon_纸张.png-77d6aeaaa54c7af7b0766c96e50065c9.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@ -1,174 +0,0 @@
[gd_scene load_steps=7 format=3 uid="uid://x86mmss5del3"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXContainer.cs" id="1_asno5"]
[ext_resource type="Texture2D" uid="uid://biotbf2rpqme8" path="res://Artists/Art/Icons/icon_style_round.png" id="2_sudlp"]
[ext_resource type="Texture2D" uid="uid://yamai0emyd0a" path="res://Artists/Art/Icons/icon_ant-design_copy-twotone.png" id="3_fv51f"]
[ext_resource type="Texture2D" uid="uid://dqhcsm0j6w85j" path="res://Artists/Art/Icons/icon_material-symbols_search.png" id="3_xsyvo"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ofhjj"]
bg_color = Color(0, 0, 0, 0.501961)
corner_radius_top_left = 8
corner_radius_top_right = 8
corner_radius_bottom_right = 8
corner_radius_bottom_left = 8
shadow_size = 2
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2ohxf"]
content_margin_left = 8.0
content_margin_top = 8.0
content_margin_right = 8.0
content_margin_bottom = 8.0
bg_color = Color(0.956863, 0.956863, 0.956863, 1)
corner_radius_top_left = 8
corner_radius_top_right = 8
[node name="Container" type="PanelContainer" node_paths=PackedStringArray("label", "richTextLabel", "titleLabel", "icon", "updateTimeLabel", "createTimeLabel", "headerLabel", "mainButton", "secButton")]
custom_minimum_size = Vector2(768, 0)
theme_override_styles/panel = SubResource("StyleBoxFlat_ofhjj")
script = ExtResource("1_asno5")
label = NodePath("")
richTextLabel = NodePath("VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/MarginContainer/VBoxContainer/RichTextLabel")
titleLabel = NodePath("VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/MarginContainer/VBoxContainer/Label")
icon = NodePath("")
updateTimeLabel = NodePath("VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer2/CreateTime")
createTimeLabel = NodePath("VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer3/CreateTime")
headerLabel = NodePath("VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer4/Id")
mainButton = NodePath("VBoxContainer/MarginContainer/Container/VBoxContainer2/Button")
secButton = NodePath("VBoxContainer/MarginContainer/Container/VBoxContainer2/Button2")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer"]
visible = false
layout_mode = 2
theme_type_variation = &"HeaderSmall"
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_2ohxf")
text = "Header"
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="Container" type="HBoxContainer" parent="VBoxContainer/MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 16
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MarginContainer/Container"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/margin_right = 16
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MarginContainer/Container/MarginContainer"]
custom_minimum_size = Vector2(384, 0)
layout_mode = 2
[node name="Control" type="Control" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer"]
custom_minimum_size = Vector2(100, 0)
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/Control"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
scale = Vector2(0.992108, 1)
theme_override_constants/margin_left = 32
theme_override_constants/margin_top = 32
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 32
[node name="DefaultIcon" type="TextureRect" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/Control/MarginContainer"]
layout_mode = 2
texture = ExtResource("2_sudlp")
expand_mode = 1
stretch_mode = 5
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/margin_top = 8
theme_override_constants/margin_bottom = 8
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/MarginContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Name"
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="RichTextLabel" type="RichTextLabel" parent="VBoxContainer/MarginContainer/Container/MarginContainer/HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
text = "Value
"
fit_content = true
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MarginContainer/Container"]
layout_mode = 2
alignment = 1
[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/MarginContainer/Container/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer4"]
layout_mode = 2
text = "标识码:"
[node name="Id" type="Label" parent="VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer4"]
custom_minimum_size = Vector2(0, 28)
layout_mode = 2
text = "88.123.99/02020220225008"
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/MarginContainer/Container/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer2"]
layout_mode = 2
text = "最后更新时间:"
[node name="CreateTime" type="Label" parent="VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer2"]
custom_minimum_size = Vector2(0, 28)
layout_mode = 2
text = "2023年7月4日02:46:16"
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/MarginContainer/Container/VBoxContainer"]
visible = false
layout_mode = 2
[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/MarginContainer/Container/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer3"]
layout_mode = 2
text = "创建标识时间:"
[node name="CreateTime" type="Label" parent="VBoxContainer/MarginContainer/Container/VBoxContainer/HBoxContainer3"]
custom_minimum_size = Vector2(0, 28)
layout_mode = 2
text = "2023年7月4日02:46:16"
[node name="VBoxContainer2" type="VBoxContainer" parent="VBoxContainer/MarginContainer/Container"]
layout_mode = 2
[node name="Button" type="Button" parent="VBoxContainer/MarginContainer/Container/VBoxContainer2"]
layout_mode = 2
text = "复制标识到剪贴板"
icon = ExtResource("3_fv51f")
expand_icon = true
[node name="Button2" type="Button" parent="VBoxContainer/MarginContainer/Container/VBoxContainer2"]
layout_mode = 2
text = "搜索相关标识"
icon = ExtResource("3_xsyvo")
expand_icon = true

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 MiB

View File

@ -1,36 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bymrjkd63p3fs"
path.s3tc="res://.godot/imported/智慧车间.png-23cf26e34d66f1ec8465b32b60d4e609.s3tc.ctex"
path.etc2="res://.godot/imported/智慧车间.png-23cf26e34d66f1ec8465b32b60d4e609.etc2.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
}
[deps]
source_file="res://Mods/EIPC/Art/Background/智慧车间.png"
dest_files=["res://.godot/imported/智慧车间.png-23cf26e34d66f1ec8465b32b60d4e609.s3tc.ctex", "res://.godot/imported/智慧车间.png-23cf26e34d66f1ec8465b32b60d4e609.etc2.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 419 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cfqud28feqbuv"
path="res://.godot/imported/塞昇_Header.png-abbf9beda6ff202bec4486f9772d6b36.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Mods/EIPC/Art/Texture/塞昇_Header.png"
dest_files=["res://.godot/imported/塞昇_Header.png-abbf9beda6ff202bec4486f9772d6b36.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 B

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bu1alfkonwago"
path="res://.godot/imported/赛昇_DateTime_Container.png-f9c4109fc5c28edaea17fec50c9c319e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Mods/EIPC/Art/Texture/赛昇_DateTime_Container.png"
dest_files=["res://.godot/imported/赛昇_DateTime_Container.png-f9c4109fc5c28edaea17fec50c9c319e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@ -1,428 +0,0 @@
[gd_scene load_steps=36 format=3 uid="uid://cn6oq3npyox2m"]
[ext_resource type="Script" path="res://BITKit/Scripts/Core/Exec.cs" id="1_ahx04"]
[ext_resource type="Script" path="res://BITKit/Scripts/Camera/CameraService.cs" id="1_jxrvb"]
[ext_resource type="PackedScene" uid="uid://cgt3ug72q13fk" path="res://Artists/Services/SCADAService.tscn" id="4_iuksm"]
[ext_resource type="Texture2D" uid="uid://bymrjkd63p3fs" path="res://Mods/EIPC/Art/Background/智慧车间.png" id="4_lngwv"]
[ext_resource type="Script" path="res://BITKit/Scripts/Channel/MultiplexGroup.cs" id="4_ql4rq"]
[ext_resource type="PackedScene" uid="uid://du51aijsw1md8" path="res://Mods/EIPC/Models/塞昇_仓储单元.glb" id="4_twm4i"]
[ext_resource type="PackedScene" uid="uid://c3obewoadhw2g" path="res://Mods/EIPC/Models/塞昇_装配单元.glb" id="5_slm5m"]
[ext_resource type="PackedScene" uid="uid://u5wgu77krbjd" path="res://Mods/EIPC/Models/塞昇_交付单元.glb" id="6_pkxbi"]
[ext_resource type="PackedScene" uid="uid://dsq4xhhjxpfrn" path="res://Mods/EIPC/Models/塞昇_仓储台屏幕.glb" id="7_7bqbr"]
[ext_resource type="Texture2D" uid="uid://cfqud28feqbuv" path="res://Mods/EIPC/Art/Texture/塞昇_Header.png" id="7_ejfcw"]
[ext_resource type="Script" path="res://BITKit/Scripts/Web/HttpGet.cs" id="7_kr3j8"]
[ext_resource type="Script" path="res://BITKit/Scripts/Camera/FreeLookCamera.cs" id="7_t1qox"]
[ext_resource type="Texture2D" uid="uid://bu1alfkonwago" path="res://Mods/EIPC/Art/Texture/赛昇_DateTime_Container.png" id="8_3erlx"]
[ext_resource type="PackedScene" uid="uid://ckckny52056cw" path="res://Mods/EIPC/Models/塞昇_仓储台机械臂底座.glb" id="8_kpd65"]
[ext_resource type="PackedScene" uid="uid://dexpjn6olm54e" path="res://Mods/EIPC/Models/塞昇_物料箱.glb" id="9_plq0l"]
[ext_resource type="PackedScene" uid="uid://b5duoofl4hmtv" path="res://Mods/EIPC/Models/塞昇_交付转台.glb" id="9_x5y85"]
[ext_resource type="Script" path="res://BITKit/Scripts/Node2D/DateTimeNode.cs" id="9_y03m7"]
[ext_resource type="PackedScene" uid="uid://cspfisaj7i6i6" path="res://Mods/EIPC/Models/塞昇_Lite快换放置座2v4.glb" id="10_505q5"]
[ext_resource type="Script" path="res://BITKit/Scripts/Data/DataPlayer.cs" id="11_o32l8"]
[ext_resource type="PackedScene" uid="uid://hwdvb2o5dqn5" path="res://Mods/EIPC/Models/塞昇_螺钉箱.glb" id="12_85p72"]
[ext_resource type="PackedScene" uid="uid://b052dbve60nep" path="res://Mods/EIPC/Templates/塞昇机械臂.tscn" id="12_h3fov"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXPanel.cs" id="14_cq27g"]
[ext_resource type="Texture2D" uid="uid://cjk4xep1wgmul" path="res://Artists/Art/Icons/Icon_ic_baseline-video-file.png" id="18_h1whe"]
[ext_resource type="Texture2D" uid="uid://58y4a67wwco4" path="res://Artists/Art/Icons/Icon_Settings.png" id="19_v6ulc"]
[ext_resource type="Texture2D" uid="uid://df80xi7s3tq22" path="res://Artists/Art/Icons/Icon_Exit.png" id="20_rs8fa"]
[ext_resource type="Script" path="res://BITKit/Scripts/Core/BITAppProxy.cs" id="21_nxmi3"]
[ext_resource type="Script" path="res://Artists/Scripts/Factory/PlaybackService.cs" id="22_wvbt5"]
[ext_resource type="PackedScene" uid="uid://bw0rcgp1ftr1q" path="res://Artists/Templates/UXPlayback_Element.tscn" id="23_7djjv"]
[ext_resource type="PackedScene" uid="uid://njxsnsho85w6" path="res://Artists/Templates/PlaybackWindow.tscn" id="24_keupm"]
[ext_resource type="PackedScene" uid="uid://cfdqixhj2v06e" path="res://Artists/Models/机械臂/Model_SR7CL11.glb" id="30_nf0w6"]
[ext_resource type="Script" path="res://BITKit/Scripts/Debug/SetLocationManual.cs" id="31_ygwpk"]
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_3gjuw"]
panorama = ExtResource("4_lngwv")
filter = false
[sub_resource type="Sky" id="Sky_6iwuq"]
sky_material = SubResource("PanoramaSkyMaterial_3gjuw")
radiance_size = 0
[sub_resource type="Environment" id="Environment_8xcxk"]
background_mode = 2
sky = SubResource("Sky_6iwuq")
sky_custom_fov = 82.6
ambient_light_source = 2
ambient_light_color = Color(0.517647, 0.517647, 0.517647, 1)
reflected_light_source = 2
ssao_enabled = true
sdfgi_enabled = true
fog_light_energy = 0.27
fog_sun_scatter = 0.6
[sub_resource type="Curve" id="Curve_ro1wv"]
max_value = 64.0
_data = [Vector2(0.01, 8), 0.0, 0.0, 0, 0, Vector2(0.1, 32), 0.0, 0.0, 0, 0, Vector2(1, 64), 0.0, 0.0, 0, 0]
point_count = 3
[node name="CPS" type="Node"]
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(-0.753547, -0.359464, 0.550411, 0, 0.837262, 0.546802, -0.657394, 0.412041, -0.630916, 1.04752, 1.86821, -1.27831)
fov = 45.0
script = ExtResource("1_jxrvb")
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_8xcxk")
[node name="Light Group" type="Node" parent="."]
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Light Group"]
transform = Transform3D(0.700621, 0.223361, 0.677672, -0.313102, -0.757182, 0.573273, 0.641168, -0.613828, -0.460563, 0.126411, 0.811166, -0.0300771)
light_energy = 2.101
[node name="OmniLight3D" type="OmniLight3D" parent="Light Group"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.57319, 1.26976, -0.478922)
light_energy = 8.0
shadow_enabled = true
[node name="OmniLight3D2" type="OmniLight3D" parent="Light Group"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.35489, 0.542748, 1.40482)
light_energy = 8.0
shadow_enabled = true
[node name="OmniLight3D3" type="OmniLight3D" parent="Light Group"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.39982, 1.75529, -1.81889)
light_energy = 8.0
shadow_enabled = true
[node name="Exec" type="Node" parent="."]
script = ExtResource("1_ahx04")
path = "Mods/EIPC/appsettings.json"
[node name="SCADA Group" type="Node" parent="."]
script = ExtResource("4_ql4rq")
dictionary = {
"HttpGet": NodePath("HttpGet")
}
CurrentElement = "HttpGet"
[node name="DataPlayer" type="Node" parent="SCADA Group"]
script = ExtResource("11_o32l8")
[node name="HttpGet" type="Node" parent="SCADA Group"]
script = ExtResource("7_kr3j8")
url = "http://222.180.160.130:7081/WebApi/GetInfos?password=winner"
[node name="SCADAService" parent="SCADA Group" instance=ExtResource("4_iuksm")]
[node name="UX Node" type="Control" parent="."]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="HUD" type="Control" parent="UX Node"]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("14_cq27g")
allowCursor = true
allowInput = true
isStartPanel = true
[node name="TextureRect" type="TextureRect" parent="UX Node/HUD"]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -775.0
offset_right = 776.0
offset_bottom = 132.0
grow_horizontal = 2
texture = ExtResource("7_ejfcw")
expand_mode = 1
stretch_mode = 5
[node name="TextureRect2" type="NinePatchRect" parent="UX Node/HUD"]
layout_direction = 2
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -288.0
offset_top = 32.0
offset_right = -32.0
offset_bottom = 80.0
grow_horizontal = 0
texture = ExtResource("8_3erlx")
patch_margin_left = 4
patch_margin_top = 16
patch_margin_right = 4
patch_margin_bottom = 16
metadata/_edit_group_ = true
[node name="Label" type="Label" parent="UX Node/HUD/TextureRect2"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
text = "2023年6月14日01:47:46"
horizontal_alignment = 1
vertical_alignment = 1
script = ExtResource("9_y03m7")
timeFormat = "yyyy-MM-dd HH:mm:ss"
[node name="Label" type="Label" parent="UX Node/HUD"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -113.0
offset_top = 227.0
offset_right = 113.0
offset_bottom = 357.0
grow_horizontal = 2
grow_vertical = 2
text = "操作方式:
按住[鼠标中键]旋转视角
按住[Shift]+[鼠标中键]拖动视角
滑动[鼠标滚轮]缩放视角
按下[Home]切换性能视图"
[node name="VBoxContainer" type="HBoxContainer" parent="UX Node/HUD"]
layout_mode = 1
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 0
alignment = 1
[node name="Playback" type="Button" parent="UX Node/HUD/VBoxContainer"]
layout_mode = 2
text = "回放"
icon = ExtResource("18_h1whe")
flat = true
[node name="Settings" type="Button" parent="UX Node/HUD/VBoxContainer"]
layout_mode = 2
text = "设置"
icon = ExtResource("19_v6ulc")
flat = true
[node name="Exit" type="Button" parent="UX Node/HUD/VBoxContainer"]
layout_mode = 2
text = "退出"
icon = ExtResource("20_rs8fa")
flat = true
script = ExtResource("21_nxmi3")
[node name="ItemList" type="ItemList" parent="UX Node/HUD"]
layout_mode = 0
offset_left = 75.0
offset_top = 657.0
offset_right = 537.0
offset_bottom = 915.0
auto_height = true
item_count = 4
same_column_width = true
item_0/text = "测试数据1"
item_0/selectable = false
item_1/text = "测试数据2"
item_1/selectable = false
item_2/text = "测试数据3"
item_2/selectable = false
item_3/text = "测试数据4"
item_3/selectable = false
[node name="Playback" type="Panel" parent="UX Node" node_paths=PackedStringArray("root", "label", "dataPlayer")]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("22_wvbt5")
root = NodePath("VFlowContainer")
label = NodePath("Label")
template = ExtResource("23_7djjv")
dataPlayer = NodePath("../../SCADA Group/DataPlayer")
allowCursor = true
allowInput = true
[node name="ReturnButton" type="TextureButton" parent="UX Node/Playback"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="VFlowContainer" type="HFlowContainer" parent="UX Node/Playback"]
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
[node name="Label" type="Label" parent="UX Node/Playback"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -12.5
offset_right = 32.0
offset_bottom = 12.5
grow_horizontal = 2
grow_vertical = 2
text = "回放面板"
[node name="Options" type="Panel" parent="UX Node"]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("14_cq27g")
allowCursor = true
allowInput = true
[node name="ReturnButton" type="TextureButton" parent="UX Node/Options"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="PlaybackWindow" parent="UX Node" instance=ExtResource("24_keupm")]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -256.0
offset_top = 230.0
offset_right = 256.0
offset_bottom = 255.0
grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="FreeLookCamera" type="Node3D" parent="."]
transform = Transform3D(0.87193, 0.185093, -0.453298, 0, 0.925795, 0.378025, 0.489631, -0.329612, 0.807228, 0.0278897, 0.747776, -0.0496664)
script = ExtResource("7_t1qox")
fov = 45
isEnabled = true
wheelCurve = SubResource("Curve_ro1wv")
distance = 4.0
maxDistance = 8.0
[node name="塞昇_仓储单元" parent="." instance=ExtResource("4_twm4i")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.13486, -0.0501724, 0)
[node name="塞昇_装配单元" parent="." instance=ExtResource("5_slm5m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0501724, 0)
[node name="塞昇_交付单元" parent="." instance=ExtResource("6_pkxbi")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0501724, 0)
[node name="塞昇_仓储台屏幕" parent="." instance=ExtResource("7_7bqbr")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0696, 0.784043, 0.734538)
[node name="Label3D" type="Label3D" parent="塞昇_仓储台屏幕"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.023152, 0.203988, 0.0952591)
pixel_size = 0.0007
text = "控制台"
font_size = 76
width = 32.0
[node name="塞昇_仓储台机械臂底座" parent="." instance=ExtResource("8_kpd65")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.837477, 0.786089, -0.355281)
[node name="塞昇_仓储台机械臂底座2" parent="." instance=ExtResource("8_kpd65")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.92656, 0.786089, -0.355281)
[node name="塞昇_交付转台" parent="." instance=ExtResource("9_x5y85")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.303, 0.815, 0.389)
[node name="塞昇_物料箱" parent="." instance=ExtResource("9_plq0l")]
transform = Transform3D(4.37114e-08, -8.74228e-08, 1, -8.74228e-08, 1, 8.74228e-08, -1, -8.74228e-08, 4.37114e-08, -1.418, 0.778, 0.333)
[node name="塞昇_Lite快换放置座2v4" parent="." instance=ExtResource("10_505q5")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.777, -0.66)
[node name="装配机械臂" parent="." instance=ExtResource("12_h3fov")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.847, 0.955, -0.391)
[node name="Root" parent="装配机械臂" index="0"]
Id = "RB1"
[node name="螺钉机械臂" parent="." instance=ExtResource("12_h3fov")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.929088, 0.955, -0.391)
[node name="Root" parent="螺钉机械臂" index="0"]
Id = "RB2"
[node name="塞昇_螺钉箱" parent="." instance=ExtResource("12_85p72")]
[node name="Label3D" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.01909, 0.387762)
pixel_size = 0.0019
text = "转台的零件非常多
正在纯手动优化(重画一个)"
font_size = 59
[node name="Label3D2" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.43103, 1.02646, 0.383217)
pixel_size = 0.0009
text = "物料小车模型非常复杂
手动优化步骤非常多"
font_size = 69
[node name="Label3D3" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0158046, 1.35607, -0.64637)
text = "螺钉枪和夹爪的模型也非常复杂
需要很多步骤去优化"
font_size = 12
[node name="Model_SR7CL11" parent="." instance=ExtResource("30_nf0w6")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.40607, 0, 0.631328)
script = ExtResource("31_ygwpk")
[connection signal="OnPause" from="SCADA Group/DataPlayer" to="SCADA Group/HttpGet" method="SetActive" binds= [true]]
[connection signal="OnPlay" from="SCADA Group/DataPlayer" to="UX Node/PlaybackWindow" method="show"]
[connection signal="OnPlay" from="SCADA Group/DataPlayer" to="SCADA Group/HttpGet" method="SetActive" binds= [false]]
[connection signal="OnPlay" from="SCADA Group/DataPlayer" to="UX Node/PlaybackWindow/HBoxContainer/TextureButton" method="set_pressed_no_signal" binds= [true]]
[connection signal="OnPlayOrPause" from="SCADA Group/DataPlayer" to="UX Node/PlaybackWindow/HBoxContainer/TextureButton" method="set_pressed_no_signal"]
[connection signal="OnProcessPlay" from="SCADA Group/DataPlayer" to="SCADA Group/SCADAService" method="Set"]
[connection signal="OnSetNormalizeTime" from="SCADA Group/DataPlayer" to="UX Node/PlaybackWindow/HBoxContainer/NormalizeTime" method="set_value"]
[connection signal="OnSetPlaybackTime" from="SCADA Group/DataPlayer" to="UX Node/PlaybackWindow/HBoxContainer/CurrentTime" method="set_text"]
[connection signal="OnSetTotalTime" from="SCADA Group/DataPlayer" to="UX Node/PlaybackWindow/HBoxContainer/TotalTime" method="set_text"]
[connection signal="OnStop" from="SCADA Group/DataPlayer" to="UX Node/PlaybackWindow" method="hide"]
[connection signal="OnGet" from="SCADA Group/HttpGet" to="SCADA Group/SCADAService" method="Set"]
[connection signal="pressed" from="UX Node/HUD/VBoxContainer/Playback" to="UX Node/Playback" method="Open"]
[connection signal="pressed" from="UX Node/HUD/VBoxContainer/Settings" to="UX Node/Options" method="Open"]
[connection signal="pressed" from="UX Node/HUD/VBoxContainer/Exit" to="UX Node/HUD/VBoxContainer/Exit" method="Exit"]
[connection signal="pressed" from="UX Node/Playback/ReturnButton" to="UX Node/HUD" method="Open"]
[connection signal="pressed" from="UX Node/Options/ReturnButton" to="UX Node/HUD" method="Open"]
[connection signal="toggled" from="UX Node/PlaybackWindow/HBoxContainer/TextureButton" to="SCADA Group/DataPlayer" method="PlayOrPause"]
[connection signal="value_changed" from="UX Node/PlaybackWindow/HBoxContainer/NormalizeTime" to="SCADA Group/DataPlayer" method="SetNormalizeTimeThen" binds= [false]]
[editable path="UX Node/PlaybackWindow"]
[editable path="装配机械臂"]
[editable path="螺钉机械臂"]

View File

@ -1,32 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://cspfisaj7i6i6"
path="res://.godot/imported/塞昇_Lite快换放置座2v4.glb-8eec0e5fbcad06c3a4a0da0e1b921ca8.scn"
[deps]
source_file="res://Mods/EIPC/Models/塞昇_Lite快换放置座2v4.glb"
dest_files=["res://.godot/imported/塞昇_Lite快换放置座2v4.glb-8eec0e5fbcad06c3a4a0da0e1b921ca8.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={}
gltf/embedded_image_handling=1

View File

@ -1,43 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://u5wgu77krbjd"
path="res://.godot/imported/塞昇_交付单元.glb-82c93284a04303c43fc94565bde9664e.scn"
[deps]
source_file="res://Mods/EIPC/Models/塞昇_交付单元.glb"
dest_files=["res://.godot/imported/塞昇_交付单元.glb-82c93284a04303c43fc94565bde9664e.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"materials": {
"BaseColor": {
"use_external/enabled": true,
"use_external/path": "res://Artists/Materials/Material_Table_Base.tres"
},
"Metallic_Dark": {
"use_external/enabled": true,
"use_external/path": "res://Artists/Materials/Material_Table_Metallica.tres"
}
}
}
gltf/embedded_image_handling=1

View File

@ -1,43 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://b5duoofl4hmtv"
path="res://.godot/imported/塞昇_交付转台.glb-968a985a2cb5d0138ef33b40e5b312d4.scn"
[deps]
source_file="res://Mods/EIPC/Models/塞昇_交付转台.glb"
dest_files=["res://.godot/imported/塞昇_交付转台.glb-968a985a2cb5d0138ef33b40e5b312d4.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"materials": {
"BaseColor": {
"use_external/enabled": true,
"use_external/path": "res://Artists/Materials/Material_Table_Base.tres"
},
"Metallic_Dark": {
"use_external/enabled": true,
"use_external/path": "res://Artists/Materials/Material_Table_Metallica.tres"
}
}
}
gltf/embedded_image_handling=1

View File

@ -1,43 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://du51aijsw1md8"
path="res://.godot/imported/塞昇_仓储单元.glb-6691793ccad9cf6344ff8d460f6170cc.scn"
[deps]
source_file="res://Mods/EIPC/Models/塞昇_仓储单元.glb"
dest_files=["res://.godot/imported/塞昇_仓储单元.glb-6691793ccad9cf6344ff8d460f6170cc.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"materials": {
"BaseColor": {
"use_external/enabled": true,
"use_external/path": "res://Artists/Materials/Material_Table_Base.tres"
},
"Metallic_Dark": {
"use_external/enabled": true,
"use_external/path": "res://Artists/Materials/Material_Table_Metallica.tres"
}
}
}
gltf/embedded_image_handling=1

View File

@ -1,32 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dsq4xhhjxpfrn"
path="res://.godot/imported/塞昇_仓储台屏幕.glb-0bf8f1852e89f623a3fb21b026ea9433.scn"
[deps]
source_file="res://Mods/EIPC/Models/塞昇_仓储台屏幕.glb"
dest_files=["res://.godot/imported/塞昇_仓储台屏幕.glb-0bf8f1852e89f623a3fb21b026ea9433.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={}
gltf/embedded_image_handling=1

View File

@ -1,32 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://ckckny52056cw"
path="res://.godot/imported/塞昇_仓储台机械臂底座.glb-124de24681181240246a2db22e06f185.scn"
[deps]
source_file="res://Mods/EIPC/Models/塞昇_仓储台机械臂底座.glb"
dest_files=["res://.godot/imported/塞昇_仓储台机械臂底座.glb-124de24681181240246a2db22e06f185.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={}
gltf/embedded_image_handling=1

View File

@ -1,32 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dexpjn6olm54e"
path="res://.godot/imported/塞昇_物料箱.glb-900b16be684d39504400df363982dea3.scn"
[deps]
source_file="res://Mods/EIPC/Models/塞昇_物料箱.glb"
dest_files=["res://.godot/imported/塞昇_物料箱.glb-900b16be684d39504400df363982dea3.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={}
gltf/embedded_image_handling=1

View File

@ -1,32 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://hwdvb2o5dqn5"
path="res://.godot/imported/塞昇_螺钉箱.glb-7fa17270651bccfcbfa51e8df02beac5.scn"
[deps]
source_file="res://Mods/EIPC/Models/塞昇_螺钉箱.glb"
dest_files=["res://.godot/imported/塞昇_螺钉箱.glb-7fa17270651bccfcbfa51e8df02beac5.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={}
gltf/embedded_image_handling=1

View File

@ -1,43 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://c3obewoadhw2g"
path="res://.godot/imported/塞昇_装配单元.glb-e421ceced17209a43265e7ba04c5fba8.scn"
[deps]
source_file="res://Mods/EIPC/Models/塞昇_装配单元.glb"
dest_files=["res://.godot/imported/塞昇_装配单元.glb-e421ceced17209a43265e7ba04c5fba8.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"materials": {
"BaseColor": {
"use_external/enabled": true,
"use_external/path": "res://Artists/Materials/Material_Table_Base.tres"
},
"Metallic_Dark": {
"use_external/enabled": true,
"use_external/path": "res://Artists/Materials/Material_Table_Metallica.tres"
}
}
}
gltf/embedded_image_handling=1

View File

@ -1,91 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dl7swvw8ur323"
path="res://.godot/imported/塞昇机械臂.glb-12a7c30836b44a77bef0290a860bc01e.scn"
[deps]
source_file="res://Mods/EIPC/Models/赛昇机械臂/塞昇机械臂.glb"
dest_files=["res://.godot/imported/塞昇机械臂.glb-12a7c30836b44a77bef0290a860bc01e.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=false
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"materials": {
"Accent": {
"use_external/enabled": true,
"use_external/path": "res://Mods/EIPC/Models/赛昇机械臂/赛昇机械臂BaseColor.tres"
}
},
"meshes": {
"塞昇机械臂_mesh_id12002": {
"generate/lightmap_uv": 0,
"generate/lods": 1,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": false,
"save_to_file/make_streamable": "",
"save_to_file/path": ""
},
"塞昇机械臂_mesh_id16002": {
"generate/lightmap_uv": 0,
"generate/lods": 1,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": false,
"save_to_file/make_streamable": "",
"save_to_file/path": ""
},
"塞昇机械臂_mesh_id28002": {
"generate/lightmap_uv": 0,
"generate/lods": 1,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": false,
"save_to_file/make_streamable": "",
"save_to_file/path": ""
},
"塞昇机械臂_mesh_id32002": {
"generate/lightmap_uv": 0,
"generate/lods": 1,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": false,
"save_to_file/make_streamable": "",
"save_to_file/path": ""
},
"塞昇机械臂_mesh_id8002": {
"generate/lightmap_uv": 0,
"generate/lods": 1,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": false,
"save_to_file/make_streamable": "",
"save_to_file/path": ""
}
}
}
gltf/embedded_image_handling=0

View File

@ -1,6 +0,0 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://dqlyqdf4fm1yr"]
[resource]
albedo_color = Color(0, 0.380392, 0.862745, 1)
metallic = 0.83
metallic_specular = 0.22

View File

@ -1,76 +0,0 @@
[gd_scene load_steps=6 format=3 uid="uid://b052dbve60nep"]
[ext_resource type="PackedScene" uid="uid://dl7swvw8ur323" path="res://Mods/EIPC/Models/赛昇机械臂/塞昇机械臂.glb" id="1_1e8se"]
[ext_resource type="Script" path="res://BITKit/Scripts/ECS/Entity.cs" id="2_gninw"]
[ext_resource type="Script" path="res://Artists/Scripts/Factory/RotationComponent.cs" id="2_jew8k"]
[ext_resource type="Script" path="res://Artists/Scripts/Factory/IdComponent.cs" id="3_oookn"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXMetaElement.cs" id="5_mwcgj"]
[node name="塞昇机械臂" instance=ExtResource("1_1e8se")]
script = ExtResource("2_gninw")
[node name="Root" parent="." index="0"]
script = ExtResource("3_oookn")
Id = "PLC-ZK"
[node name="Axis_1" parent="Root" index="0"]
script = ExtResource("2_jew8k")
Path = "R1"
Weight = Vector3(0, 1, 0)
[node name="Axis_2" parent="Root/Axis_1" index="0"]
script = ExtResource("2_jew8k")
Path = "R2"
Weight = Vector3(1, 0, 0)
[node name="Axis_3" parent="Root/Axis_1/Axis_2" index="0"]
script = ExtResource("2_jew8k")
Path = "R3"
Weight = Vector3(1, 0, 0)
Offset = Vector3(135, 0, 0)
[node name="Axis_4" parent="Root/Axis_1/Axis_2/Axis_3" index="0"]
script = ExtResource("2_jew8k")
Path = "R4"
Weight = Vector3(0, 1, 0)
[node name="Axis_5" parent="Root/Axis_1/Axis_2/Axis_3/Axis_4" index="0"]
script = ExtResource("2_jew8k")
Path = "R5"
Weight = Vector3(-1, 0, 0)
[node name="Axis_6" parent="Root/Axis_1/Axis_2/Axis_3/Axis_4/Axis_5" index="0"]
script = ExtResource("2_jew8k")
Path = "R6"
Weight = Vector3(0, 1, 0)
[node name="Meta_R1" type="Node3D" parent="." index="1" node_paths=PackedStringArray("proxy")]
script = ExtResource("5_mwcgj")
proxy = NodePath("../Root/Axis_1")
MetaEntries = PackedStringArray("CurrentAngle")
[node name="Meta_R2" type="Node3D" parent="." index="2" node_paths=PackedStringArray("proxy")]
script = ExtResource("5_mwcgj")
proxy = NodePath("../Root/Axis_1/Axis_2")
MetaEntries = PackedStringArray("CurrentAngle")
[node name="Meta_R3" type="Node3D" parent="." index="3" node_paths=PackedStringArray("proxy")]
script = ExtResource("5_mwcgj")
proxy = NodePath("../Root/Axis_1/Axis_2/Axis_3")
MetaEntries = PackedStringArray("CurrentAngle")
[node name="Meta_R4" type="Node3D" parent="." index="4" node_paths=PackedStringArray("proxy")]
script = ExtResource("5_mwcgj")
proxy = NodePath("../Root/Axis_1/Axis_2/Axis_3/Axis_4")
MetaEntries = PackedStringArray("CurrentAngle")
[node name="Meta_R5" type="Node3D" parent="." index="5" node_paths=PackedStringArray("proxy")]
script = ExtResource("5_mwcgj")
proxy = NodePath("../Root/Axis_1/Axis_2/Axis_3/Axis_4/Axis_5")
MetaEntries = PackedStringArray("CurrentAngle")
[node name="Meta_R6" type="Node3D" parent="." index="6" node_paths=PackedStringArray("proxy")]
script = ExtResource("5_mwcgj")
isEnabled = false
proxy = NodePath("../Root/Axis_1/Axis_2/Axis_3/Axis_4/Axis_5/Axis_6")
MetaEntries = PackedStringArray("CurrentAngle")

View File

@ -1,10 +0,0 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"SCADA_GetInfos": "http://222.180.160.130:7081/WebApi/GetInfos?password=winner"
}

View File

@ -1,859 +0,0 @@
[gd_resource type="Theme" load_steps=52 format=3 uid="uid://yepsxq6dperk"]
[ext_resource type="FontFile" uid="uid://b2qfr27bxbq1c" path="res://Mods/MinimalUI/OpenSans-Regular.ttf" id="1"]
[ext_resource type="Texture2D" uid="uid://b6f200m6quo4k" path="res://Mods/MinimalUI/icons.svg" id="2"]
[sub_resource type="FontFile" id="21"]
fallbacks = Array[Font]([ExtResource("1")])
face_index = null
embolden = null
transform = null
cache/0/16/0/ascent = 0.0
cache/0/16/0/descent = 0.0
cache/0/16/0/underline_position = 0.0
cache/0/16/0/underline_thickness = 0.0
cache/0/16/0/scale = 1.0
cache/0/16/0/glyphs/0/advance = Vector2(0, 0)
cache/0/16/0/glyphs/0/offset = Vector2(0, 0)
cache/0/16/0/glyphs/0/size = Vector2(0, 0)
cache/0/16/0/glyphs/0/uv_rect = Rect2(0, 0, 0, 0)
cache/0/16/0/glyphs/0/texture_idx = -1
cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/16/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/16/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/16/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/16/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/16/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/16/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/16/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/16/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/16/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/16/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/16/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/16/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/16/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/16/0/kerning_overrides/23/0 = Vector2(0, 0)
cache/0/20/0/ascent = 0.0
cache/0/20/0/descent = 0.0
cache/0/20/0/underline_position = 0.0
cache/0/20/0/underline_thickness = 0.0
cache/0/20/0/scale = 1.0
cache/0/20/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/20/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/20/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/20/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/20/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/20/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/20/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/20/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/20/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/20/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/20/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/20/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/20/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/20/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/20/0/kerning_overrides/23/0 = Vector2(0, 0)
cache/0/28/0/ascent = 0.0
cache/0/28/0/descent = 0.0
cache/0/28/0/underline_position = 0.0
cache/0/28/0/underline_thickness = 0.0
cache/0/28/0/scale = 1.0
cache/0/28/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/28/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/28/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/28/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/28/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/28/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/28/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/28/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/28/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/28/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/28/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/28/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/28/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/28/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/28/0/kerning_overrides/23/0 = Vector2(0, 0)
cache/0/76/0/ascent = 0.0
cache/0/76/0/descent = 0.0
cache/0/76/0/underline_position = 0.0
cache/0/76/0/underline_thickness = 0.0
cache/0/76/0/scale = 1.0
cache/0/76/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/76/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/76/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/76/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/76/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/76/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/76/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/76/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/76/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/76/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/76/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/76/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/76/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/76/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/76/0/kerning_overrides/23/0 = Vector2(0, 0)
cache/0/59/0/ascent = 0.0
cache/0/59/0/descent = 0.0
cache/0/59/0/underline_position = 0.0
cache/0/59/0/underline_thickness = 0.0
cache/0/59/0/scale = 1.0
cache/0/59/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/59/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/59/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/59/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/59/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/59/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/59/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/59/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/59/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/59/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/59/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/59/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/59/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/59/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/59/0/kerning_overrides/23/0 = Vector2(0, 0)
cache/0/69/0/ascent = 0.0
cache/0/69/0/descent = 0.0
cache/0/69/0/underline_position = 0.0
cache/0/69/0/underline_thickness = 0.0
cache/0/69/0/scale = 1.0
cache/0/69/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/69/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/69/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/69/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/69/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/69/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/69/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/69/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/69/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/69/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/69/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/69/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/69/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/69/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/69/0/kerning_overrides/23/0 = Vector2(0, 0)
cache/0/12/0/ascent = 0.0
cache/0/12/0/descent = 0.0
cache/0/12/0/underline_position = 0.0
cache/0/12/0/underline_thickness = 0.0
cache/0/12/0/scale = 1.0
cache/0/12/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/12/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/12/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/12/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/12/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/12/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/12/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/12/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/12/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/12/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/12/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/12/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/12/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/12/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/12/0/kerning_overrides/23/0 = Vector2(0, 0)
cache/0/24/0/ascent = 0.0
cache/0/24/0/descent = 0.0
cache/0/24/0/underline_position = 0.0
cache/0/24/0/underline_thickness = 0.0
cache/0/24/0/scale = 1.0
cache/0/24/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/24/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/24/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/24/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/24/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/24/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/24/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/24/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/24/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/24/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/24/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/24/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/24/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/24/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/24/0/kerning_overrides/23/0 = Vector2(0, 0)
cache/0/48/0/ascent = 0.0
cache/0/48/0/descent = 0.0
cache/0/48/0/underline_position = 0.0
cache/0/48/0/underline_thickness = 0.0
cache/0/48/0/scale = 1.0
cache/0/48/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/48/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/48/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/48/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/48/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/48/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/48/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/48/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/48/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/48/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/48/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/48/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/48/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/48/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/48/0/kerning_overrides/23/0 = Vector2(0, 0)
cache/0/17/0/ascent = 0.0
cache/0/17/0/descent = 0.0
cache/0/17/0/underline_position = 0.0
cache/0/17/0/underline_thickness = 0.0
cache/0/17/0/scale = 1.0
cache/0/17/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/17/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/17/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/17/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/17/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/17/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/17/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/17/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/17/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/17/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/17/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/17/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/17/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/17/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/17/0/kerning_overrides/23/0 = Vector2(0, 0)
cache/0/18/0/ascent = 0.0
cache/0/18/0/descent = 0.0
cache/0/18/0/underline_position = 0.0
cache/0/18/0/underline_thickness = 0.0
cache/0/18/0/scale = 1.0
cache/0/18/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/18/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/18/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/18/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/18/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/18/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/18/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/18/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/18/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/18/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/18/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/18/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/18/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/18/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/18/0/kerning_overrides/23/0 = Vector2(0, 0)
cache/0/19/0/ascent = 0.0
cache/0/19/0/descent = 0.0
cache/0/19/0/underline_position = 0.0
cache/0/19/0/underline_thickness = 0.0
cache/0/19/0/scale = 1.0
cache/0/19/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/19/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/19/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/19/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/19/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/19/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/19/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/19/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/19/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/19/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/19/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/19/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/19/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/19/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/19/0/kerning_overrides/23/0 = Vector2(0, 0)
cache/0/21/0/ascent = 0.0
cache/0/21/0/descent = 0.0
cache/0/21/0/underline_position = 0.0
cache/0/21/0/underline_thickness = 0.0
cache/0/21/0/scale = 1.0
cache/0/21/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/21/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/21/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/21/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/21/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/21/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/21/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/21/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/21/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/21/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/21/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/21/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/21/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/21/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/21/0/kerning_overrides/23/0 = Vector2(0, 0)
cache/0/22/0/ascent = 0.0
cache/0/22/0/descent = 0.0
cache/0/22/0/underline_position = 0.0
cache/0/22/0/underline_thickness = 0.0
cache/0/22/0/scale = 1.0
cache/0/22/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/22/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/22/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/22/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/22/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/22/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/22/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/22/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/22/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/22/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/22/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/22/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/22/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/22/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/22/0/kerning_overrides/23/0 = Vector2(0, 0)
cache/0/23/0/ascent = 0.0
cache/0/23/0/descent = 0.0
cache/0/23/0/underline_position = 0.0
cache/0/23/0/underline_thickness = 0.0
cache/0/23/0/scale = 1.0
cache/0/23/0/kerning_overrides/16/0 = Vector2(0, 0)
cache/0/23/0/kerning_overrides/20/0 = Vector2(0, 0)
cache/0/23/0/kerning_overrides/28/0 = Vector2(0, 0)
cache/0/23/0/kerning_overrides/76/0 = Vector2(0, 0)
cache/0/23/0/kerning_overrides/59/0 = Vector2(0, 0)
cache/0/23/0/kerning_overrides/69/0 = Vector2(0, 0)
cache/0/23/0/kerning_overrides/12/0 = Vector2(0, 0)
cache/0/23/0/kerning_overrides/24/0 = Vector2(0, 0)
cache/0/23/0/kerning_overrides/48/0 = Vector2(0, 0)
cache/0/23/0/kerning_overrides/17/0 = Vector2(0, 0)
cache/0/23/0/kerning_overrides/18/0 = Vector2(0, 0)
cache/0/23/0/kerning_overrides/19/0 = Vector2(0, 0)
cache/0/23/0/kerning_overrides/21/0 = Vector2(0, 0)
cache/0/23/0/kerning_overrides/22/0 = Vector2(0, 0)
cache/0/23/0/kerning_overrides/23/0 = Vector2(0, 0)
[sub_resource type="StyleBoxFlat" id="1"]
bg_color = Color(0, 0, 0, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(0.282353, 0.282353, 0.282353, 1)
[sub_resource type="StyleBoxFlat" id="2"]
bg_color = Color(1, 1, 1, 0)
border_width_bottom = 1
border_color = Color(0.282353, 0.282353, 0.282353, 1)
expand_margin_bottom = 3.0
[sub_resource type="StyleBoxFlat" id="3"]
bg_color = Color(0, 0, 0, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(1, 1, 1, 1)
[sub_resource type="StyleBoxFlat" id="4"]
bg_color = Color(0.129412, 0.129412, 0.129412, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(1, 1, 1, 1)
[sub_resource type="AtlasTexture" id="22"]
atlas = ExtResource("2")
region = Rect2(37, 111, 18, 18)
[sub_resource type="AtlasTexture" id="23"]
atlas = ExtResource("2")
region = Rect2(85, 111, 18, 18)
[sub_resource type="AtlasTexture" id="24"]
atlas = ExtResource("2")
region = Rect2(61, 111, 18, 18)
[sub_resource type="AtlasTexture" id="25"]
atlas = ExtResource("2")
region = Rect2(13, 111, 18, 18)
[sub_resource type="StyleBoxEmpty" id="26"]
[sub_resource type="AtlasTexture" id="5"]
atlas = ExtResource("2")
region = Rect2(13, 79, 34, 19)
[sub_resource type="AtlasTexture" id="6"]
atlas = ExtResource("2")
region = Rect2(93, 79, 34, 19)
[sub_resource type="AtlasTexture" id="7"]
atlas = ExtResource("2")
region = Rect2(53, 79, 34, 19)
[sub_resource type="AtlasTexture" id="8"]
atlas = ExtResource("2")
region = Rect2(133, 79, 34, 19)
[sub_resource type="StyleBoxEmpty" id="49"]
[sub_resource type="StyleBoxFlat" id="35"]
bg_color = Color(0.129412, 0.129412, 0.129412, 1)
[sub_resource type="StyleBoxFlat" id="36"]
bg_color = Color(0.129412, 0.129412, 0.129412, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(1, 1, 1, 1)
[sub_resource type="StyleBoxFlat" id="37"]
bg_color = Color(0.282353, 0.282353, 0.282353, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(1, 1, 1, 1)
[sub_resource type="StyleBoxFlat" id="38"]
content_margin_top = 7.0
content_margin_bottom = 7.0
bg_color = Color(0, 0, 0, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(0.129412, 0.129412, 0.129412, 1)
[sub_resource type="StyleBoxFlat" id="39"]
content_margin_top = 7.0
content_margin_bottom = 7.0
bg_color = Color(0, 0, 0, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(0.282353, 0.282353, 0.282353, 1)
[sub_resource type="StyleBoxLine" id="40"]
color = Color(0.282353, 0.282353, 0.282353, 1)
[sub_resource type="AtlasTexture" id="9"]
atlas = ExtResource("2")
region = Rect2(80, 10, 12, 28)
[sub_resource type="AtlasTexture" id="10"]
atlas = ExtResource("2")
region = Rect2(112, 10, 12, 28)
[sub_resource type="AtlasTexture" id="11"]
atlas = ExtResource("2")
region = Rect2(144, 10, 12, 28)
[sub_resource type="StyleBoxFlat" id="12"]
bg_color = Color(0.282353, 0.282353, 0.282353, 1)
corner_radius_top_left = 2
corner_radius_bottom_left = 2
expand_margin_top = 2.0
expand_margin_bottom = 2.0
[sub_resource type="StyleBoxFlat" id="13"]
bg_color = Color(1, 1, 1, 1)
corner_radius_top_left = 2
corner_radius_bottom_left = 2
expand_margin_top = 2.0
expand_margin_bottom = 2.0
[sub_resource type="StyleBoxFlat" id="14"]
bg_color = Color(0.129412, 0.129412, 0.129412, 1)
corner_radius_top_left = 2
corner_radius_top_right = 2
corner_radius_bottom_right = 2
corner_radius_bottom_left = 2
expand_margin_top = 2.0
expand_margin_bottom = 2.0
[sub_resource type="StyleBoxFlat" id="27"]
bg_color = Color(0.129412, 0.129412, 0.129412, 0)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(1, 1, 1, 1)
[sub_resource type="StyleBoxFlat" id="28"]
content_margin_left = 5.0
content_margin_top = 5.0
content_margin_right = 5.0
content_margin_bottom = 5.0
bg_color = Color(0, 0, 0, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(0.282353, 0.282353, 0.282353, 1)
[sub_resource type="StyleBoxFlat" id="29"]
content_margin_left = 5.0
content_margin_top = 5.0
content_margin_right = 5.0
content_margin_bottom = 5.0
bg_color = Color(0.129412, 0.129412, 0.129412, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(0.282353, 0.282353, 0.282353, 1)
[sub_resource type="StyleBoxFlat" id="30"]
bg_color = Color(0.282353, 0.282353, 0.282353, 1)
[sub_resource type="StyleBoxLine" id="31"]
color = Color(0.282353, 0.282353, 0.282353, 1)
[sub_resource type="StyleBoxFlat" id="32"]
content_margin_left = 7.0
content_margin_top = 7.0
content_margin_right = 7.0
content_margin_bottom = 7.0
bg_color = Color(0, 0, 0, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(0.282353, 0.282353, 0.282353, 1)
[sub_resource type="StyleBoxFlat" id="33"]
bg_color = Color(0.129412, 0.129412, 0.129412, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(0.282353, 0.282353, 0.282353, 1)
[sub_resource type="StyleBoxFlat" id="41"]
bg_color = Color(0, 0, 0, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
expand_margin_left = 2.0
expand_margin_top = 2.0
expand_margin_right = 2.0
expand_margin_bottom = 2.0
[sub_resource type="StyleBoxFlat" id="42"]
content_margin_left = 5.0
content_margin_top = 5.0
content_margin_right = 5.0
content_margin_bottom = 2.0
bg_color = Color(0.282353, 0.282353, 0.282353, 1)
[sub_resource type="StyleBoxFlat" id="43"]
content_margin_left = 10.0
content_margin_right = 10.0
bg_color = Color(0, 0, 0, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(0.129412, 0.129412, 0.129412, 1)
[sub_resource type="StyleBoxFlat" id="44"]
content_margin_left = 10.0
content_margin_top = 0.0
content_margin_right = 10.0
bg_color = Color(0, 0, 0, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_color = Color(0.282353, 0.282353, 0.282353, 1)
expand_margin_top = 2.0
expand_margin_bottom = 1.0
[sub_resource type="StyleBoxFlat" id="34"]
content_margin_left = 5.0
content_margin_top = 5.0
content_margin_right = 5.0
content_margin_bottom = 5.0
bg_color = Color(0, 0, 0, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(0.282353, 0.282353, 0.282353, 1)
[sub_resource type="StyleBoxFlat" id="45"]
content_margin_left = 5.0
content_margin_top = 5.0
content_margin_right = 5.0
content_margin_bottom = 5.0
bg_color = Color(0.282353, 0.282353, 0.282353, 1)
[sub_resource type="StyleBoxFlat" id="46"]
content_margin_left = 7.0
content_margin_right = 7.0
bg_color = Color(0, 0, 0, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(0.129412, 0.129412, 0.129412, 1)
[sub_resource type="StyleBoxFlat" id="47"]
content_margin_left = 7.0
content_margin_right = 7.0
bg_color = Color(0, 0, 0, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(0.282353, 0.282353, 0.282353, 1)
[sub_resource type="StyleBoxLine" id="48"]
color = Color(0.282353, 0.282353, 0.282353, 1)
vertical = true
[sub_resource type="AtlasTexture" id="15"]
atlas = ExtResource("2")
region = Rect2(74, 52, 24, 10)
[sub_resource type="AtlasTexture" id="16"]
atlas = ExtResource("2")
region = Rect2(106, 52, 24, 8)
[sub_resource type="AtlasTexture" id="17"]
atlas = ExtResource("2")
region = Rect2(138, 52, 24, 8)
[sub_resource type="StyleBoxFlat" id="18"]
content_margin_left = 2.0
content_margin_top = 0.0
content_margin_right = 2.0
content_margin_bottom = 0.0
bg_color = Color(0.282353, 0.282353, 0.282353, 1)
corner_radius_top_left = 2
corner_radius_bottom_right = 2
corner_radius_bottom_left = 2
[sub_resource type="StyleBoxFlat" id="19"]
content_margin_left = 2.0
content_margin_top = 0.0
content_margin_right = 2.0
content_margin_bottom = 0.0
bg_color = Color(1, 1, 1, 1)
corner_radius_top_left = 2
corner_radius_bottom_right = 2
corner_radius_bottom_left = 2
[sub_resource type="StyleBoxFlat" id="20"]
content_margin_left = 2.0
content_margin_top = 0.0
content_margin_right = 2.0
content_margin_bottom = 0.0
bg_color = Color(0.129412, 0.129412, 0.129412, 1)
corner_radius_top_left = 2
corner_radius_bottom_right = 2
corner_radius_bottom_left = 2
[resource]
default_font = SubResource("21")
Button/colors/font_color = Color(1, 1, 1, 1)
Button/colors/font_color_disabled = Color(0.9, 0.9, 0.9, 0.2)
Button/colors/font_color_hover = Color(0.94, 0.94, 0.94, 1)
Button/colors/font_color_pressed = Color(1, 1, 1, 1)
Button/constants/hseparation = 2
Button/fonts/font = SubResource("21")
Button/styles/disabled = SubResource("1")
Button/styles/focus = SubResource("2")
Button/styles/hover = SubResource("3")
Button/styles/normal = SubResource("1")
Button/styles/pressed = SubResource("4")
CheckBox/colors/font_color = Color(0.88, 0.88, 0.88, 1)
CheckBox/colors/font_color_disabled = Color(0.9, 0.9, 0.9, 0.2)
CheckBox/colors/font_color_hover = Color(0.94, 0.94, 0.94, 1)
CheckBox/colors/font_color_hover_pressed = Color(1, 1, 1, 1)
CheckBox/colors/font_color_pressed = Color(1, 1, 1, 1)
CheckBox/constants/check_vadjust = 0
CheckBox/constants/hseparation = 4
CheckBox/fonts/font = SubResource("21")
CheckBox/icons/checked = SubResource("22")
CheckBox/icons/radio_checked = SubResource("23")
CheckBox/icons/radio_unchecked = SubResource("24")
CheckBox/icons/unchecked = SubResource("25")
CheckBox/styles/disabled = SubResource("26")
CheckBox/styles/focus = null
CheckBox/styles/hover = SubResource("26")
CheckBox/styles/hover_pressed = SubResource("26")
CheckBox/styles/normal = SubResource("26")
CheckBox/styles/pressed = SubResource("26")
CheckButton/colors/font_color = Color(0.88, 0.88, 0.88, 1)
CheckButton/colors/font_color_disabled = Color(0.9, 0.9, 0.9, 0.2)
CheckButton/colors/font_color_hover = Color(0.94, 0.94, 0.94, 1)
CheckButton/colors/font_color_hover_pressed = Color(1, 1, 1, 1)
CheckButton/colors/font_color_pressed = Color(1, 1, 1, 1)
CheckButton/constants/check_vadjust = 0
CheckButton/constants/hseparation = 4
CheckButton/fonts/font = SubResource("21")
CheckButton/icons/off = SubResource("5")
CheckButton/icons/off_disabled = SubResource("6")
CheckButton/icons/on = SubResource("7")
CheckButton/icons/on_disabled = SubResource("8")
CheckButton/styles/disabled = SubResource("49")
CheckButton/styles/focus = null
CheckButton/styles/hover = SubResource("49")
CheckButton/styles/hover_pressed = SubResource("49")
CheckButton/styles/normal = SubResource("49")
CheckButton/styles/pressed = SubResource("49")
HScrollBar/icons/decrement = null
HScrollBar/icons/decrement_highlight = null
HScrollBar/icons/increment = null
HScrollBar/icons/increment_highlight = null
HScrollBar/styles/grabber = SubResource("35")
HScrollBar/styles/grabber_highlight = SubResource("36")
HScrollBar/styles/grabber_pressed = SubResource("37")
HScrollBar/styles/scroll = SubResource("38")
HScrollBar/styles/scroll_focus = SubResource("39")
HSeparator/constants/separation = 4
HSeparator/styles/separator = SubResource("40")
HSlider/icons/grabber = SubResource("9")
HSlider/icons/grabber_disabled = SubResource("10")
HSlider/icons/grabber_highlight = SubResource("11")
HSlider/icons/tick = null
HSlider/styles/grabber_area = SubResource("12")
HSlider/styles/grabber_area_highlight = SubResource("13")
HSlider/styles/slider = SubResource("14")
LineEdit/colors/clear_button_color = Color(0.88, 0.88, 0.88, 1)
LineEdit/colors/clear_button_color_pressed = Color(1, 1, 1, 1)
LineEdit/colors/cursor_color = Color(0.94, 0.94, 0.94, 1)
LineEdit/colors/font_color = Color(0.88, 0.88, 0.88, 1)
LineEdit/colors/font_color_selected = Color(1, 1, 1, 1)
LineEdit/colors/font_color_uneditable = Color(0.88, 0.88, 0.88, 0.5)
LineEdit/colors/selection_color = Color(0.282353, 0.282353, 0.282353, 1)
LineEdit/constants/minimum_spaces = 12
LineEdit/fonts/font = SubResource("21")
LineEdit/icons/clear = null
LineEdit/styles/focus = SubResource("27")
LineEdit/styles/normal = SubResource("28")
LineEdit/styles/read_only = SubResource("29")
Panel/styles/panel = SubResource("1")
PopupMenu/colors/font_color = Color(0.88, 0.88, 0.88, 1)
PopupMenu/colors/font_color_accel = Color(0.7, 0.7, 0.7, 0.8)
PopupMenu/colors/font_color_disabled = Color(0.4, 0.4, 0.4, 0.8)
PopupMenu/colors/font_color_hover = Color(0.88, 0.88, 0.88, 1)
PopupMenu/colors/font_color_separator = Color(0.88, 0.88, 0.88, 1)
PopupMenu/constants/hseparation = 4
PopupMenu/constants/vseparation = 4
PopupMenu/fonts/font = SubResource("21")
PopupMenu/icons/checked = SubResource("22")
PopupMenu/icons/radio_checked = SubResource("23")
PopupMenu/icons/radio_unchecked = SubResource("24")
PopupMenu/icons/submenu = null
PopupMenu/icons/unchecked = SubResource("25")
PopupMenu/styles/hover = SubResource("30")
PopupMenu/styles/labeled_separator_left = SubResource("31")
PopupMenu/styles/labeled_separator_right = SubResource("31")
PopupMenu/styles/panel = SubResource("32")
PopupMenu/styles/panel_disabled = SubResource("33")
PopupMenu/styles/separator = SubResource("31")
ProgressBar/colors/font_color = Color(0.94, 0.94, 0.94, 1)
ProgressBar/colors/font_color_shadow = Color(0, 0, 0, 1)
ProgressBar/fonts/font = SubResource("21")
ProgressBar/styles/bg = SubResource("41")
ProgressBar/styles/fg = SubResource("42")
TabContainer/colors/font_color_bg = Color(0.690196, 0.690196, 0.690196, 1)
TabContainer/colors/font_color_disabled = Color(0.9, 0.9, 0.9, 0.2)
TabContainer/colors/font_color_fg = Color(0.94, 0.94, 0.94, 1)
TabContainer/constants/hseparation = 4
TabContainer/constants/label_valign_bg = 2
TabContainer/constants/label_valign_fg = 0
TabContainer/constants/side_margin = 8
TabContainer/constants/top_margin = 24
TabContainer/fonts/font = SubResource("21")
TabContainer/icons/decrement = null
TabContainer/icons/decrement_highlight = null
TabContainer/icons/increment = null
TabContainer/icons/increment_highlight = null
TabContainer/icons/menu = null
TabContainer/icons/menu_highlight = null
TabContainer/styles/panel = SubResource("1")
TabContainer/styles/tab_bg = SubResource("43")
TabContainer/styles/tab_disabled = SubResource("43")
TabContainer/styles/tab_fg = SubResource("44")
TextEdit/colors/background_color = Color(0, 0, 0, 0)
TextEdit/colors/bookmark_color = Color(0.08, 0.49, 0.98, 1)
TextEdit/colors/brace_mismatch_color = Color(1, 0.2, 0.2, 1)
TextEdit/colors/breakpoint_color = Color(0.8, 0.8, 0.4, 0.2)
TextEdit/colors/caret_background_color = Color(0, 0, 0, 1)
TextEdit/colors/caret_color = Color(0.88, 0.88, 0.88, 1)
TextEdit/colors/code_folding_color = Color(0.8, 0.8, 0.8, 0.8)
TextEdit/colors/completion_background_color = Color(0.17, 0.16, 0.2, 1)
TextEdit/colors/completion_existing_color = Color(0.87, 0.87, 0.87, 0.13)
TextEdit/colors/completion_font_color = Color(0.67, 0.67, 0.67, 1)
TextEdit/colors/completion_scroll_color = Color(1, 1, 1, 1)
TextEdit/colors/completion_selected_color = Color(0.26, 0.26, 0.27, 1)
TextEdit/colors/current_line_color = Color(0.25, 0.25, 0.26, 0.8)
TextEdit/colors/executing_line_color = Color(0.2, 0.8, 0.2, 0.4)
TextEdit/colors/font_color = Color(0.88, 0.88, 0.88, 1)
TextEdit/colors/font_color_readonly = Color(0.88, 0.88, 0.88, 0.5)
TextEdit/colors/font_color_selected = Color(0, 0, 0, 1)
TextEdit/colors/function_color = Color(0.4, 0.64, 0.81, 1)
TextEdit/colors/line_number_color = Color(0.67, 0.67, 0.67, 0.4)
TextEdit/colors/mark_color = Color(1, 0.4, 0.4, 0.4)
TextEdit/colors/member_variable_color = Color(0.9, 0.31, 0.35, 1)
TextEdit/colors/number_color = Color(0.92, 0.58, 0.2, 1)
TextEdit/colors/safe_line_number_color = Color(0.67, 0.78, 0.67, 0.6)
TextEdit/colors/selection_color = Color(0.282353, 0.282353, 0.282353, 1)
TextEdit/colors/symbol_color = Color(0.94, 0.94, 0.94, 1)
TextEdit/colors/word_highlighted_color = Color(0.8, 0.9, 0.9, 0.15)
TextEdit/constants/completion_lines = 7
TextEdit/constants/completion_max_width = 50
TextEdit/constants/completion_scroll_width = 3
TextEdit/constants/line_spacing = 4
TextEdit/fonts/font = SubResource("21")
TextEdit/icons/fold = null
TextEdit/icons/folded = null
TextEdit/icons/space = null
TextEdit/icons/tab = null
TextEdit/styles/completion = null
TextEdit/styles/focus = SubResource("27")
TextEdit/styles/normal = SubResource("34")
TextEdit/styles/read_only = SubResource("29")
Tree/colors/custom_button_font_highlight = Color(0.94, 0.94, 0.94, 1)
Tree/colors/drop_position_color = Color(1, 0.3, 0.2, 1)
Tree/colors/font_color = Color(0.69, 0.69, 0.69, 1)
Tree/colors/font_color_selected = Color(1, 1, 1, 1)
Tree/colors/guide_color = Color(0, 0, 0, 0.1)
Tree/colors/relationship_line_color = Color(0.27, 0.27, 0.27, 1)
Tree/colors/title_button_color = Color(0.88, 0.88, 0.88, 1)
Tree/constants/button_margin = 4
Tree/constants/draw_guides = 1
Tree/constants/draw_relationship_lines = 0
Tree/constants/hseparation = 4
Tree/constants/item_margin = 12
Tree/constants/scroll_border = 4
Tree/constants/scroll_speed = 12
Tree/constants/vseparation = 4
Tree/fonts/font = SubResource("21")
Tree/fonts/title_button_font = SubResource("21")
Tree/icons/arrow = null
Tree/icons/arrow_collapsed = null
Tree/icons/checked = SubResource("22")
Tree/icons/select_arrow = null
Tree/icons/unchecked = SubResource("25")
Tree/icons/updown = null
Tree/styles/bg = SubResource("1")
Tree/styles/bg_focus = null
Tree/styles/button_pressed = null
Tree/styles/cursor = null
Tree/styles/cursor_unfocused = null
Tree/styles/custom_button = null
Tree/styles/custom_button_hover = null
Tree/styles/custom_button_pressed = null
Tree/styles/selected = SubResource("45")
Tree/styles/selected_focus = SubResource("45")
Tree/styles/title_button_hover = null
Tree/styles/title_button_normal = null
Tree/styles/title_button_pressed = null
VScrollBar/icons/decrement = null
VScrollBar/icons/decrement_highlight = null
VScrollBar/icons/increment = null
VScrollBar/icons/increment_highlight = null
VScrollBar/styles/grabber = SubResource("35")
VScrollBar/styles/grabber_highlight = SubResource("36")
VScrollBar/styles/grabber_pressed = SubResource("37")
VScrollBar/styles/scroll = SubResource("46")
VScrollBar/styles/scroll_focus = SubResource("47")
VSeparator/constants/separation = 4
VSeparator/styles/separator = SubResource("48")
VSlider/icons/grabber = SubResource("15")
VSlider/icons/grabber_disabled = SubResource("16")
VSlider/icons/grabber_highlight = SubResource("17")
VSlider/icons/tick = null
VSlider/styles/grabber_area = SubResource("18")
VSlider/styles/grabber_area_highlight = SubResource("19")
VSlider/styles/slider = SubResource("20")

Binary file not shown.

View File

@ -1,33 +0,0 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://b2qfr27bxbq1c"
path="res://.godot/imported/OpenSans-Regular.ttf-ec253f060e4302b09d0e866adb759f04.fontdata"
[deps]
source_file="res://Mods/MinimalUI/OpenSans-Regular.ttf"
dest_files=["res://.godot/imported/OpenSans-Regular.ttf-ec253f060e4302b09d0e866adb759f04.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=1
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

View File

@ -1,294 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="179.02547"
height="141.05559"
viewBox="0 0 47.367154 37.320958"
version="1.1"
id="svg8"
sodipodi:docname="icons.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.7120468"
inkscape:cx="126.78513"
inkscape:cy="46.893456"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:snap-object-midpoints="false"
fit-margin-top="12"
fit-margin-left="12"
fit-margin-right="12"
fit-margin-bottom="12"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="0"
inkscape:window-y="34"
inkscape:window-maximized="1"
inkscape:snap-nodes="false"
inkscape:snap-bbox="true"
inkscape:snap-intersection-paths="true"
inkscape:snap-global="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-midpoints="true">
<inkscape:grid
type="xygrid"
id="grid815"
spacingx="2.1166667"
spacingy="2.1166667"
empspacing="2"
originx="1.5950366"
originy="-261.14413" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Capa 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(1.5950366,1.4650777)">
<path
style="fill:none;stroke:#484848;stroke-width:1.05833328;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 2.1166667,4.8999954 H 6.3499999"
id="path817"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path819"
d="m 10.583334,4.8999954 h 4.233333"
style="fill:none;stroke:#ffffff;stroke-width:1.05833328;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path830"
d="m 21.166668,2.7833289 -1e-6,4.233333"
style="fill:none;stroke:#484848;stroke-width:2.11666656;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#212121;stroke-width:2.11666656;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 29.633335,2.7833291 -10e-7,4.233333"
id="path832"
inkscape:connector-curvature="0" />
<path
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:2.11666656;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 38.100002,2.7833291 -1e-6,4.233333"
id="path834"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#484848;stroke-width:2.11666656;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 23.283334,13.366661 -4.233333,-1e-6"
id="path855"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path857"
d="m 31.750001,13.366661 -4.233333,-1e-6"
style="fill:none;stroke:#212121;stroke-width:2.11666656;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path868"
d="m 40.216668,13.366661 -4.233333,-1e-6"
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:2.11666656;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.52916664;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 4.2333334,19.715063 v 0.0016 a 2.1166665,2.1166665 0 0 0 -0.8536948,0.178245 2.1166665,2.1166665 0 0 0 -1.0836547,2.790527 2.1166665,2.1166665 0 0 0 1.9373495,1.261938 v 0.001 h 0.031523 4.2018106 v -0.001 A 2.1166665,2.1166665 0 0 0 9.3198448,23.76909 l 5.292e-4,-5.29e-4 a 2.1166665,2.1166665 0 0 0 1.083125,-2.790526 2.1166665,2.1166665 0 0 0 -1.9368323,-1.261422 v -0.0016 z"
id="rect844" />
<path
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.66145831;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path838"
sodipodi:type="arc"
sodipodi:cx="4.2255821"
sodipodi:cy="21.831921"
sodipodi:rx="1.3229166"
sodipodi:ry="1.3229166"
sodipodi:start="1.1558321"
sodipodi:end="1.1556401"
sodipodi:open="true"
d="M 4.7589255,23.042562 A 1.3229166,1.3229166 0 0 1 3.014966,22.365322 1.3229166,1.3229166 0 0 1 3.6921225,20.62133 1.3229166,1.3229166 0 0 1 5.436147,21.298403 1.3229166,1.3229166 0 0 1 4.7591579,23.04246" />
<path
inkscape:connector-curvature="0"
id="path844"
d="m 14.816453,19.716184 v 0.0016 a 2.1166665,2.1166665 0 0 0 -0.853695,0.178284 2.1166665,2.1166665 0 0 0 -1.083655,2.790527 2.1166665,2.1166665 0 0 0 1.93735,1.261939 v 0.001 h 0.03152 4.201811 v -0.001 a 2.1166665,2.1166665 0 0 0 0.853178,-0.178284 l 5.29e-4,-5.29e-4 a 2.1166665,2.1166665 0 0 0 1.083125,-2.790526 2.1166665,2.1166665 0 0 0 -1.936832,-1.261421 v -0.0016 z"
style="opacity:1;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.52916664;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<g
id="g860"
transform="translate(2.1164519,-0.00151247)">
<path
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:0.66145831;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path846"
sodipodi:type="arc"
sodipodi:cx="12.692249"
sodipodi:cy="21.834555"
sodipodi:rx="1.3229166"
sodipodi:ry="1.3229166"
sodipodi:start="1.1558321"
sodipodi:end="1.1556401"
sodipodi:open="true"
d="m 13.225593,23.045196 a 1.3229166,1.3229166 0 0 1 -1.74396,-0.67724 1.3229166,1.3229166 0 0 1 0.677157,-1.743992 1.3229166,1.3229166 0 0 1 1.744024,0.677073 1.3229166,1.3229166 0 0 1 -0.676989,1.744057" />
<rect
ry="0"
y="20.512409"
x="12.7"
height="2.6458333"
width="4.2333331"
id="rect854"
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:0.59162635;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<path
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.66145831;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path852"
sodipodi:type="arc"
sodipodi:cx="19.041983"
sodipodi:cy="21.833042"
sodipodi:rx="1.3229166"
sodipodi:ry="1.3229166"
sodipodi:start="1.1558321"
sodipodi:end="1.1556401"
sodipodi:open="true"
d="m 19.575326,23.043684 a 1.3229166,1.3229166 0 0 1 -1.743959,-0.67724 1.3229166,1.3229166 0 0 1 0.677156,-1.743992 1.3229166,1.3229166 0 0 1 1.744025,0.677072 1.3229166,1.3229166 0 0 1 -0.67699,1.744057" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#000000;fill-opacity:1;stroke:#484848;stroke-width:0.52916664;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 25.399838,19.715166 v 0.0016 a 2.1166665,2.1166665 0 0 0 -0.853695,0.178244 2.1166665,2.1166665 0 0 0 -1.083655,2.790527 2.1166665,2.1166665 0 0 0 1.93735,1.261938 v 10e-4 h 0.03152 4.201811 v -10e-4 a 2.1166665,2.1166665 0 0 0 0.853177,-0.178282 l 5.3e-4,-5.29e-4 a 2.1166665,2.1166665 0 0 0 1.083125,-2.790526 2.1166665,2.1166665 0 0 0 -1.936833,-1.261422 v -0.0016 z"
id="rect844-8" />
<path
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:0.66145831;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path838-4"
sodipodi:type="arc"
sodipodi:cx="25.392086"
sodipodi:cy="21.832026"
sodipodi:rx="1.3229166"
sodipodi:ry="1.3229166"
sodipodi:start="1.1558321"
sodipodi:end="1.1556401"
sodipodi:open="true"
d="m 25.925429,23.042667 a 1.3229166,1.3229166 0 0 1 -1.743959,-0.67724 1.3229166,1.3229166 0 0 1 0.677156,-1.743992 1.3229166,1.3229166 0 0 1 1.744025,0.677073 1.3229166,1.3229166 0 0 1 -0.676989,1.744057" />
<path
inkscape:connector-curvature="0"
id="path844-8"
d="m 35.982958,19.716287 v 0.0016 a 2.1166665,2.1166665 0 0 0 -0.853695,0.178284 2.1166665,2.1166665 0 0 0 -1.083656,2.790527 2.1166665,2.1166665 0 0 0 1.937351,1.261939 v 10e-4 h 0.03152 4.201811 v -10e-4 a 2.1166665,2.1166665 0 0 0 0.853178,-0.178284 l 5.29e-4,-5.29e-4 a 2.1166665,2.1166665 0 0 0 1.083125,-2.790526 2.1166665,2.1166665 0 0 0 -1.936832,-1.261421 v -0.0016 z"
style="opacity:1;fill:#000000;fill-opacity:1;stroke:#484848;stroke-width:0.52916664;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<g
transform="translate(23.282956,-0.00140854)"
id="g860-1"
style="fill:#212121;fill-opacity:1">
<path
style="opacity:1;fill:#212121;fill-opacity:1;stroke:none;stroke-width:0.66145831;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path846-0"
sodipodi:type="arc"
sodipodi:cx="12.692249"
sodipodi:cy="21.834555"
sodipodi:rx="1.3229166"
sodipodi:ry="1.3229166"
sodipodi:start="1.1558321"
sodipodi:end="1.1556401"
sodipodi:open="true"
d="m 13.225593,23.045196 a 1.3229166,1.3229166 0 0 1 -1.74396,-0.67724 1.3229166,1.3229166 0 0 1 0.677157,-1.743992 1.3229166,1.3229166 0 0 1 1.744024,0.677073 1.3229166,1.3229166 0 0 1 -0.676989,1.744057" />
<rect
ry="0"
y="20.512409"
x="12.7"
height="2.6458333"
width="4.2333331"
id="rect854-3"
style="opacity:1;fill:#212121;fill-opacity:1;stroke:none;stroke-width:0.59162635;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<path
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:0.66145831;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path852-0"
sodipodi:type="arc"
sodipodi:cx="40.208488"
sodipodi:cy="21.833147"
sodipodi:rx="1.3229166"
sodipodi:ry="1.3229166"
sodipodi:start="1.1558321"
sodipodi:end="1.1556401"
sodipodi:open="true"
d="m 40.741832,23.043789 a 1.3229166,1.3229166 0 0 1 -1.74396,-0.67724 1.3229166,1.3229166 0 0 1 0.677157,-1.743992 1.3229166,1.3229166 0 0 1 1.744024,0.677072 1.3229166,1.3229166 0 0 1 -0.676989,1.744057" />
<rect
style="opacity:1;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect843"
width="4.2333331"
height="4.2333331"
x="2.1166668"
y="28.183331"
ry="0" />
<rect
ry="0"
y="28.183331"
x="8.4666672"
height="4.2333331"
width="4.2333331"
id="rect845"
style="opacity:1;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.26458332;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 9.6784241,30.521082 0.6236739,0.784048 1.372081,-2.031395"
id="path847"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="opacity:1;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.52916664;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path849"
sodipodi:type="arc"
sodipodi:cx="16.933334"
sodipodi:cy="30.299997"
sodipodi:rx="2.1166666"
sodipodi:ry="2.1166666"
sodipodi:start="1.1558321"
sodipodi:end="1.1556401"
sodipodi:open="true"
d="m 17.786684,32.237024 a 2.1166666,2.1166666 0 0 1 -2.790335,-1.083584 2.1166666,2.1166666 0 0 1 1.08345,-2.790387 2.1166666,2.1166666 0 0 1 2.790439,1.083316 2.1166666,2.1166666 0 0 1 -1.083182,2.790491" />
<path
d="m 24.136682,32.237024 a 2.1166666,2.1166666 0 0 1 -2.790335,-1.083584 2.1166666,2.1166666 0 0 1 1.083451,-2.790387 2.1166666,2.1166666 0 0 1 2.790439,1.083316 2.1166666,2.1166666 0 0 1 -1.083183,2.790491"
sodipodi:open="true"
sodipodi:end="1.1556401"
sodipodi:start="1.1558321"
sodipodi:ry="2.1166666"
sodipodi:rx="2.1166666"
sodipodi:cy="30.299997"
sodipodi:cx="23.283333"
sodipodi:type="arc"
id="path856"
style="opacity:1;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.52916664;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
d="m 23.710013,31.268508 a 1.0583333,1.0583333 0 0 1 -1.395171,-0.541786 1.0583333,1.0583333 0 0 1 0.541721,-1.395196 1.0583333,1.0583333 0 0 1 1.395221,0.541656 1.0583333,1.0583333 0 0 1 -0.541591,1.395247"
sodipodi:open="true"
sodipodi:end="1.1556401"
sodipodi:start="1.1558268"
sodipodi:ry="1.0583333"
sodipodi:rx="1.0583333"
sodipodi:cy="30.299997"
sodipodi:cx="23.283333"
sodipodi:type="arc"
id="path858"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,37 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b6f200m6quo4k"
path="res://.godot/imported/icons.svg-159a72ae654fee5867f06f52ae9ad18e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Mods/MinimalUI/icons.svg"
dest_files=["res://.godot/imported/icons.svg-159a72ae654fee5867f06f52ae9ad18e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@ -1,3 +0,0 @@
[gd_resource type="ButtonGroup" format=3 uid="uid://cwiiipy56pktn"]
[resource]

View File

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://cs0mh0ev6u0cf"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_vgs8l"]
[resource]
script = ExtResource("1_vgs8l")
HandleSeed = ""
Format = ""
Category = ""
Name = ""
Value = ""
RefHandleSeed = ""

View File

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://574gf1b8pq71"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_xdojh"]
[resource]
script = ExtResource("1_xdojh")
HandleSeed = ""
Format = ""
Category = ""
Name = ""
Value = ""
RefHandleSeed = ""

View File

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://vsysp5ftn5do"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_4uwqb"]
[resource]
script = ExtResource("1_4uwqb")
HandleSeed = ""
Format = ""
Category = ""
Name = ""
Value = ""
RefHandleSeed = ""

View File

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://c2he5e5rahatp"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_b50nr"]
[resource]
script = ExtResource("1_b50nr")
HandleSeed = ""
Format = ""
Category = ""
Name = ""
Value = ""
RefHandleSeed = ""

View File

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://b38onsp3c3jem"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_3kqe2"]
[resource]
script = ExtResource("1_3kqe2")
HandleSeed = "th.record"
Format = "float"
Category = "环境"
Name = "温度"
Value = "42"
RefHandleSeed = ""

View File

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://d3xam2no2uaas"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_lqwbc"]
[resource]
script = ExtResource("1_lqwbc")
HandleSeed = "th.record"
Format = "float"
Category = "环境"
Name = "湿度"
Value = "50"
RefHandleSeed = "th"

View File

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://cgk1wmiqqedmi"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_8mak5"]
[resource]
script = ExtResource("1_8mak5")
HandleSeed = "th"
Format = "string"
Category = "参数"
Name = "型号"
Value = "th.sensor"
RefHandleSeed = "th.record"

View File

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://hixuaakj8opt"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_hthhx"]
[resource]
script = ExtResource("1_hthhx")
HandleSeed = ""
Format = ""
Category = ""
Name = ""
Value = ""
RefHandleSeed = ""

View File

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://ngju0miy7a6b"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_brytp"]
[resource]
script = ExtResource("1_brytp")
HandleSeed = ""
Format = ""
Category = ""
Name = ""
Value = ""
RefHandleSeed = ""

View File

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="IDIS_AutoRegResource" load_steps=2 format=3 uid="uid://c4a5buevs88ko"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegResource.cs" id="1_25hnv"]
[resource]
script = ExtResource("1_25hnv")
HandleSeed = ""
Format = ""
Category = ""
Name = ""
Value = ""
RefHandleSeed = ""

View File

@ -1,41 +0,0 @@
#if Deprecated
using Godot;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using BITKit;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace BITFactory;
[GlobalClass]
public partial class IDIS_RegisterDB : FormDBProvider
{
public override void Submit(string data)
{
var jObject = JsonConvert.DeserializeObject<JObject>(data);
var handle = jObject["handle"]!.ToObject<string>();
var values = jObject["values"]!.ToObject<List<IDIS_Data>>();
var references = jObject["references"]!.ToObject<List<string>>();
var createUser = jObject["createUser"]!.ToObject<string>();
if(Regex.IsMatch(handle,IDIS_Code.AddressRegex) is false)
{
throw new InvalidOperationException("标识格式不正确");
}
IDIS_Service.Singleton.Register(handle, createUser);
foreach (var x in values)
{
IDIS_Service.Singleton.Register(handle,x.Name, x.Format, x.Value,x.Category);
}
foreach (var x in references)
{
IDIS_Service.Singleton.RegisterReference(handle,x);
}
}
}
#endif

View File

@ -1,108 +0,0 @@
#if Deprecated
using Godot;
using System;
using System.Collections.Generic;
using BITKit;
namespace BITFactory;
[GlobalClass]
public partial class IDIS_RegisterWeaver : FormWeaverResource
{
[Export] private NodePath handleEditPath;
[Export] private NodePath generateButtonPath;
[Export] private NodePath addReferenceButtonPath;
[Export] private NodePath referenceEditBuilderPath;
[Export] private NodePath templateBuilderPath;
private LineEdit handleEdit=>formBuilder.GetNode<LineEdit>(handleEditPath);
private Button generateButton=>formBuilder.GetNode<Button>(generateButtonPath);
private Button addReferenceButton=>formBuilder.GetNode<Button>(addReferenceButtonPath);
private NodeBuilder referenceEditBuilder=>formBuilder.GetNode<NodeBuilder>(referenceEditBuilderPath);
private TemplateBuilder templateBuilder => formBuilder.GetNode<TemplateBuilder>(templateBuilderPath);
private readonly List<IDIS_Data> _values=new();
private readonly List<string> _references=new();
public override void Weaver(Control container, IFormField formField)
{
var field = (IDIS_TemplateForm)formField;
var data = new IDIS_Data();
var vBox = container.Create<HBoxContainer>();
var label = vBox.Create<Label>();
var typeLabel = vBox.Create<Label>();
var valueEdit = vBox.Create<LineEdit>();
var myIndex = _values.Count;
_values.Add(data);
label.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
typeLabel.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
valueEdit.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
label.Text = field.Name;
typeLabel.Text = field.Type;
valueEdit.PlaceholderText = field.DefaultValue;
data.Category = field.Category;
data.Handle = handleEdit.Text;
data.Format = field.Type;
data.Name = field.Name;
data.Value = field.DefaultValue;
//valueEdit.TextChanged += x => data.Value = x;
valueEdit.TextChanged += newValue =>
{
data.Value = string.IsNullOrEmpty(newValue) ? field.DefaultValue : newValue;
};
}
public override string GetContent()
{
if (string.IsNullOrEmpty(handleEdit.Text))
{
throw new InvalidOperationException("[color=red]输入的标识码为空[/color]");
}
var value = new Dictionary<object, object>
{
{ "handle", handleEdit.Text },
{ "values",_values},
{ "references",_references},
{"createUser",templateBuilder.CurrentTemplate.Name}
};
var json = JsonHelper.Get(value);
return json;
}
public override void Clear()
{
_values.Clear();
_references.Clear();
referenceEditBuilder.Clear();
}
public override void OnStart()
{
generateButton.Pressed += () =>
{
handleEdit.Text = IDIS_Service.GenerateHandle();
};
addReferenceButton.Pressed += AddReference;
}
private void AddReference()
{
var container = referenceEditBuilder.Build<UXContainer>();
var myIndex = _references.Count;
_references.Add("");
container.lineEdit.Text = string.Empty;
container.label.Text = "引用标识码:";
container.lineEdit.PlaceholderText = "8.123.99/xxxxxxxx";
container.lineEdit.TextChanged += x => _references[myIndex] = x;
}
}
#endif

View File

@ -1,37 +0,0 @@
using Godot;
using System;
using BITKit;
using Newtonsoft.Json;
namespace BITFactory;
[Serializable]
[JsonObject(MemberSerialization.OptIn)]
public class IDIS_TemplateForm:IFormField
{
[JsonProperty]
public string Name { get; set; }
[JsonProperty]
public string Type { get; set; }
[JsonProperty]
public string DefaultValue { get; set; }
[JsonProperty]
public string Category { get; set; }
public int FieldCount => 4;
public string[] FieldNames => new string[]
{
nameof(Name),
nameof(Type),
nameof(DefaultValue),
nameof(Category),
};
public string[] FieldTypes => FieldNames;
public string[] DefaultValues => FieldNames;
}
[GlobalClass]
public partial class IDIS_TemplateFormResource : FormResource
{
public override string Name { get; set; }
public override IFormField[] Fields { get; set; }
}

View File

@ -1,96 +0,0 @@
using Godot;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using BITKit;
using BITKit.IO;
using Godot.Collections;
namespace BITFactory;
[GlobalClass]
public partial class IDIS_TemplateResource : TemplateResource
{
private static readonly List<FormResource> Templates=new();
private static InitializationState state = InitializationState.None;
private static string assetPath => PathHelper.GetPath("标识模板资源包.zip");
private static string entryPath => "Templates.json";
public override FormResource[] GetTemplates()
{
EnsureCreated();
return Templates.ToArray();
}
public override string[] GetTemplateNames()
{
EnsureCreated();
return Templates.Select(x => x.Name).ToArray();
}
public override FormResource GetTemplate(string name)
{
EnsureCreated();
return Templates.Single(x => x.Name == name);
}
public override bool IsSupportCreateTemplate => true;
public override FormResource CreateTemplate()
{
var newResource =
new IDIS_TemplateFormResource()
{
Name = "新的标识模板:"+Guid.NewGuid(),
Fields = new IFormField[]
{
new IDIS_TemplateForm()
{
Name = "新的标识字段:",
Type = "string",
DefaultValue = "new",
Category = "默认分类"
}
}
};
Templates.Add(newResource);
return newResource;
}
public override void DeleteTemplate(string name)
{
var index = Templates.FindIndex(x => x.Name == name);
if (index == -1) return;
Templates.RemoveAt(index);
}
private void EnsureCreated()
{
if (state != InitializationState.None) return;
if (File.Exists(assetPath))
{
foreach (var x in BITAssets.Read<KeyValuePair<string,IDIS_TemplateForm[]>[]>(assetPath, entryPath))
{
Templates.Add(new IDIS_TemplateFormResource()
{
Name = x.Key,
Fields = x.Value.Select(_=>_ as IFormField).ToArray()
});
}
}
state = InitializationState.Initialized;
}
public override void OnStop()
{
ManualSave();
}
public override void ManualSave()
{
// var values = new System.Collections.Generic.Dictionary<string, List<IFormField>>(
// Templates.Select(x=>new KeyValuePair<string, List<IFormField>>(
// x.Key,x.Value.Fields.ToList()
// ))
// );
var values = Templates.Select(x => new KeyValuePair<string, object>(
x.Name, x.Fields
));
BITAssets.Build(assetPath,new BITAsset(entryPath,JsonHelper.Get(values)));
}
}

View File

@ -1,155 +0,0 @@
using Godot;
using System;
using System.Collections.Generic;
using System.Linq;
using BITKit;
namespace BITFactory;
[GlobalClass]
public partial class IDIS_TemplateWeaver : FormWeaverResource
{
[Export] private IDIS_TemplateResource templateResource;
[ExportCategory(nameof(NodePath))]
[Export] private NodePath addFieldsButtonPath;
[Export] private NodePath templateBuilderPath;
[Export] private NodePath templateNameEditPath;
[Export] private NodePath saveTemplateNameButtonPath;
[Export] private NodePath deleteTemplateButtonPath;
private Button addFieldsButton => formBuilder.GetNode<Button>(addFieldsButtonPath);
private TemplateBuilder templateBuilder => formBuilder.GetNode<TemplateBuilder>(templateBuilderPath);
private LineEdit templateNameEdit => formBuilder.GetNode<LineEdit>(templateNameEditPath);
private Button saveTemplateNameButton => formBuilder.GetNode<Button>(saveTemplateNameButtonPath);
private Button deleteTemplateButton => formBuilder.GetNode<Button>(deleteTemplateButtonPath);
private readonly List<IDIS_TemplateForm> fields = new();
public override void Weaver(Control container, IFormField formField)
{
var field = formField as IDIS_TemplateForm;
fields.Add(field);
var hBox = container.Create<HBoxContainer>();
var nameEdit = hBox.Create<LineEdit>();
var typeButton = hBox.Create<OptionButton>();
var defaultValueEdit = hBox.Create<LineEdit>();
var categoryEdit = hBox.Create<LineEdit>();
var removeButton = hBox.Create<Button>();
nameEdit.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
typeButton.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
defaultValueEdit.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
categoryEdit.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
nameEdit.PlaceholderText="名称";
typeButton.Text = "类型";
defaultValueEdit.PlaceholderText="默认值";
categoryEdit.PlaceholderText="分类";
typeButton.GetPopup().AddItem("string");
typeButton.GetPopup().AddItem("int");
typeButton.GetPopup().AddItem("ulong");
typeButton.GetPopup().AddItem("double");
typeButton.GetPopup().AddItem("h_site");
typeButton.GetPopup().AddItem("base64");
typeButton.GetPopup().AddItem("guid");
typeButton.GetPopup().AddItem("url");
typeButton.GetPopup().AddItem("dateTime");
typeButton.GetPopup().AddItem("float");
typeButton.Selected = 0;
nameEdit.Text = field!.Name;
typeButton.Text = field!.Type;
defaultValueEdit.Text = field!.DefaultValue;
categoryEdit.Text = field!.Category;
removeButton.Text= "删除";
nameEdit.TextChanged+=x=>field!.Name=x;
typeButton.ItemSelected+=x=>field!.Type=typeButton.GetPopup().GetItemText((int)x);
defaultValueEdit.TextChanged+=x=>field!.DefaultValue=x;
categoryEdit.TextChanged+=x=>field!.Category=x;
removeButton.Pressed+=()=>
{
fields.Remove(field!);
container.QueueFree();
var current = templateBuilder.CurrentTemplate.Fields.ToList();
current.Remove(formField);
templateBuilder.CurrentTemplate.Fields = current.ToArray();
};
}
public override string GetContent()
{
if (fields.Any(x =>
{
switch (x.Name, x.Type, x.DefaultValue, x.Category)
{
case ("", _, _, _):
case (_, "", _, _):
case (_, _, "", _):
return true;
default:
return false;
}
}))
{
throw new InvalidOperationException("请填写完整");
}
var value = JsonHelper.Get(fields);
return value;
}
public override void Clear()
{
fields.Clear();
if (templateBuilder.CurrentTemplate is null) return;
templateNameEdit.Text = templateBuilder.CurrentTemplate?.Name;
}
public override void OnStart()
{
addFieldsButton.Pressed+=AddFields;
deleteTemplateButton.Pressed += DeleteCurrentTemplate;
saveTemplateNameButton.Pressed+=()=>
{
ChangeCurrentTemplateName(templateNameEdit.Text);
};
templateNameEdit.TextSubmitted+=ChangeCurrentTemplateName;
}
private void AddFields()
{
var current = templateBuilder.CurrentTemplate.Fields.ToList();
current.Add(new IDIS_TemplateForm()
{
Name = "新字段",
Type = "string",
DefaultValue = "",
Category = ""
});
templateBuilder.CurrentTemplate.Fields = current.ToArray();
templateBuilder.Rebuild();
}
private void ChangeCurrentTemplateName(string newName)
{
if(templateBuilder.CurrentTemplate==null) return;
if (templateBuilder.template.GetTemplates().Any(x => x.Name == newName))
// ReSharper disable once StringLiteralTypo
newName+=DateTime.Now.ToString("mmss");
templateBuilder.CurrentTemplate.Name = newName;
templateBuilder.template.ManualSave();
templateBuilder.Rebuild();
}
private void DeleteCurrentTemplate()
{
if(templateBuilder.CurrentTemplate==null) return;
templateResource.DeleteTemplate(templateBuilder.CurrentTemplate.Name);
templateBuilder.Rebuild();
}
}

View File

@ -1,21 +0,0 @@
#if Deprecated
using Godot;
using System;
namespace BITFactory;
[GlobalClass]
public partial class IDIS_AutoRegResource : Resource
{
[Export] public string HandleSeed;
[ExportCategory("IDIS")]
[Export] public string Format;
[Export] public string Category;
[Export] public string Name;
[Export] public string Value;
[ExportCategory("标识引用")]
[Export] public string RefHandleSeed;
}
#endif

View File

@ -1,87 +0,0 @@
#if deprecated
using Godot;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BITFactory;
using BITKit;
using Godot.Collections;
namespace BITFactory;
public partial class IDIS_AutoRegister : Node
{
[Export] private Array<IDIS_AutoRegResource> regResources;
[ExportCategory("UI 绑定")]
[Export] private Array<ProgressBar> progressBars;
[Export] private RichTextLabel logLabel;
private readonly Queue<ProgressBar> _progressQueue = new();
private ProgressBar _currentProgressBar;
private void Register()
{
BIT4Log.Log<IDIS_AutoRegister>("开始自动注册中...");
var seeds = new List<string>();
foreach (var x in regResources)
{
seeds.Add(x.HandleSeed);
if (string.IsNullOrEmpty(x.RefHandleSeed) is false)
{
seeds.Add(x.RefHandleSeed);
}
}
seeds = seeds.Distinct().ToList();
var handles =
new System.Collections.Generic.Dictionary<string, string>(seeds.Select(x =>
new KeyValuePair<string, string>(x, IDIS_Service.GenerateHandle())));
try
{
foreach (var x in regResources)
{
var handle = handles[x.HandleSeed];
IDIS_Service.Singleton.Register(handle, x.Name, x.Format, x.Value, x.Category);
if (string.IsNullOrEmpty(x.RefHandleSeed) is false && handles.TryGetValue(x.RefHandleSeed, out var refHandle))
{
IDIS_Service.Singleton.RegisterReference(handle, refHandle);
}
logLabel.Text+=$"\n[{DateTime.Now}]{x.Name} 已注册,使用标识: {handle}";
}
}
catch (Exception e)
{
logLabel.Text += $"\n[color=red]错误:\n{e.Message}[/color]";
}
foreach (var x in progressBars)
{
x.Value = x.MinValue;
_progressQueue.Enqueue(x);
}
}
public override void _Process(double delta)
{
switch (_currentProgressBar)
{
case null when _progressQueue.Count == 0:
return;
case null:
_progressQueue.TryDequeue(out _currentProgressBar);
return;
case (var x) when x.Value >= x.MaxValue:
_progressQueue.TryDequeue(out _currentProgressBar);
return;
default:
_currentProgressBar.Value +=
Mathf.Lerp(_currentProgressBar.MinValue, _currentProgressBar.MaxValue, delta);
break;
}
}
}
#endif

View File

@ -1,171 +0,0 @@
#if Deprecated
using Godot;
using System;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BITKit;
using Cysharp.Threading.Tasks;
namespace BITFactory;
public partial class IDIS_SearchService : Node
{
[ExportCategory("Service")]
[Export] private IDIS_Service service;
[ExportCategory("UI 绑定 ")]
[Export] private LineEdit searchEdit;
[Export] private Control searchCandidateContainer;
[Export] private StringResource searchButtonVariation;
[Export] private Control searchEditPadding;
[Export] private Button searchButton;
[Export] private Button copyHandleButton;
[ExportCategory("Query 绑定")]
[Export] private Label handleLabel;
[Export] private Label nameLabel;
[Export] private Label createTimeLabel;
[Export] private Label updateTimeLabel;
[Export] private Control valueContainer;
[Export] private Control referenceContainer;
[ExportCategory("Template")]
[Export] private PackedScene valueTemplate;
[Export] private PackedScene referenceTemplate;
[Export] private PackedScene categoryTemplate;
private string currentHandle;
public override void _Ready()
{
MathNode.ClearChild(searchCandidateContainer);
MathNode.ClearChild(valueContainer);
searchEdit.TextChanged += Search;
//searchEdit.FocusExited += Clear;
searchButton.Pressed+=Search;
copyHandleButton.Pressed += CopyCurrentHandle;
}
private void Search()
{
Search(searchEdit.Text);
}
private void Search(string word)
{
var split = word.Split('?');
var condition = string.Empty;
switch (split)
{
case var x when x.Length is 1:
break;
case var x when x.Length is 2:
condition = split[1];
break;
case var x when x.Length > 2:
split = word.Split('?', 2);
condition = split[1];
break;
}
var rawHandle = split[0];
MathNode.ClearChild(searchCandidateContainer);
if (service.Query(word, out IDIS_Query[] queries) is false) return;
if (queries.Length is 1 && queries.First().Handle == rawHandle)
{
QueryIDIS(queries.First());
return;
}
foreach (var query in queries.Take(3))
{
var button = new Button();
button.Flat = true;
searchCandidateContainer.AddChild(button);
button.Text = $"{query.Handle}:{query.CreateUser}";
button.Pressed+=OnButtonOnPressed;
button.ThemeTypeVariation = searchButtonVariation.Value;
void OnButtonOnPressed()
{
searchEdit.Text =string.IsNullOrEmpty(condition) ? query.Handle :query.Handle + condition ;
Search(query.Handle);
QueryIDIS(query);
}
}
}
private async void Clear()
{
await Task.Delay(100);
MathNode.ClearChild(searchCandidateContainer);
}
private void QueryIDIS(IDIS_Query query)
{
searchEditPadding.Hide();
handleLabel.Text = query.Handle;
currentHandle = query.Handle;
createTimeLabel.Text = query.CreateTime.ToString("yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture);
updateTimeLabel.Text = query.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture);
MathNode.ClearChild(valueContainer);
MathNode.ClearChild(referenceContainer);
foreach (var categoryGroup in query.Datas.GroupBy(x=>x.Category))
{
var categoryContainer = categoryTemplate.Instantiate<UXContainer>();
categoryContainer.Text = categoryGroup.First().Category;
foreach (var x in categoryGroup)
{
var container = valueTemplate.Instantiate<UXContainer>();
container.labels[0].Text = x.Name;
container.labels[1].Text = x.Value;
container.labels[2].Text = x.UpdateTime.ToString(CultureInfo.InvariantCulture);
container.labels[3].Text = x.CreateTime.ToString(CultureInfo.InvariantCulture);
categoryContainer.contextContainer.AddChild(container);
}
valueContainer.AddChild(categoryContainer);
}
foreach (var x in query.References)
{
var container = referenceTemplate.Instantiate<UXContainer>();
container.Text = x.RelatedHandle;
container.button.Pressed += () =>
{
service.Query(x.RelatedHandle,out IDIS_Query _query);
QueryIDIS(_query);
};
referenceContainer.AddChild(container);
}
}
private void CopyCurrentHandle()
{
DisplayServer.ClipboardSet(currentHandle);
}
}
#endif

View File

@ -1,128 +0,0 @@
#if Deprecated
using Godot;
using System;
using System.Globalization;
using System.Text;
using System.Timers;
using BITFactory;
using BITKit;
using Cysharp.Threading.Tasks;
using SQLitePCL;
using Timer = System.Timers.Timer;
// ReSharper disable All
namespace BITFactory;
public partial class IDIS_THService : Node
{
public enum UpdateMode
{
None,
Update,
Insert,
UpdateAndInsert,
}
[Export] private UpdateMode currentUpdateMode = UpdateMode.Insert;
[ExportCategory("Services")]
[Export] private IDIS_Service service;
[Export] private 湿Reader thReader;
[ExportCategory("UI 绑定")]
[Export] private Button submitButton;
[Export] private CheckButton autoUpdateButton;
[Export] private OptionButton updateModeButton;
[Export] private LineEdit handleEdit;
[Export] private LineEdit temperatureEdit;
[Export] private LineEdit humidityEdit;
[Export] private RichTextLabel hintsLabel;
[Export] private RichTextLabel autoUpdateLabel;
private Timer autoUpdateTimer;
public override void _Ready()
{
submitButton.Pressed += Submit;
autoUpdateButton.Toggled += toggle =>
{
submitButton.Disabled = toggle;
handleEdit.Editable = !toggle;
temperatureEdit.Editable = !toggle;
humidityEdit.Editable = !toggle;
autoUpdateTimer.Enabled = toggle;
};
updateModeButton.GetPopup().Clear();
updateModeButton.GetPopup().AddItem("不更新");
updateModeButton.GetPopup().AddItem("更新记录");
updateModeButton.GetPopup().AddItem("添加记录");
updateModeButton.GetPopup().IndexPressed += index =>
{
currentUpdateMode = (UpdateMode)index;
};
autoUpdateTimer = new Timer();
autoUpdateTimer.AutoReset = true;
autoUpdateTimer.Interval = 1000;
autoUpdateTimer.Elapsed += AutoUpdate;
}
private async void AutoUpdate(object sender, ElapsedEventArgs e)
{
await UniTask.SwitchToSynchronizationContext(BITApp.SynchronizationContext);
UpdateTH(handleEdit.Text,thReader.temperature.ToString(),thReader.humidity.ToString());
}
private void Submit()
{
switch (handleEdit.Text, temperatureEdit.Text, humidityEdit.Text)
{
case ("", _, _):
hintsLabel.Text = "请输入标识码";
return;
case (_, "", _):
hintsLabel.Text = "请输入温度";
return;
case (_, _, ""):
hintsLabel.Text = "请输入湿度";
return;
}
UpdateTH(handleEdit.Text,temperatureEdit.Text,humidityEdit.Text);
}
private void UpdateTH(string handle,string temperature,string humidity)
{
if (string.IsNullOrEmpty(handle))
{
autoUpdateLabel.SetTextAsync("空的标识码");
return;
}
switch (currentUpdateMode)
{
case UpdateMode.Insert:
service.Register(handle,"温度" ,"float", temperature, "环境");
service.Register(handle, "湿度","float", humidity, "环境");
break;
case UpdateMode.Update:
if (service.Update(handle, "当前温度",temperature) is false)
{
autoUpdateLabel.SetTextAsync("温度更新失败,未知异常");
return;
}
if (service.Update(handle, "当前湿度",humidity) is false)
{
autoUpdateLabel.SetTextAsync("湿度更新失败,未知异常");
return;
}
break;
case UpdateMode.UpdateAndInsert:
service.Register(handle,"温度" ,"float", temperature, "环境");
service.Register(handle, "湿度","float", humidity, "环境");
goto case UpdateMode.Update;
}
autoUpdateLabel.SetTextAsync($"温湿度已自动更新:{DateTime.Now}");
}
}
#endif

View File

@ -1,168 +0,0 @@
#if Deprecated
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using BITKit;
using BITKit.IO;
using Godot;
namespace BITFactory;
[Serializable]
public class IDIS_Template
{
public string TemplateName="标识注册模板";
public string TemplateDescription="该模板通常用于xxx用途";
public string IconPath="Register";
public DateTime CreateTime=DateTime.Now;
public DateTime UpdateTime=DateTime.Now;
public List<(string format,string hint,string category)> Formats=new();
}
public partial class IDIS_TemplateService : Node
{
private static string assetPath => PathHelper.GetPath("标识注册模板.zip");
private const string templateName = $"{nameof(IDIS_Template)}.json";
public readonly List<IDIS_Template> templates=new();
[ExportCategory("Quick Start")]
[Export] private Button createButton;
[Export] private Button newFormatButton;
[Export] private NodeBuilder templateIndexBuilder;
[Export] private NodeBuilder templateFormatBuilder;
[Export] private LineEdit templateNameEdit;
[Export] private LineEdit templateDescriptionEdit;
[Export] private Label templateCreateTimeLabel;
[Export] private Label templateUpdateTimeLabel;
[ExportCategory("Template")]
[Export] private PackedScene templateContainer;
private bool isDirty;
private IDIS_Template _selectedTemplate;
public override void _Ready()
{
if (File.Exists(assetPath) is false)
{
BIT4Log.Log<IDIS_TemplateService>($"未找到配置文件:{assetPath}");
Save();
}
var temp = BITAssets.Read<List<IDIS_Template>>(assetPath, templateName);
templates.AddRange(temp);
BIT4Log.Log<IDIS_TemplateService>($"已加载配置文件:{assetPath}");
createButton.Pressed += CreateTemplate;
newFormatButton.Pressed += CreateFormat;
templateNameEdit.TextChanged += OnTemplateNameChanged;
templateDescriptionEdit.TextChanged += OnTemplateDescriptionChanged;
EnsureConfigure();
}
private void CreateFormat()
{
if (_selectedTemplate is null) return;
_selectedTemplate.Formats ??= new();
_selectedTemplate.Formats.Add(("新的数据格式","格式类型","数据类型"));
_selectedTemplate.UpdateTime= DateTime.Now;
EnsureConfigure();
}
public override void _ExitTree()
{
Save();
}
private void CreateTemplate()
{
templates.Add(new IDIS_Template()
{
TemplateName = "新的标识注册模板"
});
EnsureConfigure();
}
private void Save()
{
BITAssets.Build(assetPath,new IAsset[]
{
new BITAsset(templateName,JsonHelper.Get(templates))
});
BIT4Log.Log<IDIS_TemplateService>($"已创建配置文件:{assetPath}");
}
private void OnTemplateNameChanged(string text)
{
if (_selectedTemplate is null) return;
_selectedTemplate.TemplateName = text;
_selectedTemplate.UpdateTime= DateTime.Now;
}
private void OnTemplateDescriptionChanged(string text)
{
if (_selectedTemplate is null) return;
_selectedTemplate.TemplateDescription = text;
_selectedTemplate.UpdateTime= DateTime.Now;
}
private void EnsureConfigure()
{
templateIndexBuilder.Clear();
templateFormatBuilder.Clear();
foreach (var x in templates)
{
var _container = templateIndexBuilder.Build<UXContainer>();
_container.button.Text = x.TemplateName;
_container.button.Pressed += () =>
{
_selectedTemplate = x;
EnsureConfigure();
};
}
if (_selectedTemplate is null) return;
templateNameEdit.Text = _selectedTemplate.TemplateName;
templateDescriptionEdit.Text = _selectedTemplate.TemplateDescription;
templateCreateTimeLabel.Text = _selectedTemplate.CreateTime.ToString(CultureInfo.InvariantCulture);
templateUpdateTimeLabel.Text = _selectedTemplate.UpdateTime.ToString(CultureInfo.InvariantCulture);
for (var i = 0; i < _selectedTemplate.Formats.Count; i++)
{
var x = _selectedTemplate.Formats[i];
var _container = templateFormatBuilder.Build<UXContainer>();
_container.lineEdits[0].Text = x.format;
_container.lineEdits[1].Text = x.hint;
_container.lineEdits[2].Text = x.category;
var index = i;
_container.lineEdits[0].TextChanged += (s) =>
{
var current = _selectedTemplate.Formats[index];
current.format = s;
_selectedTemplate.Formats[index] = current;
_selectedTemplate.UpdateTime = DateTime.Now;
};
_container.lineEdits[1].TextChanged += s =>
{
var current = _selectedTemplate.Formats[index];
current.hint = s;
_selectedTemplate.Formats[index] = current;
};
_container.lineEdits[2].TextChanged += s =>
{
var current = _selectedTemplate.Formats[index];
current.category = s;
_selectedTemplate.Formats[index] = current;
};
_container.button.Pressed += () =>
{
_selectedTemplate.Formats.RemoveAt(index);
EnsureConfigure();
};
}
}
}
#endif

View File

@ -1,85 +0,0 @@
#if Deprecated
using Godot;
using System;
using System.Collections.Generic;
using System.Linq;
using BITKit;
namespace BITFactory;
public partial class IDIS_UpdateService : Node
{
[ExportCategory("Service")]
[Export] private IDIS_Service service;
[Export] private IDIS_TemplateService templateService;
[ExportCategory("UI 绑定")]
[Export] private NodeBuilder indexBuilder;
[Export] private NodeBuilder templateBuilder;
[Export] private LineEdit handleEdit;
[Export] private Button submitButton;
[Export] private RichTextLabel hintsLabel;
private ButtonGroup _buttonGroup;
private readonly Dictionary<string,LineEdit> dataEdits = new();
public override void _Ready()
{
_buttonGroup = new ButtonGroup();
submitButton.Pressed += Submit;
submitButton.Disabled = true;
Refresh();
}
private void Refresh()
{
templateBuilder.Clear();
indexBuilder.Clear();
foreach (var x in templateService.templates)
{
var container = indexBuilder.Build<UXContainer>();
container.button.Text = x.TemplateName;
container.button.ButtonPressed = true;
container.button.ButtonGroup = _buttonGroup;
container.button.Pressed +=()=> Entry(x);
}
}
private void Entry(IDIS_Template template)
{
templateBuilder.Clear();
dataEdits.Clear();
foreach (var x in template.Formats)
{
var container = templateBuilder.Build<UXContainer>();
container.Text = x.format;
container.lineEdit.PlaceholderText = x.hint;
dataEdits.TryAdd(x.format, container.lineEdit);
}
submitButton.Disabled = false;
}
private void Submit()
{
if (string.IsNullOrEmpty(handleEdit.Text))
{
hintsLabel.Text="请填写标识码";
return;
}
var handle = handleEdit.Text;
var values = new Dictionary<string, string>(
dataEdits
.Where(x=>string.IsNullOrEmpty(x.Value.Text) is false)
.Select(x => new KeyValuePair<string, string>(x.Key, x.Value.Text))
);
foreach (var x in values)
{
service.Update(handle, x.Key, x.Value);
}
hintsLabel.Text=$"更新成功,已更新{values.Count}个值"+DateTime.Now;
}
}
#endif

View File

@ -1,17 +0,0 @@
using Godot;
using System;
using System.Linq;
using BITKit;
namespace BITKit;
public partial class TemplateCondition : ConditionComponent
{
public override Type BaseType => typeof(ConditionComponent);
[Export] private TemplateResource templateResource;
[Export] private string templateName;
public override bool OnCheck()
{
return templateResource.GetTemplates().Any(x => x.Name == templateName);
}
}

View File

@ -1,23 +0,0 @@
#if Deprecated
using Godot;
using System;
namespace BITFactory;
public partial class 湿 : Node
{
[Export] private string handle;
[Export] private int count;
[Export] private LineEdit _lineEdit;
private void Excute()
{
var myHandle = handle;
if (_lineEdit is not null) myHandle = _lineEdit.Text;
for (var i = 0; i < count; i++)
{
IDIS_Service.Singleton.Register(myHandle, "温度", "float", $"{new Random().Next(10, 60)}", "环境");
IDIS_Service.Singleton.Register(myHandle, "湿度", "float", $"{new Random().Next(0, 100)}", "环境");
}
}
}
#endif

View File

@ -1,151 +0,0 @@
using Godot;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Net.Mime;
using System.Runtime.InteropServices;
using System.Threading;
using System.Timers;
using BITKit;
using Cysharp.Threading.Tasks;
using SharpModbus;
using Timer = System.Timers.Timer;
namespace BITFactory;
public partial class 湿Reader : Node
{
[ExportCategory("参数")]
[Export(PropertyHint.Range,"100,2000")] private int interval=500;
[ExportCategory("网络设置")]
[Export] private string ip="192.168.3.7";
[Export] private int port=502;
[ExportCategory("运行时")]
[Export]public double humidity = 50.0;
[Export]public double temperature = 26.0;
[ExportCategory("UI 绑定")]
[Export] private Button connectToModbusButton;
[Export] private UXContainer temperatureContainer;
[Export] private UXContainer humidityContainer;
[Export] private LineEdit ipEdit;
[Export] private LineEdit portEdit;
[Export] private RichTextLabel hintsLabel;
private ModbusMaster _modbus;
private Timer timer;
private CancellationTokenSource _CancellationTokenSource;
public override void _Ready()
{
_CancellationTokenSource = new CancellationTokenSource();
try
{
_modbus = ModbusMaster.TCP(ip, port);
}
catch (Exception e)
{
hintsLabel.Text = e.Message;
}
ipEdit.TextChanged+=s=>ip=s;
portEdit.TextChanged+=s=>
{
try
{
port = int.Parse(s);
}
catch (Exception e)
{
hintsLabel.SetTextAsync(e.Message);
}
};
connectToModbusButton.Pressed += Connect;
Connect();
timer = new Timer();
timer.Interval = interval;
timer.Elapsed += OnTimerElapsed;
timer.AutoReset = false;
timer.Start();
}
public override void _ExitTree()
{
_CancellationTokenSource.Cancel();
timer.Stop();
}
/// <summary>
/// 连接到Modbus
/// </summary>
private void Connect()
{
_modbus?.Dispose();
try
{
_modbus = ModbusMaster.TCP(ip, port);
}
catch (Exception e)
{
BIT4Log.Log<湿Reader>(e.Message);
hintsLabel.SetTextAsync(e.Message);
}
}
/// <summary>
/// 内部方法,定时器回调用于读取Modbus
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void OnTimerElapsed(object sender, ElapsedEventArgs e)
{
await UniTask.SwitchToTaskPool();
try
{
if (_modbus is null)
{
hintsLabel.SetTextAsync("Modbus未初始化");
timer.Start();
return;
}
_CancellationTokenSource.Token.ThrowIfCancellationRequested();
hintsLabel.SetTextAsync( "正在读取温湿度数据..."+DateTime.Now);
var vs = _modbus.ReadInputRegisters(1, 0, 2);
_CancellationTokenSource.Token.ThrowIfCancellationRequested();
hintsLabel.SetTextAsync( "已采集到数据,正在解析..."+DateTime.Now);
if (vs is not { Length: 2 })
{
hintsLabel.SetTextAsync(hintsLabel.Text = $"获取温湿度数据失败:数据长度为:{vs.Length}"+DateTime.Now);
return;
}
temperature = vs[0] / 10.0;
humidity = vs[1] / 10.0;
hintsLabel.SetTextAsync("已获取到温湿度数据:"+DateTime.Now);
temperatureContainer.label.SetTextAsync(temperature.ToString(CultureInfo.InvariantCulture)); ;
humidityContainer.label.SetTextAsync(humidity.ToString(CultureInfo.InvariantCulture));
timer.Start();
}
catch (OperationCanceledException)
{
BIT4Log.Log<湿Reader>($"Modbus读取任务已取消");
}
catch (Exception ex)
{
hintsLabel.SetTextAsync(ex.Message);
timer.Start();
}
}
}

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=3 format=3 uid="uid://dmk2vf7jamysi"]
[gd_scene load_steps=3 format=3 uid="uid://ivjmvpnehgvp"]
[ext_resource type="Texture2D" uid="uid://58y4a67wwco4" path="res://Artists/Art/Icons/Icon_Settings.png" id="1_hpoox"]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=4 format=3 uid="uid://cnd2ofcdx0inc"]
[gd_scene load_steps=4 format=3 uid="uid://c3bdy10b3s0my"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXContainer.cs" id="1_4faap"]
[ext_resource type="Texture2D" uid="uid://dyxw5ocfiamgi" path="res://Mods/工业数据采集与分析应用分享/Arts/Images/标准ModbusRTU图片.jpg" id="1_yd6oj"]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=6 format=3 uid="uid://n3v64dkgpccy"]
[gd_scene load_steps=6 format=3 uid="uid://5u6a07w3jmsk"]
[sub_resource type="Animation" id="Animation_d44nr"]
length = 0.001

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=5 format=3 uid="uid://dv3ugwbqu3t77"]
[gd_scene load_steps=5 format=3 uid="uid://bo2eturxtac32"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cpr2j"]
bg_color = Color(0.317647, 0.639216, 0.827451, 1)

View File

@ -1,32 +0,0 @@
# 工业数据采集与分析应用分享
## 该应用程序使用方式为提供基于教学步骤的数据采集与分析的实践,主要包括以下内容:
* 教程文档
* 数据显示
* 模拟数据
* 该软件的作用就像是买书附带的光碟,里面有软件和视频等教辅软件
## 实践一:温湿度数据采集
配置温湿度传感器485+以太网转485模块+电源等
目标掌握Modbus协议、接线、查看文档等技能
步骤:查看文档+接线+现场讲解等
## 实践二:模拟量数字量采集
配置:按钮开关+4-20ma信号发生器+模拟量采集模块+电源等
目标:掌握常见传感器的数据采集等。
步骤:查看文档+接线+现场讲解+采集
## 实践三:激光雷达数据采集
配置:激光雷达(UDP)+电源等
目标:掌握非标自定义协议的设备的数据采集。
步骤:查看文档+接线+现场讲解+采集

View File

@ -1,144 +0,0 @@
[gd_scene load_steps=12 format=3 uid="uid://cdivd7qml4dvu"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXPanel.cs" id="1_2tjg8"]
[ext_resource type="Texture2D" uid="uid://b0f2b032lufnb" path="res://Mods/教育平台/Arts/Textures/ee680086375133.5d97558385c71.jpg" id="2_8n5qp"]
[ext_resource type="PackedScene" uid="uid://d1po2qljd0jh2" path="res://Mods/教育平台/教程header.tscn" id="3_ds640"]
[ext_resource type="Texture2D" uid="uid://brhl3mwa5ibbk" path="res://Mods/教育平台/Arts/Textures/holographic_city_node.jpg" id="4_vne04"]
[ext_resource type="Theme" uid="uid://dokwscirps6nt" path="res://Artists/Themes/Factory_Theme.tres" id="5_sn2kd"]
[ext_resource type="PackedScene" uid="uid://bx4v3ofh4on5e" path="res://Mods/工业数据采集与分析应用分享/_Deprecated/标识注册.tscn" id="6_drcgg"]
[ext_resource type="PackedScene" uid="uid://yxubv8dgqnpa" path="res://Mods/工业数据采集与分析应用分享/_Deprecated/标识解析.tscn" id="7_kffxi"]
[ext_resource type="Script" path="res://BITKit/Scripts/GraphNode/GraphFlowService.cs" id="8_xo2g2"]
[ext_resource type="Texture2D" uid="uid://c38luts5hc5fj" path="res://Artists/Art/Icons/Arrows/icon_chevron-left-rounded.png" id="9_6xpog"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXServiceProxy.cs" id="10_x7i37"]
[ext_resource type="Script" path="res://Mods/教育平台/Scripts/SearchRegister.cs" id="11_xciq5"]
[node name="工业互联网标识解析与注册" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_2tjg8")
allowCursor = true
allowInput = true
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = 1920.0
offset_bottom = 1080.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.0390224, 0.0432458, 0.0516745, 1)
[node name="TextureRect" type="TextureRect" parent="."]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 3.0
offset_top = 5.0
offset_right = 1923.0
offset_bottom = 1019.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("2_8n5qp")
stretch_mode = 6
[node name="教程Header" parent="." instance=ExtResource("3_ds640")]
visible = false
layout_mode = 0
[node name="TextureRect" type="TextureRect" parent="教程Header"]
self_modulate = Color(0.329412, 0.329412, 0.329412, 1)
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -42.0
offset_top = -14.0
offset_right = 66.0
offset_bottom = 539.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("4_vne04")
expand_mode = 1
stretch_mode = 6
[node name="TabContainer" type="TabContainer" parent="."]
layout_mode = 2
offset_top = 4.0
offset_right = 1920.0
offset_bottom = 1076.0
size_flags_vertical = 3
theme = ExtResource("5_sn2kd")
theme_override_constants/side_margin = 128
[node name="标识注册" parent="TabContainer" instance=ExtResource("6_drcgg")]
layout_mode = 2
[node name="注册标识" parent="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement2" index="15"]
visible = false
[node name="Label" parent="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="1"]
text = "注册与更新标识"
[node name="标识解析" parent="TabContainer" instance=ExtResource("7_kffxi")]
visible = false
layout_mode = 2
[node name="GraphFlow" type="Node" parent="."]
script = ExtResource("8_xo2g2")
nodes = {
0: NodePath(""),
1: NodePath(""),
2: NodePath(""),
3: NodePath(""),
4: NodePath(""),
5: NodePath(""),
6: NodePath(""),
7: NodePath(""),
8: NodePath(""),
9: NodePath(""),
10: NodePath("")
}
[node name="Return-Button" type="Button" parent="."]
layout_mode = 0
offset_top = 5.0
offset_right = 129.0
offset_bottom = 66.0
text = "返回"
icon = ExtResource("9_6xpog")
expand_icon = true
script = ExtResource("10_x7i37")
[node name="SearchRegister" type="Node" parent="." node_paths=PackedStringArray("keyLine", "valueLine", "nameLine", "idLine", "registryRecordLine", "registryButton", "registryResultLabel")]
script = ExtResource("11_xciq5")
keyLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer/keyLine")
valueLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer2/valueLine")
nameLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer3/nameLine")
idLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer4/idLine")
registryRecordLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer5/registryRecordLine")
registryButton = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/register-button")
registryResultLabel = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/RegistryResultLabel")
[connection signal="pressed" from="Return-Button" to="Return-Button" method="Return"]
[editable path="教程Header"]
[editable path="TabContainer/标识注册"]
[editable path="TabContainer/标识注册/Animations/Start/VBoxContainer/Root/Node-0"]
[editable path="TabContainer/标识注册/Animations/Start/VBoxContainer/Node/Node1-1"]
[editable path="TabContainer/标识注册/Animations/Start/VBoxContainer/Node/Node-1-2"]
[editable path="TabContainer/标识注册/Animations/Start/VBoxContainer/SubNode/Node-2-1"]
[editable path="TabContainer/标识注册/Animations/Start/VBoxContainer/SubNode/Node-2-2"]
[editable path="TabContainer/标识注册/Animations/Start/VBoxContainer/SubNode/Node-2-3"]
[editable path="TabContainer/标识注册/Animations/手动注册与更新标识"]
[editable path="TabContainer/标识注册/Animations/更新温湿度传感器的标识"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement5"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement4"]
[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]
[editable path="TabContainer/标识解析"]

View File

@ -1,781 +0,0 @@
[gd_scene load_steps=20 format=3 uid="uid://bx4v3ofh4on5e"]
[ext_resource type="Theme" uid="uid://dokwscirps6nt" path="res://Artists/Themes/Factory_Theme.tres" id="1_3wvk5"]
[ext_resource type="Script" path="res://BITKit/Scripts/Components/RuntimeNode.cs" id="2_xptn7"]
[ext_resource type="PackedScene" uid="uid://fybiswo7gltf" path="res://Mods/工业数据采集与分析应用分享/Templates/解析节点.tscn" id="3_o1m1n"]
[ext_resource type="PackedScene" uid="uid://n3v64dkgpccy" path="res://Mods/工业数据采集与分析应用分享/Templates/手动注册与更新标识.tscn" id="4_ruskv"]
[ext_resource type="PackedScene" uid="uid://c0p5mw7gbwwk6" path="res://Mods/工业数据采集与分析应用分享/_Deprecated/生产模拟.tscn" id="5_fxufp"]
[ext_resource type="PackedScene" uid="uid://dv3ugwbqu3t77" path="res://Mods/工业数据采集与分析应用分享/Templates/更新温湿度传感器的标识.tscn" id="6_2rvf3"]
[ext_resource type="Script" path="res://Temp/ReadyDebug.cs" id="7_hlgub"]
[ext_resource type="PackedScene" uid="uid://dmk2vf7jamysi" path="res://Mods/工业数据采集与分析应用分享/Templates/StepElement.tscn" id="8_m8q0w"]
[ext_resource type="Texture2D" uid="uid://dytwon7lxa5gw" path="res://Artists/Art/Icons/Icon_Registry_Editor.png" id="9_y30n4"]
[ext_resource type="Texture2D" uid="uid://dv24ghy23fnje" path="res://Artists/Art/Icons/icon_file-ppt-filled.png" id="10_vml30"]
[ext_resource type="Script" path="res://BITKit/Scripts/Components/OpenPath.cs" id="11_0w0p0"]
[ext_resource type="Texture2D" uid="uid://bgwx8t6ugami" path="res://Mods/工业数据采集与分析应用分享/Arts/Images/1-6分钟快速理解Modbus通信协议-480P 清晰-AVC.Cover.jpg" id="12_lmvg6"]
[ext_resource type="Texture2D" uid="uid://cjk4xep1wgmul" path="res://Artists/Art/Icons/Icon_ic_baseline-video-file.png" id="13_h0iu4"]
[ext_resource type="Script" path="res://BITKit/Scripts/Components/OpenUrl.cs" id="14_skh1p"]
[ext_resource type="Texture2D" uid="uid://gtho2m1sv43b" path="res://Artists/Art/Icons/material-symbols_update.png" id="15_asl0l"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_tkumr"]
[sub_resource type="Animation" id="Animation_yhxk4"]
resource_name = "Start"
length = 6.0
tracks/0/type = "animation"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("VBoxContainer/Root/Node-0/AnimationPlayer")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"clips": PackedStringArray("Spawn"),
"times": PackedFloat32Array(0)
}
tracks/1/type = "animation"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("VBoxContainer/Node/Node1-1/AnimationPlayer")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"clips": PackedStringArray("[stop]", "Spawn"),
"times": PackedFloat32Array(1.9, 2)
}
tracks/2/type = "animation"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("VBoxContainer/Node/Node-1-2/AnimationPlayer")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"clips": PackedStringArray("[stop]", "Spawn"),
"times": PackedFloat32Array(1.9, 2)
}
tracks/3/type = "animation"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("VBoxContainer/SubNode/Node-2-1/AnimationPlayer")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"clips": PackedStringArray("[stop]", "Spawn"),
"times": PackedFloat32Array(3.9, 4)
}
tracks/4/type = "animation"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("VBoxContainer/SubNode/Node-2-2/AnimationPlayer")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"clips": PackedStringArray("[stop]", "Spawn"),
"times": PackedFloat32Array(3.9, 4)
}
tracks/5/type = "animation"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("VBoxContainer/SubNode/Node-2-3/AnimationPlayer")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"clips": PackedStringArray("[stop]", "Spawn"),
"times": PackedFloat32Array(3.9, 4)
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_efxtn"]
_data = {
"Start": SubResource("Animation_yhxk4")
}
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_i5ei2"]
content_margin_left = 8.0
content_margin_top = 8.0
content_margin_right = 8.0
content_margin_bottom = 8.0
bg_color = Color(0, 0, 0, 0.501961)
corner_radius_top_left = 8
corner_radius_top_right = 8
corner_radius_bottom_right = 8
corner_radius_bottom_left = 8
[node name="标识注册" type="ColorRect"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_3wvk5")
color = Color(0.121569, 0.129412, 0.145098, 1)
[node name="Animations" type="TabContainer" parent="."]
custom_minimum_size = Vector2(1024, 384)
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -473.0
offset_top = 64.0
offset_right = 551.0
offset_bottom = 448.0
grow_horizontal = 2
theme_override_styles/panel = SubResource("StyleBoxEmpty_tkumr")
tabs_visible = false
[node name="Start" type="HBoxContainer" parent="Animations"]
layout_mode = 2
theme_override_constants/separation = 16
alignment = 1
script = ExtResource("2_xptn7")
[node name="AnimationPlayer" type="AnimationPlayer" parent="Animations/Start"]
reset_on_save = false
method_call_mode = 1
libraries = {
"": SubResource("AnimationLibrary_efxtn")
}
[node name="VBoxContainer" type="VBoxContainer" parent="Animations/Start"]
layout_mode = 2
[node name="Root" type="HBoxContainer" parent="Animations/Start/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
alignment = 1
[node name="Node-0" parent="Animations/Start/VBoxContainer/Root" instance=ExtResource("3_o1m1n")]
layout_mode = 2
size_flags_vertical = 3
[node name="Node" type="HBoxContainer" parent="Animations/Start/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
alignment = 1
[node name="Node1-1" parent="Animations/Start/VBoxContainer/Node" instance=ExtResource("3_o1m1n")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/VBoxContainer/Node/Node1-1/Icon" index="0"]
text = "S"
[node name="Name" parent="Animations/Start/VBoxContainer/Node/Node1-1" index="1"]
text = "二级节点"
[node name="Node-1-2" parent="Animations/Start/VBoxContainer/Node" instance=ExtResource("3_o1m1n")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/VBoxContainer/Node/Node-1-2/Icon" index="0"]
text = "S"
[node name="Name" parent="Animations/Start/VBoxContainer/Node/Node-1-2" index="1"]
text = "二级节点"
[node name="SubNode" type="HBoxContainer" parent="Animations/Start/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
alignment = 1
[node name="Node-2-1" parent="Animations/Start/VBoxContainer/SubNode" instance=ExtResource("3_o1m1n")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/VBoxContainer/SubNode/Node-2-1/Icon" index="0"]
text = "E"
[node name="Name" parent="Animations/Start/VBoxContainer/SubNode/Node-2-1" index="1"]
text = "企业节点"
[node name="Node-2-2" parent="Animations/Start/VBoxContainer/SubNode" instance=ExtResource("3_o1m1n")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/VBoxContainer/SubNode/Node-2-2/Icon" index="0"]
text = "E"
[node name="Name" parent="Animations/Start/VBoxContainer/SubNode/Node-2-2" index="1"]
text = "企业节点"
[node name="Node-2-3" parent="Animations/Start/VBoxContainer/SubNode" instance=ExtResource("3_o1m1n")]
layout_mode = 2
[node name="IconText" parent="Animations/Start/VBoxContainer/SubNode/Node-2-3/Icon" index="0"]
text = "E"
[node name="Name" parent="Animations/Start/VBoxContainer/SubNode/Node-2-3" index="1"]
text = "企业节点"
[node name="VBoxContainer2" type="VBoxContainer" parent="Animations/Start"]
layout_mode = 2
[node name="Label" type="Label" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_i5ei2")
text = "用户:查询88.123.99的信息"
[node name="Label2" type="Label" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_i5ei2")
text = "向顶级节点查询88.123.99"
[node name="HSeparator" type="HSeparator" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
[node name="Label3" type="Label" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_i5ei2")
text = "顶级节点返回数据类型为HS_SITE.PREFIX的IP地址"
[node name="Label4" type="Label" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_i5ei2")
text = "通过二级节点查询88.123.99"
[node name="Label5" type="Label" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_i5ei2")
text = "返回数据类型为HS_SITE的地址"
[node name="HSeparator2" type="HSeparator" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
[node name="Label6" type="Label" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_i5ei2")
text = "查询:88.123.99/MyABC"
[node name="Label7" type="Label" parent="Animations/Start/VBoxContainer2"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_i5ei2")
text = "返回标识的相关属性信息"
[node name="手动注册与更新标识" parent="Animations" instance=ExtResource("4_ruskv")]
visible = false
layout_mode = 2
[node name="准备环境" type="Control" parent="Animations"]
visible = false
layout_mode = 2
[node name="认识与采集" type="Control" parent="Animations"]
visible = false
layout_mode = 2
[node name="生产模拟" parent="Animations" instance=ExtResource("5_fxufp")]
visible = false
layout_mode = 2
[node name="更新温湿度传感器的标识" parent="Animations" instance=ExtResource("6_2rvf3")]
visible = false
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 2
offset_left = 64.0
offset_top = 461.0
offset_right = 1864.0
offset_bottom = 1018.0
[node name="HSeparator2" type="HSeparator" parent="VBoxContainer"]
visible = false
layout_mode = 2
theme_override_constants/separation = 32
[node name="HSeparator" type="HSeparator" parent="VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
script = ExtResource("7_hlgub")
[node name="HFlowContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer"]
layout_mode = 2
theme_override_constants/separation = 64
[node name="StepElement2" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("8_m8q0w")]
layout_mode = 2
[node name="Name" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent" index="0"]
text = "注册标识"
[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent" index="1"]
text = "注册标识"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent" index="3"]
text = "为温湿度传感器注册标识码"
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent" index="5"]
bbcode_enabled = true
text = "通过二级节点向顶级节点发送数据"
[node name="32493" type="VScrollBar" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent/RichTextLabel" index="1"]
visible = false
layout_mode = 0
anchor_left = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -8.0
max_value = 72.0
step = 1.0
page = 72.0
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="Label2" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识码"
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer2"]
layout_mode = 2
text = "国家级.重庆市.厂家/你的标识"
vertical_alignment = 2
[node name="LineEdit" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
size_flags_horizontal = 3
text = "88.164.143.4154/S84SF1E"
caret_blink = true
caret_blink_interval = 0.5
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "设备名称:"
[node name="LineEdit" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "温湿度传感器"
caret_blink = true
caret_blink_interval = 0.5
[node name="HSeparator2" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer3"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "设备Id
"
[node name="LineEdit" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer3"]
layout_mode = 2
size_flags_horizontal = 3
text = "t.h.sensor_01"
caret_blink = true
caret_blink_interval = 0.5
[node name="HSeparator4" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer5"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识值数量"
[node name="LineEdit" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer5"]
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "自动"
caret_blink = true
caret_blink_interval = 0.5
[node name="HSeparator5" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="HBoxContainer6" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer6"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识值"
[node name="LineEdit" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer6"]
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "自动"
caret_blink = true
caret_blink_interval = 0.5
[node name="HSeparator3" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer4"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "注册记录"
[node name="LineEdit" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/HBoxContainer4"]
layout_mode = 2
size_flags_horizontal = 3
text = "registry-t.h.sensor_01-S84SF1E"
caret_blink = true
caret_blink_interval = 0.5
[node name="HSeparator6" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
[node name="注册标识" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
layout_mode = 2
text = "注册标识"
icon = ExtResource("9_y30n4")
expand_icon = true
[node name="StepElement9" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("8_m8q0w")]
layout_mode = 2
[node name="Name" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="0"]
text = "手动注册与更新标识"
[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="1"]
text = "手动注册与更新标识"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="3"]
text = "你需要手动注册一些标识数据"
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="5"]
text = "在这里手动添加数据"
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识码:"
[node name="keyLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "88.123.99/02020220225008"
placeholder_text = "88.123.99/XXXXXXX"
caret_blink = true
caret_blink_interval = 0.5
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识值:"
[node name="valueLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer2"]
layout_mode = 2
size_flags_horizontal = 3
text = "myProduct"
caret_blink = true
caret_blink_interval = 0.5
[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer3"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识名:"
[node name="nameLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer3"]
layout_mode = 2
size_flags_horizontal = 3
text = "我的产品"
caret_blink = true
caret_blink_interval = 0.5
[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer4"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识Id:"
[node name="idLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer4"]
layout_mode = 2
size_flags_horizontal = 3
text = "my.device"
caret_blink = true
caret_blink_interval = 0.5
[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer5"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "注册记录:"
[node name="registryRecordLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer5"]
layout_mode = 2
size_flags_horizontal = 3
text = "registry.my.device.record-001"
caret_blink = true
caret_blink_interval = 0.5
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
text = "在标识码和Id相同时提交更新,不相同时注册标识"
[node name="register-button" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
text = "手动注册和更新"
icon = ExtResource("9_y30n4")
expand_icon = true
[node name="RegistryResultLabel" type="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
layout_mode = 2
bbcode_enabled = true
text = "这里是注册结果"
fit_content = true
[node name="StepElement" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("8_m8q0w")]
layout_mode = 2
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/BaseComponent" index="5"]
text = "这里是需要安装和配置的软件"
[node name="32492" type="VScrollBar" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/BaseComponent/RichTextLabel" index="1"]
visible = false
layout_mode = 0
anchor_left = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -8.0
max_value = 24.0
step = 1.0
page = 24.0
[node name="CheckButton" type="CheckButton" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
visible = false
layout_mode = 2
text = "ModbusPoll.exe"
flat = true
[node name="CheckButton2" type="CheckButton" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
visible = false
layout_mode = 2
text = "NetAssist.exe"
flat = true
[node name="CheckButton3" type="CheckButton" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
visible = false
layout_mode = 2
text = "UartAssist.exe"
flat = true
[node name="CheckButton4" type="CheckButton" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
visible = false
layout_mode = 2
text = "chfs.exe"
flat = true
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "准备好了么?"
[node name="Button" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
layout_mode = 2
text = "一键配置并打开环境"
icon = ExtResource("10_vml30")
expand_icon = true
script = ExtResource("11_0w0p0")
path = "EXE"
[node name="Label2" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "别忘了,我们还有Modbus学习的视频"
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
layout_mode = 2
[node name="TextureButton" type="TextureRect" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/HBoxContainer"]
custom_minimum_size = Vector2(0, 128)
layout_mode = 2
texture = ExtResource("12_lmvg6")
expand_mode = 3
stretch_mode = 5
[node name="Button" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "打开视频"
icon = ExtResource("13_h0iu4")
script = ExtResource("14_skh1p")
url = "https://b23.tv/8YPP7fU"
[node name="StepElement5" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("8_m8q0w")]
layout_mode = 2
[node name="Name" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5/BaseComponent" index="0"]
text = "认识与采集"
[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5/BaseComponent" index="1"]
text = "开始采集"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5/BaseComponent" index="3"]
text = "配置好环境后开始采集"
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5/BaseComponent" index="5"]
text = "跟随以下步骤,开始采集数据"
[node name="32496" type="VScrollBar" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5/BaseComponent/RichTextLabel" index="1"]
visible = false
layout_mode = 0
anchor_left = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -8.0
max_value = 24.0
step = 1.0
page = 24.0
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "查看 温湿度模块 设备使用手册;
查看 485转以太网网口串口服务器 设备使用手册;
分析需要连接的导线,并完成导线连接;
使用Modbus Poll读取数据
使用SCADA等工具采集数据
"
[node name="StepElement4" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("8_m8q0w")]
layout_mode = 2
[node name="Name" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/BaseComponent" index="0"]
text = "开始生产"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/BaseComponent" index="3"]
text = "我们来生产笔记本吧"
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/BaseComponent" index="5"]
text = "在生产过程中,我们会创建和更新一些标识"
[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4"]
layout_mode = 2
text = "订单信息
温度数据
湿度数据
AGV的电量
AGV的电流
装配机械臂的标识
拧紧机械臂的标识
夹爪的标识"
[node name="StepElement3" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("8_m8q0w")]
custom_minimum_size = Vector2(512, 512)
layout_mode = 2
[node name="Name" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent" index="0"]
text = "获取数据"
[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent" index="1"]
text = "获取数据"
[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent" index="3"]
text = "已经采集到数据了"
[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent" index="5"]
text = "当前传感器数据"
[node name="32494" type="VScrollBar" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent/RichTextLabel" index="1"]
visible = false
layout_mode = 0
anchor_left = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -8.0
max_value = 24.0
step = 1.0
page = 24.0
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]
layout_mode = 2
[node name="TextEdit" type="TextEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/VBoxContainer"]
layout_mode = 2
placeholder_text = "http://192.168.254.254:81/WebApi/"
scroll_fit_content_height = true
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/VBoxContainer"]
layout_mode = 2
[node name="VBoxContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/VBoxContainer/HBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 8
[node name="Button" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/VBoxContainer/HBoxContainer/VBoxContainer"]
custom_minimum_size = Vector2(256, 128)
layout_mode = 2
theme_type_variation = &"ColorPanel"
text = "温度36"
[node name="Button2" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/VBoxContainer/HBoxContainer/VBoxContainer"]
custom_minimum_size = Vector2(256, 128)
layout_mode = 2
theme_type_variation = &"ColorPanel"
text = "湿度37"
[node name="Button" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]
layout_mode = 2
text = "提交标识更新数据"
icon = ExtResource("15_asl0l")
expand_icon = true
[node name="Button2" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]
layout_mode = 2
text = "打开详细信息"
expand_icon = true
[connection signal="OnDisable" from="Animations/Start" to="Animations/Start/AnimationPlayer" method="stop" binds= [false]]
[connection signal="OnEnable" from="Animations/Start" to="Animations/Start/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="draw" from="Animations/Start" to="Animations/Start" method="Enable"]
[connection signal="hidden" from="Animations/Start" to="Animations/Start" method="Disable"]
[connection signal="ready" from="VBoxContainer/ScrollContainer" to="VBoxContainer/ScrollContainer" method="set_horizontal_scroll_mode" binds= [1]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2/BaseComponent/Name" to="Animations" method="set_current_tab" binds= [0]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent/Name" to="Animations" method="set_current_tab" binds= [1]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/register-button" to="Animations/手动注册与更新标识/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/BaseComponent/Name" to="Animations" method="set_current_tab" binds= [2]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/Button" to="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/Button" method="Execute"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/HBoxContainer/Button" to="VBoxContainer/ScrollContainer/HFlowContainer/StepElement/HBoxContainer/Button" method="Execute"]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5/BaseComponent/Name" to="Animations" method="set_current_tab" binds= [3]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4/BaseComponent/Name" to="Animations" method="set_current_tab" binds= [4]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/BaseComponent/Name" to="Animations" method="set_current_tab" binds= [5]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/Button" to="Animations/更新温湿度传感器的标识/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="pressed" from="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3/Button2" to="Animations/更新温湿度传感器的标识/AnimationPlayer" method="play"]
[editable path="Animations/Start/VBoxContainer/Root/Node-0"]
[editable path="Animations/Start/VBoxContainer/Node/Node1-1"]
[editable path="Animations/Start/VBoxContainer/Node/Node-1-2"]
[editable path="Animations/Start/VBoxContainer/SubNode/Node-2-1"]
[editable path="Animations/Start/VBoxContainer/SubNode/Node-2-2"]
[editable path="Animations/Start/VBoxContainer/SubNode/Node-2-3"]
[editable path="Animations/手动注册与更新标识"]
[editable path="Animations/更新温湿度传感器的标识"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement4"]
[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"]

View File

@ -1,118 +0,0 @@
[gd_scene load_steps=5 format=3 uid="uid://yxubv8dgqnpa"]
[ext_resource type="Texture2D" uid="uid://mfyhei8n50j0" path="res://Artists/Art/Icons/icon_gears.png" id="1_2ocw7"]
[ext_resource type="Texture2D" uid="uid://dqhcsm0j6w85j" path="res://Artists/Art/Icons/icon_material-symbols_search.png" id="2_bocj6"]
[ext_resource type="Texture2D" uid="uid://cdteo2b8x1rkv" path="res://Artists/Art/Icons/icon_tabler_select.png" id="3_lb8sd"]
[ext_resource type="PackedScene" uid="uid://cnd2ofcdx0inc" path="res://Mods/工业数据采集与分析应用分享/Templates/TrackContainer.tscn" id="4_a2vxv"]
[node name="_标识解析" type="ColorRect"]
clip_children = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="SearchLogLabel" type="RichTextLabel" parent="."]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
text = ">搜索日志"
[node name="TextureRect" type="TextureRect" parent="."]
self_modulate = Color(0.113725, 0.113725, 0.113725, 1)
layout_mode = 0
offset_left = -36.0
offset_top = 269.0
offset_right = 638.0
offset_bottom = 898.0
texture = ExtResource("1_2ocw7")
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_top = 64
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 32
alignment = 1
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "工业互联网标识查询"
horizontal_alignment = 1
vertical_alignment = 1
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(512, 0)
layout_mode = 2
size_flags_horizontal = 4
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/VBoxContainer"]
custom_minimum_size = Vector2(768, 0)
layout_mode = 2
size_flags_horizontal = 4
[node name="SearchInput" type="LineEdit" parent="MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="SearchButton" type="Button" parent="MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
custom_minimum_size = Vector2(100, 32)
layout_mode = 2
text = "查询"
icon = ExtResource("2_bocj6")
expand_icon = true
[node name="QuickSearchButton" type="MenuButton" parent="MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
custom_minimum_size = Vector2(150, 0)
layout_mode = 2
text = "快速查询"
icon = ExtResource("3_lb8sd")
flat = false
expand_icon = true
[node name="PopupMenu" type="PopupMenu" parent="MarginContainer/VBoxContainer/VBoxContainer/HBoxContainer"]
item_count = 1
item_0/text = ""
item_0/id = 0
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/VBoxContainer"]
layout_mode = 2
text = "未填写则查找所有条目"
horizontal_alignment = 1
vertical_alignment = 1
[node name="SearchProgressBar" type="ProgressBar" parent="MarginContainer/VBoxContainer"]
visible = false
custom_minimum_size = Vector2(512, 0)
layout_mode = 2
size_flags_horizontal = 4
value = 50.0
rounded = true
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(1280, 0)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 3
[node name="SearchResult-Container" type="VBoxContainer" parent="MarginContainer/VBoxContainer/ScrollContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 16
[node name="TrackContainer" parent="MarginContainer/VBoxContainer/ScrollContainer/SearchResult-Container" instance=ExtResource("4_a2vxv")]
layout_mode = 2
size_flags_vertical = 3

View File

@ -1,614 +0,0 @@
[gd_scene load_steps=28 format=3 uid="uid://cwq2llh4vrnsg"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXPanel.cs" id="1_rnsr2"]
[ext_resource type="PackedScene" uid="uid://d1po2qljd0jh2" path="res://Mods/教育平台/教程header.tscn" id="2_136dc"]
[ext_resource type="Texture2D" uid="uid://mfyhei8n50j0" path="res://Artists/Art/Icons/icon_gears.png" id="3_eeavf"]
[ext_resource type="Theme" uid="uid://yepsxq6dperk" path="res://Mods/MinimalUI/MinimalUI.tres" id="4_gpphu"]
[ext_resource type="Texture2D" uid="uid://bx6yl6f7ndpbr" path="res://Artists/Art/Backgrounds/ppt-background.png" id="5_1s34r"]
[ext_resource type="Texture2D" uid="uid://k3xy782w6pa0" path="res://BITKit/Art/Shapes/icon_squad_rounded-4px.png" id="6_eeqvn"]
[ext_resource type="Texture2D" uid="uid://dv24ghy23fnje" path="res://Artists/Art/Icons/icon_file-ppt-filled.png" id="7_dalvu"]
[ext_resource type="Texture2D" uid="uid://cqp41rmbnhtfg" path="res://Mods/工业数据采集与分析应用分享/Arts/Images/6分钟快速理解Modbus通信协议@硬声APP.jpg" id="8_60o1p"]
[ext_resource type="Texture2D" uid="uid://cmerxcdq74b5l" path="res://Artists/Art/Icons/Ionc_save.png" id="9_l3857"]
[ext_resource type="Texture2D" uid="uid://df2ytivbngvf4" path="res://Artists/Art/Icons/icon_software.png" id="10_0ydt3"]
[ext_resource type="Texture2D" uid="uid://2qyr2fcp2a2j" path="res://Artists/Art/Icons/icon_filetype-exe.png" id="11_0r4eb"]
[ext_resource type="Texture2D" uid="uid://jscvym83h015" path="res://Artists/Art/Icons/icon_park-solid_install.png" id="12_pww4y"]
[ext_resource type="Texture2D" uid="uid://dhws1cqlkdixm" path="res://Artists/Art/Icons/icon_folder.png" id="13_w2j7y"]
[ext_resource type="Texture2D" uid="uid://cai2ch4k68eyi" path="res://Artists/Art/Icons/icon_folder-delete.png" id="14_7e8yu"]
[ext_resource type="PackedScene" uid="uid://kjagucr1ngry" path="res://Artists/Templates/RectangleData.tscn" id="15_i3dfc"]
[ext_resource type="Texture2D" uid="uid://fkd63fjc550" path="res://Artists/Art/Icons/icon_help.png" id="17_qggt8"]
[ext_resource type="Texture2D" uid="uid://c38luts5hc5fj" path="res://Artists/Art/Icons/Arrows/icon_chevron-left-rounded.png" id="18_l665t"]
[ext_resource type="Texture2D" uid="uid://bqwchhovknbro" path="res://Artists/Art/Icons/Arrows/icon_chevron-right-rounded.png" id="19_lo7qx"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_8r0uu"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_vv624"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_cjnsr"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_y5boq"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_q3pqj"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_jj7yi"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_cxqrw"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ksa7w"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_0hfaj"]
[node name="工业数据采集与分析应用分享" type="VBoxContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 0
script = ExtResource("1_rnsr2")
allowCursor = true
allowInput = true
[node name="教程Header" parent="." instance=ExtResource("2_136dc")]
layout_mode = 2
[node name="Label" parent="教程Header" index="0"]
text = "温湿度数据采集"
[node name="SubViewport" type="SubViewport" parent="."]
[node name="Camera3D" type="Camera3D" parent="SubViewport"]
current = true
[node name="HBoxContainer" type="HBoxContainer" parent="."]
layout_mode = 2
size_flags_vertical = 3
[node name="ColorRect" type="ColorRect" parent="HBoxContainer"]
clip_children = 2
custom_minimum_size = Vector2(256, 0)
layout_mode = 2
color = Color(0.0745098, 0.0745098, 0.0745098, 1)
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/ColorRect"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/ColorRect/VBoxContainer2"]
layout_mode = 2
theme_override_constants/margin_left = 32
theme_override_constants/margin_top = 32
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 32
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "快捷指令"
[node name="Label2" type="Label" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "快捷方式在这里"
[node name="HSeparator" type="HSeparator" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="ItemList" type="ItemList" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxEmpty_8r0uu")
theme_override_styles/focus = SubResource("StyleBoxEmpty_vv624")
theme_override_styles/selected = SubResource("StyleBoxEmpty_cjnsr")
theme_override_styles/selected_focus = SubResource("StyleBoxEmpty_y5boq")
theme_override_styles/cursor = SubResource("StyleBoxEmpty_q3pqj")
theme_override_styles/cursor_unfocused = SubResource("StyleBoxEmpty_jj7yi")
auto_height = true
item_count = 5
item_0/text = "打开PPT"
item_1/text = "播放视频"
item_2/text = "一键配置环境"
item_3/text = "打开环境文件夹"
item_4/text = "扫描并连接温湿度传感器"
[node name="HSeparator2" type="HSeparator" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/ColorRect"]
modulate = Color(0.164706, 0.164706, 0.164706, 1)
layout_mode = 0
offset_left = -66.0
offset_top = 770.0
offset_right = 190.0
offset_bottom = 1009.0
texture = ExtResource("3_eeavf")
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="TabContainer" type="TabContainer" parent="HBoxContainer/VBoxContainer"]
visible = false
layout_mode = 2
size_flags_vertical = 3
theme = ExtResource("4_gpphu")
theme_override_font_sizes/font_size = 24
theme_override_styles/panel = SubResource("StyleBoxEmpty_cxqrw")
clip_tabs = false
tabs_visible = false
[node name="介绍" type="Control" parent="HBoxContainer/VBoxContainer/TabContainer"]
layout_mode = 2
[node name="BoxContainer" type="BoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer/介绍"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="ColorRect" type="ColorRect" parent="HBoxContainer/VBoxContainer/TabContainer/介绍/BoxContainer"]
custom_minimum_size = Vector2(384, 0)
layout_mode = 2
color = Color(0.0627451, 0.0627451, 0.0627451, 1)
[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/VBoxContainer/TabContainer/介绍/BoxContainer/ColorRect"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("4_gpphu")
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer/介绍/BoxContainer/ColorRect/MarginContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
[node name="Label" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer/介绍/BoxContainer/ColorRect/MarginContainer/VBoxContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_type_variation = &"HeaderLarge"
text = "目录"
[node name="Label2" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer/介绍/BoxContainer/ColorRect/MarginContainer/VBoxContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_type_variation = &"HeaderMedium"
text = "实践一温湿度数据采集"
[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/VBoxContainer/TabContainer/介绍/BoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="RichTextLabel" type="RichTextLabel" parent="HBoxContainer/VBoxContainer/TabContainer/介绍/BoxContainer/MarginContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
bbcode_enabled = true
text = "# 工业数据采集与分析应用分享
## 实践一:温湿度数据采集
配置温湿度传感器485+以太网转485模块+电源等
目标掌握Modbus协议、接线、查看文档等技能
步骤:查看文档+接线+现场讲解等
## 实践二:模拟量数字量采集
配置:按钮开关+4-20ma信号发生器+模拟量采集模块+电源等
目标:掌握常见传感器的数据采集等。
步骤:查看文档+接线+现场讲解+采集
## 实践三:激光雷达数据采集
配置:激光雷达(UDP)+电源等
目标:掌握非标自定义协议的设备的数据采集。
步骤:查看文档+接线+现场讲解+采集"
[node name="实战" type="TabContainer" parent="HBoxContainer/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2
[node name="温湿度数据采集(RS485)" type="TabContainer" parent="HBoxContainer/VBoxContainer/TabContainer/实战"]
layout_mode = 2
[node name="Mudbus认识和学习" type="TabContainer" parent="HBoxContainer/VBoxContainer/TabContainer/实战/温湿度数据采集(RS485)"]
layout_mode = 2
[node name="进行采集" type="TabContainer" parent="HBoxContainer/VBoxContainer/TabContainer/实战/温湿度数据采集(RS485)"]
visible = false
layout_mode = 2
[node name="查看设备资料" type="Control" parent="HBoxContainer/VBoxContainer/TabContainer/实战/温湿度数据采集(RS485)/进行采集"]
layout_mode = 2
[node name="接线" type="Control" parent="HBoxContainer/VBoxContainer/TabContainer/实战/温湿度数据采集(RS485)/进行采集"]
visible = false
layout_mode = 2
[node name="使用Mudbus Pull工具进行测试" type="Control" parent="HBoxContainer/VBoxContainer/TabContainer/实战/温湿度数据采集(RS485)/进行采集"]
visible = false
layout_mode = 2
[node name="使用串口服务器将ModbusRTU转为Modbus TCP" type="Control" parent="HBoxContainer/VBoxContainer/TabContainer/实战/温湿度数据采集(RS485)/进行采集"]
visible = false
layout_mode = 2
[node name="接入SCADA" type="Control" parent="HBoxContainer/VBoxContainer/TabContainer/实战/温湿度数据采集(RS485)/进行采集"]
visible = false
layout_mode = 2
[node name="模拟量采集" type="TabContainer" parent="HBoxContainer/VBoxContainer/TabContainer/实战"]
visible = false
layout_mode = 2
[node name="激光雷达数据采集(UDP)" type="TabContainer" parent="HBoxContainer/VBoxContainer/TabContainer/实战"]
visible = false
layout_mode = 2
[node name="现场讲解" type="Control" parent="HBoxContainer/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2
[node name="TabContainer2" type="TabContainer" parent="HBoxContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
theme_override_styles/panel = SubResource("StyleBoxEmpty_ksa7w")
[node name="查看文档" type="MarginContainer" parent="HBoxContainer/VBoxContainer/TabContainer2"]
layout_mode = 2
theme_override_constants/margin_left = 128
theme_override_constants/margin_top = 128
theme_override_constants/margin_right = 128
theme_override_constants/margin_bottom = 128
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档"]
visible = false
layout_mode = 2
texture = ExtResource("5_1s34r")
expand_mode = 1
stretch_mode = 4
[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档"]
layout_mode = 2
theme_override_constants/separation = 64
alignment = 1
[node name="ColorRect" type="NinePatchRect" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer"]
self_modulate = Color(0, 0, 0, 0.501961)
layout_mode = 2
size_flags_horizontal = 3
texture = ExtResource("6_eeqvn")
patch_margin_left = 16
patch_margin_top = 16
patch_margin_right = 16
patch_margin_bottom = 16
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/ColorRect"]
layout_mode = 2
offset_left = 77.0
offset_right = 293.0
offset_bottom = 591.0
theme_override_constants/separation = 16
alignment = 1
[node name="Label" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/ColorRect/VBoxContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_type_variation = &"HeaderMedium"
text = "这是你你需要的课件
可以在这里快速打开"
vertical_alignment = 1
[node name="Button" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/ColorRect/VBoxContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
text = "打开PPT"
icon = ExtResource("7_dalvu")
[node name="Label2" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/ColorRect/VBoxContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_type_variation = &"HeaderMedium"
text = "还有你需要的视频"
vertical_alignment = 1
[node name="RichTextLabel" type="RichTextLabel" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/ColorRect/VBoxContainer"]
layout_mode = 2
bbcode_enabled = true
text = "[url=https://b23.tv/8YPP7fU]6分钟学会modbus通讯协议[/url]"
fit_content = true
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/ColorRect/VBoxContainer"]
custom_minimum_size = Vector2(0, 128)
layout_mode = 2
texture = ExtResource("8_60o1p")
expand_mode = 2
stretch_mode = 5
[node name="Button2" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/ColorRect/VBoxContainer"]
layout_mode = 2
text = "保存视频到本地"
icon = ExtResource("9_l3857")
[node name="NinePatchRect" type="NinePatchRect" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer"]
self_modulate = Color(0, 0, 0, 0.501961)
layout_mode = 2
size_flags_horizontal = 3
texture = ExtResource("6_eeqvn")
patch_margin_left = 16
patch_margin_top = 16
patch_margin_right = 16
patch_margin_bottom = 6
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -174.5
offset_top = -188.0
offset_right = 174.5
offset_bottom = 188.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 16
alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
layout_mode = 2
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/HBoxContainer"]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
texture = ExtResource("10_0ydt3")
expand_mode = 3
[node name="Label2" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/HBoxContainer"]
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_type_variation = &"HeaderLarge"
text = "一键安装mudbus全家桶"
[node name="ItemList" type="ItemList" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
visible = false
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_override_font_sizes/font_size = 24
theme_override_styles/panel = SubResource("StyleBoxEmpty_0hfaj")
select_mode = 1
allow_rmb_select = true
auto_height = true
item_count = 4
fixed_icon_size = Vector2i(32, 32)
item_0/text = "Mudbuspoll"
item_0/icon = ExtResource("11_0r4eb")
item_1/text = "NetAssists"
item_1/icon = ExtResource("11_0r4eb")
item_2/text = "UartAssist"
item_2/icon = ExtResource("11_0r4eb")
item_3/text = "cnfs"
item_3/icon = ExtResource("11_0r4eb")
[node name="Label3" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_type_variation = &"HeaderSmall"
text = "装机必备"
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
layout_mode = 2
[node name="CheckButton" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer"]
layout_mode = 2
text = "Mudbuspoll"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="CheckButton2" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer"]
layout_mode = 2
text = "NetAssists"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="CheckButton3" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer"]
layout_mode = 2
text = "UartAssist"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="CheckButton4" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer"]
layout_mode = 2
text = "cnfs"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="Button6" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
layout_mode = 2
text = "一键所需安装"
icon = ExtResource("12_pww4y")
[node name="Label4" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
layout_mode = 2
theme = ExtResource("4_gpphu")
theme_type_variation = &"HeaderSmall"
text = "推荐安装"
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
layout_mode = 2
[node name="CheckButton" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer2"]
layout_mode = 2
text = "vscode"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="CheckButton2" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer2"]
layout_mode = 2
text = "abb studio"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="CheckButton3" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer2"]
layout_mode = 2
text = "西门子PLC"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="CheckButton4" type="CheckButton" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2/VBoxContainer2"]
layout_mode = 2
text = "tcping"
icon = ExtResource("11_0r4eb")
expand_icon = true
[node name="Button" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
visible = false
layout_mode = 2
text = "给我全装上"
[node name="Button2" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
visible = false
layout_mode = 2
text = "只安装已勾选的"
[node name="Button3" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
visible = false
layout_mode = 2
text = "已勾选的安装+未勾选的卸载"
[node name="Button4" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
visible = false
layout_mode = 2
text = "全部卸载"
[node name="Button5" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect/VBoxContainer2"]
layout_mode = 2
text = "一键安装所有环境"
icon = ExtResource("12_pww4y")
[node name="NinePatchRect2" type="NinePatchRect" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer"]
self_modulate = Color(0, 0, 0, 0.501961)
layout_mode = 2
size_flags_horizontal = 3
texture = ExtResource("6_eeqvn")
patch_margin_left = 16
patch_margin_top = 16
patch_margin_right = 16
patch_margin_bottom = 16
[node name="VBoxContainer3" type="VBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect2"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -143.5
offset_top = -295.5
offset_right = 143.5
offset_bottom = 295.5
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 16
alignment = 1
[node name="Label" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect2/VBoxContainer3"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "当然了,别忘了进入环境"
[node name="Button" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect2/VBoxContainer3"]
layout_mode = 2
text = "打开环境文件夹"
icon = ExtResource("13_w2j7y")
[node name="Label2" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect2/VBoxContainer3"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "如果你想移除环境,可以"
[node name="Button2" type="Button" parent="HBoxContainer/VBoxContainer/TabContainer2/查看文档/HBoxContainer/NinePatchRect2/VBoxContainer3"]
layout_mode = 2
text = "移除环境文件夹"
icon = ExtResource("14_7e8yu")
[node name="温湿度数据采集" type="MarginContainer" parent="HBoxContainer/VBoxContainer/TabContainer2"]
visible = false
layout_mode = 2
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/温湿度数据采集"]
layout_mode = 2
[node name="Label" type="Label" parent="HBoxContainer/VBoxContainer/TabContainer2/温湿度数据采集/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "传感器数据"
[node name="CenterContainer" type="HBoxContainer" parent="HBoxContainer/VBoxContainer/TabContainer2/温湿度数据采集/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 0
[node name="RectangleData" parent="HBoxContainer/VBoxContainer/TabContainer2/温湿度数据采集/VBoxContainer/CenterContainer" instance=ExtResource("15_i3dfc")]
layout_mode = 2
[node name="RectangleData2" parent="HBoxContainer/VBoxContainer/TabContainer2/温湿度数据采集/VBoxContainer/CenterContainer" instance=ExtResource("15_i3dfc")]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer/VBoxContainer/MarginContainer"]
layout_mode = 2
alignment = 2
[node name="Button3" type="Button" parent="HBoxContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
text = "帮助与提示"
icon = ExtResource("17_qggt8")
[node name="Button" type="Button" parent="HBoxContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
text = "上一步"
icon = ExtResource("18_l665t")
[node name="Button2" type="Button" parent="HBoxContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
text = "下一步"
icon = ExtResource("19_lo7qx")
[editable path="教程Header"]
[editable path="HBoxContainer/VBoxContainer/TabContainer2/温湿度数据采集/VBoxContainer/CenterContainer/RectangleData2"]

View File

@ -1,259 +0,0 @@
[gd_scene load_steps=14 format=3 uid="uid://cgocposhaflgj"]
[ext_resource type="PackedScene" uid="uid://d1po2qljd0jh2" path="res://Mods/教育平台/教程header.tscn" id="1_1cv3j"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXPanel.cs" id="1_67mqa"]
[ext_resource type="Texture2D" uid="uid://mfyhei8n50j0" path="res://Artists/Art/Icons/icon_gears.png" id="2_2g7g1"]
[ext_resource type="Theme" uid="uid://yepsxq6dperk" path="res://Mods/MinimalUI/MinimalUI.tres" id="3_f6aoa"]
[ext_resource type="Texture2D" uid="uid://dv24ghy23fnje" path="res://Artists/Art/Icons/icon_file-ppt-filled.png" id="4_20bfy"]
[ext_resource type="PackedScene" uid="uid://kjagucr1ngry" path="res://Artists/Templates/RectangleData.tscn" id="5_p4wj4"]
[ext_resource type="Texture2D" uid="uid://janojpok4ssi" path="res://Mods/工业数据采集与分析应用分享/Arts/Images/激光雷达的扫描图形.png" id="6_ok5xs"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_45lqy"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_h4jgh"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_v8w1o"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_enfxp"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wqqb7"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_yu20n"]
[node name="激光雷达数据采集" type="VBoxContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_67mqa")
allowCursor = true
allowInput = true
[node name="教程Header" parent="." instance=ExtResource("1_1cv3j")]
layout_mode = 2
[node name="Label" parent="教程Header" index="0"]
text = "激光雷达数据采集"
[node name="HBoxContainer" type="HBoxContainer" parent="."]
layout_mode = 2
size_flags_vertical = 3
[node name="ColorRect" type="ColorRect" parent="HBoxContainer"]
clip_children = 2
custom_minimum_size = Vector2(256, 0)
layout_mode = 2
color = Color(0.0745098, 0.0745098, 0.0745098, 1)
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/ColorRect"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/ColorRect/VBoxContainer2"]
layout_mode = 2
theme_override_constants/margin_left = 32
theme_override_constants/margin_top = 32
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 32
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "快捷指令"
[node name="Label2" type="Label" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "快捷方式在这里"
[node name="HSeparator" type="HSeparator" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="ItemList" type="ItemList" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxEmpty_45lqy")
theme_override_styles/focus = SubResource("StyleBoxEmpty_h4jgh")
theme_override_styles/selected = SubResource("StyleBoxEmpty_v8w1o")
theme_override_styles/selected_focus = SubResource("StyleBoxEmpty_enfxp")
theme_override_styles/cursor = SubResource("StyleBoxEmpty_wqqb7")
theme_override_styles/cursor_unfocused = SubResource("StyleBoxEmpty_yu20n")
auto_height = true
item_count = 4
item_0/text = "打开PPT"
item_1/text = "打开激光雷达使用手册"
item_2/text = "打开网络调试工具"
item_3/text = "加载随机预设"
[node name="HSeparator2" type="HSeparator" parent="HBoxContainer/ColorRect/VBoxContainer2/MarginContainer/VBoxContainer2"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/ColorRect"]
modulate = Color(0.164706, 0.164706, 0.164706, 1)
layout_mode = 0
offset_left = -66.0
offset_top = 770.0
offset_right = 190.0
offset_bottom = 1009.0
texture = ExtResource("2_2g7g1")
[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/margin_left = 32
theme_override_constants/margin_top = 32
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 32
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/MarginContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label3" type="Label" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "激光雷达传感器数据采集预设"
[node name="Label" type="Label" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "激光雷达的相关文档在这里"
[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 16
[node name="Button" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
theme = ExtResource("3_f6aoa")
text = "打开PPT"
icon = ExtResource("4_20bfy")
[node name="Button2" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
theme = ExtResource("3_f6aoa")
text = "激光雷达使用手册"
icon = ExtResource("4_20bfy")
[node name="Button3" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
theme = ExtResource("3_f6aoa")
text = "打开网络调试工具"
icon = ExtResource("4_20bfy")
[node name="HSeparator" type="HSeparator" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="Label2" type="Label" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "激光雷达传感器数据采集预设"
[node name="GridContainer" type="GridContainer" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/h_separation = 16
theme_override_constants/v_separation = 16
columns = 8
[node name="Button" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/GridContainer"]
layout_mode = 2
text = "加载预设"
[node name="Button2" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/GridContainer"]
layout_mode = 2
text = "加载预设"
[node name="Button3" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/GridContainer"]
layout_mode = 2
text = "加载预设"
[node name="Button4" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/GridContainer"]
layout_mode = 2
text = "加载预设"
[node name="Button5" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/GridContainer"]
layout_mode = 2
text = "加载预设"
[node name="Button6" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/GridContainer"]
layout_mode = 2
text = "加载预设"
[node name="Button7" type="Button" parent="HBoxContainer/MarginContainer/VBoxContainer/GridContainer"]
layout_mode = 2
text = "加载预设"
[node name="HSeparator2" type="HSeparator" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="HSeparator3" type="HSeparator" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 32
[node name="HBoxContainer2" type="HBoxContainer" parent="HBoxContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2"]
layout_mode = 2
[node name="Label4" type="Label" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "当前激光雷达的数据数据"
[node name="RectangleData" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer" instance=ExtResource("5_p4wj4")]
layout_mode = 2
[node name="Label" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer/RectangleData" index="1"]
text = "ranges"
[node name="Label2" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer/RectangleData/MarginContainer" index="0"]
text = "256"
[node name="RectangleData2" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer" instance=ExtResource("5_p4wj4")]
layout_mode = 2
[node name="Label" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer/RectangleData2" index="1"]
text = "scan_time"
[node name="Label2" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer/RectangleData2/MarginContainer" index="0"]
text = "0.06700015"
[node name="RectangleData3" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer" instance=ExtResource("5_p4wj4")]
layout_mode = 2
[node name="RectangleData4" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer" instance=ExtResource("5_p4wj4")]
layout_mode = 2
[node name="VSeparator" type="VSeparator" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2"]
layout_mode = 2
theme_override_constants/separation = 64
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label4" type="Label" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer2"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "当前图形"
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer2"]
layout_mode = 2
texture = ExtResource("6_ok5xs")
stretch_mode = 4
[editable path="教程Header"]
[editable path="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer/RectangleData"]
[editable path="HBoxContainer/MarginContainer/VBoxContainer/HBoxContainer2/VBoxContainer/RectangleData2"]

View File

@ -1,890 +0,0 @@
[gd_scene load_steps=16 format=3 uid="uid://c0p5mw7gbwwk6"]
[ext_resource type="VideoStream" path="res://Mods/工业数据采集与分析应用分享/Arts/Videos/生产过程模拟.ogv" id="1_n53dq"]
[ext_resource type="Script" path="res://BITKit/Scripts/Components/RuntimeNode.cs" id="2_isay2"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/ProductionAnimation.cs" id="3_6smad"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mmg2t"]
content_margin_left = 8.0
content_margin_right = 8.0
bg_color = Color(0.92549, 0.92549, 0.92549, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_631sk"]
content_margin_left = 8.0
content_margin_top = 8.0
content_margin_right = 8.0
content_margin_bottom = 8.0
bg_color = Color(0.862745, 0.494118, 0.0862745, 1)
[sub_resource type="Animation" id="Animation_ehfn1"]
resource_name = "Start"
length = 6.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("0:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("1:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("2:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("3:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 4),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("4:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 6),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("ProgressBar:value")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 6),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 100.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_0nmby"]
_data = {
"Start": SubResource("Animation_ehfn1")
}
[sub_resource type="Animation" id="Animation_jqadl"]
resource_name = "Start"
length = 6.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("ProgressBar:value")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 6),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [55.0, 100.0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("2:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 4),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_mqq75"]
_data = {
"Start": SubResource("Animation_jqadl")
}
[sub_resource type="Animation" id="Animation_dagmw"]
resource_name = "Start"
length = 10.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("ProgressBar:value")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 10),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 100.0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("1:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("2:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("3:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 5),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("4:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 7),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("5:visible")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 10),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_t4po5"]
_data = {
"Start": SubResource("Animation_dagmw")
}
[sub_resource type="Animation" id="Animation_f1esw"]
resource_name = "Start"
length = 8.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("ProgressBar:value")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 6.5, 8),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [0.0, 90.0, 100.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_br22x"]
_data = {
"Start": SubResource("Animation_f1esw")
}
[sub_resource type="Animation" id="Animation_b80x7"]
resource_name = "Start"
length = 10.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("ProgressBar:value")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 4, 10),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [0.0, 80.0, 90.0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("ProgressBar:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 10),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("2:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("3:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 4),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_0dofc"]
_data = {
"Start": SubResource("Animation_b80x7")
}
[node name="生产模拟" type="ReferenceRect"]
offset_right = 1368.0
offset_bottom = 384.0
[node name="HBoxContainer" type="HBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="VideoStreamPlayer" type="VideoStreamPlayer" parent="HBoxContainer"]
custom_minimum_size = Vector2(384, 256)
layout_mode = 2
stream = ExtResource("1_n53dq")
autoplay = true
expand = true
script = ExtResource("2_isay2")
[node name="生产步骤" type="VBoxContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label2" type="Label" parent="HBoxContainer/生产步骤"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
theme_override_colors/font_color = Color(0.133333, 0.133333, 0.133333, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_mmg2t")
text = "生产步骤"
[node name="Button" type="Button" parent="HBoxContainer/生产步骤"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "原材料出库"
[node name="Button4" type="Button" parent="HBoxContainer/生产步骤"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "底衬压装"
[node name="Button2" type="Button" parent="HBoxContainer/生产步骤"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "笔记本装配"
[node name="Button3" type="Button" parent="HBoxContainer/生产步骤"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "UV打印"
[node name="HSeparator" type="HSeparator" parent="HBoxContainer/生产步骤"]
layout_mode = 2
size_flags_vertical = 3
[node name="Button5" type="Button" parent="HBoxContainer/生产步骤"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "交付/入库"
[node name="生产过程" type="VBoxContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label" type="Label" parent="HBoxContainer/生产过程"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
theme_override_colors/font_color = Color(0.133333, 0.133333, 0.133333, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_mmg2t")
text = "生产过程"
[node name="TabContainer" type="TabContainer" parent="HBoxContainer/生产过程"]
layout_mode = 2
size_flags_vertical = 3
clip_tabs = false
tabs_visible = false
[node name="Default" type="Label" parent="HBoxContainer/生产过程/TabContainer"]
visible = false
layout_mode = 2
text = "在右侧列表中点击需要的指令"
horizontal_alignment = 1
vertical_alignment = 1
[node name="原材料出库" type="VBoxContainer" parent="HBoxContainer/生产过程/TabContainer" node_paths=PackedStringArray("progressBar")]
visible = false
layout_mode = 2
script = ExtResource("3_6smad")
progressBar = NodePath("ProgressBar")
visibleNodes = Array[NodePath]([NodePath("0"), NodePath("1"), NodePath("2"), NodePath("3"), NodePath("4"), NodePath("5")])
autoPlay = true
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/生产过程/TabContainer/原材料出库"]
layout_mode = 2
min_value = 28.3333
value = 28.3333
[node name="0" type="Label" parent="HBoxContainer/生产过程/TabContainer/原材料出库"]
layout_mode = 2
text = "出库笔记本壳"
[node name="1" type="Label" parent="HBoxContainer/生产过程/TabContainer/原材料出库"]
layout_mode = 2
text = "出库笔记本纸张"
[node name="2" type="Label" parent="HBoxContainer/生产过程/TabContainer/原材料出库"]
layout_mode = 2
text = "出库笔记本卡扣"
[node name="3" type="Label" parent="HBoxContainer/生产过程/TabContainer/原材料出库"]
layout_mode = 2
text = "运输到装配区"
[node name="4" type="Label" parent="HBoxContainer/生产过程/TabContainer/原材料出库"]
layout_mode = 2
text = "放在装配区等待装配"
[node name="5" type="Label" parent="HBoxContainer/生产过程/TabContainer/原材料出库"]
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已完成"
vertical_alignment = 1
[node name="底衬压装" type="VBoxContainer" parent="HBoxContainer/生产过程/TabContainer" node_paths=PackedStringArray("progressBar")]
visible = false
layout_mode = 2
script = ExtResource("3_6smad")
progressBar = NodePath("ProgressBar")
visibleNodes = Array[NodePath]([NodePath("0"), NodePath("1"), NodePath("2"), NodePath("3"), NodePath("4"), NodePath("5"), NodePath("6"), NodePath("SuccessBox")])
autoPlay = true
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
value = 6.0
[node name="0" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
text = "出库衬套"
[node name="1" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
text = "运送到冲压区"
[node name="2" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
text = "放置在冲压区"
[node name="3" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
text = "冲压"
[node name="4" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
text = "取回衬套"
[node name="5" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
text = "运输到装配区"
[node name="6" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
text = "放在装配区"
[node name="SuccessBox" type="Label" parent="HBoxContainer/生产过程/TabContainer/底衬压装"]
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已完成"
vertical_alignment = 1
[node name="笔记本装配" type="VBoxContainer" parent="HBoxContainer/生产过程/TabContainer" node_paths=PackedStringArray("progressBar")]
visible = false
layout_mode = 2
script = ExtResource("3_6smad")
progressBar = NodePath("ProgressBar")
visibleNodes = Array[NodePath]([NodePath("0"), NodePath("1"), NodePath("2"), NodePath("3"), NodePath("SuccessBox")])
autoPlay = true
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/生产过程/TabContainer/笔记本装配"]
layout_mode = 2
min_value = 55.0
value = 59.5
[node name="0" type="Label" parent="HBoxContainer/生产过程/TabContainer/笔记本装配"]
layout_mode = 2
text = "装配笔记本壳"
[node name="1" type="Label" parent="HBoxContainer/生产过程/TabContainer/笔记本装配"]
layout_mode = 2
text = "装配卡扣"
[node name="2" type="Label" parent="HBoxContainer/生产过程/TabContainer/笔记本装配"]
visible = false
layout_mode = 2
text = "装配衬套"
[node name="3" type="Label" parent="HBoxContainer/生产过程/TabContainer/笔记本装配"]
layout_mode = 2
text = "装配纸张"
[node name="SuccessBox" type="Label" parent="HBoxContainer/生产过程/TabContainer/笔记本装配"]
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已完成"
vertical_alignment = 1
[node name="UV打印" type="VBoxContainer" parent="HBoxContainer/生产过程/TabContainer" node_paths=PackedStringArray("progressBar")]
visible = false
layout_mode = 2
script = ExtResource("3_6smad")
progressBar = NodePath("ProgressBar")
visibleNodes = Array[NodePath]([NodePath("0"), NodePath("1"), NodePath("2"), NodePath("3"), NodePath("4"), NodePath("SuccessBox")])
autoPlay = true
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/生产过程/TabContainer/UV打印"]
layout_mode = 2
value = 8.31
[node name="0" type="Label" parent="HBoxContainer/生产过程/TabContainer/UV打印"]
layout_mode = 2
text = "取回装配笔记本"
[node name="1" type="Label" parent="HBoxContainer/生产过程/TabContainer/UV打印"]
layout_mode = 2
text = "运输到打印区"
[node name="2" type="Label" parent="HBoxContainer/生产过程/TabContainer/UV打印"]
layout_mode = 2
text = "放置笔记本到打印区"
[node name="3" type="Label" parent="HBoxContainer/生产过程/TabContainer/UV打印"]
layout_mode = 2
text = "开始打印"
[node name="4" type="Label" parent="HBoxContainer/生产过程/TabContainer/UV打印"]
layout_mode = 2
text = "取回打印笔记本"
[node name="SuccessBox" type="Label" parent="HBoxContainer/生产过程/TabContainer/UV打印"]
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已完成"
vertical_alignment = 1
[node name="入库" type="VBoxContainer" parent="HBoxContainer/生产过程/TabContainer" node_paths=PackedStringArray("progressBar")]
layout_mode = 2
script = ExtResource("3_6smad")
progressBar = NodePath("ProgressBar")
visibleNodes = Array[NodePath]([NodePath("0"), NodePath("1"), NodePath("SuccessBox")])
autoPlay = true
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/生产过程/TabContainer/入库"]
layout_mode = 2
value = 12.0
[node name="0" type="Label" parent="HBoxContainer/生产过程/TabContainer/入库"]
layout_mode = 2
size_flags_vertical = 1
text = "运输到交付区"
[node name="1" type="Label" parent="HBoxContainer/生产过程/TabContainer/入库"]
layout_mode = 2
size_flags_vertical = 1
text = "放置笔记本到交付区"
[node name="SuccessBox" type="Label" parent="HBoxContainer/生产过程/TabContainer/入库"]
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已完成"
vertical_alignment = 1
[node name="VSeparator" type="VSeparator" parent="HBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 16
[node name="注册操作" type="VBoxContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label2" type="Label" parent="HBoxContainer/注册操作"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
theme_override_colors/font_color = Color(0.133333, 0.133333, 0.133333, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_mmg2t")
text = "注册操作"
[node name="Button" type="Button" parent="HBoxContainer/注册操作"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "创建订单"
[node name="Button4" type="Button" parent="HBoxContainer/注册操作"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "注册订单标识"
[node name="Button2" type="Button" parent="HBoxContainer/注册操作"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "注册设备标识"
[node name="Button3" type="Button" parent="HBoxContainer/注册操作"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "注册环境标识"
[node name="HSeparator" type="HSeparator" parent="HBoxContainer/注册操作"]
layout_mode = 2
size_flags_vertical = 3
[node name="Button5" type="Button" parent="HBoxContainer/注册操作"]
layout_mode = 2
theme_type_variation = &"Flat"
text = "对当前操作抛出异常"
[node name="注册过程" type="VBoxContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label" type="Label" parent="HBoxContainer/注册过程"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
theme_override_colors/font_color = Color(0.133333, 0.133333, 0.133333, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_mmg2t")
text = "生产过程"
[node name="TabContainer" type="TabContainer" parent="HBoxContainer/注册过程"]
layout_mode = 2
size_flags_vertical = 3
tabs_visible = false
[node name="Default" type="Label" parent="HBoxContainer/注册过程/TabContainer"]
layout_mode = 2
text = "在右侧列表中点击需要的指令"
horizontal_alignment = 1
vertical_alignment = 1
[node name="创建订单" type="VBoxContainer" parent="HBoxContainer/注册过程/TabContainer"]
visible = false
layout_mode = 2
script = ExtResource("2_isay2")
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/注册过程/TabContainer/创建订单"]
layout_mode = 2
min_value = 28.3333
value = 28.3333
[node name="0" type="Label" parent="HBoxContainer/注册过程/TabContainer/创建订单"]
layout_mode = 2
text = "正在创建订单"
[node name="1" type="Label" parent="HBoxContainer/注册过程/TabContainer/创建订单"]
visible = false
layout_mode = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_631sk")
text = "已创建标识为88.123.64/20230704170401订单"
[node name="2" type="Label" parent="HBoxContainer/注册过程/TabContainer/创建订单"]
visible = false
layout_mode = 2
text = "正在生成订单号"
[node name="3" type="Label" parent="HBoxContainer/注册过程/TabContainer/创建订单"]
visible = false
layout_mode = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_631sk")
text = "已生成订单号:20230704170401"
[node name="4" type="Label" parent="HBoxContainer/注册过程/TabContainer/创建订单"]
visible = false
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已创建订单并下发到MES系统"
vertical_alignment = 1
[node name="AnimationPlayer" type="AnimationPlayer" parent="HBoxContainer/注册过程/TabContainer/创建订单"]
libraries = {
"": SubResource("AnimationLibrary_0nmby")
}
[node name="注册订单标识" type="VBoxContainer" parent="HBoxContainer/注册过程/TabContainer"]
visible = false
layout_mode = 2
script = ExtResource("2_isay2")
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/注册过程/TabContainer/注册订单标识"]
layout_mode = 2
min_value = 55.0
value = 55.0
[node name="0" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册订单标识"]
layout_mode = 2
text = "正在请求注册订单标识"
[node name="1" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册订单标识"]
visible = false
layout_mode = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_styles/normal = SubResource("StyleBoxFlat_631sk")
text = "已提交订单号20230704170401"
[node name="2" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册订单标识"]
visible = false
layout_mode = 2
text = "正在等待返回提交结果"
[node name="3" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册订单标识"]
visible = false
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "订单已注册到标识"
vertical_alignment = 1
[node name="AnimationPlayer" type="AnimationPlayer" parent="HBoxContainer/注册过程/TabContainer/注册订单标识"]
libraries = {
"": SubResource("AnimationLibrary_mqq75")
}
[node name="注册设备标识" type="VBoxContainer" parent="HBoxContainer/注册过程/TabContainer"]
visible = false
layout_mode = 2
script = ExtResource("2_isay2")
[node name="0" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
layout_mode = 2
text = "正在注册参与生产的设备"
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
layout_mode = 2
[node name="1" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
visible = false
layout_mode = 2
theme_type_variation = &"AccentBox"
text = "正在注册装配机械臂SR7C1L"
[node name="2" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
visible = false
layout_mode = 2
theme_type_variation = &"AccentBox"
text = "正在注册AGV电流与电量"
[node name="3" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
visible = false
layout_mode = 2
theme_type_variation = &"AccentBox"
text = "正在注册AGV机械臂"
[node name="4" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
visible = false
layout_mode = 2
theme_type_variation = &"AccentBox"
text = "正在注册SR夹爪"
[node name="5" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
visible = false
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已注册参与生产的设备"
vertical_alignment = 1
[node name="AnimationPlayer" type="AnimationPlayer" parent="HBoxContainer/注册过程/TabContainer/注册设备标识"]
libraries = {
"": SubResource("AnimationLibrary_t4po5")
}
[node name="注册环境标识" type="VBoxContainer" parent="HBoxContainer/注册过程/TabContainer"]
visible = false
layout_mode = 2
script = ExtResource("2_isay2")
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/注册过程/TabContainer/注册环境标识"]
layout_mode = 2
[node name="0" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册环境标识"]
layout_mode = 2
theme_type_variation = &"AccentBox"
text = "正在连接到传感器"
[node name="1" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册环境标识"]
visible = false
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "已获取温度:42℃"
[node name="2" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册环境标识"]
visible = false
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "已获取湿度:50%"
[node name="3" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册环境标识"]
visible = false
layout_mode = 2
theme_type_variation = &"AccentBox"
text = "正在提交温湿度标识到解析节点"
[node name="4" type="Label" parent="HBoxContainer/注册过程/TabContainer/注册环境标识"]
visible = false
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"SuccessBox"
text = "已提交温湿度数据到解析节点"
[node name="AnimationPlayer" type="AnimationPlayer" parent="HBoxContainer/注册过程/TabContainer/注册环境标识"]
libraries = {
"": SubResource("AnimationLibrary_br22x")
}
[node name="对当前操作抛出异常" type="VBoxContainer" parent="HBoxContainer/注册过程/TabContainer"]
visible = false
layout_mode = 2
script = ExtResource("2_isay2")
[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常"]
layout_mode = 2
[node name="1" type="Label" parent="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常"]
layout_mode = 2
size_flags_vertical = 1
text = "正在提交数据到标识解析节点..."
[node name="2" type="Label" parent="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常"]
visible = false
layout_mode = 2
size_flags_vertical = 1
theme_type_variation = &"AccentBox"
text = "提交失败,正在自动校正数据..."
[node name="3" type="Label" parent="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常"]
visible = false
layout_mode = 2
size_flags_vertical = 1
text = "正在提交数据到标识解析节点..."
[node name="4" type="RichTextLabel" parent="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常"]
visible = false
layout_mode = 2
size_flags_vertical = 3
theme_type_variation = &"ErrorBox"
bbcode_enabled = true
text = "[b]Oops[/b]
我们尝试了自动纠错与修正,
但仍然提交失败
你可以手动提交数据到解析节点"
[node name="AnimationPlayer" type="AnimationPlayer" parent="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常"]
libraries = {
"": SubResource("AnimationLibrary_0dofc")
}
[connection signal="OnDisable" from="HBoxContainer/VideoStreamPlayer" to="HBoxContainer/VideoStreamPlayer" method="stop"]
[connection signal="OnEnable" from="HBoxContainer/VideoStreamPlayer" to="HBoxContainer/VideoStreamPlayer" method="play"]
[connection signal="draw" from="HBoxContainer/VideoStreamPlayer" to="HBoxContainer/VideoStreamPlayer" method="Enable"]
[connection signal="finished" from="HBoxContainer/VideoStreamPlayer" to="HBoxContainer/VideoStreamPlayer" method="play"]
[connection signal="hidden" from="HBoxContainer/VideoStreamPlayer" to="HBoxContainer/VideoStreamPlayer" method="Disable"]
[connection signal="pressed" from="HBoxContainer/生产步骤/Button" to="HBoxContainer/生产过程/TabContainer" method="set_current_tab" binds= [1]]
[connection signal="pressed" from="HBoxContainer/生产步骤/Button4" to="HBoxContainer/生产过程/TabContainer" method="set_current_tab" binds= [2]]
[connection signal="pressed" from="HBoxContainer/生产步骤/Button2" to="HBoxContainer/生产过程/TabContainer" method="set_current_tab" binds= [3]]
[connection signal="pressed" from="HBoxContainer/生产步骤/Button3" to="HBoxContainer/生产过程/TabContainer" method="set_current_tab" binds= [4]]
[connection signal="pressed" from="HBoxContainer/生产步骤/Button5" to="HBoxContainer/注册过程/TabContainer" method="set_current_tab"]
[connection signal="draw" from="HBoxContainer/生产过程/TabContainer/UV打印" to="HBoxContainer/生产过程/TabContainer/UV打印" method="Enable"]
[connection signal="hidden" from="HBoxContainer/生产过程/TabContainer/UV打印" to="HBoxContainer/生产过程/TabContainer/UV打印" method="Disable"]
[connection signal="draw" from="HBoxContainer/生产过程/TabContainer/入库" to="HBoxContainer/生产过程/TabContainer/入库" method="Enable"]
[connection signal="hidden" from="HBoxContainer/生产过程/TabContainer/入库" to="HBoxContainer/生产过程/TabContainer/入库" method="Disable"]
[connection signal="pressed" from="HBoxContainer/注册操作/Button" to="HBoxContainer/注册过程/TabContainer" method="set_current_tab" binds= [1]]
[connection signal="pressed" from="HBoxContainer/注册操作/Button4" to="HBoxContainer/注册过程/TabContainer" method="set_current_tab" binds= [2]]
[connection signal="pressed" from="HBoxContainer/注册操作/Button2" to="HBoxContainer/注册过程/TabContainer" method="set_current_tab" binds= [3]]
[connection signal="pressed" from="HBoxContainer/注册操作/Button3" to="HBoxContainer/注册过程/TabContainer" method="set_current_tab" binds= [4]]
[connection signal="pressed" from="HBoxContainer/注册操作/Button5" to="HBoxContainer/注册过程/TabContainer" method="set_current_tab" binds= [5]]
[connection signal="OnDisable" from="HBoxContainer/注册过程/TabContainer/创建订单" to="HBoxContainer/注册过程/TabContainer/创建订单/AnimationPlayer" method="stop" binds= [false]]
[connection signal="OnEnable" from="HBoxContainer/注册过程/TabContainer/创建订单" to="HBoxContainer/注册过程/TabContainer/创建订单/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="draw" from="HBoxContainer/注册过程/TabContainer/创建订单" to="HBoxContainer/注册过程/TabContainer/创建订单" method="Enable"]
[connection signal="hidden" from="HBoxContainer/注册过程/TabContainer/创建订单" to="HBoxContainer/注册过程/TabContainer/创建订单" method="Disable"]
[connection signal="OnDisable" from="HBoxContainer/注册过程/TabContainer/注册订单标识" to="HBoxContainer/注册过程/TabContainer/注册订单标识/AnimationPlayer" method="stop" binds= [false]]
[connection signal="OnEnable" from="HBoxContainer/注册过程/TabContainer/注册订单标识" to="HBoxContainer/注册过程/TabContainer/注册订单标识/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="draw" from="HBoxContainer/注册过程/TabContainer/注册订单标识" to="HBoxContainer/注册过程/TabContainer/注册订单标识" method="Enable"]
[connection signal="hidden" from="HBoxContainer/注册过程/TabContainer/注册订单标识" to="HBoxContainer/注册过程/TabContainer/创建订单" method="Disable"]
[connection signal="OnDisable" from="HBoxContainer/注册过程/TabContainer/注册设备标识" to="HBoxContainer/注册过程/TabContainer/注册设备标识/AnimationPlayer" method="stop" binds= [false]]
[connection signal="OnEnable" from="HBoxContainer/注册过程/TabContainer/注册设备标识" to="HBoxContainer/注册过程/TabContainer/注册设备标识/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="draw" from="HBoxContainer/注册过程/TabContainer/注册设备标识" to="HBoxContainer/注册过程/TabContainer/注册设备标识" method="Enable"]
[connection signal="hidden" from="HBoxContainer/注册过程/TabContainer/注册设备标识" to="HBoxContainer/注册过程/TabContainer/注册设备标识" method="Disable"]
[connection signal="OnDisable" from="HBoxContainer/注册过程/TabContainer/注册环境标识" to="HBoxContainer/注册过程/TabContainer/注册环境标识/AnimationPlayer" method="stop" binds= [false]]
[connection signal="OnEnable" from="HBoxContainer/注册过程/TabContainer/注册环境标识" to="HBoxContainer/注册过程/TabContainer/注册环境标识/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="draw" from="HBoxContainer/注册过程/TabContainer/注册环境标识" to="HBoxContainer/注册过程/TabContainer/注册环境标识" method="Enable"]
[connection signal="hidden" from="HBoxContainer/注册过程/TabContainer/注册环境标识" to="HBoxContainer/注册过程/TabContainer/注册环境标识" method="Disable"]
[connection signal="OnDisable" from="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常" to="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常/AnimationPlayer" method="stop" binds= [false]]
[connection signal="OnEnable" from="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常" to="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常/AnimationPlayer" method="play" binds= ["Start"]]
[connection signal="draw" from="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常" to="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常" method="Enable"]
[connection signal="hidden" from="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常" to="HBoxContainer/注册过程/TabContainer/对当前操作抛出异常" method="Disable"]

View File

@ -1,133 +0,0 @@
[gd_scene load_steps=31 format=3 uid="uid://0r070e44ohdv"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_SearchService.cs" id="1_6wrj8"]
[ext_resource type="Script" path="res://BITKit/Scripts/Resource/StringResource.cs" id="2_7vxuh"]
[ext_resource type="PackedScene" uid="uid://dghty7km181mc" path="res://Mods/工业数据采集与分析应用分享/Templates/关联标识.tscn" id="3_stj0i"]
[ext_resource type="PackedScene" uid="uid://42locm7i2wvy" path="res://Mods/工业数据采集与分析应用分享/Templates/标识引用模板.tscn" id="4_rgreg"]
[ext_resource type="PackedScene" uid="uid://cccx8fmmfttth" path="res://Mods/工业数据采集与分析应用分享/Templates/标识数据模板.tscn" id="5_osv75"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_THService.cs" id="6_7cq43"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/温湿度Reader.cs" id="7_tx46b"]
[ext_resource type="Script" path="res://BITKit/Scripts/Builder/TemplateBuilder/TemplateBuilder.cs" id="8_pjjth"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Builder/IDIS_TemplateResource.cs" id="9_cr8hr"]
[ext_resource type="Script" path="res://BITKit/Scripts/Builder/Form/FormBuilder.cs" id="10_l8xqp"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Builder/IDIS_TemplateWeaver.cs" id="11_iwse4"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Builder/IDIS_RegisterWeaver.cs" id="12_nhyfw"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Builder/IDIS_RegisterDB.cs" id="13_7qoua"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegister.cs" id="14_ehrl5"]
[ext_resource type="Resource" uid="uid://cgk1wmiqqedmi" path="res://Mods/工业数据采集与分析应用分享/Resource/自动标识模板/温湿度传感器/温湿度传感器.tres" id="15_nfip6"]
[ext_resource type="Resource" uid="uid://b38onsp3c3jem" path="res://Mods/工业数据采集与分析应用分享/Resource/自动标识模板/温湿度/温度.tres" id="16_r5dig"]
[ext_resource type="Resource" uid="uid://d3xam2no2uaas" path="res://Mods/工业数据采集与分析应用分享/Resource/自动标识模板/温湿度/湿度.tres" id="17_h4yly"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Temp/生成温湿度.cs" id="18_b1euy"]
[ext_resource type="Script" path="res://BITKit/Scripts/Quest/QuestService.cs" id="19_xn641"]
[ext_resource type="Script" path="res://BITKit/Scripts/ECS/Core/Entity.cs" id="20_pawcj"]
[ext_resource type="Script" path="res://BITKit/Scripts/Quest/QuestComponent.cs" id="21_2b2ho"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Quest/TemplateCondition.cs" id="22_vdbrc"]
[sub_resource type="Resource" id="Resource_0tkg4"]
script = ExtResource("2_7vxuh")
value = "Panel"
[sub_resource type="Resource" id="Resource_gckd0"]
script = ExtResource("9_cr8hr")
[sub_resource type="Resource" id="Resource_0cbl3"]
script = ExtResource("9_cr8hr")
[sub_resource type="Resource" id="Resource_0ksfr"]
script = ExtResource("11_iwse4")
templateResource = SubResource("Resource_0cbl3")
addFieldsButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer/add-button")
templateBuilderPath = NodePath("..")
templateNameEditPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/templateName-edit")
saveTemplateNameButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/save_name-button")
deleteTemplateButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/deleteTemplate-button")
[sub_resource type="Resource" id="Resource_mdhxq"]
script = ExtResource("9_cr8hr")
[sub_resource type="Resource" id="Resource_0enmn"]
script = ExtResource("12_nhyfw")
handleEditPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/PanelContainer2/MarginContainer/HBoxContainer/LineEdit")
generateButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/PanelContainer2/MarginContainer/HBoxContainer/Button")
addReferenceButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/add-button")
referenceEditBuilderPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Reference-Layout")
templateBuilderPath = NodePath("..")
[sub_resource type="Resource" id="Resource_0ef5a"]
script = ExtResource("13_7qoua")
[sub_resource type="Resource" id="Resource_c648p"]
script = ExtResource("9_cr8hr")
[node name="标识注册与解析_弃用" type="Node"]
[node name="_deprecated" type="Node" parent="."]
process_mode = 4
[node name="标识搜索服务" type="Node" parent="_deprecated"]
script = ExtResource("1_6wrj8")
searchButtonVariation = SubResource("Resource_0tkg4")
valueTemplate = ExtResource("3_stj0i")
referenceTemplate = ExtResource("4_rgreg")
categoryTemplate = ExtResource("5_osv75")
searchCandidateContainer = null
searchEditPadding = null
handleLabel = null
createTimeLabel = null
updateTimeLabel = null
valueContainer = null
referenceContainer = null
[node name="温湿度标识更新服务" type="Node" parent="_deprecated"]
script = ExtResource("6_7cq43")
currentUpdateMode = 3
[node name="温湿度传感器Reader" type="Node" parent="_deprecated"]
script = ExtResource("7_tx46b")
interval = 1000
ip = null
port = null
humidity = null
temperature = null
[node name="标识模板生成器" type="Node" parent="_deprecated"]
script = ExtResource("8_pjjth")
template = SubResource("Resource_gckd0")
[node name="FormBuilder" type="Node" parent="_deprecated/标识模板生成器"]
script = ExtResource("10_l8xqp")
formWeaver = SubResource("Resource_0ksfr")
[node name="标识模板注册器" type="Node" parent="_deprecated"]
script = ExtResource("8_pjjth")
template = SubResource("Resource_mdhxq")
[node name="FormBuilder" type="Node" parent="_deprecated/标识模板注册器"]
script = ExtResource("10_l8xqp")
formWeaver = SubResource("Resource_0enmn")
formDBProvider = SubResource("Resource_0ef5a")
[node name="自动注册标识" type="Node" parent="_deprecated"]
script = ExtResource("14_ehrl5")
regResources = Array[Object]([ExtResource("15_nfip6"), ExtResource("16_r5dig"), ExtResource("17_h4yly")])
[node name="温湿度数据生成" type="Node" parent="_deprecated"]
script = ExtResource("18_b1euy")
handle = null
count = 256
[node name="模拟生产任务服务" type="Node" parent="_deprecated"]
script = ExtResource("19_xn641")
[node name="注册订单信息" type="Node" parent="_deprecated/模拟生产任务服务"]
script = ExtResource("20_pawcj")
[node name="Quest" type="Node" parent="_deprecated/模拟生产任务服务/注册订单信息"]
script = ExtResource("21_2b2ho")
QuestName = "注册订单信息"
QuestCompleted = null
[node name="Condition" type="Node" parent="_deprecated/模拟生产任务服务/注册订单信息"]
script = ExtResource("22_vdbrc")
templateResource = SubResource("Resource_c648p")
templateName = "订单信息"

View File

@ -1,171 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Text;
using BITKit;
using Godot;
using Microsoft.EntityFrameworkCore;
using Cysharp.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace BITFactory;
public interface ISearchEntry
{
string Key { get; }
string Value { get; }
}
[Serializable]
public class SearchResult:ISearchEntry
{
[Key]
public Guid Guid { get; set; }= Guid.NewGuid();
public string Key { get; set; }
public string Value { get; set; }
public string Display { get; set; }
public string Id { get; set; }
public string RegistryRecord { get; set; }
public DateTime UpdateDate { get; set; }
public DateTime CreateDate { get; set; }=DateTime.Now;
public string Correlation { get; set; }
}
public interface ISearchEngine
{
SearchResult[] GetSearchResults(string key);
void SaveChanges();
void Add(SearchResult result);
void Remove(string key, string id);
}
public partial class SearchEngine:Node,ISearchEngine
{
private static SqlLiteContext<SearchResult> Context;
[Export] private Node nodeContainer;
[Export] private PackedScene searchEntry;
[Export] private LineEdit searchInput;
[Export] private Button searchButton;
[Export] private MenuButton quickSearchButton;
[Export] private ProgressBar searchProgressBar;
[Export] private RichTextLabel searchLogLabel;
private readonly StringBuilder _logBuilder=new StringBuilder();
private SearchResult[] _currentSearchResults;
public override async void _Ready()
{
BITApp.ServiceCollection.AddSingleton<ISearchEngine>(this);
DI.Register<ISearchEngine>(this);
try
{
QueueContainerFree();
await UniTask.SwitchToTaskPool();
Context = new SqlLiteContext<SearchResult>();
await Context.Database.EnsureCreatedAsync();
}
catch (Exception e)
{
BIT4Log.LogException(e);
}
searchButton.Pressed+= Search;
searchInput.TextSubmitted += Search;
quickSearchButton.Pressed+= QuickSearch;
quickSearchButton.GetPopup().AllowSearch = true;
quickSearchButton.GetPopup().IdPressed += OnPressedIndex;
searchProgressBar.Hide();
}
private void Search()
{
Search(searchInput.Text);
}
private async void Search(string key)
{
_logBuilder.AppendLine("正在释放");
QueueContainerFree();
searchProgressBar.Show();
var list = await Context.context.ToListAsync();
var result = (string.IsNullOrEmpty(key) ? list : list.Where(x => x.Key.Contains(key))).ToArray();
//Fallback
if (result.Any() is false)
{
result = list.Where(x => x.Display.Contains(key!)).ToArray();
}
if (result.Any() is false)
{
result = list.Where(x => x.Id.Contains(key!)).ToArray();
}
Spawn(result);
_logBuilder.AppendLine($"已获取到集合");
_logBuilder.AppendLine($"{string.Join("\n",list)}");
searchProgressBar.Hide();
}
private void QuickSearch()
{
quickSearchButton.GetPopup().Clear();
var enumerable = Context.context.Distinct((x,y)=>x.Key == y.Key);
var searchResults = enumerable as SearchResult[] ?? enumerable.ToArray();
_currentSearchResults = searchResults;
for (var i = 0; i < searchResults.Length; i++)
{
var index = i;
var element = searchResults[i];
quickSearchButton.GetPopup().AddItem(element.Key);
}
}
private void OnPressedIndex(long index)
{
var entry = _currentSearchResults[index];
searchInput.Text = entry.Key;
Search(entry.Key);
}
private void Spawn(IEnumerable<SearchResult> entries)
{
foreach (var entry in entries)
{
var instance = searchEntry.Instantiate<UXContainer>();
nodeContainer.AddChild(instance);
instance.titleLabel.Text = entry.Display ?? entry.Id ?? entry.Key;
instance.Text = entry.Value;
instance.labels[0].Text = entry.UpdateDate.ToString(CultureInfo.InvariantCulture);
instance.labels[1].Text = entry.CreateDate.ToString(CultureInfo.InvariantCulture);
instance.labels[2].Text = entry.Key;
}
}
private void QueueContainerFree()
{
foreach (var x in nodeContainer.GetChildren())
{
x.QueueFree();
}
}
public SearchResult[] GetSearchResults(string key)=>Context.context.Where(x=>x.Key.Contains(key)).ToArray();
public void SaveChanges() => Context.SaveChanges();
public void Add(SearchResult result)
{
Context.context.Add(result);
Context.SaveChanges();
}
public void Remove(string key, string id)
{
throw new NotImplementedException();
}
}

View File

@ -1,72 +0,0 @@
using System;
using System.Linq;
using BITKit;
using Godot;
using Microsoft.Extensions.DependencyInjection;
namespace BITFactory;
public partial class SearchRegister:Node
{
[Export] private LineEdit keyLine;
[Export] private LineEdit valueLine;
[Export] private LineEdit nameLine;
[Export] private LineEdit idLine;
[Export] private LineEdit registryRecordLine;
[Export] private Button registryButton;
[Export] private RichTextLabel registryResultLabel;
public override void _Ready()
{
registryButton.Pressed += Create;
}
private void Create()
{
var searchEngine = DI.Get<ISearchEngine>();
registryResultLabel.Text = $"正在注册标识";
var current = searchEngine
.GetSearchResults(keyLine.Text)
.Where(x=>x.Key == keyLine.Text && x.Id == idLine.Text)
;
SearchResult result=default;
var searchResults = current as SearchResult[] ?? current.ToArray();
if (searchResults.Any())
{
result = searchResults.First();
result.Value = valueLine.Text;
result.Display = nameLine.Text;
result.RegistryRecord = registryRecordLine.Text;
result.UpdateDate = DateTime.Now;
searchEngine.SaveChanges();
registryResultLabel.Text = $"标识:{result.Key}已完成更新";
}
else
{
result = new SearchResult()
{
Key = keyLine.Text,
Value = valueLine.Text,
Display = nameLine.Text,
Id = idLine.Text,
RegistryRecord = registryRecordLine.Text,
CreateDate = DateTime.Now,
UpdateDate = DateTime.Now,
};
try
{
registryResultLabel.Text = $"标识:{result.Key}已完成注册";
}
catch (Exception e)
{
registryResultLabel.Text = $"标识:{result.Key}注册失败,原因:\n{e.Message}";
throw;
}
}
}
}

View File

@ -1,22 +0,0 @@
using Godot;
using System;
#if TOOLS
namespace BITKit;
[Tool]
public partial class BITGodotPlugins : EditorPlugin
{
private InspectorPlugins _plugin;
public override void _EnterTree()
{
_plugin = new InspectorPlugins();
AddInspectorPlugin(_plugin);
}
public override void _ExitTree()
{
RemoveInspectorPlugin(_plugin);
}
}
#endif

View File

@ -1,39 +0,0 @@
using Godot;
using System;
using System.Reflection;
namespace BITKit;
#if TOOLS
using Godot;
[Tool]
public partial class InspectorPlugins : EditorInspectorPlugin
{
public override bool _CanHandle(GodotObject @object)
{
return @object is Node;
}
public override bool _ParseProperty(
GodotObject @object,
Variant.Type type,
string name,
PropertyHint hintType,
string hintString,
PropertyUsageFlags usageFlags, bool wide)
{
switch (type)
{
case Variant.Type.String:
var field = @object.GetType().GetField(name);
var att = field?.GetCustomAttribute<ReadOnlyAttribute>();
if (att is null) return false;
var label = new Label();
AddPropertyEditor(name, label);
break;
default:
return false;
}
return true;
}
}
#endif

View File

@ -1,63 +0,0 @@
using Godot;
using System;
namespace BITKit;
#if TOOLS
using Godot;
[Tool]
public partial class RandomIntEditor : EditorProperty
{
// The main control for editing the property.
private Button _propertyControl = new Button();
// An internal value of the property.
private int _currentValue = 0;
// A guard against internal changes when the property is updated.
private bool _updating = false;
public RandomIntEditor()
{
// Add the control as a direct child of EditorProperty node.
AddChild(_propertyControl);
// Make sure the control is able to retain the focus.
AddFocusable(_propertyControl);
// Setup the initial state and connect to the signal to track changes.
RefreshControlText();
//_propertyControl.Connect("pressed", this, nameof(OnButtonPressed));
}
private void OnButtonPressed()
{
// Ignore the signal if the property is currently being updated.
if (_updating)
{
return;
}
// Generate a new random integer between 0 and 99.
_currentValue = (int)GD.Randi() % 100;
RefreshControlText();
EmitChanged(GetEditedProperty(), _currentValue);
}
public override void _UpdateProperty()
{
// Read the current value from the property.
var newValue = (int)GetEditedObject().Get(GetEditedProperty());
if (newValue == _currentValue)
{
return;
}
// Update the control with the new value.
_updating = true;
_currentValue = newValue;
RefreshControlText();
_updating = false;
}
private void RefreshControlText()
{
_propertyControl.Text = $"Value: {_currentValue}";
}
}
#endif

View File

@ -1,24 +0,0 @@
[gd_scene load_steps=2 format=3 uid="uid://r7xpryghff3b"]
[ext_resource type="Script" path="res://addons/BITPlugins/ReferenceExamples.cs" id="1_h7isd"]
[node name="ReferenceContainer" type="PanelContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_h7isd")
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
text = "引用插件"
[node name="Node" type="Node" parent="."]
script = ExtResource("1_h7isd")

View File

@ -1,8 +0,0 @@
using Godot;
using System;
namespace BITKit;
public partial class ReferenceExamples : Node
{
}

View File

@ -1,7 +0,0 @@
[plugin]
name="BITPlugins"
description="BITKit为Godot支持的插件 "
author="军火商小火柴"
version=""
script="BITGodotPlugins.cs"

View File

@ -1,21 +0,0 @@
# MIT License
Copyright © 2023-present Hugo Locurcio and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,443 +0,0 @@
extends Control
@export var fps: Label
@export var frame_time: Label
@export var frame_number: Label
@export var frame_history_total_avg: Label
@export var frame_history_total_min: Label
@export var frame_history_total_max: Label
@export var frame_history_total_last: Label
@export var frame_history_cpu_avg: Label
@export var frame_history_cpu_min: Label
@export var frame_history_cpu_max: Label
@export var frame_history_cpu_last: Label
@export var frame_history_gpu_avg: Label
@export var frame_history_gpu_min: Label
@export var frame_history_gpu_max: Label
@export var frame_history_gpu_last: Label
@export var fps_graph: Panel
@export var total_graph: Panel
@export var cpu_graph: Panel
@export var gpu_graph: Panel
@export var information: Label
@export var settings: Label
## The number of frames to keep in history for graph drawing and best/worst calculations.
## Currently, this also affects how FPS is measured.
const HISTORY_NUM_FRAMES = 150
const GRAPH_SIZE = Vector2(150, 25)
const GRAPH_MIN_FPS = 10
const GRAPH_MAX_FPS = 160
const GRAPH_MIN_FRAMETIME = 1.0 / GRAPH_MIN_FPS
const GRAPH_MAX_FRAMETIME = 1.0 / GRAPH_MAX_FPS
## Debug menu display style.
enum Style {
HIDDEN, ## Debug menu is hidden.
VISIBLE_COMPACT, ## Debug menu is visible, with only the FPS, FPS cap (if any) and time taken to render the last frame.
VISIBLE_DETAILED, ## Debug menu is visible with full information, including graphs.
MAX, ## Represents the size of the Style enum.
}
## The style to use when drawing the debug menu.
var style := Style.HIDDEN:
set(value):
style = value
match style:
Style.HIDDEN:
visible = false
Style.VISIBLE_COMPACT, Style.VISIBLE_DETAILED:
visible = true
frame_number.visible = style == Style.VISIBLE_DETAILED
$VBoxContainer/FrameTimeHistory.visible = style == Style.VISIBLE_DETAILED
$VBoxContainer/FPSGraph.visible = style == Style.VISIBLE_DETAILED
$VBoxContainer/TotalGraph.visible = style == Style.VISIBLE_DETAILED
$VBoxContainer/CPUGraph.visible = style == Style.VISIBLE_DETAILED
$VBoxContainer/GPUGraph.visible = style == Style.VISIBLE_DETAILED
information.visible = style == Style.VISIBLE_DETAILED
settings.visible = style == Style.VISIBLE_DETAILED
# Value of `Time.get_ticks_usec()` on the previous frame.
var last_tick := 0
var thread := Thread.new()
## Returns the sum of all values of an array (use as a parameter to `Array.reduce()`).
var sum_func := func avg(accum: float, number: float) -> float: return accum + number
# History of the last `HISTORY_NUM_FRAMES` rendered frames.
var frame_history_total: Array[float] = []
var frame_history_cpu: Array[float] = []
var frame_history_gpu: Array[float] = []
var fps_history: Array[float] = [] # Only used for graphs.
var frametime_avg := GRAPH_MIN_FRAMETIME
var frametime_cpu_avg := GRAPH_MAX_FRAMETIME
var frametime_gpu_avg := GRAPH_MIN_FRAMETIME
var frames_per_second := float(GRAPH_MIN_FPS)
var frame_time_gradient := Gradient.new()
func _init() -> void:
# This must be done here instead of `_ready()` to avoid having `visibility_changed` be emitted immediately.
visible = false
if not InputMap.has_action("cycle_debug_menu"):
# Create default input action if no user-defined override exists.
# We can't do it in the editor plugin's activation code as it doesn't seem to work there.
InputMap.add_action("cycle_debug_menu")
var event := InputEventKey.new()
event.keycode = KEY_F3
InputMap.action_add_event("cycle_debug_menu", event)
func _ready() -> void:
fps_graph.draw.connect(_fps_graph_draw)
total_graph.draw.connect(_total_graph_draw)
cpu_graph.draw.connect(_cpu_graph_draw)
gpu_graph.draw.connect(_gpu_graph_draw)
fps_history.resize(HISTORY_NUM_FRAMES)
frame_history_total.resize(HISTORY_NUM_FRAMES)
frame_history_cpu.resize(HISTORY_NUM_FRAMES)
frame_history_gpu.resize(HISTORY_NUM_FRAMES)
# NOTE: Both FPS and frametimes are colored following FPS logic
# (red = 10 FPS, yellow = 60 FPS, green = 110 FPS, cyan = 160 FPS).
# This makes the color gradient non-linear.
# Colors are taken from <https://tailwindcolor.com/>.
frame_time_gradient.set_color(0, Color8(239, 68, 68)) # red-500
frame_time_gradient.set_color(1, Color8(56, 189, 248)) # light-blue-400
frame_time_gradient.add_point(0.3333, Color8(250, 204, 21)) # yellow-400
frame_time_gradient.add_point(0.6667, Color8(128, 226, 95)) # 50-50 mix of lime-400 and green-400
get_viewport().size_changed.connect(update_settings_label)
# Display loading text while information is being queried,
# in case the user toggles the full debug menu just after starting the project.
information.text = "Loading hardware information...\n\n "
settings.text = "Loading project information..."
thread.start(
func():
# Enable required time measurements to display CPU/GPU frame time information.
# These lines are time-consuming operations, so run them in a separate thread.
RenderingServer.viewport_set_measure_render_time(get_viewport().get_viewport_rid(), true)
update_information_label()
update_settings_label()
)
func _input(event: InputEvent) -> void:
if event.is_action_pressed("cycle_debug_menu"):
style = wrapi(style + 1, 0, Style.MAX) as Style
func _exit_tree() -> void:
thread.wait_to_finish()
## Update hardware information label (this can change at runtime based on window
## size and graphics settings). This is only called when the window is resized.
## To update when graphics settings are changed, the function must be called manually
## using `DebugMenu.update_settings_label()`.
func update_settings_label() -> void:
settings.text = ""
if ProjectSettings.has_setting("application/config/version"):
settings.text += "Project Version: %s\n" % ProjectSettings.get_setting("application/config/version")
var rendering_method_string := ""
match str(ProjectSettings.get_setting("rendering/renderer/rendering_method")):
"forward_plus":
rendering_method_string = "Forward+"
"mobile":
rendering_method_string = "Forward Mobile"
"gl_compatibility":
rendering_method_string = "Compatibility"
settings.text += "Rendering Method: %s\n" % rendering_method_string
var viewport := get_viewport()
# The size of the viewport rendering, which determines which resolution 3D is rendered at.
var viewport_render_size := Vector2i()
if viewport.content_scale_mode == Window.CONTENT_SCALE_MODE_VIEWPORT:
viewport_render_size = viewport.get_visible_rect().size
settings.text += "Viewport: %d×%d, Window: %d×%d\n" % [viewport.get_visible_rect().size.x, viewport.get_visible_rect().size.y, viewport.size.x, viewport.size.y]
else:
# Window size matches viewport size.
viewport_render_size = viewport.size
settings.text += "Viewport: %d×%d\n" % [viewport.size.x, viewport.size.y]
# Display 3D settings only if relevant.
if viewport.get_camera_3d():
var antialiasing_3d_string := ""
if viewport.use_taa:
antialiasing_3d_string += (" + " if not antialiasing_3d_string.is_empty() else "") + "TAA"
if viewport.msaa_3d >= Viewport.MSAA_2X:
antialiasing_3d_string += (" + " if not antialiasing_3d_string.is_empty() else "") + "%d× MSAA" % pow(2, viewport.msaa_3d)
if viewport.screen_space_aa == Viewport.SCREEN_SPACE_AA_FXAA:
antialiasing_3d_string += (" + " if not antialiasing_3d_string.is_empty() else "") + "FXAA"
var environment := viewport.get_camera_3d().get_world_3d().environment
settings.text += "3D scale (%s): %d%% = %d×%d" % [
"Bilinear" if viewport.scaling_3d_mode == Viewport.SCALING_3D_MODE_BILINEAR else "FSR 1.0",
viewport.scaling_3d_scale * 100,
viewport_render_size.x * viewport.scaling_3d_scale,
viewport_render_size.y * viewport.scaling_3d_scale,
]
if not antialiasing_3d_string.is_empty():
settings.text += "\n3D Antialiasing: %s" % antialiasing_3d_string
if environment.ssr_enabled:
settings.text += "\nSSR: %d Steps" % environment.ssr_max_steps
if environment.ssao_enabled:
settings.text += "\nSSAO: On"
if environment.ssil_enabled:
settings.text += "\nSSIL: On"
if environment.sdfgi_enabled:
settings.text += "\nSDFGI: %d Cascades" % environment.sdfgi_cascades
if environment.glow_enabled:
settings.text += "\nGlow: On"
if environment.volumetric_fog_enabled:
settings.text += "\nVolumetric Fog: On"
var antialiasing_2d_string := ""
if viewport.msaa_2d >= Viewport.MSAA_2X:
antialiasing_2d_string = "%d× MSAA" % pow(2, viewport.msaa_2d)
if not antialiasing_2d_string.is_empty():
settings.text += "\n2D Antialiasing: %s" % antialiasing_2d_string
## Update hardware/software information label (this never changes at runtime).
func update_information_label() -> void:
var adapter_string := ""
# Make "NVIDIA Corporation" and "NVIDIA" be considered identical (required when using OpenGL to avoid redundancy).
if RenderingServer.get_video_adapter_vendor().trim_suffix(" Corporation") in RenderingServer.get_video_adapter_name():
# Avoid repeating vendor name before adapter name.
# Trim redundant suffix sometimes reported by NVIDIA graphics cards when using OpenGL.
adapter_string = RenderingServer.get_video_adapter_name().trim_suffix("/PCIe/SSE2")
else:
adapter_string = RenderingServer.get_video_adapter_vendor() + " - " + RenderingServer.get_video_adapter_name().trim_suffix("/PCIe/SSE2")
# Graphics driver version information isn't always availble.
var driver_info := OS.get_video_adapter_driver_info()
var driver_info_string := ""
if driver_info.size() >= 2:
driver_info_string = driver_info[1]
else:
driver_info_string = "(unknown)"
var release_string := ""
if OS.has_feature("editor"):
# Editor build (implies `debug`).
release_string = "editor"
elif OS.has_feature("debug"):
# Debug export template build.
release_string = "debug"
else:
# Release export template build.
release_string = "release"
var graphics_api_string := ""
if str(ProjectSettings.get_setting("rendering/renderer/rendering_method")) != "gl_compatibility":
graphics_api_string = "Vulkan"
else:
if OS.has_feature("web"):
graphics_api_string = "WebGL"
elif OS.has_feature("mobile"):
graphics_api_string = "OpenGL ES"
else:
graphics_api_string = "OpenGL"
information.text = (
"%s, %d threads\n" % [OS.get_processor_name().replace("(R)", "").replace("(TM)", ""), OS.get_processor_count()]
+ "%s %s (%s %s), %s %s\n" % [OS.get_name(), "64-bit" if OS.has_feature("64") else "32-bit", release_string, "double" if OS.has_feature("double") else "single", graphics_api_string, RenderingServer.get_video_adapter_api_version()]
+ "%s, %s" % [adapter_string, driver_info_string]
)
func _fps_graph_draw() -> void:
var fps_polyline := PackedVector2Array()
fps_polyline.resize(HISTORY_NUM_FRAMES)
for fps_index in fps_history.size():
fps_polyline[fps_index] = Vector2(
remap(fps_index, 0, fps_history.size(), 0, GRAPH_SIZE.x),
remap(clampf(fps_history[fps_index], GRAPH_MIN_FPS, GRAPH_MAX_FPS), GRAPH_MIN_FPS, GRAPH_MAX_FPS, GRAPH_SIZE.y, 0.0)
)
# Don't use antialiasing to speed up line drawing, but use a width that scales with
# viewport scale to keep the line easily readable on hiDPI displays.
fps_graph.draw_polyline(fps_polyline, frame_time_gradient.sample(remap(frames_per_second, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0)), 1.0)
func _total_graph_draw() -> void:
var total_polyline := PackedVector2Array()
total_polyline.resize(HISTORY_NUM_FRAMES)
for total_index in frame_history_total.size():
total_polyline[total_index] = Vector2(
remap(total_index, 0, frame_history_total.size(), 0, GRAPH_SIZE.x),
remap(clampf(frame_history_total[total_index], GRAPH_MIN_FPS, GRAPH_MAX_FPS), GRAPH_MIN_FPS, GRAPH_MAX_FPS, GRAPH_SIZE.y, 0.0)
)
# Don't use antialiasing to speed up line drawing, but use a width that scales with
# viewport scale to keep the line easily readable on hiDPI displays.
total_graph.draw_polyline(total_polyline, frame_time_gradient.sample(remap(1000.0 / frametime_avg, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0)), 1.0)
func _cpu_graph_draw() -> void:
var cpu_polyline := PackedVector2Array()
cpu_polyline.resize(HISTORY_NUM_FRAMES)
for cpu_index in frame_history_cpu.size():
cpu_polyline[cpu_index] = Vector2(
remap(cpu_index, 0, frame_history_cpu.size(), 0, GRAPH_SIZE.x),
remap(clampf(frame_history_cpu[cpu_index], GRAPH_MIN_FPS, GRAPH_MAX_FPS), GRAPH_MIN_FPS, GRAPH_MAX_FPS, GRAPH_SIZE.y, 0.0)
)
# Don't use antialiasing to speed up line drawing, but use a width that scales with
# viewport scale to keep the line easily readable on hiDPI displays.
cpu_graph.draw_polyline(cpu_polyline, frame_time_gradient.sample(remap(1000.0 / frametime_cpu_avg, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0)), 1.0)
func _gpu_graph_draw() -> void:
var gpu_polyline := PackedVector2Array()
gpu_polyline.resize(HISTORY_NUM_FRAMES)
for gpu_index in frame_history_gpu.size():
gpu_polyline[gpu_index] = Vector2(
remap(gpu_index, 0, frame_history_gpu.size(), 0, GRAPH_SIZE.x),
remap(clampf(frame_history_gpu[gpu_index], GRAPH_MIN_FPS, GRAPH_MAX_FPS), GRAPH_MIN_FPS, GRAPH_MAX_FPS, GRAPH_SIZE.y, 0.0)
)
# Don't use antialiasing to speed up line drawing, but use a width that scales with
# viewport scale to keep the line easily readable on hiDPI displays.
gpu_graph.draw_polyline(gpu_polyline, frame_time_gradient.sample(remap(1000.0 / frametime_gpu_avg, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0)), 1.0)
func _process(_delta: float) -> void:
if visible:
fps_graph.queue_redraw()
total_graph.queue_redraw()
cpu_graph.queue_redraw()
gpu_graph.queue_redraw()
# Difference between the last two rendered frames in milliseconds.
var frametime := (Time.get_ticks_usec() - last_tick) * 0.001
frame_history_total.push_back(frametime)
if frame_history_total.size() > HISTORY_NUM_FRAMES:
frame_history_total.pop_front()
# Frametimes are colored following FPS logic (red = 10 FPS, yellow = 60 FPS, green = 110 FPS, cyan = 160 FPS).
# This makes the color gradient non-linear.
frametime_avg = frame_history_total.reduce(sum_func) / frame_history_total.size()
frame_history_total_avg.text = str(frametime_avg).pad_decimals(2)
frame_history_total_avg.modulate = frame_time_gradient.sample(remap(1000.0 / frametime_avg, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0))
var frametime_min: float = frame_history_total.min()
frame_history_total_min.text = str(frametime_min).pad_decimals(2)
frame_history_total_min.modulate = frame_time_gradient.sample(remap(1000.0 / frametime_min, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0))
var frametime_max: float = frame_history_total.max()
frame_history_total_max.text = str(frametime_max).pad_decimals(2)
frame_history_total_max.modulate = frame_time_gradient.sample(remap(1000.0 / frametime_max, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0))
frame_history_total_last.text = str(frametime).pad_decimals(2)
frame_history_total_last.modulate = frame_time_gradient.sample(remap(1000.0 / frametime, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0))
var viewport_rid := get_viewport().get_viewport_rid()
var frametime_cpu := RenderingServer.viewport_get_measured_render_time_cpu(viewport_rid) + RenderingServer.get_frame_setup_time_cpu()
frame_history_cpu.push_back(frametime_cpu)
if frame_history_cpu.size() > HISTORY_NUM_FRAMES:
frame_history_cpu.pop_front()
frametime_cpu_avg = frame_history_cpu.reduce(sum_func) / frame_history_cpu.size()
frame_history_cpu_avg.text = str(frametime_cpu_avg).pad_decimals(2)
frame_history_cpu_avg.modulate = frame_time_gradient.sample(remap(1000.0 / frametime_cpu_avg, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0))
var frametime_cpu_min: float = frame_history_cpu.min()
frame_history_cpu_min.text = str(frametime_cpu_min).pad_decimals(2)
frame_history_cpu_min.modulate = frame_time_gradient.sample(remap(1000.0 / frametime_cpu_min, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0))
var frametime_cpu_max: float = frame_history_cpu.max()
frame_history_cpu_max.text = str(frametime_cpu_max).pad_decimals(2)
frame_history_cpu_max.modulate = frame_time_gradient.sample(remap(1000.0 / frametime_cpu_max, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0))
frame_history_cpu_last.text = str(frametime_cpu).pad_decimals(2)
frame_history_cpu_last.modulate = frame_time_gradient.sample(remap(1000.0 / frametime_cpu, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0))
var frametime_gpu := RenderingServer.viewport_get_measured_render_time_gpu(viewport_rid)
frame_history_gpu.push_back(frametime_gpu)
if frame_history_gpu.size() > HISTORY_NUM_FRAMES:
frame_history_gpu.pop_front()
frametime_gpu_avg = frame_history_gpu.reduce(sum_func) / frame_history_gpu.size()
frame_history_gpu_avg.text = str(frametime_gpu_avg).pad_decimals(2)
frame_history_gpu_avg.modulate = frame_time_gradient.sample(remap(1000.0 / frametime_gpu_avg, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0))
var frametime_gpu_min: float = frame_history_gpu.min()
frame_history_gpu_min.text = str(frametime_gpu_min).pad_decimals(2)
frame_history_gpu_min.modulate = frame_time_gradient.sample(remap(1000.0 / frametime_gpu_min, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0))
var frametime_gpu_max: float = frame_history_gpu.max()
frame_history_gpu_max.text = str(frametime_gpu_max).pad_decimals(2)
frame_history_gpu_max.modulate = frame_time_gradient.sample(remap(1000.0 / frametime_gpu_max, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0))
frame_history_gpu_last.text = str(frametime_gpu).pad_decimals(2)
frame_history_gpu_last.modulate = frame_time_gradient.sample(remap(1000.0 / frametime_gpu, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0))
frames_per_second = 1000.0 / frametime_avg
fps_history.push_back(frames_per_second)
if fps_history.size() > HISTORY_NUM_FRAMES:
fps_history.pop_front()
fps.text = str(floor(frames_per_second)) + " FPS"
var frame_time_color := frame_time_gradient.sample(remap(frames_per_second, GRAPH_MIN_FPS, GRAPH_MAX_FPS, 0.0, 1.0))
fps.modulate = frame_time_color
frame_time.text = str(frametime).pad_decimals(2) + " mspf"
frame_time.modulate = frame_time_color
var vsync_string := ""
match DisplayServer.window_get_vsync_mode():
DisplayServer.VSYNC_ENABLED:
vsync_string = "V-Sync"
DisplayServer.VSYNC_ADAPTIVE:
vsync_string = "Adaptive V-Sync"
DisplayServer.VSYNC_MAILBOX:
vsync_string = "Mailbox V-Sync"
if Engine.max_fps > 0 or OS.low_processor_usage_mode:
# Display FPS cap determined by `Engine.max_fps` or low-processor usage mode sleep duration
# (the lowest FPS cap is used).
var low_processor_max_fps := roundi(1000000.0 / OS.low_processor_usage_mode_sleep_usec)
var fps_cap := low_processor_max_fps
if Engine.max_fps > 0:
fps_cap = mini(Engine.max_fps, low_processor_max_fps)
frame_time.text += " (cap: " + str(fps_cap) + " FPS"
if not vsync_string.is_empty():
frame_time.text += " + " + vsync_string
frame_time.text += ")"
else:
if not vsync_string.is_empty():
frame_time.text += " (" + vsync_string + ")"
frame_number.text = "Frame: " + str(Engine.get_frames_drawn())
last_tick = Time.get_ticks_usec()
func _on_visibility_changed() -> void:
if visible:
# Reset graphs to prevent them from looking strange before `HISTORY_NUM_FRAMES` frames
# have been drawn.
var frametime_last := (Time.get_ticks_usec() - last_tick) * 0.001
fps_history.resize(HISTORY_NUM_FRAMES)
fps_history.fill(1000.0 / frametime_last)
frame_history_total.resize(HISTORY_NUM_FRAMES)
frame_history_total.fill(frametime_last)
frame_history_cpu.resize(HISTORY_NUM_FRAMES)
var viewport_rid := get_viewport().get_viewport_rid()
frame_history_cpu.fill(RenderingServer.viewport_get_measured_render_time_cpu(viewport_rid) + RenderingServer.get_frame_setup_time_cpu())
frame_history_gpu.resize(HISTORY_NUM_FRAMES)
frame_history_gpu.fill(RenderingServer.viewport_get_measured_render_time_gpu(viewport_rid))

View File

@ -1,397 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://cggqb75a8w8r"]
[ext_resource type="Script" path="res://addons/debug_menu/debug_menu.gd" id="1_p440y"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ki0n8"]
bg_color = Color(0, 0, 0, 0.25098)
[node name="DebugMenu" type="Control" node_paths=PackedStringArray("fps", "frame_time", "frame_number", "frame_history_total_avg", "frame_history_total_min", "frame_history_total_max", "frame_history_total_last", "frame_history_cpu_avg", "frame_history_cpu_min", "frame_history_cpu_max", "frame_history_cpu_last", "frame_history_gpu_avg", "frame_history_gpu_min", "frame_history_gpu_max", "frame_history_gpu_last", "fps_graph", "total_graph", "cpu_graph", "gpu_graph", "information", "settings")]
custom_minimum_size = Vector2(400, 400)
layout_direction = 3
layout_mode = 3
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -400.0
offset_bottom = 400.0
grow_horizontal = 0
size_flags_horizontal = 8
size_flags_vertical = 4
mouse_filter = 2
script = ExtResource("1_p440y")
fps = NodePath("VBoxContainer/FPS")
frame_time = NodePath("VBoxContainer/FrameTime")
frame_number = NodePath("VBoxContainer/FrameNumber")
frame_history_total_avg = NodePath("VBoxContainer/FrameTimeHistory/TotalAvg")
frame_history_total_min = NodePath("VBoxContainer/FrameTimeHistory/TotalMin")
frame_history_total_max = NodePath("VBoxContainer/FrameTimeHistory/TotalMax")
frame_history_total_last = NodePath("VBoxContainer/FrameTimeHistory/TotalLast")
frame_history_cpu_avg = NodePath("VBoxContainer/FrameTimeHistory/CPUAvg")
frame_history_cpu_min = NodePath("VBoxContainer/FrameTimeHistory/CPUMin")
frame_history_cpu_max = NodePath("VBoxContainer/FrameTimeHistory/CPUMax")
frame_history_cpu_last = NodePath("VBoxContainer/FrameTimeHistory/CPULast")
frame_history_gpu_avg = NodePath("VBoxContainer/FrameTimeHistory/GPUAvg")
frame_history_gpu_min = NodePath("VBoxContainer/FrameTimeHistory/GPUMin")
frame_history_gpu_max = NodePath("VBoxContainer/FrameTimeHistory/GPUMax")
frame_history_gpu_last = NodePath("VBoxContainer/FrameTimeHistory/GPULast")
fps_graph = NodePath("VBoxContainer/FPSGraph/Graph")
total_graph = NodePath("VBoxContainer/TotalGraph/Graph")
cpu_graph = NodePath("VBoxContainer/CPUGraph/Graph")
gpu_graph = NodePath("VBoxContainer/GPUGraph/Graph")
information = NodePath("VBoxContainer/Information")
settings = NodePath("VBoxContainer/Settings")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -300.0
offset_bottom = 374.0
grow_horizontal = 0
mouse_filter = 2
theme_override_constants/separation = 0
[node name="FPS" type="Label" parent="VBoxContainer"]
modulate = Color(0, 1, 0, 1)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 5
theme_override_constants/line_spacing = 0
theme_override_font_sizes/font_size = 18
text = "60 FPS"
horizontal_alignment = 2
[node name="FrameTime" type="Label" parent="VBoxContainer"]
modulate = Color(0, 1, 0, 1)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "16.67 mspf (cap: 123 FPS + Adaptive V-Sync)"
horizontal_alignment = 2
[node name="FrameNumber" type="Label" parent="VBoxContainer"]
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "Frame: 1234"
horizontal_alignment = 2
[node name="FrameTimeHistory" type="GridContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 8
mouse_filter = 2
theme_override_constants/h_separation = 0
theme_override_constants/v_separation = 0
columns = 5
[node name="Spacer" type="Control" parent="VBoxContainer/FrameTimeHistory"]
custom_minimum_size = Vector2(60, 0)
layout_mode = 2
mouse_filter = 2
[node name="AvgHeader" type="Label" parent="VBoxContainer/FrameTimeHistory"]
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "Average"
horizontal_alignment = 2
[node name="MinHeader" type="Label" parent="VBoxContainer/FrameTimeHistory"]
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "Best"
horizontal_alignment = 2
[node name="MaxHeader" type="Label" parent="VBoxContainer/FrameTimeHistory"]
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "Worst"
horizontal_alignment = 2
[node name="LastHeader" type="Label" parent="VBoxContainer/FrameTimeHistory"]
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "Last"
horizontal_alignment = 2
[node name="TotalHeader" type="Label" parent="VBoxContainer/FrameTimeHistory"]
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "Total:"
horizontal_alignment = 2
[node name="TotalAvg" type="Label" parent="VBoxContainer/FrameTimeHistory"]
modulate = Color(0, 1, 0, 1)
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "123.45"
horizontal_alignment = 2
[node name="TotalMin" type="Label" parent="VBoxContainer/FrameTimeHistory"]
modulate = Color(0, 1, 0, 1)
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "123.45"
horizontal_alignment = 2
[node name="TotalMax" type="Label" parent="VBoxContainer/FrameTimeHistory"]
modulate = Color(0, 1, 0, 1)
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "123.45"
horizontal_alignment = 2
[node name="TotalLast" type="Label" parent="VBoxContainer/FrameTimeHistory"]
modulate = Color(0, 1, 0, 1)
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "123.45"
horizontal_alignment = 2
[node name="CPUHeader" type="Label" parent="VBoxContainer/FrameTimeHistory"]
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "CPU:"
horizontal_alignment = 2
[node name="CPUAvg" type="Label" parent="VBoxContainer/FrameTimeHistory"]
modulate = Color(0, 1, 0, 1)
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "123.45"
horizontal_alignment = 2
[node name="CPUMin" type="Label" parent="VBoxContainer/FrameTimeHistory"]
modulate = Color(0, 1, 0, 1)
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "12.34"
horizontal_alignment = 2
[node name="CPUMax" type="Label" parent="VBoxContainer/FrameTimeHistory"]
modulate = Color(0, 1, 0, 1)
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "123.45"
horizontal_alignment = 2
[node name="CPULast" type="Label" parent="VBoxContainer/FrameTimeHistory"]
modulate = Color(0, 1, 0, 1)
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "123.45"
horizontal_alignment = 2
[node name="GPUHeader" type="Label" parent="VBoxContainer/FrameTimeHistory"]
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "GPU:"
horizontal_alignment = 2
[node name="GPUAvg" type="Label" parent="VBoxContainer/FrameTimeHistory"]
modulate = Color(0, 1, 0, 1)
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "123.45"
horizontal_alignment = 2
[node name="GPUMin" type="Label" parent="VBoxContainer/FrameTimeHistory"]
modulate = Color(0, 1, 0, 1)
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "1.23"
horizontal_alignment = 2
[node name="GPUMax" type="Label" parent="VBoxContainer/FrameTimeHistory"]
modulate = Color(0, 1, 0, 1)
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "123.45"
horizontal_alignment = 2
[node name="GPULast" type="Label" parent="VBoxContainer/FrameTimeHistory"]
modulate = Color(0, 1, 0, 1)
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "123.45"
horizontal_alignment = 2
[node name="FPSGraph" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
mouse_filter = 2
alignment = 2
[node name="Title" type="Label" parent="VBoxContainer/FPSGraph"]
custom_minimum_size = Vector2(0, 27)
layout_mode = 2
size_flags_horizontal = 8
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "FPS: ↑"
vertical_alignment = 1
[node name="Graph" type="Panel" parent="VBoxContainer/FPSGraph"]
custom_minimum_size = Vector2(150, 25)
layout_mode = 2
size_flags_vertical = 0
mouse_filter = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_ki0n8")
[node name="TotalGraph" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
mouse_filter = 2
alignment = 2
[node name="Title" type="Label" parent="VBoxContainer/TotalGraph"]
custom_minimum_size = Vector2(0, 27)
layout_mode = 2
size_flags_horizontal = 8
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "Total: ↓"
vertical_alignment = 1
[node name="Graph" type="Panel" parent="VBoxContainer/TotalGraph"]
custom_minimum_size = Vector2(150, 25)
layout_mode = 2
size_flags_vertical = 0
mouse_filter = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_ki0n8")
[node name="CPUGraph" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
mouse_filter = 2
alignment = 2
[node name="Title" type="Label" parent="VBoxContainer/CPUGraph"]
custom_minimum_size = Vector2(0, 27)
layout_mode = 2
size_flags_horizontal = 8
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "CPU: ↓"
vertical_alignment = 1
[node name="Graph" type="Panel" parent="VBoxContainer/CPUGraph"]
custom_minimum_size = Vector2(150, 25)
layout_mode = 2
size_flags_vertical = 0
mouse_filter = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_ki0n8")
[node name="GPUGraph" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
mouse_filter = 2
alignment = 2
[node name="Title" type="Label" parent="VBoxContainer/GPUGraph"]
custom_minimum_size = Vector2(0, 27)
layout_mode = 2
size_flags_horizontal = 8
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "GPU: ↓"
vertical_alignment = 1
[node name="Graph" type="Panel" parent="VBoxContainer/GPUGraph"]
custom_minimum_size = Vector2(150, 25)
layout_mode = 2
size_flags_vertical = 0
mouse_filter = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_ki0n8")
[node name="Information" type="Label" parent="VBoxContainer"]
modulate = Color(1, 1, 1, 0.752941)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "12th Gen Intel(R) Core(TM) i0-1234K
Windows 12 64-bit (double precision), Vulkan 1.2.34
NVIDIA GeForce RTX 1234, 123.45.67"
horizontal_alignment = 2
[node name="Settings" type="Label" parent="VBoxContainer"]
modulate = Color(0.8, 0.84, 1, 0.752941)
layout_mode = 2
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 12
text = "Project Version: 1.2.3
Rendering Method: Forward+
Window: 1234×567, Viewport: 1234×567
3D Scale (FSR 1.0): 100% = 1234×567
3D Antialiasing: TAA + 2× MSAA + FXAA
SSR: 123 Steps
SSAO: On
SSIL: On
SDFGI: 1 Cascades
Glow: On
Volumetric Fog: On
2D Antialiasing: 2× MSAA"
horizontal_alignment = 2
[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]

View File

@ -1,7 +0,0 @@
[plugin]
name="Debug Menu"
description="In-game debug menu displaying performance metrics and hardware information"
author="Calinou"
version="1.1.0"
script="plugin.gd"

View File

@ -1,29 +0,0 @@
@tool
extends EditorPlugin
func _enter_tree() -> void:
add_autoload_singleton("DebugMenu", "res://addons/debug_menu/debug_menu.tscn")
# FIXME: This appears to do nothing.
# if not ProjectSettings.has_setting("application/config/version"):
# ProjectSettings.set_setting("application/config/version", "1.0.0")
#
# ProjectSettings.set_initial_value("application/config/version", "1.0.0")
# ProjectSettings.add_property_info({
# name = "application/config/version",
# type = TYPE_STRING,
# })
#
# if not InputMap.has_action("cycle_debug_menu"):
# InputMap.add_action("cycle_debug_menu")
# var event := InputEventKey.new()
# event.keycode = KEY_F3
# InputMap.action_add_event("cycle_debug_menu", event)
#
# ProjectSettings.save()
func _exit_tree() -> void:
remove_autoload_singleton("DebugMenu")
# Don't remove the project setting's value and input map action,
# as the plugin may be re-enabled in the future.

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white" width="18px" height="18px"><path d="M0 0h24v24H0z" fill="none"/><path d="M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z"/></svg>

Before

Width:  |  Height:  |  Size: 262 B

View File

@ -1,37 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d1uver224k3px"
path="res://.godot/imported/folder_open-white-18dp.svg-b9b09b2c311e4324f6ceb8d836d92307.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/ui_design_tool/assets/icons/folder_open-white-18dp.svg"
dest_files=["res://.godot/imported/folder_open-white-18dp.svg-b9b09b2c311e4324f6ceb8d836d92307.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Some files were not shown because too many files have changed in this diff Show More