Breakpoint
|
@ -4,7 +4,6 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using System.Threading;
|
||||
using BITKit.Core.Entites;
|
||||
// ReSharper disable All
|
||||
|
||||
namespace BITKit;
|
||||
/// <summary>
|
||||
|
|
Before Width: | Height: | Size: 1.6 KiB |
|
@ -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
|
Before Width: | Height: | Size: 1.2 KiB |
|
@ -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
|
Before Width: | Height: | Size: 2.5 KiB |
|
@ -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
|
Before Width: | Height: | Size: 1.8 KiB |
|
@ -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
|
|
@ -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
|
Before Width: | Height: | Size: 3.8 MiB |
|
@ -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
|
Before Width: | Height: | Size: 419 KiB |
|
@ -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
|
Before Width: | Height: | Size: 243 B |
|
@ -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
|
|
@ -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="螺钉机械臂"]
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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")
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*",
|
||||
"SCADA_GetInfos": "http://222.180.160.130:7081/WebApi/GetInfos?password=winner"
|
||||
}
|
|
@ -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")
|
|
@ -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={}
|
|
@ -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 |
|
@ -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
|
|
@ -1,3 +0,0 @@
|
|||
[gd_resource type="ButtonGroup" format=3 uid="uid://cwiiipy56pktn"]
|
||||
|
||||
[resource]
|
|
@ -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 = ""
|
|
@ -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 = ""
|
|
@ -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 = ""
|
|
@ -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 = ""
|
|
@ -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 = ""
|
|
@ -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"
|
|
@ -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"
|
|
@ -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 = ""
|
|
@ -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 = ""
|
|
@ -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 = ""
|
|
@ -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
|
|
@ -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
|
|
@ -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; }
|
||||
}
|
|
@ -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)));
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -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"]
|
||||
|
||||
|
|
|
@ -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"]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
# 工业数据采集与分析应用分享
|
||||
|
||||
## 该应用程序使用方式为提供基于教学步骤的数据采集与分析的实践,主要包括以下内容:
|
||||
* 教程文档
|
||||
* 数据显示
|
||||
* 模拟数据
|
||||
* 该软件的作用就像是买书附带的光碟,里面有软件和视频等教辅软件
|
||||
|
||||
## 实践一:温湿度数据采集
|
||||
|
||||
配置:温湿度传感器(485)+以太网转485模块+电源等
|
||||
|
||||
目标:掌握Modbus协议、接线、查看文档等技能
|
||||
|
||||
步骤:查看文档+接线+现场讲解等
|
||||
|
||||
|
||||
## 实践二:模拟量数字量采集
|
||||
|
||||
配置:按钮开关+4-20ma信号发生器+模拟量采集模块+电源等
|
||||
|
||||
目标:掌握常见传感器的数据采集等。
|
||||
|
||||
步骤:查看文档+接线+现场讲解+采集
|
||||
|
||||
|
||||
## 实践三:激光雷达数据采集
|
||||
配置:激光雷达(UDP)+电源等
|
||||
|
||||
目标:掌握非标自定义协议的设备的数据采集。
|
||||
|
||||
步骤:查看文档+接线+现场讲解+采集
|
|
@ -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/标识解析"]
|
|
@ -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"]
|
|
@ -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
|
|
@ -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"]
|
|
@ -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"]
|
|
@ -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"]
|
|
@ -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 = "订单信息"
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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")
|
|
@ -1,8 +0,0 @@
|
|||
using Godot;
|
||||
using System;
|
||||
|
||||
namespace BITKit;
|
||||
public partial class ReferenceExamples : Node
|
||||
{
|
||||
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
[plugin]
|
||||
|
||||
name="BITPlugins"
|
||||
description="BITKit为Godot支持的插件 "
|
||||
author="军火商小火柴"
|
||||
version=""
|
||||
script="BITGodotPlugins.cs"
|
|
@ -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.
|
|
@ -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))
|
|
@ -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"]
|
|
@ -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"
|
|
@ -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.
|
|
@ -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 |
|
@ -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
|