diff --git a/.import/Camera2D.svg-f7ff9a7e2b7478fa3eeeac7dfc6b181f.md5 b/.import/Camera2D.svg-f7ff9a7e2b7478fa3eeeac7dfc6b181f.md5
new file mode 100644
index 0000000..8b85103
--- /dev/null
+++ b/.import/Camera2D.svg-f7ff9a7e2b7478fa3eeeac7dfc6b181f.md5
@@ -0,0 +1,3 @@
+source_md5="542afad15f843223632d80fa7b7447f9"
+dest_md5="9aaef2302dc3e9d7cb96816990b01b39"
+
diff --git a/.import/Camera2D.svg-f7ff9a7e2b7478fa3eeeac7dfc6b181f.stex b/.import/Camera2D.svg-f7ff9a7e2b7478fa3eeeac7dfc6b181f.stex
new file mode 100644
index 0000000..fb93575
Binary files /dev/null and b/.import/Camera2D.svg-f7ff9a7e2b7478fa3eeeac7dfc6b181f.stex differ
diff --git a/.import/Check.svg-8996ec98ce27d8da579bd7f7a31d731e.md5 b/.import/Check.svg-8996ec98ce27d8da579bd7f7a31d731e.md5
new file mode 100644
index 0000000..7dfc82b
--- /dev/null
+++ b/.import/Check.svg-8996ec98ce27d8da579bd7f7a31d731e.md5
@@ -0,0 +1,3 @@
+source_md5="86c16c39d96283551fd4ca7392e22681"
+dest_md5="87618c797252e8a9e728deaceb7dc91a"
+
diff --git a/.import/Check.svg-8996ec98ce27d8da579bd7f7a31d731e.stex b/.import/Check.svg-8996ec98ce27d8da579bd7f7a31d731e.stex
new file mode 100644
index 0000000..417c3ec
Binary files /dev/null and b/.import/Check.svg-8996ec98ce27d8da579bd7f7a31d731e.stex differ
diff --git a/.import/Check.svg-a2b3200f72b6a26b4450734dcb813536.md5 b/.import/Check.svg-a2b3200f72b6a26b4450734dcb813536.md5
new file mode 100644
index 0000000..7dfc82b
--- /dev/null
+++ b/.import/Check.svg-a2b3200f72b6a26b4450734dcb813536.md5
@@ -0,0 +1,3 @@
+source_md5="86c16c39d96283551fd4ca7392e22681"
+dest_md5="87618c797252e8a9e728deaceb7dc91a"
+
diff --git a/.import/Check.svg-a2b3200f72b6a26b4450734dcb813536.stex b/.import/Check.svg-a2b3200f72b6a26b4450734dcb813536.stex
new file mode 100644
index 0000000..417c3ec
Binary files /dev/null and b/.import/Check.svg-a2b3200f72b6a26b4450734dcb813536.stex differ
diff --git a/.import/Check.svg-c2dbab39d087876dad6a83cdedcc0db5.md5 b/.import/Check.svg-c2dbab39d087876dad6a83cdedcc0db5.md5
new file mode 100644
index 0000000..7dfc82b
--- /dev/null
+++ b/.import/Check.svg-c2dbab39d087876dad6a83cdedcc0db5.md5
@@ -0,0 +1,3 @@
+source_md5="86c16c39d96283551fd4ca7392e22681"
+dest_md5="87618c797252e8a9e728deaceb7dc91a"
+
diff --git a/.import/Check.svg-c2dbab39d087876dad6a83cdedcc0db5.stex b/.import/Check.svg-c2dbab39d087876dad6a83cdedcc0db5.stex
new file mode 100644
index 0000000..417c3ec
Binary files /dev/null and b/.import/Check.svg-c2dbab39d087876dad6a83cdedcc0db5.stex differ
diff --git a/.import/Close.svg-61be3d94a0e69d2c4a249167beade817.md5 b/.import/Close.svg-61be3d94a0e69d2c4a249167beade817.md5
new file mode 100644
index 0000000..859fa3f
--- /dev/null
+++ b/.import/Close.svg-61be3d94a0e69d2c4a249167beade817.md5
@@ -0,0 +1,3 @@
+source_md5="2cd01efac3e4d3e92f5582eb59e704c6"
+dest_md5="d4dbeedef0f6d363b71b1f30910e1620"
+
diff --git a/.import/Close.svg-61be3d94a0e69d2c4a249167beade817.stex b/.import/Close.svg-61be3d94a0e69d2c4a249167beade817.stex
new file mode 100644
index 0000000..246f87b
Binary files /dev/null and b/.import/Close.svg-61be3d94a0e69d2c4a249167beade817.stex differ
diff --git a/.import/Close.svg-87bba95aa15de62af6092da3aeaba77e.md5 b/.import/Close.svg-87bba95aa15de62af6092da3aeaba77e.md5
new file mode 100644
index 0000000..859fa3f
--- /dev/null
+++ b/.import/Close.svg-87bba95aa15de62af6092da3aeaba77e.md5
@@ -0,0 +1,3 @@
+source_md5="2cd01efac3e4d3e92f5582eb59e704c6"
+dest_md5="d4dbeedef0f6d363b71b1f30910e1620"
+
diff --git a/.import/Close.svg-87bba95aa15de62af6092da3aeaba77e.stex b/.import/Close.svg-87bba95aa15de62af6092da3aeaba77e.stex
new file mode 100644
index 0000000..246f87b
Binary files /dev/null and b/.import/Close.svg-87bba95aa15de62af6092da3aeaba77e.stex differ
diff --git a/.import/Cross.svg-09c18bed723459a3e6c5d7a9987c22bf.md5 b/.import/Cross.svg-09c18bed723459a3e6c5d7a9987c22bf.md5
new file mode 100644
index 0000000..730d1aa
--- /dev/null
+++ b/.import/Cross.svg-09c18bed723459a3e6c5d7a9987c22bf.md5
@@ -0,0 +1,3 @@
+source_md5="8becd37ab9d13cdfe37c08c496a9def3"
+dest_md5="6c22c7360a4c0c592b751933fb637803"
+
diff --git a/.import/Cross.svg-09c18bed723459a3e6c5d7a9987c22bf.stex b/.import/Cross.svg-09c18bed723459a3e6c5d7a9987c22bf.stex
new file mode 100644
index 0000000..c3cd2a0
Binary files /dev/null and b/.import/Cross.svg-09c18bed723459a3e6c5d7a9987c22bf.stex differ
diff --git a/.import/Cross.svg-10ffa293c386e6be3bb671738d959d5b.md5 b/.import/Cross.svg-10ffa293c386e6be3bb671738d959d5b.md5
new file mode 100644
index 0000000..730d1aa
--- /dev/null
+++ b/.import/Cross.svg-10ffa293c386e6be3bb671738d959d5b.md5
@@ -0,0 +1,3 @@
+source_md5="8becd37ab9d13cdfe37c08c496a9def3"
+dest_md5="6c22c7360a4c0c592b751933fb637803"
+
diff --git a/.import/Cross.svg-10ffa293c386e6be3bb671738d959d5b.stex b/.import/Cross.svg-10ffa293c386e6be3bb671738d959d5b.stex
new file mode 100644
index 0000000..c3cd2a0
Binary files /dev/null and b/.import/Cross.svg-10ffa293c386e6be3bb671738d959d5b.stex differ
diff --git a/.import/Cross.svg-6f488847a801f65477fcd11fc9c703aa.md5 b/.import/Cross.svg-6f488847a801f65477fcd11fc9c703aa.md5
new file mode 100644
index 0000000..730d1aa
--- /dev/null
+++ b/.import/Cross.svg-6f488847a801f65477fcd11fc9c703aa.md5
@@ -0,0 +1,3 @@
+source_md5="8becd37ab9d13cdfe37c08c496a9def3"
+dest_md5="6c22c7360a4c0c592b751933fb637803"
+
diff --git a/.import/Cross.svg-6f488847a801f65477fcd11fc9c703aa.stex b/.import/Cross.svg-6f488847a801f65477fcd11fc9c703aa.stex
new file mode 100644
index 0000000..c3cd2a0
Binary files /dev/null and b/.import/Cross.svg-6f488847a801f65477fcd11fc9c703aa.stex differ
diff --git a/.import/Disc.svg-157511012f892ec63f0bb79bcf7cae1c.md5 b/.import/Disc.svg-157511012f892ec63f0bb79bcf7cae1c.md5
new file mode 100644
index 0000000..19a8cf3
--- /dev/null
+++ b/.import/Disc.svg-157511012f892ec63f0bb79bcf7cae1c.md5
@@ -0,0 +1,3 @@
+source_md5="a0a7f6cf67b863940eceaa40397e2030"
+dest_md5="53ca6380952a02402eff6a1de53c1aa0"
+
diff --git a/.import/Disc.svg-157511012f892ec63f0bb79bcf7cae1c.stex b/.import/Disc.svg-157511012f892ec63f0bb79bcf7cae1c.stex
new file mode 100644
index 0000000..ba9fa1e
Binary files /dev/null and b/.import/Disc.svg-157511012f892ec63f0bb79bcf7cae1c.stex differ
diff --git a/.import/Disc.svg-2c9907ab420410f30b74369e1176ae1d.md5 b/.import/Disc.svg-2c9907ab420410f30b74369e1176ae1d.md5
new file mode 100644
index 0000000..19a8cf3
--- /dev/null
+++ b/.import/Disc.svg-2c9907ab420410f30b74369e1176ae1d.md5
@@ -0,0 +1,3 @@
+source_md5="a0a7f6cf67b863940eceaa40397e2030"
+dest_md5="53ca6380952a02402eff6a1de53c1aa0"
+
diff --git a/.import/Disc.svg-2c9907ab420410f30b74369e1176ae1d.stex b/.import/Disc.svg-2c9907ab420410f30b74369e1176ae1d.stex
new file mode 100644
index 0000000..ba9fa1e
Binary files /dev/null and b/.import/Disc.svg-2c9907ab420410f30b74369e1176ae1d.stex differ
diff --git a/.import/Disc.svg-c7db13cacb9ad3f8830742156576b7b9.md5 b/.import/Disc.svg-c7db13cacb9ad3f8830742156576b7b9.md5
new file mode 100644
index 0000000..19a8cf3
--- /dev/null
+++ b/.import/Disc.svg-c7db13cacb9ad3f8830742156576b7b9.md5
@@ -0,0 +1,3 @@
+source_md5="a0a7f6cf67b863940eceaa40397e2030"
+dest_md5="53ca6380952a02402eff6a1de53c1aa0"
+
diff --git a/.import/Disc.svg-c7db13cacb9ad3f8830742156576b7b9.stex b/.import/Disc.svg-c7db13cacb9ad3f8830742156576b7b9.stex
new file mode 100644
index 0000000..ba9fa1e
Binary files /dev/null and b/.import/Disc.svg-c7db13cacb9ad3f8830742156576b7b9.stex differ
diff --git a/.import/Double-down.svg-49b42c381335a7700ad013681c85584b.md5 b/.import/Double-down.svg-49b42c381335a7700ad013681c85584b.md5
new file mode 100644
index 0000000..824339a
--- /dev/null
+++ b/.import/Double-down.svg-49b42c381335a7700ad013681c85584b.md5
@@ -0,0 +1,3 @@
+source_md5="97ebb7b72c4369b203aba61059674db1"
+dest_md5="49c9608b9db7c846cfff9050503c3faa"
+
diff --git a/.import/Double-down.svg-49b42c381335a7700ad013681c85584b.stex b/.import/Double-down.svg-49b42c381335a7700ad013681c85584b.stex
new file mode 100644
index 0000000..ef2d1f4
Binary files /dev/null and b/.import/Double-down.svg-49b42c381335a7700ad013681c85584b.stex differ
diff --git a/.import/Double-down.svg-7be96fc321a81d813f3db786e2b8b6af.md5 b/.import/Double-down.svg-7be96fc321a81d813f3db786e2b8b6af.md5
new file mode 100644
index 0000000..824339a
--- /dev/null
+++ b/.import/Double-down.svg-7be96fc321a81d813f3db786e2b8b6af.md5
@@ -0,0 +1,3 @@
+source_md5="97ebb7b72c4369b203aba61059674db1"
+dest_md5="49c9608b9db7c846cfff9050503c3faa"
+
diff --git a/.import/Double-down.svg-7be96fc321a81d813f3db786e2b8b6af.stex b/.import/Double-down.svg-7be96fc321a81d813f3db786e2b8b6af.stex
new file mode 100644
index 0000000..ef2d1f4
Binary files /dev/null and b/.import/Double-down.svg-7be96fc321a81d813f3db786e2b8b6af.stex differ
diff --git a/.import/Double-down.svg-9f273c7061786a3900f783c100ef480d.md5 b/.import/Double-down.svg-9f273c7061786a3900f783c100ef480d.md5
new file mode 100644
index 0000000..824339a
--- /dev/null
+++ b/.import/Double-down.svg-9f273c7061786a3900f783c100ef480d.md5
@@ -0,0 +1,3 @@
+source_md5="97ebb7b72c4369b203aba61059674db1"
+dest_md5="49c9608b9db7c846cfff9050503c3faa"
+
diff --git a/.import/Double-down.svg-9f273c7061786a3900f783c100ef480d.stex b/.import/Double-down.svg-9f273c7061786a3900f783c100ef480d.stex
new file mode 100644
index 0000000..ef2d1f4
Binary files /dev/null and b/.import/Double-down.svg-9f273c7061786a3900f783c100ef480d.stex differ
diff --git a/.import/Double-right.svg-289bdc2b4ec228e7cf7820ac5a3c73fc.md5 b/.import/Double-right.svg-289bdc2b4ec228e7cf7820ac5a3c73fc.md5
new file mode 100644
index 0000000..96cd900
--- /dev/null
+++ b/.import/Double-right.svg-289bdc2b4ec228e7cf7820ac5a3c73fc.md5
@@ -0,0 +1,3 @@
+source_md5="d6e013cec3f76e3fe8b0aecea25dfd16"
+dest_md5="614f84af3fb5582afacfac6a88646ea2"
+
diff --git a/.import/Double-right.svg-289bdc2b4ec228e7cf7820ac5a3c73fc.stex b/.import/Double-right.svg-289bdc2b4ec228e7cf7820ac5a3c73fc.stex
new file mode 100644
index 0000000..bf2951a
Binary files /dev/null and b/.import/Double-right.svg-289bdc2b4ec228e7cf7820ac5a3c73fc.stex differ
diff --git a/.import/Double-right.svg-6b340aa690765cd8ebd6e751fc94eeab.md5 b/.import/Double-right.svg-6b340aa690765cd8ebd6e751fc94eeab.md5
new file mode 100644
index 0000000..96cd900
--- /dev/null
+++ b/.import/Double-right.svg-6b340aa690765cd8ebd6e751fc94eeab.md5
@@ -0,0 +1,3 @@
+source_md5="d6e013cec3f76e3fe8b0aecea25dfd16"
+dest_md5="614f84af3fb5582afacfac6a88646ea2"
+
diff --git a/.import/Double-right.svg-6b340aa690765cd8ebd6e751fc94eeab.stex b/.import/Double-right.svg-6b340aa690765cd8ebd6e751fc94eeab.stex
new file mode 100644
index 0000000..bf2951a
Binary files /dev/null and b/.import/Double-right.svg-6b340aa690765cd8ebd6e751fc94eeab.stex differ
diff --git a/.import/Double-right.svg-722eb872ac08139e98aa8bad17fdfaa1.md5 b/.import/Double-right.svg-722eb872ac08139e98aa8bad17fdfaa1.md5
new file mode 100644
index 0000000..96cd900
--- /dev/null
+++ b/.import/Double-right.svg-722eb872ac08139e98aa8bad17fdfaa1.md5
@@ -0,0 +1,3 @@
+source_md5="d6e013cec3f76e3fe8b0aecea25dfd16"
+dest_md5="614f84af3fb5582afacfac6a88646ea2"
+
diff --git a/.import/Double-right.svg-722eb872ac08139e98aa8bad17fdfaa1.stex b/.import/Double-right.svg-722eb872ac08139e98aa8bad17fdfaa1.stex
new file mode 100644
index 0000000..bf2951a
Binary files /dev/null and b/.import/Double-right.svg-722eb872ac08139e98aa8bad17fdfaa1.stex differ
diff --git a/.import/Double-up.svg-591605e1271174570df61085cf8a2478.md5 b/.import/Double-up.svg-591605e1271174570df61085cf8a2478.md5
new file mode 100644
index 0000000..c4a0662
--- /dev/null
+++ b/.import/Double-up.svg-591605e1271174570df61085cf8a2478.md5
@@ -0,0 +1,3 @@
+source_md5="bcce2b4d6cf7e4c2a0f83d6488c338ea"
+dest_md5="56b756c482be6f8a403452338e94fe01"
+
diff --git a/.import/Double-up.svg-591605e1271174570df61085cf8a2478.stex b/.import/Double-up.svg-591605e1271174570df61085cf8a2478.stex
new file mode 100644
index 0000000..a711da1
Binary files /dev/null and b/.import/Double-up.svg-591605e1271174570df61085cf8a2478.stex differ
diff --git a/.import/Double-up.svg-640c7b1fba2e3affbff07806f3562afb.md5 b/.import/Double-up.svg-640c7b1fba2e3affbff07806f3562afb.md5
new file mode 100644
index 0000000..c4a0662
--- /dev/null
+++ b/.import/Double-up.svg-640c7b1fba2e3affbff07806f3562afb.md5
@@ -0,0 +1,3 @@
+source_md5="bcce2b4d6cf7e4c2a0f83d6488c338ea"
+dest_md5="56b756c482be6f8a403452338e94fe01"
+
diff --git a/.import/Double-up.svg-640c7b1fba2e3affbff07806f3562afb.stex b/.import/Double-up.svg-640c7b1fba2e3affbff07806f3562afb.stex
new file mode 100644
index 0000000..a711da1
Binary files /dev/null and b/.import/Double-up.svg-640c7b1fba2e3affbff07806f3562afb.stex differ
diff --git a/.import/Double-up.svg-c4cd55cc1e3d6ea80679783cc7c27ef8.md5 b/.import/Double-up.svg-c4cd55cc1e3d6ea80679783cc7c27ef8.md5
new file mode 100644
index 0000000..c4a0662
--- /dev/null
+++ b/.import/Double-up.svg-c4cd55cc1e3d6ea80679783cc7c27ef8.md5
@@ -0,0 +1,3 @@
+source_md5="bcce2b4d6cf7e4c2a0f83d6488c338ea"
+dest_md5="56b756c482be6f8a403452338e94fe01"
+
diff --git a/.import/Double-up.svg-c4cd55cc1e3d6ea80679783cc7c27ef8.stex b/.import/Double-up.svg-c4cd55cc1e3d6ea80679783cc7c27ef8.stex
new file mode 100644
index 0000000..a711da1
Binary files /dev/null and b/.import/Double-up.svg-c4cd55cc1e3d6ea80679783cc7c27ef8.stex differ
diff --git a/.import/Down_right.svg-331670b5e8410c4441315ae1a096ba4a.md5 b/.import/Down_right.svg-331670b5e8410c4441315ae1a096ba4a.md5
new file mode 100644
index 0000000..3021903
--- /dev/null
+++ b/.import/Down_right.svg-331670b5e8410c4441315ae1a096ba4a.md5
@@ -0,0 +1,3 @@
+source_md5="f220b5e735fd1d9f1e1d374d7021f7f6"
+dest_md5="3cda7a5d6a3be1ade86ab0e8e23a76ef"
+
diff --git a/.import/Down_right.svg-331670b5e8410c4441315ae1a096ba4a.stex b/.import/Down_right.svg-331670b5e8410c4441315ae1a096ba4a.stex
new file mode 100644
index 0000000..5d3267b
Binary files /dev/null and b/.import/Down_right.svg-331670b5e8410c4441315ae1a096ba4a.stex differ
diff --git a/.import/Down_right.svg-5572d46e97aea9ae3b2968cf27dfc335.md5 b/.import/Down_right.svg-5572d46e97aea9ae3b2968cf27dfc335.md5
new file mode 100644
index 0000000..3021903
--- /dev/null
+++ b/.import/Down_right.svg-5572d46e97aea9ae3b2968cf27dfc335.md5
@@ -0,0 +1,3 @@
+source_md5="f220b5e735fd1d9f1e1d374d7021f7f6"
+dest_md5="3cda7a5d6a3be1ade86ab0e8e23a76ef"
+
diff --git a/.import/Down_right.svg-5572d46e97aea9ae3b2968cf27dfc335.stex b/.import/Down_right.svg-5572d46e97aea9ae3b2968cf27dfc335.stex
new file mode 100644
index 0000000..5d3267b
Binary files /dev/null and b/.import/Down_right.svg-5572d46e97aea9ae3b2968cf27dfc335.stex differ
diff --git a/.import/Down_right.svg-81dafd14f9b53931f6f78197003bcbe2.md5 b/.import/Down_right.svg-81dafd14f9b53931f6f78197003bcbe2.md5
new file mode 100644
index 0000000..3021903
--- /dev/null
+++ b/.import/Down_right.svg-81dafd14f9b53931f6f78197003bcbe2.md5
@@ -0,0 +1,3 @@
+source_md5="f220b5e735fd1d9f1e1d374d7021f7f6"
+dest_md5="3cda7a5d6a3be1ade86ab0e8e23a76ef"
+
diff --git a/.import/Down_right.svg-81dafd14f9b53931f6f78197003bcbe2.stex b/.import/Down_right.svg-81dafd14f9b53931f6f78197003bcbe2.stex
new file mode 100644
index 0000000..5d3267b
Binary files /dev/null and b/.import/Down_right.svg-81dafd14f9b53931f6f78197003bcbe2.stex differ
diff --git a/.import/Exclamation.svg-00821f5031673d3e521d493f3597e69f.md5 b/.import/Exclamation.svg-00821f5031673d3e521d493f3597e69f.md5
new file mode 100644
index 0000000..8353e04
--- /dev/null
+++ b/.import/Exclamation.svg-00821f5031673d3e521d493f3597e69f.md5
@@ -0,0 +1,3 @@
+source_md5="4467f392af6cb1ad2acd20ae416a69ab"
+dest_md5="c38e4c1e8ff76bdcb459c1a4726aecad"
+
diff --git a/.import/Exclamation.svg-00821f5031673d3e521d493f3597e69f.stex b/.import/Exclamation.svg-00821f5031673d3e521d493f3597e69f.stex
new file mode 100644
index 0000000..82982dd
Binary files /dev/null and b/.import/Exclamation.svg-00821f5031673d3e521d493f3597e69f.stex differ
diff --git a/.import/Exclamation.svg-3f75eba4947cb91ecfca18b9f4758c74.md5 b/.import/Exclamation.svg-3f75eba4947cb91ecfca18b9f4758c74.md5
new file mode 100644
index 0000000..8353e04
--- /dev/null
+++ b/.import/Exclamation.svg-3f75eba4947cb91ecfca18b9f4758c74.md5
@@ -0,0 +1,3 @@
+source_md5="4467f392af6cb1ad2acd20ae416a69ab"
+dest_md5="c38e4c1e8ff76bdcb459c1a4726aecad"
+
diff --git a/.import/Exclamation.svg-3f75eba4947cb91ecfca18b9f4758c74.stex b/.import/Exclamation.svg-3f75eba4947cb91ecfca18b9f4758c74.stex
new file mode 100644
index 0000000..82982dd
Binary files /dev/null and b/.import/Exclamation.svg-3f75eba4947cb91ecfca18b9f4758c74.stex differ
diff --git a/.import/Exclamation.svg-ad577f7f7e41087d3156709c81862557.md5 b/.import/Exclamation.svg-ad577f7f7e41087d3156709c81862557.md5
new file mode 100644
index 0000000..8353e04
--- /dev/null
+++ b/.import/Exclamation.svg-ad577f7f7e41087d3156709c81862557.md5
@@ -0,0 +1,3 @@
+source_md5="4467f392af6cb1ad2acd20ae416a69ab"
+dest_md5="c38e4c1e8ff76bdcb459c1a4726aecad"
+
diff --git a/.import/Exclamation.svg-ad577f7f7e41087d3156709c81862557.stex b/.import/Exclamation.svg-ad577f7f7e41087d3156709c81862557.stex
new file mode 100644
index 0000000..82982dd
Binary files /dev/null and b/.import/Exclamation.svg-ad577f7f7e41087d3156709c81862557.stex differ
diff --git a/.import/PlayScene.svg-602e5c93ecfe4f102e0306485ed4f461.md5 b/.import/PlayScene.svg-602e5c93ecfe4f102e0306485ed4f461.md5
new file mode 100644
index 0000000..ba6ec2d
--- /dev/null
+++ b/.import/PlayScene.svg-602e5c93ecfe4f102e0306485ed4f461.md5
@@ -0,0 +1,3 @@
+source_md5="de13306bc70548369349318dacb66c55"
+dest_md5="76b7ec3c696dc67a27e92eb1bae98488"
+
diff --git a/.import/PlayScene.svg-602e5c93ecfe4f102e0306485ed4f461.stex b/.import/PlayScene.svg-602e5c93ecfe4f102e0306485ed4f461.stex
new file mode 100644
index 0000000..b460d66
Binary files /dev/null and b/.import/PlayScene.svg-602e5c93ecfe4f102e0306485ed4f461.stex differ
diff --git a/.import/PlayScene.svg-f7983da1322fc076e6c50abf12708a81.md5 b/.import/PlayScene.svg-f7983da1322fc076e6c50abf12708a81.md5
new file mode 100644
index 0000000..ba6ec2d
--- /dev/null
+++ b/.import/PlayScene.svg-f7983da1322fc076e6c50abf12708a81.md5
@@ -0,0 +1,3 @@
+source_md5="de13306bc70548369349318dacb66c55"
+dest_md5="76b7ec3c696dc67a27e92eb1bae98488"
+
diff --git a/.import/PlayScene.svg-f7983da1322fc076e6c50abf12708a81.stex b/.import/PlayScene.svg-f7983da1322fc076e6c50abf12708a81.stex
new file mode 100644
index 0000000..b460d66
Binary files /dev/null and b/.import/PlayScene.svg-f7983da1322fc076e6c50abf12708a81.stex differ
diff --git a/.import/Question.svg-1e2613277a5d64c1455ebe15084bba6d.md5 b/.import/Question.svg-1e2613277a5d64c1455ebe15084bba6d.md5
new file mode 100644
index 0000000..f06dafc
--- /dev/null
+++ b/.import/Question.svg-1e2613277a5d64c1455ebe15084bba6d.md5
@@ -0,0 +1,3 @@
+source_md5="3e531d8e171629e9433db0bb431b2e12"
+dest_md5="f54d5bc6633c16d988118d89584d1fa2"
+
diff --git a/.import/Question.svg-1e2613277a5d64c1455ebe15084bba6d.stex b/.import/Question.svg-1e2613277a5d64c1455ebe15084bba6d.stex
new file mode 100644
index 0000000..b55d577
Binary files /dev/null and b/.import/Question.svg-1e2613277a5d64c1455ebe15084bba6d.stex differ
diff --git a/.import/Question.svg-2f6a96e69c2923dad9c80a8c367f8450.md5 b/.import/Question.svg-2f6a96e69c2923dad9c80a8c367f8450.md5
new file mode 100644
index 0000000..f06dafc
--- /dev/null
+++ b/.import/Question.svg-2f6a96e69c2923dad9c80a8c367f8450.md5
@@ -0,0 +1,3 @@
+source_md5="3e531d8e171629e9433db0bb431b2e12"
+dest_md5="f54d5bc6633c16d988118d89584d1fa2"
+
diff --git a/.import/Question.svg-2f6a96e69c2923dad9c80a8c367f8450.stex b/.import/Question.svg-2f6a96e69c2923dad9c80a8c367f8450.stex
new file mode 100644
index 0000000..b55d577
Binary files /dev/null and b/.import/Question.svg-2f6a96e69c2923dad9c80a8c367f8450.stex differ
diff --git a/.import/Question.svg-97ee9585aee020fadc23beda4d744212.md5 b/.import/Question.svg-97ee9585aee020fadc23beda4d744212.md5
new file mode 100644
index 0000000..f06dafc
--- /dev/null
+++ b/.import/Question.svg-97ee9585aee020fadc23beda4d744212.md5
@@ -0,0 +1,3 @@
+source_md5="3e531d8e171629e9433db0bb431b2e12"
+dest_md5="f54d5bc6633c16d988118d89584d1fa2"
+
diff --git a/.import/Question.svg-97ee9585aee020fadc23beda4d744212.stex b/.import/Question.svg-97ee9585aee020fadc23beda4d744212.stex
new file mode 100644
index 0000000..b55d577
Binary files /dev/null and b/.import/Question.svg-97ee9585aee020fadc23beda4d744212.stex differ
diff --git a/.import/Right.svg-14d2a5b2099ad3930395a8aaad9502cd.md5 b/.import/Right.svg-14d2a5b2099ad3930395a8aaad9502cd.md5
new file mode 100644
index 0000000..0a490b4
--- /dev/null
+++ b/.import/Right.svg-14d2a5b2099ad3930395a8aaad9502cd.md5
@@ -0,0 +1,3 @@
+source_md5="464b4ad3ec906581bdc288c42780b3c9"
+dest_md5="d13a892abfe2c259bc6a81c9633a79fc"
+
diff --git a/.import/Right.svg-14d2a5b2099ad3930395a8aaad9502cd.stex b/.import/Right.svg-14d2a5b2099ad3930395a8aaad9502cd.stex
new file mode 100644
index 0000000..e08c366
Binary files /dev/null and b/.import/Right.svg-14d2a5b2099ad3930395a8aaad9502cd.stex differ
diff --git a/.import/Right.svg-c6aaf6d9b069ac6def1e5993d5b9ab83.md5 b/.import/Right.svg-c6aaf6d9b069ac6def1e5993d5b9ab83.md5
new file mode 100644
index 0000000..0a490b4
--- /dev/null
+++ b/.import/Right.svg-c6aaf6d9b069ac6def1e5993d5b9ab83.md5
@@ -0,0 +1,3 @@
+source_md5="464b4ad3ec906581bdc288c42780b3c9"
+dest_md5="d13a892abfe2c259bc6a81c9633a79fc"
+
diff --git a/.import/Right.svg-c6aaf6d9b069ac6def1e5993d5b9ab83.stex b/.import/Right.svg-c6aaf6d9b069ac6def1e5993d5b9ab83.stex
new file mode 100644
index 0000000..e08c366
Binary files /dev/null and b/.import/Right.svg-c6aaf6d9b069ac6def1e5993d5b9ab83.stex differ
diff --git a/.import/Right.svg-cc59ce2cc93676cc0b929f7d2cfd6ed8.md5 b/.import/Right.svg-cc59ce2cc93676cc0b929f7d2cfd6ed8.md5
new file mode 100644
index 0000000..0a490b4
--- /dev/null
+++ b/.import/Right.svg-cc59ce2cc93676cc0b929f7d2cfd6ed8.md5
@@ -0,0 +1,3 @@
+source_md5="464b4ad3ec906581bdc288c42780b3c9"
+dest_md5="d13a892abfe2c259bc6a81c9633a79fc"
+
diff --git a/.import/Right.svg-cc59ce2cc93676cc0b929f7d2cfd6ed8.stex b/.import/Right.svg-cc59ce2cc93676cc0b929f7d2cfd6ed8.stex
new file mode 100644
index 0000000..e08c366
Binary files /dev/null and b/.import/Right.svg-cc59ce2cc93676cc0b929f7d2cfd6ed8.stex differ
diff --git a/.import/Simple-down.svg-85639b67a4989bfe52aef0d2339ec568.md5 b/.import/Simple-down.svg-85639b67a4989bfe52aef0d2339ec568.md5
new file mode 100644
index 0000000..ca5f9cb
--- /dev/null
+++ b/.import/Simple-down.svg-85639b67a4989bfe52aef0d2339ec568.md5
@@ -0,0 +1,3 @@
+source_md5="b8630468b0aed7fa65976ef23ceaa8c3"
+dest_md5="911367ccfb737f7c0a37c57eee7a61fa"
+
diff --git a/.import/Simple-down.svg-85639b67a4989bfe52aef0d2339ec568.stex b/.import/Simple-down.svg-85639b67a4989bfe52aef0d2339ec568.stex
new file mode 100644
index 0000000..fc937ea
Binary files /dev/null and b/.import/Simple-down.svg-85639b67a4989bfe52aef0d2339ec568.stex differ
diff --git a/.import/Simple-down.svg-8daf96f6470df2cc36ce65942728bf1f.md5 b/.import/Simple-down.svg-8daf96f6470df2cc36ce65942728bf1f.md5
new file mode 100644
index 0000000..ca5f9cb
--- /dev/null
+++ b/.import/Simple-down.svg-8daf96f6470df2cc36ce65942728bf1f.md5
@@ -0,0 +1,3 @@
+source_md5="b8630468b0aed7fa65976ef23ceaa8c3"
+dest_md5="911367ccfb737f7c0a37c57eee7a61fa"
+
diff --git a/.import/Simple-down.svg-8daf96f6470df2cc36ce65942728bf1f.stex b/.import/Simple-down.svg-8daf96f6470df2cc36ce65942728bf1f.stex
new file mode 100644
index 0000000..fc937ea
Binary files /dev/null and b/.import/Simple-down.svg-8daf96f6470df2cc36ce65942728bf1f.stex differ
diff --git a/.import/Simple-down.svg-bf4b810308ad11a22581e57e298f9abc.md5 b/.import/Simple-down.svg-bf4b810308ad11a22581e57e298f9abc.md5
new file mode 100644
index 0000000..ca5f9cb
--- /dev/null
+++ b/.import/Simple-down.svg-bf4b810308ad11a22581e57e298f9abc.md5
@@ -0,0 +1,3 @@
+source_md5="b8630468b0aed7fa65976ef23ceaa8c3"
+dest_md5="911367ccfb737f7c0a37c57eee7a61fa"
+
diff --git a/.import/Simple-down.svg-bf4b810308ad11a22581e57e298f9abc.stex b/.import/Simple-down.svg-bf4b810308ad11a22581e57e298f9abc.stex
new file mode 100644
index 0000000..fc937ea
Binary files /dev/null and b/.import/Simple-down.svg-bf4b810308ad11a22581e57e298f9abc.stex differ
diff --git a/.import/Simple-up.svg-2c702641a1942e5f02b44c5fd7293026.md5 b/.import/Simple-up.svg-2c702641a1942e5f02b44c5fd7293026.md5
new file mode 100644
index 0000000..07e9c98
--- /dev/null
+++ b/.import/Simple-up.svg-2c702641a1942e5f02b44c5fd7293026.md5
@@ -0,0 +1,3 @@
+source_md5="79e14ae0b5c616e7ceb92e5c01a42cbc"
+dest_md5="237a4a1b3ad4f72d537daa42af8ab20c"
+
diff --git a/.import/Simple-up.svg-2c702641a1942e5f02b44c5fd7293026.stex b/.import/Simple-up.svg-2c702641a1942e5f02b44c5fd7293026.stex
new file mode 100644
index 0000000..e42b053
Binary files /dev/null and b/.import/Simple-up.svg-2c702641a1942e5f02b44c5fd7293026.stex differ
diff --git a/.import/Simple-up.svg-a9801b5b4caed7ad1aa069e86b1ba247.md5 b/.import/Simple-up.svg-a9801b5b4caed7ad1aa069e86b1ba247.md5
new file mode 100644
index 0000000..07e9c98
--- /dev/null
+++ b/.import/Simple-up.svg-a9801b5b4caed7ad1aa069e86b1ba247.md5
@@ -0,0 +1,3 @@
+source_md5="79e14ae0b5c616e7ceb92e5c01a42cbc"
+dest_md5="237a4a1b3ad4f72d537daa42af8ab20c"
+
diff --git a/.import/Simple-up.svg-a9801b5b4caed7ad1aa069e86b1ba247.stex b/.import/Simple-up.svg-a9801b5b4caed7ad1aa069e86b1ba247.stex
new file mode 100644
index 0000000..e42b053
Binary files /dev/null and b/.import/Simple-up.svg-a9801b5b4caed7ad1aa069e86b1ba247.stex differ
diff --git a/.import/Simple-up.svg-c3fca8a1d1733debab0b53803e9c9423.md5 b/.import/Simple-up.svg-c3fca8a1d1733debab0b53803e9c9423.md5
new file mode 100644
index 0000000..07e9c98
--- /dev/null
+++ b/.import/Simple-up.svg-c3fca8a1d1733debab0b53803e9c9423.md5
@@ -0,0 +1,3 @@
+source_md5="79e14ae0b5c616e7ceb92e5c01a42cbc"
+dest_md5="237a4a1b3ad4f72d537daa42af8ab20c"
+
diff --git a/.import/Simple-up.svg-c3fca8a1d1733debab0b53803e9c9423.stex b/.import/Simple-up.svg-c3fca8a1d1733debab0b53803e9c9423.stex
new file mode 100644
index 0000000..e42b053
Binary files /dev/null and b/.import/Simple-up.svg-c3fca8a1d1733debab0b53803e9c9423.stex differ
diff --git a/.import/Up_Right.svg-e1d620eeda0bbe585f6b326f330e5953.md5 b/.import/Up_Right.svg-e1d620eeda0bbe585f6b326f330e5953.md5
new file mode 100644
index 0000000..68c960c
--- /dev/null
+++ b/.import/Up_Right.svg-e1d620eeda0bbe585f6b326f330e5953.md5
@@ -0,0 +1,3 @@
+source_md5="94d72d11e74aa2583b2092275093efea"
+dest_md5="9a675a46183531494b0406f24d615198"
+
diff --git a/.import/Up_right.svg-9311a421778a9e52af772822119675ef.md5 b/.import/Up_right.svg-9311a421778a9e52af772822119675ef.md5
new file mode 100644
index 0000000..68c960c
--- /dev/null
+++ b/.import/Up_right.svg-9311a421778a9e52af772822119675ef.md5
@@ -0,0 +1,3 @@
+source_md5="94d72d11e74aa2583b2092275093efea"
+dest_md5="9a675a46183531494b0406f24d615198"
+
diff --git a/.import/Up_right.svg-9311a421778a9e52af772822119675ef.stex b/.import/Up_right.svg-9311a421778a9e52af772822119675ef.stex
new file mode 100644
index 0000000..f29ec12
Binary files /dev/null and b/.import/Up_right.svg-9311a421778a9e52af772822119675ef.stex differ
diff --git a/.import/Up_right.svg-dec90644a80c2ddd7fd38b2d1bd4b8ab.md5 b/.import/Up_right.svg-dec90644a80c2ddd7fd38b2d1bd4b8ab.md5
new file mode 100644
index 0000000..68c960c
--- /dev/null
+++ b/.import/Up_right.svg-dec90644a80c2ddd7fd38b2d1bd4b8ab.md5
@@ -0,0 +1,3 @@
+source_md5="94d72d11e74aa2583b2092275093efea"
+dest_md5="9a675a46183531494b0406f24d615198"
+
diff --git a/.import/Up_right.svg-dec90644a80c2ddd7fd38b2d1bd4b8ab.stex b/.import/Up_right.svg-dec90644a80c2ddd7fd38b2d1bd4b8ab.stex
new file mode 100644
index 0000000..f29ec12
Binary files /dev/null and b/.import/Up_right.svg-dec90644a80c2ddd7fd38b2d1bd4b8ab.stex differ
diff --git a/.import/Up_right.svg-e94aa12fa27696caa7c8586181e9bfd5.md5 b/.import/Up_right.svg-e94aa12fa27696caa7c8586181e9bfd5.md5
new file mode 100644
index 0000000..68c960c
--- /dev/null
+++ b/.import/Up_right.svg-e94aa12fa27696caa7c8586181e9bfd5.md5
@@ -0,0 +1,3 @@
+source_md5="94d72d11e74aa2583b2092275093efea"
+dest_md5="9a675a46183531494b0406f24d615198"
+
diff --git a/.import/Up_right.svg-e94aa12fa27696caa7c8586181e9bfd5.stex b/.import/Up_right.svg-e94aa12fa27696caa7c8586181e9bfd5.stex
new file mode 100644
index 0000000..f29ec12
Binary files /dev/null and b/.import/Up_right.svg-e94aa12fa27696caa7c8586181e9bfd5.stex differ
diff --git a/.import/VisualShaderNodeComment.svg-05f6de219ed166eea77ee7350ee7391e.md5 b/.import/VisualShaderNodeComment.svg-05f6de219ed166eea77ee7350ee7391e.md5
new file mode 100644
index 0000000..1c4c9fd
--- /dev/null
+++ b/.import/VisualShaderNodeComment.svg-05f6de219ed166eea77ee7350ee7391e.md5
@@ -0,0 +1,3 @@
+source_md5="133fb4b482b9e33fcb373fc156a4f8e1"
+dest_md5="7305ed6975907d9ef5a50f38b01dc856"
+
diff --git a/.import/VisualShaderNodeComment.svg-05f6de219ed166eea77ee7350ee7391e.stex b/.import/VisualShaderNodeComment.svg-05f6de219ed166eea77ee7350ee7391e.stex
new file mode 100644
index 0000000..808e438
Binary files /dev/null and b/.import/VisualShaderNodeComment.svg-05f6de219ed166eea77ee7350ee7391e.stex differ
diff --git a/.import/VisualShaderNodeComment.svg-31af88c2d8d04fc606880fe8588cbcfa.md5 b/.import/VisualShaderNodeComment.svg-31af88c2d8d04fc606880fe8588cbcfa.md5
new file mode 100644
index 0000000..1c4c9fd
--- /dev/null
+++ b/.import/VisualShaderNodeComment.svg-31af88c2d8d04fc606880fe8588cbcfa.md5
@@ -0,0 +1,3 @@
+source_md5="133fb4b482b9e33fcb373fc156a4f8e1"
+dest_md5="7305ed6975907d9ef5a50f38b01dc856"
+
diff --git a/.import/VisualShaderNodeComment.svg-31af88c2d8d04fc606880fe8588cbcfa.stex b/.import/VisualShaderNodeComment.svg-31af88c2d8d04fc606880fe8588cbcfa.stex
new file mode 100644
index 0000000..808e438
Binary files /dev/null and b/.import/VisualShaderNodeComment.svg-31af88c2d8d04fc606880fe8588cbcfa.stex differ
diff --git a/Assets/Icons/Camera2D.svg b/Assets/Icons/Camera2D.svg
new file mode 100644
index 0000000..a066e50
--- /dev/null
+++ b/Assets/Icons/Camera2D.svg
@@ -0,0 +1,40 @@
+
+
diff --git a/Assets/Icons/Camera2D.svg.import b/Assets/Icons/Camera2D.svg.import
new file mode 100644
index 0000000..1f35e62
--- /dev/null
+++ b/Assets/Icons/Camera2D.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Camera2D.svg-f7ff9a7e2b7478fa3eeeac7dfc6b181f.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/Icons/Camera2D.svg"
+dest_files=[ "res://.import/Camera2D.svg-f7ff9a7e2b7478fa3eeeac7dfc6b181f.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/Icons/Close.svg b/Assets/Icons/Close.svg
new file mode 100644
index 0000000..331727a
--- /dev/null
+++ b/Assets/Icons/Close.svg
@@ -0,0 +1 @@
+
diff --git a/Assets/Icons/Close.svg.import b/Assets/Icons/Close.svg.import
new file mode 100644
index 0000000..3d4f481
--- /dev/null
+++ b/Assets/Icons/Close.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Close.svg-61be3d94a0e69d2c4a249167beade817.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/Icons/Close.svg"
+dest_files=[ "res://.import/Close.svg-61be3d94a0e69d2c4a249167beade817.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/Icons/PlayScene.svg b/Assets/Icons/PlayScene.svg
new file mode 100644
index 0000000..7f8e40f
--- /dev/null
+++ b/Assets/Icons/PlayScene.svg
@@ -0,0 +1 @@
+
diff --git a/Assets/Icons/PlayScene.svg.import b/Assets/Icons/PlayScene.svg.import
new file mode 100644
index 0000000..dad4981
--- /dev/null
+++ b/Assets/Icons/PlayScene.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/PlayScene.svg-f7983da1322fc076e6c50abf12708a81.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/Icons/PlayScene.svg"
+dest_files=[ "res://.import/PlayScene.svg-f7983da1322fc076e6c50abf12708a81.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/Icons/VisualShaderNodeComment.svg b/Assets/Icons/VisualShaderNodeComment.svg
new file mode 100644
index 0000000..3887853
--- /dev/null
+++ b/Assets/Icons/VisualShaderNodeComment.svg
@@ -0,0 +1 @@
+
diff --git a/Assets/Icons/VisualShaderNodeComment.svg.import b/Assets/Icons/VisualShaderNodeComment.svg.import
new file mode 100644
index 0000000..88237b8
--- /dev/null
+++ b/Assets/Icons/VisualShaderNodeComment.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/VisualShaderNodeComment.svg-05f6de219ed166eea77ee7350ee7391e.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/Icons/VisualShaderNodeComment.svg"
+dest_files=[ "res://.import/VisualShaderNodeComment.svg-05f6de219ed166eea77ee7350ee7391e.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/UserIcons/Check.svg b/Assets/UserIcons/Check.svg
new file mode 100644
index 0000000..904d0fc
--- /dev/null
+++ b/Assets/UserIcons/Check.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Assets/UserIcons/Check.svg.import b/Assets/UserIcons/Check.svg.import
new file mode 100644
index 0000000..12bb0d1
--- /dev/null
+++ b/Assets/UserIcons/Check.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Check.svg-a2b3200f72b6a26b4450734dcb813536.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/UserIcons/Check.svg"
+dest_files=[ "res://.import/Check.svg-a2b3200f72b6a26b4450734dcb813536.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/UserIcons/Cross.svg b/Assets/UserIcons/Cross.svg
new file mode 100644
index 0000000..4d76e24
--- /dev/null
+++ b/Assets/UserIcons/Cross.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Assets/UserIcons/Cross.svg.import b/Assets/UserIcons/Cross.svg.import
new file mode 100644
index 0000000..347f6d2
--- /dev/null
+++ b/Assets/UserIcons/Cross.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Cross.svg-6f488847a801f65477fcd11fc9c703aa.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/UserIcons/Cross.svg"
+dest_files=[ "res://.import/Cross.svg-6f488847a801f65477fcd11fc9c703aa.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/UserIcons/Disc.svg b/Assets/UserIcons/Disc.svg
new file mode 100644
index 0000000..d98cc6d
--- /dev/null
+++ b/Assets/UserIcons/Disc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Assets/UserIcons/Disc.svg.import b/Assets/UserIcons/Disc.svg.import
new file mode 100644
index 0000000..ef20192
--- /dev/null
+++ b/Assets/UserIcons/Disc.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Disc.svg-c7db13cacb9ad3f8830742156576b7b9.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/UserIcons/Disc.svg"
+dest_files=[ "res://.import/Disc.svg-c7db13cacb9ad3f8830742156576b7b9.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/UserIcons/Double-down.svg b/Assets/UserIcons/Double-down.svg
new file mode 100644
index 0000000..5846fae
--- /dev/null
+++ b/Assets/UserIcons/Double-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Assets/UserIcons/Double-down.svg.import b/Assets/UserIcons/Double-down.svg.import
new file mode 100644
index 0000000..10b212e
--- /dev/null
+++ b/Assets/UserIcons/Double-down.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Double-down.svg-49b42c381335a7700ad013681c85584b.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/UserIcons/Double-down.svg"
+dest_files=[ "res://.import/Double-down.svg-49b42c381335a7700ad013681c85584b.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/UserIcons/Double-right.svg b/Assets/UserIcons/Double-right.svg
new file mode 100644
index 0000000..1ef719c
--- /dev/null
+++ b/Assets/UserIcons/Double-right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Assets/UserIcons/Double-right.svg.import b/Assets/UserIcons/Double-right.svg.import
new file mode 100644
index 0000000..262621a
--- /dev/null
+++ b/Assets/UserIcons/Double-right.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Double-right.svg-289bdc2b4ec228e7cf7820ac5a3c73fc.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/UserIcons/Double-right.svg"
+dest_files=[ "res://.import/Double-right.svg-289bdc2b4ec228e7cf7820ac5a3c73fc.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/UserIcons/Double-up.svg b/Assets/UserIcons/Double-up.svg
new file mode 100644
index 0000000..a33e0f8
--- /dev/null
+++ b/Assets/UserIcons/Double-up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Assets/UserIcons/Double-up.svg.import b/Assets/UserIcons/Double-up.svg.import
new file mode 100644
index 0000000..a68c821
--- /dev/null
+++ b/Assets/UserIcons/Double-up.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Double-up.svg-640c7b1fba2e3affbff07806f3562afb.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/UserIcons/Double-up.svg"
+dest_files=[ "res://.import/Double-up.svg-640c7b1fba2e3affbff07806f3562afb.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/UserIcons/Down_right.svg b/Assets/UserIcons/Down_right.svg
new file mode 100644
index 0000000..129dd62
--- /dev/null
+++ b/Assets/UserIcons/Down_right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Assets/UserIcons/Down_right.svg.import b/Assets/UserIcons/Down_right.svg.import
new file mode 100644
index 0000000..b11865c
--- /dev/null
+++ b/Assets/UserIcons/Down_right.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Down_right.svg-5572d46e97aea9ae3b2968cf27dfc335.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/UserIcons/Down_right.svg"
+dest_files=[ "res://.import/Down_right.svg-5572d46e97aea9ae3b2968cf27dfc335.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/UserIcons/Exclamation.svg b/Assets/UserIcons/Exclamation.svg
new file mode 100644
index 0000000..e730a08
--- /dev/null
+++ b/Assets/UserIcons/Exclamation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Assets/UserIcons/Exclamation.svg.import b/Assets/UserIcons/Exclamation.svg.import
new file mode 100644
index 0000000..b9c1436
--- /dev/null
+++ b/Assets/UserIcons/Exclamation.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Exclamation.svg-3f75eba4947cb91ecfca18b9f4758c74.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/UserIcons/Exclamation.svg"
+dest_files=[ "res://.import/Exclamation.svg-3f75eba4947cb91ecfca18b9f4758c74.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/UserIcons/Question.svg b/Assets/UserIcons/Question.svg
new file mode 100644
index 0000000..d76931b
--- /dev/null
+++ b/Assets/UserIcons/Question.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Assets/UserIcons/Question.svg.import b/Assets/UserIcons/Question.svg.import
new file mode 100644
index 0000000..6f9f0a8
--- /dev/null
+++ b/Assets/UserIcons/Question.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Question.svg-97ee9585aee020fadc23beda4d744212.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/UserIcons/Question.svg"
+dest_files=[ "res://.import/Question.svg-97ee9585aee020fadc23beda4d744212.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/UserIcons/Right.svg b/Assets/UserIcons/Right.svg
new file mode 100644
index 0000000..55d2d62
--- /dev/null
+++ b/Assets/UserIcons/Right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Assets/UserIcons/Right.svg.import b/Assets/UserIcons/Right.svg.import
new file mode 100644
index 0000000..ea6e578
--- /dev/null
+++ b/Assets/UserIcons/Right.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Right.svg-c6aaf6d9b069ac6def1e5993d5b9ab83.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/UserIcons/Right.svg"
+dest_files=[ "res://.import/Right.svg-c6aaf6d9b069ac6def1e5993d5b9ab83.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/UserIcons/Simple-down.svg b/Assets/UserIcons/Simple-down.svg
new file mode 100644
index 0000000..f846cbf
--- /dev/null
+++ b/Assets/UserIcons/Simple-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Assets/UserIcons/Simple-down.svg.import b/Assets/UserIcons/Simple-down.svg.import
new file mode 100644
index 0000000..651d4a9
--- /dev/null
+++ b/Assets/UserIcons/Simple-down.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Simple-down.svg-bf4b810308ad11a22581e57e298f9abc.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/UserIcons/Simple-down.svg"
+dest_files=[ "res://.import/Simple-down.svg-bf4b810308ad11a22581e57e298f9abc.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/UserIcons/Simple-up.svg b/Assets/UserIcons/Simple-up.svg
new file mode 100644
index 0000000..96d0ebb
--- /dev/null
+++ b/Assets/UserIcons/Simple-up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Assets/UserIcons/Simple-up.svg.import b/Assets/UserIcons/Simple-up.svg.import
new file mode 100644
index 0000000..02e5faf
--- /dev/null
+++ b/Assets/UserIcons/Simple-up.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Simple-up.svg-c3fca8a1d1733debab0b53803e9c9423.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/UserIcons/Simple-up.svg"
+dest_files=[ "res://.import/Simple-up.svg-c3fca8a1d1733debab0b53803e9c9423.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Assets/UserIcons/Up_right.svg b/Assets/UserIcons/Up_right.svg
new file mode 100644
index 0000000..62e4c0f
--- /dev/null
+++ b/Assets/UserIcons/Up_right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Assets/UserIcons/Up_right.svg.import b/Assets/UserIcons/Up_right.svg.import
new file mode 100644
index 0000000..124658e
--- /dev/null
+++ b/Assets/UserIcons/Up_right.svg.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/Up_right.svg-e94aa12fa27696caa7c8586181e9bfd5.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://Assets/UserIcons/Up_right.svg"
+dest_files=[ "res://.import/Up_right.svg-e94aa12fa27696caa7c8586181e9bfd5.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/Scenes/CommentGraphNode.tscn b/Scenes/CommentGraphNode.tscn
new file mode 100644
index 0000000..72c36c7
--- /dev/null
+++ b/Scenes/CommentGraphNode.tscn
@@ -0,0 +1,112 @@
+[gd_scene load_steps=17 format=2]
+
+[ext_resource path="res://Scripts/CommentGraphNode.gd" type="Script" id=1]
+[ext_resource path="res://Assets/Icons/Remove.svg" type="Texture" id=2]
+[ext_resource path="res://Assets/Icons/Add.svg" type="Texture" id=3]
+[ext_resource path="res://Assets/UserIcons/Up_right.svg" type="Texture" id=4]
+[ext_resource path="res://Assets/UserIcons/Down_right.svg" type="Texture" id=5]
+[ext_resource path="res://Assets/UserIcons/Right.svg" type="Texture" id=6]
+[ext_resource path="res://Assets/UserIcons/Simple-up.svg" type="Texture" id=7]
+[ext_resource path="res://Assets/UserIcons/Simple-down.svg" type="Texture" id=8]
+[ext_resource path="res://Assets/UserIcons/Double-up.svg" type="Texture" id=9]
+[ext_resource path="res://Assets/UserIcons/Double-right.svg" type="Texture" id=10]
+[ext_resource path="res://Assets/UserIcons/Double-down.svg" type="Texture" id=11]
+[ext_resource path="res://Assets/UserIcons/Disc.svg" type="Texture" id=12]
+[ext_resource path="res://Assets/UserIcons/Check.svg" type="Texture" id=13]
+[ext_resource path="res://Assets/UserIcons/Cross.svg" type="Texture" id=14]
+[ext_resource path="res://Assets/UserIcons/Question.svg" type="Texture" id=15]
+[ext_resource path="res://Assets/UserIcons/Exclamation.svg" type="Texture" id=16]
+
+[node name="CommentNode" type="GraphNode"]
+margin_right = 231.0
+margin_bottom = 81.0
+mouse_filter = 2
+title = "Title"
+show_close = true
+comment = true
+slot/0/left_enabled = false
+slot/0/left_type = 0
+slot/0/left_color = Color( 1, 1, 1, 1 )
+slot/0/right_enabled = false
+slot/0/right_type = 0
+slot/0/right_color = Color( 1, 1, 1, 1 )
+script = ExtResource( 1 )
+
+[node name="VBoxContainer" type="VBoxContainer" parent="."]
+margin_left = 16.0
+margin_top = 24.0
+margin_right = 215.0
+margin_bottom = 75.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
+margin_right = 199.0
+margin_bottom = 22.0
+size_flags_horizontal = 3
+
+[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer"]
+margin_right = 135.0
+margin_bottom = 22.0
+size_flags_horizontal = 3
+
+[node name="IconButton1" type="OptionButton" parent="VBoxContainer/HBoxContainer/HBoxContainer"]
+margin_right = 29.0
+margin_bottom = 22.0
+icon = ExtResource( 4 )
+flat = true
+expand_icon = true
+items = [ "", ExtResource( 4 ), false, 0, null, "", ExtResource( 6 ), false, 1, null, "", ExtResource( 5 ), false, 2, null, "", ExtResource( 9 ), false, 3, null, "", ExtResource( 10 ), false, 4, null, "", ExtResource( 11 ), false, 5, null, "", ExtResource( 13 ), false, 6, null, "", ExtResource( 15 ), false, 7, null, "", ExtResource( 16 ), false, 8, null, "", ExtResource( 14 ), false, 9, null, "", ExtResource( 12 ), false, 10, null, "", ExtResource( 7 ), false, 11, null, "", ExtResource( 8 ), false, 12, null ]
+selected = 0
+
+[node name="IconButton2" type="OptionButton" parent="VBoxContainer/HBoxContainer/HBoxContainer"]
+margin_left = 33.0
+margin_right = 62.0
+margin_bottom = 22.0
+icon = ExtResource( 4 )
+flat = true
+expand_icon = true
+items = [ "", ExtResource( 4 ), false, 0, null, "", ExtResource( 6 ), false, 1, null, "", ExtResource( 5 ), false, 2, null, "", ExtResource( 9 ), false, 3, null, "", ExtResource( 10 ), false, 4, null, "", ExtResource( 11 ), false, 5, null, "", ExtResource( 13 ), false, 6, null, "", ExtResource( 15 ), false, 7, null, "", ExtResource( 16 ), false, 8, null, "", ExtResource( 14 ), false, 9, null, "", ExtResource( 12 ), false, 10, null, "", ExtResource( 7 ), false, 11, null, "", ExtResource( 8 ), false, 12, null ]
+selected = 0
+
+[node name="IconButton3" type="OptionButton" parent="VBoxContainer/HBoxContainer/HBoxContainer"]
+margin_left = 66.0
+margin_right = 95.0
+margin_bottom = 22.0
+icon = ExtResource( 4 )
+flat = true
+expand_icon = true
+items = [ "", ExtResource( 4 ), false, 0, null, "", ExtResource( 6 ), false, 1, null, "", ExtResource( 5 ), false, 2, null, "", ExtResource( 9 ), false, 3, null, "", ExtResource( 10 ), false, 4, null, "", ExtResource( 11 ), false, 5, null, "", ExtResource( 13 ), false, 6, null, "", ExtResource( 15 ), false, 7, null, "", ExtResource( 16 ), false, 8, null, "", ExtResource( 14 ), false, 9, null, "", ExtResource( 12 ), false, 10, null, "", ExtResource( 7 ), false, 11, null, "", ExtResource( 8 ), false, 12, null ]
+selected = 0
+
+[node name="IconButton4" type="OptionButton" parent="VBoxContainer/HBoxContainer/HBoxContainer"]
+margin_left = 99.0
+margin_right = 128.0
+margin_bottom = 22.0
+icon = ExtResource( 4 )
+flat = true
+expand_icon = true
+items = [ "", ExtResource( 4 ), false, 0, null, "", ExtResource( 6 ), false, 1, null, "", ExtResource( 5 ), false, 2, null, "", ExtResource( 9 ), false, 3, null, "", ExtResource( 10 ), false, 4, null, "", ExtResource( 11 ), false, 5, null, "", ExtResource( 13 ), false, 6, null, "", ExtResource( 15 ), false, 7, null, "", ExtResource( 16 ), false, 8, null, "", ExtResource( 14 ), false, 9, null, "", ExtResource( 12 ), false, 10, null, "", ExtResource( 7 ), false, 11, null, "", ExtResource( 8 ), false, 12, null ]
+selected = 0
+
+[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HBoxContainer"]
+margin_left = 139.0
+margin_right = 199.0
+margin_bottom = 22.0
+
+[node name="AddButton" type="Button" parent="VBoxContainer/HBoxContainer/HBoxContainer2"]
+margin_right = 28.0
+margin_bottom = 22.0
+icon = ExtResource( 3 )
+flat = true
+
+[node name="SubButton" type="Button" parent="VBoxContainer/HBoxContainer/HBoxContainer2"]
+margin_left = 32.0
+margin_right = 60.0
+margin_bottom = 22.0
+icon = ExtResource( 2 )
+flat = true
+
+[connection signal="close_request" from="." to="." method="_on_CommentNode_close_request"]
+[connection signal="pressed" from="VBoxContainer/HBoxContainer/HBoxContainer2/AddButton" to="." method="_on_AddButton_pressed"]
+[connection signal="pressed" from="VBoxContainer/HBoxContainer/HBoxContainer2/SubButton" to="." method="_on_SubButton_pressed"]
diff --git a/Scenes/CommentRect.tscn b/Scenes/CommentRect.tscn
new file mode 100644
index 0000000..b417408
--- /dev/null
+++ b/Scenes/CommentRect.tscn
@@ -0,0 +1,67 @@
+[gd_scene load_steps=5 format=2]
+
+[ext_resource path="res://Assets/Icons/Remove.svg" type="Texture" id=1]
+[ext_resource path="res://Assets/Icons/Add.svg" type="Texture" id=2]
+[ext_resource path="res://Assets/Icons/Close.svg" type="Texture" id=3]
+[ext_resource path="res://Scripts/CommentRect.gd" type="Script" id=4]
+
+[node name="CommentRect" type="ColorRect"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_right = -1180.0
+margin_bottom = -687.0
+color = Color( 0.333333, 0.333333, 0.333333, 0.564706 )
+script = ExtResource( 4 )
+
+[node name="VBoxContainer" type="VBoxContainer" parent="."]
+margin_left = 16.0
+margin_top = 24.0
+margin_right = 167.0
+margin_bottom = 201.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="TitleBar" type="HBoxContainer" parent="VBoxContainer"]
+margin_right = 151.0
+margin_bottom = 31.0
+size_flags_horizontal = 3
+
+[node name="Label" type="Label" parent="VBoxContainer/TitleBar"]
+margin_right = 119.0
+margin_bottom = 31.0
+size_flags_horizontal = 3
+text = "This is a multiline
+commentary."
+autowrap = true
+
+[node name="CloseButton" type="Button" parent="VBoxContainer/TitleBar"]
+margin_left = 123.0
+margin_right = 151.0
+margin_bottom = 31.0
+icon = ExtResource( 3 )
+flat = true
+align = 2
+icon_align = 2
+
+[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
+margin_top = 35.0
+margin_right = 151.0
+margin_bottom = 57.0
+size_flags_horizontal = 3
+
+[node name="AddButton" type="Button" parent="VBoxContainer/HBoxContainer"]
+margin_right = 28.0
+margin_bottom = 22.0
+icon = ExtResource( 2 )
+flat = true
+
+[node name="SubButton" type="Button" parent="VBoxContainer/HBoxContainer"]
+margin_left = 32.0
+margin_right = 60.0
+margin_bottom = 22.0
+icon = ExtResource( 1 )
+flat = true
+
+[connection signal="pressed" from="VBoxContainer/TitleBar/CloseButton" to="." method="_on_CloseButton_pressed"]
+[connection signal="pressed" from="VBoxContainer/HBoxContainer/AddButton" to="." method="_on_AddButton_pressed"]
+[connection signal="pressed" from="VBoxContainer/HBoxContainer/SubButton" to="." method="_on_SubButton_pressed"]
diff --git a/Scenes/GraphEdit.tscn b/Scenes/GraphEdit.tscn
index a4e7ba6..5c7937f 100644
--- a/Scenes/GraphEdit.tscn
+++ b/Scenes/GraphEdit.tscn
@@ -1,13 +1,16 @@
-[gd_scene load_steps=5 format=2]
+[gd_scene load_steps=6 format=2]
[ext_resource path="res://Scenes/DisplayDialog.tscn" type="PackedScene" id=1]
[ext_resource path="res://Scripts/GraphEdit.gd" type="Script" id=2]
-[ext_resource path="res://Assets/Icons/Play.svg" type="Texture" id=3]
+[ext_resource path="res://Assets/Icons/PlayScene.svg" type="Texture" id=3]
[ext_resource path="res://Assets/Icons/Add.svg" type="Texture" id=4]
+[ext_resource path="res://Assets/Icons/VisualShaderNodeComment.svg" type="Texture" id=5]
[node name="Graph" type="GraphEdit"]
anchor_right = 1.0
anchor_bottom = 1.0
+custom_constants/port_grab_distance_vertical = 26
+custom_constants/port_grab_distance_horizontal = 30
right_disconnects = true
use_snap = false
zoom_min = 0.162
@@ -47,9 +50,18 @@ hint_tooltip = "Add a new frame"
icon = ExtResource( 4 )
flat = true
-[node name="PlayButton" type="Button" parent="CanvasLayer/HBoxContainer"]
+[node name="CommentButton" type="Button" parent="CanvasLayer/HBoxContainer"]
margin_left = 142.0
-margin_right = 170.0
+margin_right = 168.0
+margin_bottom = 24.0
+hint_tooltip = "Add a new frame"
+disabled = true
+icon = ExtResource( 5 )
+flat = true
+
+[node name="PlayButton" type="Button" parent="CanvasLayer/HBoxContainer"]
+margin_left = 172.0
+margin_right = 200.0
margin_bottom = 24.0
hint_tooltip = "Play from selected frame"
disabled = true
@@ -123,6 +135,7 @@ filters = PoolStringArray( "*.res" )
[connection signal="paste_nodes_request" from="." to="." method="_on_GraphEdit_paste_nodes_request"]
[connection signal="color_changed" from="CanvasLayer/HBoxContainer/ColorPicker" to="." method="_on_ColorPicker_color_changed"]
[connection signal="pressed" from="CanvasLayer/HBoxContainer/AddButton" to="." method="_on_AddButton_pressed"]
+[connection signal="pressed" from="CanvasLayer/HBoxContainer/CommentButton" to="." method="_on_CommentButton_pressed"]
[connection signal="pressed" from="CanvasLayer/HBoxContainer/PlayButton" to="." method="_on_PlayButton_pressed"]
[connection signal="pressed" from="CanvasLayer/HBoxContainer/DebugButton" to="." method="_on_DebugButton_pressed"]
[connection signal="file_selected" from="OpenImgFileDialog" to="." method="_on_OpenImgFileDialog_file_selected"]
diff --git a/Scenes/GraphNode.tscn b/Scenes/ImageGraphNode.tscn
similarity index 88%
rename from Scenes/GraphNode.tscn
rename to Scenes/ImageGraphNode.tscn
index 13262a1..3d4053b 100644
--- a/Scenes/GraphNode.tscn
+++ b/Scenes/ImageGraphNode.tscn
@@ -1,12 +1,12 @@
[gd_scene load_steps=9 format=2]
-[ext_resource path="res://Scripts/GraphNode.gd" type="Script" id=1]
-[ext_resource path="res://Assets/Icons/ImageTexture.svg" type="Texture" id=2]
-[ext_resource path="res://Assets/Icons/Reload.svg" type="Texture" id=3]
-[ext_resource path="res://Assets/Icons/VisualShaderPort.svg" type="Texture" id=4]
-[ext_resource path="res://Assets/Icons/SoundFile.svg" type="Texture" id=5]
-[ext_resource path="res://Resources/SelectedFrame.tres" type="StyleBox" id=6]
-[ext_resource path="res://Resources/NormalFrame.tres" type="StyleBox" id=7]
+[ext_resource path="res://Resources/SelectedFrame.tres" type="StyleBox" id=1]
+[ext_resource path="res://Resources/NormalFrame.tres" type="StyleBox" id=2]
+[ext_resource path="res://Scripts/ImageGraphNode.gd" type="Script" id=3]
+[ext_resource path="res://Assets/Icons/ImageTexture.svg" type="Texture" id=4]
+[ext_resource path="res://Assets/Icons/Reload.svg" type="Texture" id=5]
+[ext_resource path="res://Assets/Icons/VisualShaderPort.svg" type="Texture" id=6]
+[ext_resource path="res://Assets/Icons/SoundFile.svg" type="Texture" id=7]
[ext_resource path="res://Assets/Icons/Remove.svg" type="Texture" id=8]
[node name="GraphNode" type="GraphNode"]
@@ -14,9 +14,10 @@ margin_right = 232.0
margin_bottom = 197.0
rect_min_size = Vector2( 100, 75 )
custom_colors/resizer_color = Color( 1, 1, 1, 1 )
-custom_icons/port = ExtResource( 4 )
-custom_styles/frame = ExtResource( 7 )
-custom_styles/selectedframe = ExtResource( 6 )
+custom_constants/port_offset = -5
+custom_icons/port = ExtResource( 6 )
+custom_styles/frame = ExtResource( 2 )
+custom_styles/selectedframe = ExtResource( 1 )
title = "Title"
show_close = true
resizable = true
@@ -26,7 +27,7 @@ slot/0/left_color = Color( 0, 0.745098, 0, 1 )
slot/0/right_enabled = true
slot/0/right_type = 0
slot/0/right_color = Color( 0, 0.745098, 0, 1 )
-script = ExtResource( 1 )
+script = ExtResource( 3 )
[node name="VBoxContainer" type="VBoxContainer" parent="."]
margin_left = 12.0
@@ -98,14 +99,16 @@ margin_left = 145.0
margin_right = 173.0
margin_bottom = 24.0
hint_tooltip = "Load image from file"
-icon = ExtResource( 2 )
+icon = ExtResource( 4 )
+flat = true
[node name="SoundButton" type="Button" parent="VBoxContainer/HBoxContainer"]
margin_left = 177.0
margin_right = 205.0
margin_bottom = 24.0
hint_tooltip = "Load sound from file"
-icon = ExtResource( 5 )
+icon = ExtResource( 7 )
+flat = true
[node name="DelSoundButton" type="Button" parent="VBoxContainer/HBoxContainer"]
margin_left = 209.0
@@ -113,16 +116,19 @@ margin_right = 237.0
margin_bottom = 24.0
hint_tooltip = "Remove sound"
icon = ExtResource( 8 )
+flat = true
[node name="ReloadButton" type="Button" parent="VBoxContainer/HBoxContainer"]
margin_left = 241.0
margin_right = 269.0
margin_bottom = 24.0
hint_tooltip = "Reload image and sound"
-icon = ExtResource( 3 )
+icon = ExtResource( 5 )
+flat = true
icon_align = 1
[connection signal="close_request" from="." to="." method="_on_GraphNode_close_request"]
+[connection signal="offset_changed" from="." to="." method="_on_GraphNode_offset_changed"]
[connection signal="resize_request" from="." to="." method="_on_GraphNode_resize_request"]
[connection signal="focus_entered" from="VBoxContainer/Control/Thumbnail" to="." method="_on_TextureRect_focus_entered"]
[connection signal="gui_input" from="VBoxContainer/Control/Thumbnail" to="." method="_on_TextureRect_gui_input"]
diff --git a/Scripts/CommentGraphNode.gd b/Scripts/CommentGraphNode.gd
new file mode 100644
index 0000000..f23f6e1
--- /dev/null
+++ b/Scripts/CommentGraphNode.gd
@@ -0,0 +1,90 @@
+extends GraphNode
+class_name CommentGraphNode
+
+
+var children: = []
+var old_offset: Vector2
+
+
+func _ready():
+ old_offset = offset
+
+
+func contains_image_node(node: ImageGraphNode):
+ return children.has(node)
+
+
+func add_image_node(node: ImageGraphNode, auto_update: bool):
+ if not children.has(node):
+ children.push_back(node)
+ if auto_update:
+ update_size()
+ print("children: ", children)
+ #var old_position = node.global_position
+# get_parent().remove_child(node)
+# add_child(node)
+ #node.set_owner(self)
+ #node.global_position = old_position
+
+
+func remove_image_node(node: ImageGraphNode, auto_update: bool):
+ if children.has(node):
+ children.erase(node)
+ if auto_update:
+ update_size()
+ print("children: ", children)
+
+
+func update_size():
+ if children.empty():
+ return
+ var rect: Rect2
+ var initialized: = false
+ for node in children:
+ if initialized:
+ var node_rect = Rect2(node.offset, node.rect_size) # graph space
+ rect = rect.merge(node_rect)
+ else:
+ rect = Rect2(node.offset, node.rect_size) # graph space
+ initialized = true
+
+ set_offset(rect.position - Vector2(24.0, 64.0)) # graph space
+ set_size(rect.size + Vector2(24.0 + 24.0, 24.0 + 64.0)) # graph space
+
+
+func _on_CommentNode_close_request():
+ var graph = get_parent()
+ assert(graph is GraphEdit)
+ assert(graph.has_method("delete_comment_node"))
+ graph.delete_comment_node(self)
+
+
+func _on_AddButton_pressed():
+ var graph = get_parent()
+ assert(graph is GraphEdit)
+ assert(graph.has_method("add_selected_nodes_to_comment_node"))
+ graph.add_selected_nodes_to_comment_node(self)
+
+
+func _on_SubButton_pressed():
+ var graph = get_parent()
+ assert(graph is GraphEdit)
+ assert(graph.has_method("remove_selected_nodes_from_comment_node"))
+ graph.remove_selected_nodes_from_comment_node(self)
+
+
+func _on_CommentNode_resize_request(new_size):
+ var graph = get_parent()
+ assert(graph is GraphEdit)
+ if graph.is_using_snap():
+ rect_size = graph.snap_position(new_size)
+ else:
+ rect_size = new_size
+
+
+func _on_CommentNode_offset_changed():
+ var diff = offset - old_offset
+ for node in children:
+ assert(node is ImageGraphNode)
+ node.offset += diff
+ old_offset = offset
diff --git a/Scripts/CommentRect.gd b/Scripts/CommentRect.gd
new file mode 100644
index 0000000..4c1486a
--- /dev/null
+++ b/Scripts/CommentRect.gd
@@ -0,0 +1,69 @@
+extends ColorRect
+class_name CommentRect
+
+
+var children: = []
+var old_rect: Rect2
+
+
+func _ready():
+ old_rect = get_rect()
+
+
+func contains_image_node(node: ImageGraphNode):
+ return children.has(node)
+
+
+func add_image_node(node: ImageGraphNode, auto_update: bool):
+ if not children.has(node):
+ children.push_back(node)
+ if auto_update:
+ update_size()
+ print("children: ", children)
+
+
+func remove_image_node(node: ImageGraphNode, auto_update: bool):
+ if children.has(node):
+ children.erase(node)
+ if auto_update:
+ update_size()
+ print("children: ", children)
+
+
+func update_size():
+ if children.empty():
+ return
+ var rect: Rect2
+ var initialized: = false
+ for node in children:
+ if initialized:
+ rect = rect.merge(node.get_rect())
+ else:
+ rect = node.get_rect()
+ initialized = true
+ rect = rect.grow_individual (24.0, 64.0, 24.0, 24.0)
+ if rect_position != rect.position:
+ rect_position = rect.position
+ if rect_size != rect.size:
+ rect_size = rect.size
+
+
+func _on_AddButton_pressed():
+ var graph = get_parent()
+ assert(graph is GraphEdit)
+ assert(graph.has_method("add_selected_nodes_to_comment_node"))
+ graph.add_selected_nodes_to_comment_node(self)
+
+
+func _on_SubButton_pressed():
+ var graph = get_parent()
+ assert(graph is GraphEdit)
+ assert(graph.has_method("remove_selected_nodes_from_comment_node"))
+ graph.remove_selected_nodes_from_comment_node(self)
+
+
+func _on_CloseButton_pressed():
+ var graph = get_parent()
+ assert(graph is GraphEdit)
+ assert(graph.has_method("delete_comment_node"))
+ graph.delete_comment_node(self)
diff --git a/Scripts/DisplayDialog.gd b/Scripts/DisplayDialog.gd
index 7122294..d299869 100644
--- a/Scripts/DisplayDialog.gd
+++ b/Scripts/DisplayDialog.gd
@@ -13,7 +13,7 @@ var node_chain_index: int = -1
var state: int = STOPPED
var is_looping = false
-onready var graph_node = preload("res://Scenes/GraphNode.tscn")
+onready var graph_node = preload("res://Scenes/ImageGraphNode.tscn")
onready var display_rect: = $VBoxContainer/Control/TextureRect
onready var subtitle: = $VBoxContainer/Control/Subtitle
onready var subedit: = $VBoxContainer/HBoxContainer/SubtitleEdit
diff --git a/Scripts/GraphEdit.gd b/Scripts/GraphEdit.gd
index a93773a..95a97a4 100644
--- a/Scripts/GraphEdit.gd
+++ b/Scripts/GraphEdit.gd
@@ -23,7 +23,9 @@ var dragged_nodes_initial_offsets_in_graph_space: Array = []
var old_global_mouse_position: Vector2
var nodes_were_dragged: bool = false
-onready var graph_node = preload("res://Scenes/GraphNode.tscn")
+onready var image_graph_node = preload("res://Scenes/ImageGraphNode.tscn")
+onready var comment_graph_node = preload("res://Scenes/CommentGraphNode.tscn")
+#onready var comment = preload("res://Scenes/CommentRect.tscn")
onready var display_dlg: = $DisplayDialog
onready var image_dlg: = $OpenImgFileDialog
onready var sound_dlg: = $OpenSndFileDialog
@@ -32,6 +34,7 @@ onready var save_dlg: = $SaveFileDialog
onready var grid_num_cols: = $CanvasLayer/HBoxContainer/GridColsSpinBox
onready var colorpicker: = $CanvasLayer/HBoxContainer/ColorPicker
onready var add_button: = $CanvasLayer/HBoxContainer/AddButton
+onready var comment_button: = $CanvasLayer/HBoxContainer/CommentButton
onready var play_button: = $CanvasLayer/HBoxContainer/PlayButton
@@ -110,6 +113,7 @@ func update_main_window_title():
func update_buttons():
+ comment_button.disabled = selected_nodes.size() == 0
play_button.disabled = selected_nodes.size() != 1
@@ -258,9 +262,9 @@ func set_selected_nodes_to_custom_size():
node.rect_size = custom_node_size
-#########
-## NEW ##
-#########
+############
+## CREATE ##
+############
func snap_position(pos: Vector2) -> Vector2:
var snap = get_snap()
@@ -288,10 +292,10 @@ func get_mouse_position_in_graph_space() -> Vector2:
# Ajoute un nouveau node au graph. Son centre est positionné à l'offset donné.
-func add_new_node(ofs: Vector2, select_exclusive: bool = true, autoload: bool = true) -> ImageGraphNode:
- var node = graph_node.instance()
+func add_new_image_node(ofs: Vector2, select_exclusive: bool = true, autoload: bool = true) -> ImageGraphNode:
+ var node = image_graph_node.instance()
+ add_child(node, true) # /!\ before set_offset.
node.set_offset(ofs - node.rect_size / 2)
- add_child(node, true)
node.set_bg_color(node_bg_color)
if select_exclusive:
select_node_ex(node)
@@ -305,18 +309,19 @@ func add_new_node(ofs: Vector2, select_exclusive: bool = true, autoload: bool =
# Ajoute un nouveau node au graph quand l'utilisateur appuie sur le bouton 'Add'.
func _on_AddButton_pressed():
- add_new_node(get_mouse_position_in_graph_space() + Vector2(200, 200))
+ add_new_image_node(get_mouse_position_in_graph_space() + Vector2(200, 200))
# Ajoute un nouveau node au graph quand l'utilisateur double-clique sur le graph.
func _on_Graph_gui_input(event):
if event is InputEventMouseButton and event.doubleclick:
- add_new_node(get_mouse_position_in_graph_space())
+ add_new_image_node(get_mouse_position_in_graph_space())
# Drag and drop de fichiers.
func _on_files_dropped(files, screen):
- yield(get_tree(),"idle_frame") # hack to get valid mouse position
+ yield(get_tree(),"idle_frame") # hack to get a valid mouse position
+ files.sort()
deselect_all_nodes()
var ofs: = get_mouse_position_in_graph_space()
var line_start: = ofs.x
@@ -326,7 +331,7 @@ func _on_files_dropped(files, screen):
for path in files:
var ext: String = path.get_extension()
if IMG_EXTENSIONS.has(ext):
- var new_node: ImageGraphNode = add_new_node(ofs, false, false)
+ var new_node: ImageGraphNode = add_new_image_node(ofs, false, false)
new_node.load_thumbnail_from_file(path)
col += 1
@@ -592,7 +597,7 @@ func _on_GraphEdit_connection_to_empty(from: String, from_slot: int, release_pos
assert(from_node)
# Crée un nouveau node et le connecte.
- var new_node = add_new_node(convert_viewport_ofs_to_graph_ofs(release_position))
+ var new_node = add_new_image_node(convert_viewport_ofs_to_graph_ofs(release_position))
assert(new_node)
connect_node(from, from_slot, new_node.name, from_slot)
@@ -611,7 +616,7 @@ func _on_GraphEdit_connection_from_empty(to: String, to_slot: int, release_posit
assert(to_node)
# Crée un nouveau node et le connecte.
- var new_node: ImageGraphNode = add_new_node(convert_viewport_ofs_to_graph_ofs(release_position))
+ var new_node: ImageGraphNode = add_new_image_node(convert_viewport_ofs_to_graph_ofs(release_position))
assert(new_node)
connect_node(new_node.name, to_slot, to, to_slot)
@@ -714,19 +719,64 @@ func _on_GraphEdit_duplicate_nodes_request():
## DELETE ##
############
-func delete_node(node: ImageGraphNode):
+func delete_image_node(node: ImageGraphNode):
assert(node)
remove_node_connections(node)
deselect_node(node)
node.queue_free()
+func delete_comment_node(node: CommentGraphNode):
+ assert(node)
+ node.queue_free()
+
+
func _on_GraphEdit_delete_nodes_request(node_names: Array):
for node_name in node_names:
var node = get_node(node_name)
assert(node)
- deselect_node(node)
- delete_node(node)
+ if node is ImageGraphNode:
+ deselect_node(node)
+ delete_image_node(node)
+ elif node is CommentGraphNode:
+ delete_comment_node(node)
+
+
+#############
+## COMMENT ##
+#############
+
+# Ajoute un nouveau node au graph. Son centre est positionné à l'offset donné.
+func add_new_comment_node() -> CommentGraphNode:
+ var comment_node = comment_graph_node.instance()
+ add_child(comment_node, true)
+ add_selected_nodes_to_comment_node(comment_node)
+ return comment_node
+
+
+func add_selected_nodes_to_comment_node(comment_node: CommentGraphNode):
+ for image_node in selected_nodes:
+ if image_node is ImageGraphNode:
+ comment_node.add_image_node(image_node, false)
+ comment_node.update_size()
+
+
+func remove_selected_nodes_from_comment_node(comment_node: CommentGraphNode):
+ for image_node in selected_nodes:
+ if image_node is ImageGraphNode:
+ comment_node.remove_image_node(image_node, false)
+ comment_node.update_size()
+
+
+func node_offset_changed(node: ImageGraphNode):
+ for comment_node in get_children():
+ if not comment_node is CommentGraphNode or not comment_node.contains_image_node(node):
+ continue
+ comment_node.update_size()
+
+
+func _on_CommentButton_pressed():
+ add_new_comment_node()
###############
@@ -758,7 +808,7 @@ func init_graph(graph_data: GraphData):
# Nodes
for node_data in graph_data.nodes:
- var new_node: ImageGraphNode = graph_node.instance()
+ var new_node: ImageGraphNode = image_graph_node.instance()
new_node.set_name(node_data.name)
new_node.rect_size = node_data.rect_size
add_child(new_node, true) # /!\ before assigning data
diff --git a/Scripts/GraphNode.gd b/Scripts/ImageGraphNode.gd
similarity index 93%
rename from Scripts/GraphNode.gd
rename to Scripts/ImageGraphNode.gd
index e4d63e9..5805303 100644
--- a/Scripts/GraphNode.gd
+++ b/Scripts/ImageGraphNode.gd
@@ -77,8 +77,8 @@ func _on_GraphNode_resize_request(new_size):
func _on_GraphNode_close_request():
var graph = get_parent()
assert(graph is GraphEdit)
- assert(graph.has_method("delete_node"))
- graph.delete_node(self)
+ assert(graph.has_method("delete_image_node"))
+ graph.delete_image_node(self)
func _on_TextureRect_gui_input(event):
@@ -155,8 +155,8 @@ func load_sound_from_file(path: String):
var ext: = path.get_extension()
match ext:
- "wav":
- sound = AudioStreamSample.new()
+# "wav":
+# sound = AudioStreamSample.new()
"mp3":
sound = AudioStreamMP3.new()
"ogg":
@@ -199,3 +199,10 @@ func reload_image_file():
func reload_sound_file():
get_parent().reload_node_sound(self)
+
+
+func _on_GraphNode_offset_changed():
+ var graph = get_parent()
+ assert(graph is GraphEdit)
+ assert(graph.has_method("node_offset_changed")) # signal
+ graph.node_offset_changed(self)
diff --git a/project.godot b/project.godot
index d5dfcf4..09d1e10 100644
--- a/project.godot
+++ b/project.godot
@@ -9,6 +9,16 @@
config_version=4
_global_script_classes=[ {
+"base": "GraphNode",
+"class": "CommentGraphNode",
+"language": "GDScript",
+"path": "res://Scripts/CommentGraphNode.gd"
+}, {
+"base": "ColorRect",
+"class": "CommentRect",
+"language": "GDScript",
+"path": "res://Scripts/CommentRect.gd"
+}, {
"base": "WindowDialog",
"class": "DisplayDialog",
"language": "GDScript",
@@ -32,9 +42,11 @@ _global_script_classes=[ {
"base": "GraphNode",
"class": "ImageGraphNode",
"language": "GDScript",
-"path": "res://Scripts/GraphNode.gd"
+"path": "res://Scripts/ImageGraphNode.gd"
} ]
_global_script_class_icons={
+"CommentGraphNode": "",
+"CommentRect": "",
"DisplayDialog": "",
"GraphData": "",
"GraphNodeData": "",