diff --git a/Assets/Plugins/Parser/LiveDocumentation.meta b/Assets/Plugins/Parser/LiveDocumentation.meta
new file mode 100644
index 0000000000..1c1c3b0b73
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7e5d0c7abfcaa0150553e59b8e72c8cef6c7bf092d913bb24e24a24c7bb8c08f
+size 83
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammar.g4 b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammar.g4
new file mode 100644
index 0000000000..8da9e77053
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammar.g4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a4522e5a52fab83329de4f562224971d191a3c4b5808b00d364b9890f92fa21
+size 1706
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammar.g4.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammar.g4.meta
new file mode 100644
index 0000000000..8e53e650a8
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammar.g4.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a426ff365f4ac757cf84007113ccdfa3dea15fc6b37b63296898957921fc4fcb
+size 88
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarBaseListener.cs b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarBaseListener.cs
new file mode 100644
index 0000000000..a0bee956d5
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarBaseListener.cs
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e29fabb1f9a1a77a79b0f31c8b349c307afd1b91da299fe8593eafd10efc0dd
+size 10241
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarBaseListener.cs.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarBaseListener.cs.meta
new file mode 100644
index 0000000000..c87bf11a66
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarBaseListener.cs.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:74c75def301d64880821c3e03fccaff21a6979a912389c0af7f54c89ed5e211c
+size 254
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarLexer.cs b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarLexer.cs
new file mode 100644
index 0000000000..dffcd0cef6
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarLexer.cs
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a6d607bf4a189aa69aa7b8a7a9f30e521f9a09b84717253d31051b4bf22f6219
+size 26556
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarLexer.cs.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarLexer.cs.meta
new file mode 100644
index 0000000000..3c5a681f45
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarLexer.cs.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:82466a2f519d86f9e177f8a013298741798300ae54a083647445619297d84103
+size 254
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarListener.cs b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarListener.cs
new file mode 100644
index 0000000000..b6fd125c03
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarListener.cs
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e785ef79fa44f810b369c76690b737ffb20c2ae22ed97d53136a8eceef0327fb
+size 7476
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarListener.cs.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarListener.cs.meta
new file mode 100644
index 0000000000..4aa528040e
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarListener.cs.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb2cba3ae6bef996af00a65f561c3b4d5ec4562c0a18825e9885dea0a4d1df75
+size 254
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarParser.cs b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarParser.cs
new file mode 100644
index 0000000000..2b9b0e61ee
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarParser.cs
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:765757ccd14151c62232a8e0c9b4ca57addd86c31febd3550313eb77756d2aa0
+size 39421
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarParser.cs.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarParser.cs.meta
new file mode 100644
index 0000000000..25691490f2
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpCommentsGrammarParser.cs.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:693927e3d3a94f4b7a7668c0e8166502b90c3e9fdc6381820028125a265b6882
+size 254
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpFullLexer.cs b/Assets/Plugins/Parser/LiveDocumentation/CSharpFullLexer.cs
new file mode 100644
index 0000000000..5fa27ad8ef
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpFullLexer.cs
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c3c8cf6e0dc5987f9d00e34d2035769d216198cb5b97dce8881a88b46c5d04fb
+size 164929
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpFullLexer.cs.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpFullLexer.cs.meta
new file mode 100644
index 0000000000..1d93d8b3a7
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpFullLexer.cs.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4efa8a1b0d5d9839dc1451417670a429bc73495c987992eef8ca5d0ec1e26c63
+size 254
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpFullLexer.g4 b/Assets/Plugins/Parser/LiveDocumentation/CSharpFullLexer.g4
new file mode 100644
index 0000000000..afb9c0ac60
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpFullLexer.g4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:35efdbae0a8fb1eefe61858949c665bc6bd216fabe632f57e2296ee2b2100fd2
+size 29994
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpFullLexer.g4.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpFullLexer.g4.meta
new file mode 100644
index 0000000000..1e0fc8a9a8
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpFullLexer.g4.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:571021dfe5260716b4e0cd33e1b26e01b5b7ee015cddafc71119bb79c1f05f00
+size 85
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpLexerBase.cs b/Assets/Plugins/Parser/LiveDocumentation/CSharpLexerBase.cs
new file mode 100644
index 0000000000..bc927a92ea
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpLexerBase.cs
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5cda3fad821b1a50c16f79c21582829324ee5ab9bd2dcb4a3d7300e43a040ebc
+size 2800
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpLexerBase.cs.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpLexerBase.cs.meta
new file mode 100644
index 0000000000..08312c95b5
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpLexerBase.cs.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:123b564293701289e9648684680ef3462dd639bb534731b9ff3c1757df4ad7a5
+size 85
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpParser.cs b/Assets/Plugins/Parser/LiveDocumentation/CSharpParser.cs
new file mode 100644
index 0000000000..b4ff23abe8
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpParser.cs
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c96761922b1946eada7a79328496ecbb2f471bb33ad9d6ac75d9e4f68dc99bd0
+size 932899
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpParser.cs.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpParser.cs.meta
new file mode 100644
index 0000000000..2cbb045b84
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpParser.cs.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f64b2558a993b97e4e79656a715400714ad254f3f763d25310da195abc81f2e1
+size 254
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpParser.g4 b/Assets/Plugins/Parser/LiveDocumentation/CSharpParser.g4
new file mode 100644
index 0000000000..41904acbe4
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpParser.g4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a00609724ee102beb38bdbce3f5aefd75613f5c93328d22b0d98d6207b954e1
+size 27451
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpParser.g4.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpParser.g4.meta
new file mode 100644
index 0000000000..dc6e5ea43f
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpParser.g4.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:61124c7879482f94746f871ba7fb55c52a4619d6b035ef2195314687a9abea86
+size 85
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpParserBase.cs b/Assets/Plugins/Parser/LiveDocumentation/CSharpParserBase.cs
new file mode 100644
index 0000000000..4eba1fa64a
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpParserBase.cs
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:205fc1c0e35fe8b2339525fe4345b3fce17bdd5d9b7771f88f00d7d4a0c1ebfa
+size 1160
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpParserBase.cs.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpParserBase.cs.meta
new file mode 100644
index 0000000000..08f0762385
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpParserBase.cs.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a9724c3b8f6fb3ed08453cf9b8e87da3ceb3254298b75b31714de1e9af916fb
+size 85
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpParserBaseListener.cs b/Assets/Plugins/Parser/LiveDocumentation/CSharpParserBaseListener.cs
new file mode 100644
index 0000000000..0b04c6439b
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpParserBaseListener.cs
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4e2c4e6f8e1014275fed0777d8375f45f4bffd075cb6ad017a5aa538a6dad3e3
+size 179955
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpParserBaseListener.cs.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpParserBaseListener.cs.meta
new file mode 100644
index 0000000000..d883a4ae34
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpParserBaseListener.cs.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4332cb17a40d64e043ef01190821d9f7cc690e068768406a53059c3dd340c02f
+size 254
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpParserListener.cs b/Assets/Plugins/Parser/LiveDocumentation/CSharpParserListener.cs
new file mode 100644
index 0000000000..1c7541daa1
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpParserListener.cs
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d068eb100aebb1d245e6635e020826ef0c5b90a558a3e91e876cd3c667c996cb
+size 139129
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpParserListener.cs.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpParserListener.cs.meta
new file mode 100644
index 0000000000..914a561e6c
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpParserListener.cs.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a4b8a3bd856d499bb6b8ce612ca7c9b2b40141e4c18bb87af6228fbd4553a32b
+size 254
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammar.g4 b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammar.g4
new file mode 100644
index 0000000000..c7f6b3500f
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammar.g4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0a4f934b603f5fe31a2e7247d080a7843babc8bac2d357f3d73cfd7618d9063e
+size 465
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammar.g4.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammar.g4.meta
new file mode 100644
index 0000000000..5cb84e1d00
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammar.g4.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4234d51f27ec129501a9fa2116440363e5aac8fe9b4ef3f5a805018c95c775c6
+size 162
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarBaseListener.cs b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarBaseListener.cs
new file mode 100644
index 0000000000..33cf49a5df
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarBaseListener.cs
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d72839aef44bab0ab4600deb3a3ba5667e348c1f0e661316b392cbc47805accb
+size 3455
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarBaseListener.cs.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarBaseListener.cs.meta
new file mode 100644
index 0000000000..2f59920768
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarBaseListener.cs.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:48bd358a94d96547454920d1287eec94f80a1f91ed0e8f81028527fe12f67750
+size 254
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarLexer.cs b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarLexer.cs
new file mode 100644
index 0000000000..043e011f0a
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarLexer.cs
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4755eddf9427392cdee09de9f6b717d18514b268c0f5ffe1867e175aad052884
+size 5534
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarLexer.cs.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarLexer.cs.meta
new file mode 100644
index 0000000000..f02c0a5f59
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarLexer.cs.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:73d43f12c09a5d047a3e016ee041a10f2dfadabb8136556a09c2c0bafd7e2c5b
+size 254
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarListener.cs b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarListener.cs
new file mode 100644
index 0000000000..2509ff06aa
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarListener.cs
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:daacc11db547abf99edb0f65b7f5001e21f0b132f22ed3b7804fb3a29b83439f
+size 2253
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarListener.cs.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarListener.cs.meta
new file mode 100644
index 0000000000..bafec8c526
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarListener.cs.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f8687ee8d86795b984315b1f7050853e43fdac44941c1ab30f0b4e5c74c8efe5
+size 254
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarParser.cs b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarParser.cs
new file mode 100644
index 0000000000..faeae099cd
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarParser.cs
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83015f4988b24cf28313f6628462629782b8db12e2eb38f7707b82571fd2ab50
+size 9408
diff --git a/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarParser.cs.meta b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarParser.cs.meta
new file mode 100644
index 0000000000..eebbafabdc
--- /dev/null
+++ b/Assets/Plugins/Parser/LiveDocumentation/CSharpUsingGrammarParser.cs.meta
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5c2982f68dd63fc1e6f4822104c4f21c8c1c725e544eec619d2e279cd030ef57
+size 254
diff --git a/Assets/Resources/Prefabs/UI/LiveDocumentation.meta b/Assets/Resources/Prefabs/UI/LiveDocumentation.meta
new file mode 100644
index 0000000000..9e3f178904
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/LiveDocumentation.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: be6f183610ef14b4584ffdab9f66ffd1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Prefabs/UI/LiveDocumentation/ClassMember.prefab b/Assets/Resources/Prefabs/UI/LiveDocumentation/ClassMember.prefab
new file mode 100644
index 0000000000..f1336c7381
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/LiveDocumentation/ClassMember.prefab
@@ -0,0 +1,962 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &86632322181987704
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6882670071909811442}
+ - component: {fileID: 8787729324602599865}
+ - component: {fileID: 1836792722455121142}
+ - component: {fileID: 617047657097405529}
+ m_Layer: 5
+ m_Name: Viewport
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &6882670071909811442
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 86632322181987704}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 3169584512749972632}
+ m_Father: {fileID: 5075246981865696797}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 1}
+--- !u!222 &8787729324602599865
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 86632322181987704}
+ m_CullTransparentMesh: 1
+--- !u!114 &1836792722455121142
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 86632322181987704}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 0.8}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &617047657097405529
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 86632322181987704}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_ShowMaskGraphic: 0
+--- !u!1 &2104259042638010342
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2524773173849997326}
+ m_Layer: 5
+ m_Name: Sliding Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2524773173849997326
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2104259042638010342}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 4067257591838390667}
+ m_Father: {fileID: 8393612348144682382}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -20, y: -20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &2115978373317620147
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5075246981865696797}
+ - component: {fileID: 858220689875822348}
+ - component: {fileID: 3395192819558296729}
+ - component: {fileID: 4758360727299604628}
+ m_Layer: 5
+ m_Name: Scroll View
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &5075246981865696797
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2115978373317620147}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 6882670071909811442}
+ - {fileID: 8393612348144682382}
+ - {fileID: 7692601175464579961}
+ m_Father: {fileID: 2755186655266095545}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &858220689875822348
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2115978373317620147}
+ m_CullTransparentMesh: 1
+--- !u!114 &3395192819558296729
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2115978373317620147}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 0.392}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &4758360727299604628
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2115978373317620147}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Content: {fileID: 3169584512749972632}
+ m_Horizontal: 1
+ m_Vertical: 0
+ m_MovementType: 1
+ m_Elasticity: 0.1
+ m_Inertia: 1
+ m_DecelerationRate: 0.135
+ m_ScrollSensitivity: 1
+ m_Viewport: {fileID: 6882670071909811442}
+ m_HorizontalScrollbar: {fileID: 3570130923067751295}
+ m_VerticalScrollbar: {fileID: 1814135935251791633}
+ m_HorizontalScrollbarVisibility: 2
+ m_VerticalScrollbarVisibility: 2
+ m_HorizontalScrollbarSpacing: -3
+ m_VerticalScrollbarSpacing: -3
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &2796762346717692690
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4067257591838390667}
+ - component: {fileID: 2719045127600601557}
+ - component: {fileID: 1751320983517939268}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &4067257591838390667
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2796762346717692690}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 2524773173849997326}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2719045127600601557
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2796762346717692690}
+ m_CullTransparentMesh: 1
+--- !u!114 &1751320983517939268
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2796762346717692690}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!1 &3237783885688509011
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7692601175464579961}
+ - component: {fileID: 6178548649289055660}
+ - component: {fileID: 4219947212716168657}
+ - component: {fileID: 1814135935251791633}
+ m_Layer: 5
+ m_Name: Scrollbar Vertical
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &7692601175464579961
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3237783885688509011}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 5570131258221704913}
+ m_Father: {fileID: 5075246981865696797}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0}
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 0}
+ m_Pivot: {x: 1, y: 1}
+--- !u!222 &6178548649289055660
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3237783885688509011}
+ m_CullTransparentMesh: 1
+--- !u!114 &4219947212716168657
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3237783885688509011}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &1814135935251791633
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3237783885688509011}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 6434041245615031891}
+ m_HandleRect: {fileID: 900051685732426589}
+ m_Direction: 2
+ m_Value: 0
+ m_Size: 1
+ m_NumberOfSteps: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &3461396783032200325
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8653216752749893682}
+ - component: {fileID: 4809312389514552501}
+ - component: {fileID: 7317636454392786782}
+ - component: {fileID: 8711777177659696123}
+ m_Layer: 5
+ m_Name: MemberText
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8653216752749893682
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3461396783032200325}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 3169584512749972632}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 21.903015, y: 0}
+ m_SizeDelta: {x: 1489.0969, y: 0}
+ m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &4809312389514552501
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3461396783032200325}
+ m_CullTransparentMesh: 1
+--- !u!114 &7317636454392786782
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3461396783032200325}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: New Text
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 84dd14695854bbc43a5faa24fcf93d0d, type: 2}
+ m_sharedMaterial: {fileID: 21261991626553910, guid: 84dd14695854bbc43a5faa24fcf93d0d,
+ type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 4.514282}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!114 &8711777177659696123
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3461396783032200325}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5c993aae17194cd0871055795512aaea, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &4810397068705777009
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5570131258221704913}
+ m_Layer: 5
+ m_Name: Sliding Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &5570131258221704913
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4810397068705777009}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 900051685732426589}
+ m_Father: {fileID: 7692601175464579961}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -20, y: -20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &5820484473007689950
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8393612348144682382}
+ - component: {fileID: 9026090754859464942}
+ - component: {fileID: 3851420527197478597}
+ - component: {fileID: 3570130923067751295}
+ m_Layer: 5
+ m_Name: Scrollbar Horizontal
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8393612348144682382
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5820484473007689950}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 2524773173849997326}
+ m_Father: {fileID: 5075246981865696797}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 20}
+ m_Pivot: {x: 0, y: 0}
+--- !u!222 &9026090754859464942
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5820484473007689950}
+ m_CullTransparentMesh: 1
+--- !u!114 &3851420527197478597
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5820484473007689950}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &3570130923067751295
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5820484473007689950}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 1751320983517939268}
+ m_HandleRect: {fileID: 4067257591838390667}
+ m_Direction: 0
+ m_Value: 0
+ m_Size: 0.9655857
+ m_NumberOfSteps: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &6567126187367442977
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 900051685732426589}
+ - component: {fileID: 901190517396045075}
+ - component: {fileID: 6434041245615031891}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &900051685732426589
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6567126187367442977}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 5570131258221704913}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &901190517396045075
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6567126187367442977}
+ m_CullTransparentMesh: 1
+--- !u!114 &6434041245615031891
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6567126187367442977}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!1 &6571262053364855890
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2755186655266095545}
+ - component: {fileID: 8895975396736360517}
+ - component: {fileID: 3704558031098319579}
+ - component: {fileID: 9221485614109222997}
+ m_Layer: 5
+ m_Name: ClassMember
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2755186655266095545
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6571262053364855890}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 5075246981865696797}
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &8895975396736360517
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6571262053364855890}
+ m_CullTransparentMesh: 0
+--- !u!114 &3704558031098319579
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6571262053364855890}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 0.39}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 21300000, guid: 5e16c7aea118d68498053518146c9cf9, type: 3}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 10
+--- !u!114 &9221485614109222997
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6571262053364855890}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 10
+--- !u!1 &6883457772066242853
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3169584512749972632}
+ m_Layer: 5
+ m_Name: Content
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &3169584512749972632
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6883457772066242853}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 8653216752749893682}
+ m_Father: {fileID: 6882670071909811442}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 1511, y: 0}
+ m_Pivot: {x: 0, y: 1}
diff --git a/Assets/Resources/Prefabs/UI/LiveDocumentation/ClassMember.prefab.meta b/Assets/Resources/Prefabs/UI/LiveDocumentation/ClassMember.prefab.meta
new file mode 100644
index 0000000000..2fe23df80b
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/LiveDocumentation/ClassMember.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 60159faa32a97ef46996de95c69bdec9
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Prefabs/UI/LiveDocumentation/LiveDocumentation.prefab b/Assets/Resources/Prefabs/UI/LiveDocumentation/LiveDocumentation.prefab
new file mode 100644
index 0000000000..1561734be6
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/LiveDocumentation/LiveDocumentation.prefab
@@ -0,0 +1,2499 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &534154826880018985
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1807387543553013791}
+ - component: {fileID: 5928381633387204844}
+ - component: {fileID: 3913794513246756874}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1807387543553013791
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 534154826880018985}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 2919127444606322663}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5928381633387204844
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 534154826880018985}
+ m_CullTransparentMesh: 1
+--- !u!114 &3913794513246756874
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 534154826880018985}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!1 &821998621292183431
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4677423399472559842}
+ - component: {fileID: 8400305398164156242}
+ - component: {fileID: 3631489813792545398}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &4677423399472559842
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 821998621292183431}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 629218909340991723}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &8400305398164156242
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 821998621292183431}
+ m_CullTransparentMesh: 1
+--- !u!114 &3631489813792545398
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 821998621292183431}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!1 &1099573680043270635
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 823960989388057638}
+ - component: {fileID: 2151802950579159368}
+ - component: {fileID: 1051560714612754702}
+ - component: {fileID: 9110864637404473178}
+ m_Layer: 5
+ m_Name: Scrollbar
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &823960989388057638
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1099573680043270635}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 8138921336793660198}
+ - {fileID: 7230800398951427405}
+ m_Father: {fileID: 175230973896078434}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 10}
+ m_Pivot: {x: 1, y: 0.5}
+--- !u!222 &2151802950579159368
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1099573680043270635}
+ m_CullTransparentMesh: 0
+--- !u!114 &1051560714612754702
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1099573680043270635}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 0
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 0.78431374}
+ m_HighlightedColor: {r: 1, g: 1, b: 1, a: 0.9607843}
+ m_PressedColor: {r: 1, g: 1, b: 1, a: 1}
+ m_SelectedColor: {r: 1, g: 1, b: 1, a: 0.9607843}
+ m_DisabledColor: {r: 1, g: 1, b: 1, a: 0.39215687}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 3497630513334642584}
+ m_HandleRect: {fileID: 5049096660240243171}
+ m_Direction: 2
+ m_Value: 0
+ m_Size: 1
+ m_NumberOfSteps: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!114 &9110864637404473178
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1099573680043270635}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e098a0a519700eb4094ec2c8b9d07b30, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ UIManagerAsset: {fileID: 11400000, guid: 2a619a9609984be49b53b928dd94e61b, type: 2}
+ webglMode: 0
+ background: {fileID: 1328887880706115295}
+ bar: {fileID: 3497630513334642584}
+--- !u!1 &1316957873697182075
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5049096660240243171}
+ - component: {fileID: 7090926959037208896}
+ - component: {fileID: 3497630513334642584}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &5049096660240243171
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1316957873697182075}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 7230800398951427405}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7090926959037208896
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1316957873697182075}
+ m_CullTransparentMesh: 0
+--- !u!114 &3497630513334642584
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1316957873697182075}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 21300000, guid: 5618123237d1d3f49a5a6025287065f7, type: 3}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 15
+--- !u!1 &1356796932292151386
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2559165299539506478}
+ - component: {fileID: 6347532404007955351}
+ - component: {fileID: 92735794060579892}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2559165299539506478
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1356796932292151386}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 3684967508229514453}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &6347532404007955351
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1356796932292151386}
+ m_CullTransparentMesh: 1
+--- !u!114 &92735794060579892
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1356796932292151386}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!1 &1842584084914077987
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7715663340082568642}
+ - component: {fileID: 4060388882485733021}
+ - component: {fileID: 698725630238035387}
+ - component: {fileID: 5357001692977251953}
+ m_Layer: 5
+ m_Name: Scrollbar Horizontal
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &7715663340082568642
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1842584084914077987}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 629218909340991723}
+ m_Father: {fileID: 6641322111629771288}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 20}
+ m_Pivot: {x: 0, y: 0}
+--- !u!222 &4060388882485733021
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1842584084914077987}
+ m_CullTransparentMesh: 1
+--- !u!114 &698725630238035387
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1842584084914077987}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &5357001692977251953
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1842584084914077987}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 3631489813792545398}
+ m_HandleRect: {fileID: 4677423399472559842}
+ m_Direction: 0
+ m_Value: 0
+ m_Size: 1
+ m_NumberOfSteps: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &2195959482746909198
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 745795494448467816}
+ - component: {fileID: 6050339087763837162}
+ - component: {fileID: 7351128090544635115}
+ m_Layer: 5
+ m_Name: Title
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &745795494448467816
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2195959482746909198}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 3878231312603472240}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 34.05}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &6050339087763837162
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2195959482746909198}
+ m_CullTransparentMesh: 0
+--- !u!114 &7351128090544635115
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2195959482746909198}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: ClassMembers
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 84dd14695854bbc43a5faa24fcf93d0d, type: 2}
+ m_sharedMaterial: {fileID: 21261991626553910, guid: 84dd14695854bbc43a5faa24fcf93d0d,
+ type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 25
+ m_fontSizeBase: 25
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 1
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!1 &2323934504495658744
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 629218909340991723}
+ m_Layer: 5
+ m_Name: Sliding Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &629218909340991723
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2323934504495658744}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 4677423399472559842}
+ m_Father: {fileID: 7715663340082568642}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -20, y: -20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &2476521670783506526
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5074225040458278203}
+ - component: {fileID: 7357800280160212394}
+ - component: {fileID: 570073774928241512}
+ - component: {fileID: 8468090753611623923}
+ m_Layer: 5
+ m_Name: Scrollbar Horizontal
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &5074225040458278203
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2476521670783506526}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 2919127444606322663}
+ m_Father: {fileID: 6689673507370949304}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 20}
+ m_Pivot: {x: 0, y: 0}
+--- !u!222 &7357800280160212394
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2476521670783506526}
+ m_CullTransparentMesh: 1
+--- !u!114 &570073774928241512
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2476521670783506526}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &8468090753611623923
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2476521670783506526}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 3913794513246756874}
+ m_HandleRect: {fileID: 1807387543553013791}
+ m_Direction: 0
+ m_Value: 1
+ m_Size: 1
+ m_NumberOfSteps: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &2932168578608384850
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1224130588337100704}
+ m_Layer: 5
+ m_Name: Sliding Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1224130588337100704
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2932168578608384850}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 8174036749243834948}
+ m_Father: {fileID: 1811962010492199047}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -20, y: -20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &3030372840329077532
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3684967508229514453}
+ m_Layer: 5
+ m_Name: Sliding Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &3684967508229514453
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3030372840329077532}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 2559165299539506478}
+ m_Father: {fileID: 8776949068023318409}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -20, y: -20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &3458687850375210132
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8776949068023318409}
+ - component: {fileID: 127923929909135562}
+ - component: {fileID: 7403674705060148283}
+ - component: {fileID: 5297031438195609637}
+ m_Layer: 5
+ m_Name: Scrollbar Vertical
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8776949068023318409
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3458687850375210132}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 3684967508229514453}
+ m_Father: {fileID: 6641322111629771288}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0}
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 0}
+ m_Pivot: {x: 1, y: 1}
+--- !u!222 &127923929909135562
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3458687850375210132}
+ m_CullTransparentMesh: 1
+--- !u!114 &7403674705060148283
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3458687850375210132}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &5297031438195609637
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3458687850375210132}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 92735794060579892}
+ m_HandleRect: {fileID: 2559165299539506478}
+ m_Direction: 2
+ m_Value: 0
+ m_Size: 1
+ m_NumberOfSteps: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &3910297290382840829
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7230800398951427405}
+ m_Layer: 5
+ m_Name: Sliding Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &7230800398951427405
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3910297290382840829}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 5049096660240243171}
+ m_Father: {fileID: 823960989388057638}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -10, y: -10}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &4033315874947175816
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6689673507370949304}
+ - component: {fileID: 8076051966686505510}
+ - component: {fileID: 8807920033020177279}
+ - component: {fileID: 7312144227553628797}
+ m_Layer: 5
+ m_Name: ClassDocumentation
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &6689673507370949304
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4033315874947175816}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 8134387852864798972}
+ - {fileID: 5074225040458278203}
+ - {fileID: 1811962010492199047}
+ m_Father: {fileID: 8300615003340672101}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: -6.4265747, y: -112.76257}
+ m_SizeDelta: {x: -25.1537, y: -84.217}
+ m_Pivot: {x: 0.5, y: 1}
+--- !u!222 &8076051966686505510
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4033315874947175816}
+ m_CullTransparentMesh: 1
+--- !u!114 &8807920033020177279
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4033315874947175816}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 0.392}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &7312144227553628797
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4033315874947175816}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Content: {fileID: 2551465080560614006}
+ m_Horizontal: 1
+ m_Vertical: 1
+ m_MovementType: 1
+ m_Elasticity: 0.1
+ m_Inertia: 1
+ m_DecelerationRate: 0.135
+ m_ScrollSensitivity: 1
+ m_Viewport: {fileID: 8134387852864798972}
+ m_HorizontalScrollbar: {fileID: 8468090753611623923}
+ m_VerticalScrollbar: {fileID: 6216774575779632251}
+ m_HorizontalScrollbarVisibility: 2
+ m_VerticalScrollbarVisibility: 2
+ m_HorizontalScrollbarSpacing: -3
+ m_VerticalScrollbarSpacing: -3
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &4336175636326163798
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2551465080560614006}
+ - component: {fileID: 8887016851182420157}
+ - component: {fileID: 6205092779285498018}
+ - component: {fileID: 6299550715274709094}
+ m_Layer: 5
+ m_Name: Content
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2551465080560614006
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4336175636326163798}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 8134387852864798972}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: -0.00024414062, y: 0.000030517578}
+ m_SizeDelta: {x: -9.2319, y: 0}
+ m_Pivot: {x: 2, y: 0.95}
+--- !u!222 &8887016851182420157
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4336175636326163798}
+ m_CullTransparentMesh: 1
+--- !u!114 &6205092779285498018
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4336175636326163798}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: TEXT
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 84dd14695854bbc43a5faa24fcf93d0d, type: 2}
+ m_sharedMaterial: {fileID: 21261991626553910, guid: 84dd14695854bbc43a5faa24fcf93d0d,
+ type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!114 &6299550715274709094
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4336175636326163798}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_HorizontalFit: 0
+ m_VerticalFit: 2
+--- !u!1 &4727827147424653436
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 175230973896078434}
+ - component: {fileID: 6191533306870236796}
+ m_Layer: 5
+ m_Name: ClassMembers
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &175230973896078434
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4727827147424653436}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 8665622272859087641}
+ - {fileID: 823960989388057638}
+ m_Father: {fileID: 8300615003340672101}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.06}
+ m_AnchorMax: {x: 1, y: 0.51}
+ m_AnchoredPosition: {x: -0.27667236, y: -57.590515}
+ m_SizeDelta: {x: -25.153, y: -48.9905}
+ m_Pivot: {x: 0.5, y: 1}
+--- !u!222 &6191533306870236796
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4727827147424653436}
+ m_CullTransparentMesh: 0
+--- !u!1 &4769245304097471605
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6641322111629771288}
+ - component: {fileID: 5380256681826337158}
+ - component: {fileID: 5275762770542657141}
+ - component: {fileID: 4561941604358656422}
+ m_Layer: 5
+ m_Name: ClassName
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &6641322111629771288
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4769245304097471605}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 9031878409771569442}
+ - {fileID: 7715663340082568642}
+ - {fileID: 8776949068023318409}
+ m_Father: {fileID: 8300615003340672101}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: -9.27478, y: -52.167236}
+ m_SizeDelta: {x: -32.8503, y: 73.3772}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5380256681826337158
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4769245304097471605}
+ m_CullTransparentMesh: 1
+--- !u!114 &5275762770542657141
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4769245304097471605}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 0}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &4561941604358656422
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4769245304097471605}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Content: {fileID: 8817336814004968111}
+ m_Horizontal: 1
+ m_Vertical: 0
+ m_MovementType: 1
+ m_Elasticity: 0.1
+ m_Inertia: 1
+ m_DecelerationRate: 0.135
+ m_ScrollSensitivity: 1
+ m_Viewport: {fileID: 9031878409771569442}
+ m_HorizontalScrollbar: {fileID: 5357001692977251953}
+ m_VerticalScrollbar: {fileID: 5297031438195609637}
+ m_HorizontalScrollbarVisibility: 2
+ m_VerticalScrollbarVisibility: 2
+ m_HorizontalScrollbarSpacing: -3
+ m_VerticalScrollbarSpacing: -3
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &6446449544249864582
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1811962010492199047}
+ - component: {fileID: 5179787510298408439}
+ - component: {fileID: 3553049753381752475}
+ - component: {fileID: 6216774575779632251}
+ m_Layer: 5
+ m_Name: Scrollbar Vertical
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1811962010492199047
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6446449544249864582}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1224130588337100704}
+ m_Father: {fileID: 6689673507370949304}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0}
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 0}
+ m_Pivot: {x: 1, y: 1}
+--- !u!222 &5179787510298408439
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6446449544249864582}
+ m_CullTransparentMesh: 1
+--- !u!114 &3553049753381752475
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6446449544249864582}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &6216774575779632251
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6446449544249864582}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 2126766647124403145}
+ m_HandleRect: {fileID: 8174036749243834948}
+ m_Direction: 2
+ m_Value: 0
+ m_Size: 1
+ m_NumberOfSteps: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &6897724782683062589
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5631328183687898718}
+ - component: {fileID: 3483233823148127211}
+ - component: {fileID: 8609821264235158645}
+ m_Layer: 5
+ m_Name: ClassName
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &5631328183687898718
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6897724782683062589}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 8817336814004968111}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 734.5, y: -38}
+ m_SizeDelta: {x: 1469, y: 76}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &3483233823148127211
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6897724782683062589}
+ m_CullTransparentMesh: 1
+--- !u!114 &8609821264235158645
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6897724782683062589}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: ClassName
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: fa328c1ae3ffb6b4583cf371153b0be6, type: 2}
+ m_sharedMaterial: {fileID: 21918420405216288, guid: fa328c1ae3ffb6b4583cf371153b0be6,
+ type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 256
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!1 &7175992250211178391
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2919127444606322663}
+ m_Layer: 5
+ m_Name: Sliding Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2919127444606322663
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7175992250211178391}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1807387543553013791}
+ m_Father: {fileID: 5074225040458278203}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -20, y: -20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &7226404999568764975
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8817336814004968111}
+ m_Layer: 5
+ m_Name: Content
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8817336814004968111
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7226404999568764975}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 5631328183687898718}
+ m_Father: {fileID: 9031878409771569442}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: -0.000018838793, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 1}
+--- !u!1 &7329941773727617252
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3878231312603472240}
+ - component: {fileID: 7812266314206052427}
+ - component: {fileID: 8178590391469785728}
+ - component: {fileID: 4602521193580117451}
+ m_Layer: 5
+ m_Name: List
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &3878231312603472240
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7329941773727617252}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 745795494448467816}
+ m_Father: {fileID: 8665622272859087641}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 1}
+--- !u!222 &7812266314206052427
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7329941773727617252}
+ m_CullTransparentMesh: 0
+--- !u!114 &8178590391469785728
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7329941773727617252}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 20
+ m_Right: 20
+ m_Top: 15
+ m_Bottom: 25
+ m_ChildAlignment: 0
+ m_Spacing: 15
+ m_ChildForceExpandWidth: 1
+ m_ChildForceExpandHeight: 0
+ m_ChildControlWidth: 1
+ m_ChildControlHeight: 0
+ m_ChildScaleWidth: 0
+ m_ChildScaleHeight: 0
+ m_ReverseArrangement: 0
+--- !u!114 &4602521193580117451
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7329941773727617252}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_HorizontalFit: 0
+ m_VerticalFit: 2
+--- !u!1 &7440792707369497359
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8134387852864798972}
+ - component: {fileID: 8967307075536869836}
+ - component: {fileID: 6090862115551443230}
+ - component: {fileID: 3133897879004941726}
+ m_Layer: 5
+ m_Name: Viewport
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8134387852864798972
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7440792707369497359}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 2551465080560614006}
+ m_Father: {fileID: 6689673507370949304}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 1}
+--- !u!222 &8967307075536869836
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7440792707369497359}
+ m_CullTransparentMesh: 1
+--- !u!114 &6090862115551443230
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7440792707369497359}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &3133897879004941726
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7440792707369497359}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_ShowMaskGraphic: 0
+--- !u!1 &7866432398170894650
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8174036749243834948}
+ - component: {fileID: 2828596163661939850}
+ - component: {fileID: 2126766647124403145}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8174036749243834948
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7866432398170894650}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1224130588337100704}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2828596163661939850
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7866432398170894650}
+ m_CullTransparentMesh: 1
+--- !u!114 &2126766647124403145
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7866432398170894650}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!1 &8300615003340672100
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8300615003340672101}
+ - component: {fileID: 8823517661499080593}
+ - component: {fileID: 8823517661499080623}
+ - component: {fileID: 8823517661499080592}
+ - component: {fileID: 9045457248675710052}
+ m_Layer: 5
+ m_Name: LiveDocumentation
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8300615003340672101
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8300615003340672100}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 6689673507370949304}
+ - {fileID: 175230973896078434}
+ - {fileID: 6641322111629771288}
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &8823517661499080593
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8300615003340672100}
+ m_CullTransparentMesh: 0
+--- !u!114 &8823517661499080623
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8300615003340672100}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &8823517661499080592
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8300615003340672100}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_ShowMaskGraphic: 0
+--- !u!114 &9045457248675710052
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8300615003340672100}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Delegates:
+ - eventID: 7
+ callback:
+ m_PersistentCalls:
+ m_Calls: []
+ - eventID: 14
+ callback:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &8405999271973211119
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8138921336793660198}
+ - component: {fileID: 5380941006351246172}
+ - component: {fileID: 1328887880706115295}
+ m_Layer: 5
+ m_Name: Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8138921336793660198
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8405999271973211119}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 823960989388057638}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -10, y: -10}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5380941006351246172
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8405999271973211119}
+ m_CullTransparentMesh: 0
+--- !u!114 &1328887880706115295
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8405999271973211119}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 0.09803922}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 21300000, guid: 5618123237d1d3f49a5a6025287065f7, type: 3}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 15
+--- !u!1 &9062824730321174381
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8665622272859087641}
+ - component: {fileID: 2492345893963383818}
+ - component: {fileID: 6409464231484649390}
+ - component: {fileID: 7497730925723346066}
+ - component: {fileID: 3341839818398255206}
+ m_Layer: 5
+ m_Name: Scroll Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8665622272859087641
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9062824730321174381}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 3878231312603472240}
+ m_Father: {fileID: 175230973896078434}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: -10, y: 0}
+ m_SizeDelta: {x: -20, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2492345893963383818
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9062824730321174381}
+ m_CullTransparentMesh: 0
+--- !u!114 &6409464231484649390
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9062824730321174381}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.09803922, g: 0.13725491, b: 0.1764706, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 21300000, guid: 5e16c7aea118d68498053518146c9cf9, type: 3}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 10
+--- !u!114 &7497730925723346066
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9062824730321174381}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Content: {fileID: 3878231312603472240}
+ m_Horizontal: 0
+ m_Vertical: 1
+ m_MovementType: 1
+ m_Elasticity: 0.1
+ m_Inertia: 1
+ m_DecelerationRate: 0.135
+ m_ScrollSensitivity: 1
+ m_Viewport: {fileID: 0}
+ m_HorizontalScrollbar: {fileID: 0}
+ m_VerticalScrollbar: {fileID: 1051560714612754702}
+ m_HorizontalScrollbarVisibility: 0
+ m_VerticalScrollbarVisibility: 0
+ m_HorizontalScrollbarSpacing: 0
+ m_VerticalScrollbarSpacing: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!114 &3341839818398255206
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9062824730321174381}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_ShowMaskGraphic: 1
+--- !u!1 &9090968134620302780
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 9031878409771569442}
+ - component: {fileID: 4518791225264983914}
+ - component: {fileID: 4965695444005586252}
+ - component: {fileID: 8888812805942411576}
+ m_Layer: 5
+ m_Name: Viewport
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &9031878409771569442
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9090968134620302780}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 8817336814004968111}
+ m_Father: {fileID: 6641322111629771288}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 1}
+--- !u!222 &4518791225264983914
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9090968134620302780}
+ m_CullTransparentMesh: 1
+--- !u!114 &4965695444005586252
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9090968134620302780}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &8888812805942411576
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9090968134620302780}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_ShowMaskGraphic: 0
diff --git a/Assets/Resources/Prefabs/UI/LiveDocumentation/LiveDocumentation.prefab.meta b/Assets/Resources/Prefabs/UI/LiveDocumentation/LiveDocumentation.prefab.meta
new file mode 100644
index 0000000000..0d45f091d7
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/LiveDocumentation/LiveDocumentation.prefab.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 237b6e0f64c6483f8c09e76c2c3674cd
+timeCreated: 1670759140
\ No newline at end of file
diff --git a/Assets/Resources/TracingDisplay.prefab b/Assets/Resources/TracingDisplay.prefab
index e129438fc9..3b617bc16f 100644
--- a/Assets/Resources/TracingDisplay.prefab
+++ b/Assets/Resources/TracingDisplay.prefab
@@ -423,7 +423,7 @@ MonoBehaviour:
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
- m_PresetInfoIsWorld: 0
+ m_PresetInfoIsWorld: 1
--- !u!114 &7376508425101270898
MonoBehaviour:
m_ObjectHideFlags: 0
diff --git a/Assets/SEE/Controls/Actions/ActionStateTypes.cs b/Assets/SEE/Controls/Actions/ActionStateTypes.cs
index 3c7b029180..d37be2944e 100644
--- a/Assets/SEE/Controls/Actions/ActionStateTypes.cs
+++ b/Assets/SEE/Controls/Actions/ActionStateTypes.cs
@@ -116,6 +116,11 @@ static ActionStateTypes()
Color.grey.Darker(), "Materials/ModernUIPack/Arrow Bold",
AcceptDivergenceAction.CreateReversibleAction);
+ LiveDocumentation =
+ new("LiveDocumentation", "displays the documentation of a node",
+ Color.magenta.Lighter(), "Materials/ModernUIPack/Document",
+ LiveDocumentationAction.CreateReversibleAction);
+
// Metric Board actions
MetricBoard =
new("Metric Board", "Manipulate a metric board",
@@ -182,6 +187,7 @@ static ActionStateTypes()
public readonly static ActionStateType ShowCode;
public readonly static ActionStateType Draw;
public readonly static ActionStateType AcceptDivergence;
+ public readonly static ActionStateType LiveDocumentation;
public readonly static ActionStateTypeGroup MetricBoard;
public readonly static ActionStateType AddBoard;
diff --git a/Assets/SEE/Controls/Actions/LiveDocumentationAction.cs b/Assets/SEE/Controls/Actions/LiveDocumentationAction.cs
new file mode 100644
index 0000000000..5a9eb50b3a
--- /dev/null
+++ b/Assets/SEE/Controls/Actions/LiveDocumentationAction.cs
@@ -0,0 +1,180 @@
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using SEE.Game.UI.LiveDocumentation;
+using SEE.Game.UI.LiveDocumentation.Buffer;
+using SEE.Game.UI.Notification;
+using SEE.GO;
+using SEE.Net.Actions;
+using SEE.Utils;
+using SEE.Utils.LiveDocumentation;
+using Sirenix.Utilities;
+using UnityEngine;
+
+namespace SEE.Controls.Actions
+{
+ ///
+ /// An action for displaying the source code documentation of a node with clickable links.
+ ///
+ public class LiveDocumentationAction : AbstractPlayerAction
+ {
+ ///
+ /// Instance of for managing the UI
+ ///
+ private WindowSpaceManager spaceManager;
+
+ ///
+ /// Creates a new instance of
+ ///
+ /// The new created instance
+ public static ReversibleAction CreateReversibleAction()
+ {
+ return new LiveDocumentationAction();
+ }
+
+ ///
+ /// Override of method from .
+ ///
+ /// Always returns an empty list.
+ ///
+ /// An empty list of strings
+ public override HashSet GetChangedObjects() => new();
+
+ ///
+ /// Returns the ActionStateType of this action
+ ///
+ /// The ActionStateType ()
+ public override ActionStateType GetActionStateType() => ActionStateTypes.LiveDocumentation;
+
+ ///
+ /// Creates a new instance of the action
+ ///
+ /// The new instance
+ public override ReversibleAction NewInstance() => CreateReversibleAction();
+
+ ///
+ /// Awake method
+ ///
+ /// Copied from works the same way.
+ ///
+ public override void Awake()
+ {
+ // In case we do not have an ID yet, we request one.
+ if (ICRDT.GetLocalID() == 0)
+ {
+ new NetCRDT().RequestID();
+ }
+
+ spaceManager = WindowSpaceManager.ManagerInstance;
+ }
+
+ ///
+ /// Update method - see for more info
+ ///
+ /// returns always false
+ public override bool Update()
+ {
+ // Only allow local player to open new code windows
+ if (Input.GetMouseButtonDown(0)
+ && Raycasting.RaycastGraphElement(out RaycastHit hit, out GraphElementRef g) == HitGraphElement.Node)
+ {
+ NodeRef selectedNode = hit.collider.gameObject.GetComponent();
+
+ // When the node the user has clicked on has no file attached.
+ // In this case an error is displayed.
+ if (string.IsNullOrWhiteSpace(selectedNode.Value.Path())
+ || string.IsNullOrWhiteSpace(selectedNode.Value.Filename()))
+ {
+ ShowNotification.Error("Node has no File", "The selected node has no source code file attached");
+ return false;
+ }
+
+ // Concat the path and the file name to get the relative path of the file in the project
+ string path = selectedNode.Value.Path() + selectedNode.elem.Filename();
+
+
+ // When the node the user has clicked on wasn't a class
+ // In this case an error message is displayed and the LiveDocumentation windows is not going to open, since only classes can be opened.
+ if (selectedNode.Value.Type != "Class")
+ {
+ ShowNotification.Error("Node not supported", "Only class nodes can be analysed");
+ return false;
+ }
+
+ if (!selectedNode.TryGetComponent(out LiveDocumentationWindow documentationWindow))
+ {
+ string fileName = selectedNode.Value.Filename();
+
+ // Copied from ShowCodeAction
+ if (string.IsNullOrWhiteSpace(fileName))
+ {
+ ShowNotification.Warn("No file",
+ $"Selected node '{selectedNode.Value.SourceName}' has no filename.");
+ return false;
+ }
+
+ string absolutePlatformPath = selectedNode.Value.AbsolutePlatformPath();
+ if (!File.Exists(absolutePlatformPath))
+ {
+ ShowNotification.Warn("File does not exist",
+ $"Path {absolutePlatformPath} of selected node '{selectedNode.Value.SourceName}' does not exist.");
+ return false;
+ }
+
+ string selectedFile = selectedNode.Value.Filename();
+
+ documentationWindow = selectedNode.gameObject.AddComponent();
+
+ documentationWindow.Title = "Doc: " + selectedNode.Value.SourceName;
+
+ if (!documentationWindow.Title.Replace(".", "").Equals(selectedFile.Split('.').Reverse().Skip(1)
+ .Aggregate("", (acc, s) => s + acc)))
+ {
+ documentationWindow.Title += $" ({selectedFile})";
+ }
+
+ documentationWindow.SourceName = documentationWindow.Title;
+ documentationWindow.NodeOfClass = selectedNode.Value;
+
+ // Try initialise the FileParser
+ FileParser parser;
+ try
+ {
+ parser = new FileParser(selectedNode.Value.AbsolutePlatformPath());
+ }
+ // If the source code file can't be found display an error and abort the action.
+ catch (FileNotFoundException)
+ {
+ ShowNotification.Error("File not found",
+ $"The file with the name {selectedNode.Value.AbsolutePlatformPath()} can't be found");
+ return false;
+ }
+
+ LiveDocumentationBuffer buffer = parser.ParseClassDoc(selectedNode.Value.SourceName);
+
+ List classMembers = new List();
+ parser.ParseClassMethods(selectedNode.Value.SourceName)
+ .ForEach(x => classMembers.Add(x));
+ if (buffer == null || classMembers == null)
+ {
+ return false;
+ }
+
+ documentationWindow.DocumentationBuffer = buffer;
+ documentationWindow.ClassMembers = classMembers;
+ documentationWindow.ImportedNamespaces = parser.ParseNamespaceImports();
+ }
+
+ // Add code window to our space of code window, if it isn't in there yet
+ if (!spaceManager[WindowSpaceManager.LOCAL_PLAYER].Windows.Contains(documentationWindow))
+ {
+ spaceManager[WindowSpaceManager.LOCAL_PLAYER].AddWindow(documentationWindow);
+ }
+
+ spaceManager[WindowSpaceManager.LOCAL_PLAYER].ActiveWindow = documentationWindow;
+ }
+
+ return false;
+ }
+ }
+}
diff --git a/Assets/SEE/Controls/Actions/LiveDocumentationAction.cs.meta b/Assets/SEE/Controls/Actions/LiveDocumentationAction.cs.meta
new file mode 100644
index 0000000000..9f81f62833
--- /dev/null
+++ b/Assets/SEE/Controls/Actions/LiveDocumentationAction.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 4c60887f4c174035a9d8b99fef65e6cc
+timeCreated: 1670489478
\ No newline at end of file
diff --git a/Assets/SEE/Game/UI/LiveDocumentation.meta b/Assets/SEE/Game/UI/LiveDocumentation.meta
new file mode 100644
index 0000000000..edbbe7c254
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: bc1055b78c1243e9a2d47c66b44c8258
+timeCreated: 1670444853
\ No newline at end of file
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/Buffer.meta b/Assets/SEE/Game/UI/LiveDocumentation/Buffer.meta
new file mode 100644
index 0000000000..51c684ed70
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/Buffer.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: c07f53129f5d4767a4c0c56c59a0d3f5
+timeCreated: 1679482781
\ No newline at end of file
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/Buffer/ILiveDocumentationBufferItem.cs b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/ILiveDocumentationBufferItem.cs
new file mode 100644
index 0000000000..5bd46672b3
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/ILiveDocumentationBufferItem.cs
@@ -0,0 +1,16 @@
+namespace SEE.Game.UI.LiveDocumentation.Buffer
+{
+ ///
+ /// ILiveDocumentationBufferItem represents an item in the .
+ ///
+ /// This can be a text () or a link ()
+ ///
+ public interface ILiveDocumentationBufferItem
+ {
+ ///
+ /// This method should calculate a printable text in the RTF-Format, so that it can be displayed in the TextMeshPro element.
+ ///
+ /// The buffer item in a printable RTF-Format
+ public string GetPrintableText();
+ }
+}
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/Buffer/ILiveDocumentationBufferItem.cs.meta b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/ILiveDocumentationBufferItem.cs.meta
new file mode 100644
index 0000000000..f12525182b
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/ILiveDocumentationBufferItem.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 3678c0af908f456faf5cecab6c75fc4f
+timeCreated: 1677340971
\ No newline at end of file
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationBuffer.cs b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationBuffer.cs
new file mode 100644
index 0000000000..7c1ef0931a
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationBuffer.cs
@@ -0,0 +1,65 @@
+using System.Collections.Generic;
+using System.Text;
+
+namespace SEE.Game.UI.LiveDocumentation.Buffer
+{
+ ///
+ /// LiveDocumentationBuffer contains the documentation of a class including links as chunks of
+ /// . Those hold either a simple text or a link.
+ ///
+ ///
+ /// Just add Text
+ ///
+ /// LiveDocumentationBuffer buffer = new LiveDocumentationBuffer();
+ /// buffer.Add(new LiveDocumentationBufferText('TEXT TO ADD'));
+ ///
+ ///
+ /// Adding Text and Links
+ ///
+ /// LiveDocumentationBuffer buffer = new LiveDocumentationBuffer();
+ /// buffer.Add(new LiveDocumentationBufferText('TEXT TO ADD'));
+ /// buffer.Add(new LiveDocumentationLink("./path/to/class", "Link name"));
+ ///
+ ///
+ public class LiveDocumentationBuffer
+ {
+ ///
+ /// All elements in the buffer
+ ///
+ private IList BufferItems { get; }
+ = new List();
+
+ ///
+ /// Adds a new Link to the documentation buffer.
+ ///
+ /// The Link which should be added
+ public void Add(LiveDocumentationLink link)
+ {
+ BufferItems.Add(link);
+ }
+
+ ///
+ /// Adds a simple text chunk to the buffer
+ ///
+ /// The Text that should be added
+ public void Add(LiveDocumentationBufferText text)
+ {
+ BufferItems.Add(text);
+ }
+
+ ///
+ /// Prints the entire buffer with all its elements concatenated together.
+ ///
+ /// The buffer as one string
+ public string PrintBuffer()
+ {
+ StringBuilder builder = new();
+
+ foreach (ILiveDocumentationBufferItem item in BufferItems)
+ {
+ builder.Append(item.GetPrintableText());
+ }
+ return builder.ToString();
+ }
+ }
+}
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationBuffer.cs.meta b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationBuffer.cs.meta
new file mode 100644
index 0000000000..07b5b8c092
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationBuffer.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 9abe6e3b326b429cbdcd3a7cabb91b5a
+timeCreated: 1677340940
\ No newline at end of file
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationBufferText.cs b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationBufferText.cs
new file mode 100644
index 0000000000..e53cf970d9
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationBufferText.cs
@@ -0,0 +1,33 @@
+namespace SEE.Game.UI.LiveDocumentation.Buffer
+{
+ ///
+ /// Represents some text which is part of the documentation displayed in the LiveDocumentation window.
+ ///
+ public class LiveDocumentationBufferText : ILiveDocumentationBufferItem
+ {
+ ///
+ /// The actual text which is should be displayed.
+ ///
+ /// This field is read only since altering after initialization isn't needed right now.
+ ///
+ public string Text { get; }
+
+ ///
+ /// Returns the text which should be displayed
+ ///
+ /// Returns just
+ public string GetPrintableText()
+ {
+ return Text;
+ }
+
+ ///
+ /// Constructs a new instance of a
+ ///
+ /// The text which should be displayed in the LiveDocumentation window
+ public LiveDocumentationBufferText(string text)
+ {
+ Text = text;
+ }
+ }
+}
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationBufferText.cs.meta b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationBufferText.cs.meta
new file mode 100644
index 0000000000..efbce35db5
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationBufferText.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: c76049b3806a410aa1af25c487106a9b
+timeCreated: 1677343118
\ No newline at end of file
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationClassMemberBuffer.cs b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationClassMemberBuffer.cs
new file mode 100644
index 0000000000..0373f0c5ed
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationClassMemberBuffer.cs
@@ -0,0 +1,30 @@
+using System.Collections.Generic;
+using JetBrains.Annotations;
+
+namespace SEE.Game.UI.LiveDocumentation.Buffer
+{
+ ///
+ /// variant for class members
+ /// The signature of the class member is still stored in .
+ /// But the documentation of the member is stored in
+ ///
+ public class LiveDocumentationClassMemberBuffer : LiveDocumentationBuffer
+ {
+ ///
+ /// Contains the actual documentation of the method
+ ///
+ [NotNull]
+ public LiveDocumentationBuffer Documentation { get; set; } = new();
+
+ ///
+ /// Contains the signature and the documentation of the parameters of the method
+ ///
+ [NotNull]
+ public List Parameters { get; set; } = new();
+
+ ///
+ /// The source code line number of the method.
+ ///
+ public int LineNumber { get; set; }
+ }
+}
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationClassMemberBuffer.cs.meta b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationClassMemberBuffer.cs.meta
new file mode 100644
index 0000000000..3765f5d7c8
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationClassMemberBuffer.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 180e94311f5540b0a3ee30c7f2f05e10
+timeCreated: 1683225664
\ No newline at end of file
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationLink.cs b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationLink.cs
new file mode 100644
index 0000000000..3a1cb9ccb6
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationLink.cs
@@ -0,0 +1,39 @@
+namespace SEE.Game.UI.LiveDocumentation.Buffer
+{
+ ///
+ /// Representing a link to another class in the LiveDocumentation
+ ///
+ public class LiveDocumentationLink : ILiveDocumentationBufferItem
+ {
+ ///
+ /// Constructs a new instance of a
+ ///
+ /// The path the link should point to
+ /// The name of the link which should be displayed
+ public LiveDocumentationLink(string targetPath, string linkName)
+ {
+ TargetPath = targetPath;
+ LinkName = linkName;
+ }
+
+ ///
+ /// The path to the Class in the Project
+ ///
+ public string TargetPath { get; set; }
+
+ ///
+ /// The name of the link, which should be displayed in the LiveDocumentation window.
+ /// Usually it is the shortened class Name.
+ ///
+ public string LinkName { get; set; }
+
+ ///
+ /// Creates the link to the specific class in the RTF Format.
+ ///
+ ///
+ public string GetPrintableText()
+ {
+ return $" {LinkName}";
+ }
+ }
+}
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationLink.cs.meta b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationLink.cs.meta
new file mode 100644
index 0000000000..26051369f4
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/Buffer/LiveDocumentationLink.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 929021bdb9624ab8b76b657e85b92477
+timeCreated: 1677343824
\ No newline at end of file
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/ClassMember.cs b/Assets/SEE/Game/UI/LiveDocumentation/ClassMember.cs
new file mode 100644
index 0000000000..03fc857c68
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/ClassMember.cs
@@ -0,0 +1,153 @@
+using SEE.Game.UI.LiveDocumentation.Buffer;
+using SEE.GO;
+using SEE.Utils;
+using TMPro;
+using UnityEngine;
+using UnityEngine.Events;
+using UnityEngine.EventSystems;
+using UnityEngine.UI;
+
+namespace SEE.Game.UI.LiveDocumentation
+{
+ ///
+ /// Represents a class member showed in the ListView of an .
+ /// Is used to display documentation of a method (when
+ /// is set to
+ /// or to display the documentation of a methods parameter when set to
+ /// .
+ ///
+ public class ClassMember : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
+ {
+ ///
+ /// Delegate for .
+ ///
+ public delegate void ClickLink(string path);
+
+ ///
+ /// Used to change the color of the text field when the user hovers over.
+ ///
+ private Image ClassMemberImage;
+
+ ///
+ /// The text view showing the documentation of a class member
+ ///
+ private TextMeshProUGUI Mesh;
+
+ ///
+ /// The rect transform of the text view.
+ /// Used to determent if the user has clicked on the text view
+ ///
+ private RectTransform TextRectTransform;
+
+ ///
+ /// The starting line number of the class member
+ ///
+ public int LineNumber { get; set; }
+
+ ///
+ /// The documentation of the class member
+ ///
+ public LiveDocumentationBuffer MethodsBuffer { get; set; }
+
+ ///
+ /// Event which is called, when the user clicked on the class member text view itself
+ ///
+ public UnityEvent OnClicked { get; } = new();
+
+ ///
+ /// Event which is called, when the user clicked on a link in the text view
+ ///
+ public UnityEvent OnLinkClicked { get; } = new();
+
+ ///
+ /// Start method
+ ///
+ public void Start()
+ {
+ GameObject classMember =
+ PrefabInstantiator.InstantiatePrefab(PREFAB_NAME, transform, false);
+
+ Mesh = classMember.transform.Find(CLASS_MEMBER_OBJECT_PATH).gameObject
+ .GetComponent();
+ Mesh.text = MethodsBuffer.PrintBuffer();
+ if (MethodsBuffer is LiveDocumentationClassMemberBuffer classMemberBuffer)
+ {
+ Mesh.text = Mesh.text + "\n" + classMemberBuffer.Documentation.PrintBuffer();
+ }
+
+ TextRectTransform = classMember.transform.Find(ScrollViewPath).gameObject
+ .GetComponent();
+
+ classMember.TryGetComponentOrLog(out ClassMemberImage);
+ }
+
+ ///
+ /// Update method
+ ///
+ public void Update()
+ {
+ // When the user has clicked on the class member list item
+ if (Input.GetMouseButtonDown(0))
+ {
+ int linkId = TMP_TextUtilities.FindIntersectingLink(Mesh, Input.mousePosition, null);
+ // When a link was found at the current position
+ if (linkId != -1)
+ {
+ OnLinkClicked.Invoke(Mesh.textInfo.linkInfo[linkId].GetLinkID());
+ }
+
+ if (TMP_TextUtilities.IsIntersectingRectTransform(TextRectTransform, Input.mousePosition, null))
+ {
+ OnClicked.Invoke(this);
+ }
+ }
+ }
+
+ ///
+ /// Is called when the user hovers over the text field
+ ///
+ ///
+ public void OnPointerEnter(PointerEventData eventData)
+ {
+ ClassMemberImage.color = HighlightedColor;
+ }
+
+ ///
+ /// Is called when the users mouse cursor left the text field
+ ///
+ ///
+ public void OnPointerExit(PointerEventData eventData)
+ {
+ ClassMemberImage.color = UnHighlightedColor;
+ }
+
+ #region Constants
+
+ ///
+ /// The unity path to the ClassMember prefab
+ ///
+ private const string PREFAB_NAME = "Prefabs/UI/LiveDocumentation/ClassMember";
+
+ ///
+ /// The prefab internal path to the text field
+ ///
+ private const string CLASS_MEMBER_OBJECT_PATH = "Scroll View/Viewport/Content/MemberText";
+
+ ///
+ /// The prefab internal path to the scroll view
+ ///
+ private const string ScrollViewPath = "Scroll View";
+
+ ///
+ /// The background color, the class member should have, when hovered
+ ///
+ private static readonly Color HighlightedColor = new(1, 0.2862745f, 0.1490196f, 0.509804f);
+
+ ///
+ /// The normal background color of the class member.
+ ///
+ private static readonly Color UnHighlightedColor = new(1, 1, 1, 0.3882353f);
+
+ #endregion
+ }
+}
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/ClassMember.cs.meta b/Assets/SEE/Game/UI/LiveDocumentation/ClassMember.cs.meta
new file mode 100644
index 0000000000..f38627443b
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/ClassMember.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 22b4db87726248228af6ffced69b561d
+timeCreated: 1679482808
\ No newline at end of file
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/LiveDocumentationWindow.cs b/Assets/SEE/Game/UI/LiveDocumentation/LiveDocumentationWindow.cs
new file mode 100644
index 0000000000..9187371cea
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/LiveDocumentationWindow.cs
@@ -0,0 +1,463 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using JetBrains.Annotations;
+using SEE.Controls;
+using SEE.DataModel.DG;
+using SEE.Game.UI.LiveDocumentation.Buffer;
+using SEE.Game.UI.Notification;
+using SEE.Game.UI.Window;
+using SEE.Utils;
+using SEE.Utils.LiveDocumentation;
+using TMPro;
+using UnityEngine;
+
+namespace SEE.Game.UI.LiveDocumentation
+{
+ ///
+ /// This class represents a LiveDocumentation window.
+ /// In this window the Name of the Class, the documentation and all class methods are shown.
+ /// In addition: the has two modes: 'CLASS' and 'METHOD'.
+ /// 'CLASS' is used for displaying documentation of classes
+ /// 'METHOD' is used for displaying documentation of a method (and it's parameters)
+ ///
+ public class LiveDocumentationWindow : BaseWindow
+ {
+ ///
+ /// Text mesh for the class documentation
+ /// The Path inside the prefab should be "LiveDocumentation/ClassDocumentation/Viewport/Content/ClassDoc"
+ ///
+ private TextMeshProUGUI ClassDocumentation;
+
+ ///
+ /// GameObject for the ListView containing the class methods (when is set to
+ /// ).
+ /// When set to the parameters are displayed there.
+ ///
+ private GameObject ClassMembersList;
+
+ ///
+ /// Text mesh for the (shortened) class name
+ ///
+ private TextMeshProUGUI ClassNameField;
+
+ ///
+ /// The node of the CodeCity where the class or method belongs to.
+ ///
+ public Node NodeOfClass;
+
+ ///
+ /// An instance of a
+ ///
+ private WindowSpaceManager spaceManager;
+
+ ///
+ /// The type of the LiveDocumentation window
+ ///
+ private LiveDocumentationWindowType DocumentationWindowType { get; set; }
+
+ ///
+ /// The name of the node which should be analysed
+ ///
+ public string SourceName { get; set; }
+
+ ///
+ /// A list of all imported namespaces/packages
+ ///
+ public List ImportedNamespaces { get; set; } = new();
+
+ ///
+ /// The which contains the documentation of the class including links
+ ///
+ public LiveDocumentationBuffer DocumentationBuffer { get; set; }
+
+ ///
+ /// A List of buffers which are displayed in the ListView.
+ /// Not that in 'Class-Mode' the type of the elements might differ ()
+ ///
+ public List ClassMembers { get; set; } =
+ new();
+
+ [Serializable]
+ public class LiveDocumentationValues : WindowValues
+ {
+ public LiveDocumentationValues(string title, Node node, LiveDocumentationWindowType type,
+ LiveDocumentationBuffer buffer, List members, string attachedTo = null) : base(
+ title, attachedTo)
+ {
+ Node = node;
+ type = type;
+ buffer = buffer;
+ members = members;
+ }
+
+ [field: SerializeField] public Node Node { get; set; }
+
+ [field: SerializeField] public LiveDocumentationWindowType Type { get; set; }
+
+ [field: SerializeField] public LiveDocumentationBuffer DocumentationBuffer { get; set; }
+
+ [field: SerializeField] public List Members { get; set; }
+ }
+
+ #region Methods
+
+ ///
+ /// Checks if all the necessary fields are set in the class
+ ///
+ /// Returns true when all fields are set. Otherwise false
+ private bool CheckNecessaryFields()
+ {
+ return SourceName != null && NodeOfClass != null;
+ }
+
+ ///
+ /// Adds a new class member to the ClassMember section in the LiveDocumentation Window.
+ /// Currently ClassMembers are represented by a .
+ /// In this buffer all information and links of the method signature is stored.
+ ///
+ /// The documentation of the class member
+ private void AddClassMember(LiveDocumentationBuffer buffer)
+ {
+ // Creating a new GameObject and naming it
+ GameObject classMem = new GameObject();
+ classMem.name = "Item";
+
+ // Adding some other Components
+ classMem.AddComponent();
+ RectTransform rt = classMem.AddComponent();
+
+ //Adding the ClassMember component
+ ClassMember cm = classMem.AddComponent();
+
+ cm.MethodsBuffer = buffer;
+ if (buffer is LiveDocumentationClassMemberBuffer classMemberBuffer)
+ {
+ cm.LineNumber = classMemberBuffer.LineNumber;
+ }
+
+ // Setting the correct anchor point (upper left corner) for the new game object
+ classMem.transform.parent = ClassMembersList.transform;
+ rt.localScale = new Vector3(1, 1, 1);
+ // This will set the
+ rt.anchorMin = new Vector2(0, 1);
+ rt.anchorMax = new Vector2(0, 1);
+ rt.sizeDelta = new Vector2(0, 200);
+
+ cm.OnLinkClicked.AddListener(OnLinkClicked);
+ cm.OnClicked.AddListener(OnClickClassMember);
+ }
+
+ ///
+ /// Is called, when the user clicked on a class member.
+ ///
+ /// The the user has clicked on
+ private void OnClickClassMember(ClassMember cm)
+ {
+ // Clicks should only be handled, when left shift is pressed.
+ if (Input.GetKey(KeyCode.LeftShift))
+ {
+ Node method = NodeOfClass.Children().Where(x => x.Type.Equals("Method"))
+ .Where(x => x.GetInt("Source.Line") == cm.LineNumber).First();
+
+ // When the class member is the documentation of a method.
+ // In this case a new LiveDocumentation window with the method is opened.
+ if (DocumentationWindowType == LiveDocumentationWindowType.CLASS &&
+ cm.MethodsBuffer is LiveDocumentationClassMemberBuffer classMemberBuffer)
+ {
+ LiveDocumentationWindow newWin = method.GameObject().AddComponent();
+
+ newWin.Title = method.SourceName;
+ string selectedFile = method.Filename();
+ if (!newWin.Title.Replace(".", "").Equals(selectedFile.Split('.').Reverse().Skip(1)
+ .Aggregate("", (acc, s) => s + acc)))
+ {
+ newWin.Title += $" ({selectedFile})";
+ }
+
+ newWin.SourceName = newWin.Title;
+ newWin.NodeOfClass = method;
+ newWin.DocumentationWindowType = LiveDocumentationWindowType.METHOD;
+ newWin.ImportedNamespaces = ImportedNamespaces;
+ newWin.DocumentationBuffer = classMemberBuffer.Documentation;
+ newWin.ClassMembers = classMemberBuffer.Parameters;
+
+ // Add code window to our space of code window.
+ spaceManager[WindowSpaceManager.LOCAL_PLAYER].AddWindow(newWin);
+ spaceManager[WindowSpaceManager.LOCAL_PLAYER].ActiveWindow = newWin;
+ }
+ }
+ }
+
+ ///
+ /// Is called when the window is opened on a desktop instance of SEE
+ ///
+ protected override void StartDesktop()
+ {
+ spaceManager = WindowSpaceManager.ManagerInstance;
+ // Check if all required fields are set.
+ if (!CheckNecessaryFields())
+ {
+ Debug.LogError("Some fields are not set; cant load LiveDocumentation");
+ return;
+ }
+
+ base.StartDesktop();
+ GameObject livedoc =
+ PrefabInstantiator.InstantiatePrefab(PrefabName, Window.transform.Find("Content"), false);
+ livedoc.name = "LiveDocumentation";
+ Window.transform.Find("Dragger/Title").gameObject.GetComponent().text =
+ "LiveDocumentation";
+
+ // Initializing Unity Components
+ ClassNameField = livedoc.transform.Find("ClassName/Viewport/Content/ClassName").gameObject
+ .GetComponent();
+ ClassDocumentation =
+ livedoc.transform.Find(ClassDocumentationPath).gameObject.GetComponent();
+ ClassMembersList = livedoc.transform.Find(ClassMemberListPath).gameObject;
+
+ // Set the right title
+ GameObject membersListTitle = ClassMembersList.gameObject.transform.Find("Title").gameObject;
+ TextMeshProUGUI textField = membersListTitle.GetComponent();
+ switch (DocumentationWindowType)
+ {
+ case LiveDocumentationWindowType.CLASS:
+ textField.text = ClassTypeClassMembersTitleText;
+ break;
+ case LiveDocumentationWindowType.METHOD:
+ textField.text = MethodTypeParametersTitleText;
+ break;
+ }
+
+
+ // Setting the classname.
+ ClassNameField.text = SourceName;
+
+ // Try setting the actual documentation
+ // If the class has no documentation
+ ClassDocumentation.text = DocumentationBuffer?.PrintBuffer() ?? "NO DOCS AVAILABLE";
+ if (ClassDocumentation.text == "")
+ {
+ ClassDocumentation.text = "NO DOCS AVAILABLE";
+ }
+
+ ClassDocumentation.ForceMeshUpdate();
+
+ // Adding the class members
+ foreach (LiveDocumentationBuffer item in ClassMembers)
+ {
+ AddClassMember(item);
+ }
+ }
+
+
+ public override void RebuildLayout()
+ {
+ // Nothing to be done yet
+ }
+
+ protected override void InitializeFromValueObject(WindowValues valueObject)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void UpdateFromNetworkValueObject(WindowValues valueObject)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override WindowValues ToValueObject()
+ {
+ return new LiveDocumentationValues(Title, NodeOfClass, DocumentationWindowType, DocumentationBuffer,
+ ClassMembers, gameObject.name);
+ }
+
+ ///
+ /// Traverses the CodeCity graph to look for a specific namespace using recursion.
+ /// Use when calling
+ ///
+ /// The namespace name split by '.'
+ /// The current node
+ /// The CodeCity node of the namespace. Is null if the namespace cant be found
+ [CanBeNull]
+ private Node TraverseForNamespace(List splitedNamespace, Node currentNode)
+ {
+ // Base case
+ if (splitedNamespace.Count == 1 && currentNode.SourceName.Equals(splitedNamespace.First()))
+ {
+ return currentNode;
+ }
+
+ string nextNamespaceElement = splitedNamespace.FirstOrDefault();
+ if (currentNode.SourceName.Equals(nextNamespaceElement))
+ {
+ foreach (Node node in currentNode.Children().Where(x => x.Type.Equals("Namespace")).ToList())
+ {
+ if (TraverseForNamespace(splitedNamespace.Skip(1).ToList(), node) is { } found)
+ {
+ return found;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ ///
+ /// Traverses the CodeCity graph to look for a specific namespace using recursion.
+ /// This is the correct method to call when using this method
+ ///
+ /// The full name of the Namespace you're looking for.
+ /// The CodeCity node of the namespace. Is null if the namespace cant be found
+ [CanBeNull]
+ private Node TraverseForNamespace(string namespaceName)
+ {
+ return TraverseForNamespace(namespaceName.Split(".").ToList(),
+ NodeOfClass.ItsGraph.Nodes().First(x => x.IsRoot()));
+ }
+
+
+ ///
+ /// This method looks for a node corresponding to a specific class which is visible to the class of the
+ /// LiveDocumentation window (e.g. via. using).
+ /// This method first tries to search for the class in the namespace of the current class.
+ /// If can't be found there all imported namespaces are searched.
+ ///
+ /// The name of the class
+ /// The CodeCity node of the class. Is null if the class can't be found (can be caused by a missing import)
+ [CanBeNull]
+ private Node FindNodeOfClass(string className)
+ {
+ // Iterate over each element in the same namespace
+ foreach (Node node in NodeOfClass.Parent.Children().Where(x => x.Type.Equals("Class")))
+ {
+ if (node.SourceName.Equals(className))
+ {
+ return node;
+ }
+ }
+
+ // Search in all imported namespaces
+ foreach (string namespaceName in ImportedNamespaces)
+ {
+ Node traversedNamespace = TraverseForNamespace(namespaceName);
+ // Skip all namespaces which don't belong to the CodeCity.
+ if (traversedNamespace == null)
+ {
+ continue;
+ }
+
+ foreach (Node node in traversedNamespace.Children().Where(x => x.Type.Equals("Class")).ToList())
+ {
+ if (node.SourceName.Equals(className))
+ {
+ return node;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ ///
+ /// Called when a user has clicked on a link.
+ /// In that case the corresponding class should be opened (If the class belongs to the CodeCity).
+ ///
+ /// The path/ID of the link
+ private void OnLinkClicked(string linkPath)
+ {
+ Node nodeOfLink = FindNodeOfClass(linkPath);
+ if (nodeOfLink == null)
+ {
+ ShowNotification.Error("Cant open link", "The class can't be found");
+ return;
+ }
+
+ // If the Space manager don't contains a LiveDocumentationWindow of the same file a new one is created
+ // Otherwise the old one is set as the active window
+ if (!nodeOfLink.GameObject().TryGetComponent(out LiveDocumentationWindow ldocWin))
+ {
+ LiveDocumentationWindow newWin = nodeOfLink.GameObject().AddComponent();
+
+ newWin.Title = nodeOfLink.SourceName;
+ string selectedFile = nodeOfLink.Filename();
+ if (!newWin.Title.Replace(".", "").Equals(selectedFile.Split('.').Reverse().Skip(1)
+ .Aggregate("", (acc, s) => s + acc)))
+ {
+ newWin.Title += $" ({selectedFile})";
+ }
+
+ newWin.SourceName = newWin.Title;
+ newWin.NodeOfClass = nodeOfLink;
+ LiveDocumentationBuffer buffer = new LiveDocumentationBuffer();
+ FileParser parser = new FileParser(nodeOfLink.AbsolutePlatformPath());
+ buffer = parser.ParseClassDoc(nodeOfLink.SourceName);
+ newWin.DocumentationBuffer = buffer;
+
+ List methods = new List();
+ parser.ParseClassMethods(nodeOfLink.SourceName)
+ .ForEach(x => methods.Add(x));
+
+ newWin.ImportedNamespaces = parser.ParseNamespaceImports();
+ if (buffer == null || methods == null)
+ {
+ return;
+ }
+
+ newWin.ClassMembers = methods;
+ // Add code window to our space of code window, if it isn't in there yet
+ spaceManager[WindowSpaceManager.LOCAL_PLAYER].AddWindow(newWin);
+ spaceManager[WindowSpaceManager.LOCAL_PLAYER].ActiveWindow = newWin;
+ }
+ else
+ {
+ spaceManager[WindowSpaceManager.LOCAL_PLAYER].ActiveWindow = ldocWin;
+ }
+ }
+
+ ///
+ /// Update method of the LiveDocumentation Window
+ ///
+ protected override void UpdateDesktop()
+ {
+ // When the user clicked in the LiveDocumentation window
+ if (Input.GetMouseButtonDown(0) && Window.activeSelf)
+ {
+ int classDoclink =
+ TMP_TextUtilities.FindIntersectingLink(ClassDocumentation, Input.mousePosition, null);
+
+ // If the point the user has clicked on a valid link
+ if (classDoclink != -1)
+ {
+ string linkId = ClassDocumentation.textInfo.linkInfo[classDoclink].GetLinkID();
+ OnLinkClicked(linkId);
+ }
+ }
+ }
+
+ #endregion
+
+ #region Constants
+
+ ///
+ /// Path to the prefab
+ ///
+ private const string PrefabName = "Prefabs/UI/LiveDocumentation/LiveDocumentation";
+
+ ///
+ /// Internal path of the prefab to the documentation text field
+ ///
+ private const string ClassDocumentationPath = "ClassDocumentation/Viewport/Content";
+
+ ///
+ /// Internal path of the prefab to the class member list view
+ ///
+ private const string ClassMemberListPath = "ClassMembers/Scroll Area/List";
+
+
+ private const string ClassTypeClassMembersTitleText = "ClassMembers";
+ private const string MethodTypeParametersTitleText = "Parameters";
+
+ #endregion
+ }
+}
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/LiveDocumentationWindow.cs.meta b/Assets/SEE/Game/UI/LiveDocumentation/LiveDocumentationWindow.cs.meta
new file mode 100644
index 0000000000..6fdc22af32
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/LiveDocumentationWindow.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: f2ad46fa675845449386aa51f5087af6
+timeCreated: 1675976796
\ No newline at end of file
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/LiveDocumentationWindowType.cs b/Assets/SEE/Game/UI/LiveDocumentation/LiveDocumentationWindowType.cs
new file mode 100644
index 0000000000..6148dd1a57
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/LiveDocumentationWindowType.cs
@@ -0,0 +1,18 @@
+namespace SEE.Game.UI.LiveDocumentation
+{
+ ///
+ /// The mode of an
+ ///
+ public enum LiveDocumentationWindowType
+ {
+ ///
+ /// Used when displaying documentation of a class
+ ///
+ CLASS,
+
+ ///
+ /// Used when displaying the documentation of an class method.
+ ///
+ METHOD
+ }
+}
diff --git a/Assets/SEE/Game/UI/LiveDocumentation/LiveDocumentationWindowType.cs.meta b/Assets/SEE/Game/UI/LiveDocumentation/LiveDocumentationWindowType.cs.meta
new file mode 100644
index 0000000000..9d04f3d1cc
--- /dev/null
+++ b/Assets/SEE/Game/UI/LiveDocumentation/LiveDocumentationWindowType.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 7da73f5aa20d4e1c844c33559835ab51
+timeCreated: 1683532824
\ No newline at end of file
diff --git a/Assets/SEE/Utils/LiveDocumentation.meta b/Assets/SEE/Utils/LiveDocumentation.meta
new file mode 100644
index 0000000000..5e61d76335
--- /dev/null
+++ b/Assets/SEE/Utils/LiveDocumentation.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: f043e3fe52544d35b6d0fdf23381f81b
+timeCreated: 1681827259
\ No newline at end of file
diff --git a/Assets/SEE/Utils/LiveDocumentation/CSharpExtractor.cs b/Assets/SEE/Utils/LiveDocumentation/CSharpExtractor.cs
new file mode 100644
index 0000000000..7e9663cef1
--- /dev/null
+++ b/Assets/SEE/Utils/LiveDocumentation/CSharpExtractor.cs
@@ -0,0 +1,464 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using Antlr4.Runtime;
+using Antlr4.Runtime.Tree;
+using JetBrains.Annotations;
+using SEE.Game.UI.LiveDocumentation.Buffer;
+
+namespace SEE.Utils.LiveDocumentation
+{
+ ///
+ /// Extractor class for CSharp source code
+ ///
+ public class CSharpExtractor : IExtractor
+ {
+ ///
+ /// The path of the file which should be parsed
+ ///
+ private readonly string filePath;
+
+ ///
+ /// The extracted tokens from the CSharp file
+ ///
+ private readonly CommonTokenStream commentTokens;
+
+ ///
+ /// The parser which is used to extract informations from the file
+ ///
+ private readonly CSharpParser parser;
+
+ ///
+ /// Constructs a new instance of a
+ ///
+ /// The name of the file which should be extracted
+ /// When the source code file doesn't exist.
+ public CSharpExtractor(string fileName)
+ {
+ filePath = fileName;
+ if (!File.Exists(fileName))
+ {
+ throw new FileNotFoundException($"The file {fileName} doesn't exist");
+ }
+
+ string input = File.ReadAllText(fileName);
+ CSharpFullLexer lexer = new CSharpFullLexer(new AntlrInputStream(input));
+ CommonTokenStream tokens = new CommonTokenStream(lexer);
+ tokens.Fill();
+ parser = new CSharpParser(tokens);
+
+ CSharpFullLexer lexer1 = new CSharpFullLexer(new AntlrInputStream(input));
+
+
+ commentTokens = new CommonTokenStream(lexer1, 2);
+ commentTokens.Fill();
+ }
+
+
+ ///
+ /// This method will extract the documentation of an given C# Class in a given file.
+ ///
+ /// The name of the class
+ /// Is thrown, when the class cant be found
+ /// The documentation of the class
+ public LiveDocumentationBuffer ExtractClassComments(string className)
+ {
+ parser.Reset();
+ LiveDocumentationBuffer buffer = new();
+
+
+ (CSharpParser.Type_declarationContext classContext, int upperLineBound) = GetClassByName(className);
+
+ if (classContext != null)
+ {
+ // Combining the Type 2 Tokens (C# Class Documentation) between the start of the class and the
+ // start of the namespace, if the class is the first in the file, or between the start of the class and the
+ // end of the last type declaration
+ string commentTokens = string.Join(Environment.NewLine, this.commentTokens.GetTokens()
+ .Where(x => x.Type == 2 && x.Line < classContext.Start.Line && x.Line > upperLineBound)
+ .Select(x => x.Text).ToList());
+
+ // Parsing of the class documentation
+ CSharpCommentsGrammarLexer lexer = new CSharpCommentsGrammarLexer(new AntlrInputStream(commentTokens));
+ CommonTokenStream tokens = new CommonTokenStream(lexer);
+ tokens.Fill();
+ if (tokens.GetTokens().Count > 1)
+ {
+ CSharpCommentsGrammarParser parser = new CSharpCommentsGrammarParser(tokens); ;
+ ProcessSummary(buffer, parser.docs().summary());
+ // Parse C# Doc line by line and write it in the Buffer
+ }
+
+ return buffer;
+ }
+
+ throw new ClassNotFoundException(className, filePath);
+ }
+
+ ///
+ /// Extracting the methods (and their documentation) from a given class
+ ///
+ /// The name of the class
+ /// The methods as a list of
+ public List ExtractMethods(string className)
+ {
+ List buffers = new();
+ parser.Reset();
+
+ (CSharpParser.Type_declarationContext classContext, int upperLineBound) = GetClassByName(className);
+ // Parse all namespaces and iterate over them
+
+ int methodUpperLineBound = upperLineBound;
+
+ foreach (CSharpParser.Class_member_declarationContext i in classContext.class_definition().class_body().class_member_declarations()
+ .class_member_declaration())
+ {
+ i.GetText();
+ LiveDocumentationClassMemberBuffer methodBuffer = new LiveDocumentationClassMemberBuffer();
+ methodBuffer.Documentation = new LiveDocumentationBuffer();
+ methodBuffer.LineNumber = i.common_member_declaration().Start.Line;
+ // Concatenate the Method signature together.
+ // Starting by the modifiers of the method
+ string signature = i.all_member_modifiers().all_member_modifier()
+ .Aggregate("", (test, modi) => test + modi.GetText() + " ");
+ // If the current class member is a method
+
+ // If the class member is a method
+ if (i.common_member_declaration().method_declaration() is { } methodDeclarationContext)
+ {
+ (CSharpCommentsGrammarParser parser, CommonTokenStream tokens) = CreateParserForMethod(methodUpperLineBound, i.Start.Line);
+ LiveDocumentationBuffer methodDoc = new LiveDocumentationBuffer();
+ if (tokens.GetTokens().Count > 1)
+ {
+ ProcessSummary(methodDoc, parser.docs().summary());
+ parser.Reset();
+ }
+
+ methodBuffer.Documentation = methodDoc;
+
+ methodBuffer.Parameters =
+ ProcessParametersDocumentation(methodDeclarationContext.formal_parameter_list(), parser);
+
+ // Add the name of the method to the buffer
+ signature +=
+ methodDeclarationContext
+ .method_member_name().GetText();
+ methodBuffer.Add(new LiveDocumentationBufferText(signature));
+
+ ProcessMethodParameters(methodBuffer,
+ i.common_member_declaration().method_declaration().formal_parameter_list());
+ }
+ // If the class member is a constructor
+ else if (i.common_member_declaration().constructor_declaration() is
+ { } constructorDeclarationContext)
+ {
+ (CSharpCommentsGrammarParser parser, CommonTokenStream tokens) = CreateParserForMethod(methodUpperLineBound, i.Start.Line);
+ LiveDocumentationBuffer methodDoc = new LiveDocumentationBuffer();
+ if (tokens.GetTokens().Count > 1)
+ {
+ ProcessSummary(methodDoc, parser.docs().summary());
+ parser.Reset();
+ }
+
+ methodBuffer.Documentation = methodDoc;
+
+ parser.Reset();
+ methodBuffer.Parameters =
+ ProcessParametersDocumentation(constructorDeclarationContext.formal_parameter_list(), parser);
+
+ signature += constructorDeclarationContext.identifier().GetText();
+ methodBuffer.Add(new LiveDocumentationBufferText(signature));
+
+ ProcessMethodParameters(methodBuffer,
+ i.common_member_declaration().constructor_declaration().formal_parameter_list());
+ }
+ else if (i.common_member_declaration().typed_member_declaration() is
+ { } typedMemberDeclaration)
+ {
+ // Skip C# Properties for now
+ // TODO Maybe implement them later
+ if (typedMemberDeclaration.method_declaration() == null)
+ {
+ methodUpperLineBound = i.Stop.Line;
+ continue;
+ }
+
+ (CSharpCommentsGrammarParser parser, CommonTokenStream tokens) = CreateParserForMethod(methodUpperLineBound, i.Start.Line);
+ LiveDocumentationBuffer methodDoc = new LiveDocumentationBuffer();
+ if (tokens.GetTokens().Count > 1)
+ {
+ ProcessSummary(methodDoc, parser.docs().summary());
+ parser.Reset();
+ }
+
+ methodBuffer.Documentation = methodDoc;
+
+ parser.Reset();
+ methodBuffer.Parameters =
+ ProcessParametersDocumentation(
+ typedMemberDeclaration.method_declaration().formal_parameter_list(), parser);
+ string methodType = typedMemberDeclaration.type_().GetText();
+ methodBuffer.Add(new LiveDocumentationBufferText(signature));
+ methodBuffer.Add(new LiveDocumentationLink(methodType, methodType));
+ methodBuffer.Add(new LiveDocumentationBufferText(" "));
+ methodBuffer.Add(new LiveDocumentationBufferText(typedMemberDeclaration.method_declaration()
+ .method_member_name().GetText()));
+
+
+ ProcessMethodParameters(methodBuffer,
+ typedMemberDeclaration.method_declaration().formal_parameter_list());
+ }
+ else
+ {
+ methodUpperLineBound = i.Stop.Line;
+ continue;
+ }
+
+
+ methodUpperLineBound = i.Stop.Line;
+ buffers.Add(methodBuffer);
+ }
+
+
+ return buffers;
+ }
+
+
+ ///
+ /// Extracts all using directives from a given C# file specified in .
+ /// It will accumulate all imported type names in an list and return it.
+ /// If the file doesn't have any using directives an empty list is returned.
+ ///
+ /// The name of the file in which the using directives should be extracted
+ /// A of imported type names
+ public List ExtractImportedNamespaces()
+ {
+ List ret = new();
+ parser.Reset();
+ // If the file doesn't have any using directives an empty list is returned.
+ if (parser.compilation_unit().using_directives() is { } usingDirectivesContext)
+ {
+ foreach (CSharpParser.Using_directiveContext usingDirective in usingDirectivesContext.using_directive())
+ {
+ if (usingDirective is CSharpParser.UsingNamespaceDirectiveContext namespaceDirectiveContext)
+ {
+ ret.Add(namespaceDirectiveContext.namespace_or_type_name().GetText());
+ }
+ }
+ }
+
+ return ret;
+ }
+
+
+ ///
+ /// Uses the to parse a source file to find a speciffic class.
+ ///
+ /// The parses which should be used for that
+ /// The name of the class which should be found
+ ///
+ /// The declaration_context of the class and the upper bound of line numbers. If the class cant by found under that
+ /// name null is returned.
+ /// (Context, LineNumberBound)
+ ///
+ private (CSharpParser.Type_declarationContext, int) GetClassByName(string className)
+ {
+ parser.Reset();
+ CSharpParser.Namespace_member_declarationContext[] namespaces = parser
+ .compilation_unit()
+ .namespace_member_declarations()
+ .namespace_member_declaration();
+ foreach (CSharpParser.Namespace_member_declarationContext namspace in namespaces)
+ {
+ int namespaceDefLine = namspace.namespace_declaration().Start.Line;
+ List types = namspace
+ .namespace_declaration()
+ .namespace_body()
+ .namespace_member_declarations()
+ .namespace_member_declaration()
+ .ToList();
+ foreach (CSharpParser.Namespace_member_declarationContext type in types)
+ // Extract the name of the class or struct and compare it with the passed className
+ {
+ if ((type.type_declaration().class_definition() is { } c &&
+ c.identifier().GetText().Equals(className)) ||
+ (type.type_declaration().struct_definition() is { } s &&
+ s.identifier().GetText().Equals(className)))
+ {
+ int classIndex = types.IndexOf(type);
+ int classDocMinStartLine = namespaceDefLine;
+ // Get The end line of the last class
+ if (classIndex > 0)
+ {
+ classDocMinStartLine = types[classIndex - 1].Stop.Line;
+ }
+
+ return (type.type_declaration(), classDocMinStartLine);
+ }
+ }
+ }
+
+ return (null, -1);
+ }
+
+ ///
+ /// Processes the parameters of a method signature
+ ///
+ ///
+ /// The methods signature () where the parameters should be
+ /// appended to
+ ///
+ /// The parameter list of the method
+ private void ProcessMethodParameters(LiveDocumentationBuffer buff,
+ [CanBeNull] CSharpParser.Formal_parameter_listContext parameterList)
+ {
+ buff.Add(new LiveDocumentationBufferText("("));
+ if (parameterList != null)
+ {
+ CSharpParser.Fixed_parameterContext[] parameters = parameterList
+ .fixed_parameters()
+ .fixed_parameter();
+ foreach (CSharpParser.Fixed_parameterContext parameter in parameters)
+ {
+ string pType = parameter.arg_declaration().type_().GetText() + " ";
+ buff.Add(new LiveDocumentationLink(pType, pType));
+ buff.Add(
+ new LiveDocumentationBufferText(parameter.arg_declaration().identifier()
+ .GetText()));
+ // If this wasn't the last parameter append a comma
+ if (!parameter.Equals(parameters.Last()))
+ {
+ buff.Add(new LiveDocumentationBufferText(", "));
+ }
+ }
+ }
+
+ buff.Add(new LiveDocumentationBufferText(")"));
+ }
+
+ ///
+ /// Processes the summary tag of csharp documentation and appending the content to
+ ///
+ /// The buffer where the summary tag should be appended to
+ /// The summary which should be parsed
+ private void ProcessSummary(LiveDocumentationBuffer buffer,
+ [CanBeNull] CSharpCommentsGrammarParser.SummaryContext summaryContext)
+ {
+ if (summaryContext != null)
+ {
+ foreach (CSharpCommentsGrammarParser.CommentsContext commentLine in summaryContext.comments())
+ {
+ ProcessComment(buffer, commentLine);
+
+ buffer.Add(new LiveDocumentationBufferText("\n"));
+ }
+ }
+ }
+
+ ///
+ /// Processes a single comment line and appends the contents to .
+ ///
+ /// The buffer the comment line should be appended to.
+ /// The comment line which should be parsed
+ private void ProcessComment(LiveDocumentationBuffer buffer,
+ CSharpCommentsGrammarParser.CommentsContext commentsContext)
+ {
+ foreach (IParseTree i in commentsContext.children)
+ {
+ if (i is CSharpCommentsGrammarParser.SomeTextContext someTextContext)
+ {
+ buffer.Add(new LiveDocumentationBufferText(someTextContext.TEXT()
+ .Aggregate("", (text, word) => text += word.GetText() + " ").TrimEnd()));
+ }
+ else if (i is CSharpCommentsGrammarParser.ClassLinkContext classLinkContext)
+ {
+ buffer.Add(new LiveDocumentationLink(classLinkContext.linkID.Text,
+ classLinkContext.linkID.Text));
+ }
+ }
+ }
+
+ ///
+ /// Process the contents of a XML tag and appends the contents to
+ ///
+ /// The buffer where the documentation should be appended
+ /// The XML tag which should be parsed
+ private void ProcessTagContent(LiveDocumentationBuffer buffer,
+ CSharpCommentsGrammarParser.TagContentContext tagContentContext)
+ {
+ foreach (IParseTree i in tagContentContext.children)
+ {
+ if (i is CSharpCommentsGrammarParser.SomeTextContext someTextContext)
+ {
+ buffer.Add(new LiveDocumentationBufferText(someTextContext.TEXT()
+ .Aggregate("", (text, word) => text += word.GetText() + " ").TrimEnd()));
+ }
+ else if (i is CSharpCommentsGrammarParser.CommentsContext commentsContext)
+ {
+ ProcessComment(buffer, commentsContext);
+ }
+ }
+ }
+
+ ///
+ /// Process the documentation of a methods parameters
+ ///
+ /// The parameters of the method which should be parsed
+ /// The parser which should be used for parsing
+ /// The documentation of all parameters as a list
+ private List ProcessParametersDocumentation(
+ [CanBeNull] CSharpParser.Formal_parameter_listContext parameterListContext,
+ CSharpCommentsGrammarParser parser)
+ {
+ List bufferList = new List();
+
+ if (parameterListContext != null)
+ {
+ foreach (CSharpParser.Fixed_parameterContext parameter in parameterListContext.fixed_parameters().fixed_parameter())
+ {
+ parser.Reset();
+ LiveDocumentationBuffer buffer = new LiveDocumentationBuffer();
+ string parameterName = parameter.arg_declaration().identifier().GetText();
+ string parameterType = parameter.arg_declaration().type_().GetText();
+ buffer.Add(new LiveDocumentationLink(parameterType, parameterType));
+ buffer.Add(new LiveDocumentationBufferText(" " + parameterName));
+ buffer.Add(new LiveDocumentationBufferText(" "));
+
+ CSharpCommentsGrammarParser.ParameterContext matchingParamDoc = parser.docs().parameters()?.parameter()
+ .FirstOrDefault(x => x.paramName.Text == parameterName);
+ if (matchingParamDoc != null)
+ {
+ ProcessTagContent(buffer, matchingParamDoc.parameterDescription);
+ }
+
+ bufferList.Add(buffer);
+ }
+ }
+
+ return bufferList;
+ }
+
+ ///
+ /// Creates a documentation parser for a method.
+ /// This method will search between the lines and
+ /// in the source code file for any CSharp documentation and will create a new
+ /// parser with the contents.
+ ///
+ /// The upper most position where the CSharp doc can be
+ /// The lower most position where the CSharp doc can be
+ /// The new created parser and a token stream as a tuple
+ private (CSharpCommentsGrammarParser, CommonTokenStream) CreateParserForMethod(int methodUpperLineBound,
+ int methodLowerLineBound)
+ {
+ string commentTokens = string.Join(Environment.NewLine, this.commentTokens.GetTokens()
+ .Where(x => x.Type == 2 && x.Line < methodLowerLineBound && x.Line > methodUpperLineBound)
+ .Select(x => x.Text).ToList());
+
+ CSharpCommentsGrammarLexer lexer = new CSharpCommentsGrammarLexer(new AntlrInputStream(commentTokens));
+ CommonTokenStream tokens = new CommonTokenStream(lexer);
+ tokens.Fill();
+ return (new CSharpCommentsGrammarParser(tokens), tokens);
+ }
+ }
+}
diff --git a/Assets/SEE/Utils/LiveDocumentation/CSharpExtractor.cs.meta b/Assets/SEE/Utils/LiveDocumentation/CSharpExtractor.cs.meta
new file mode 100644
index 0000000000..5841fd8dc7
--- /dev/null
+++ b/Assets/SEE/Utils/LiveDocumentation/CSharpExtractor.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: f9c26dc06289482fbb9c5ed3dff20795
+timeCreated: 1682678709
\ No newline at end of file
diff --git a/Assets/SEE/Utils/LiveDocumentation/ClassNotFoundException.cs b/Assets/SEE/Utils/LiveDocumentation/ClassNotFoundException.cs
new file mode 100644
index 0000000000..f9bafc8076
--- /dev/null
+++ b/Assets/SEE/Utils/LiveDocumentation/ClassNotFoundException.cs
@@ -0,0 +1,14 @@
+using System;
+
+namespace SEE.Utils.LiveDocumentation
+{
+ ///
+ /// Exception which is called when a class can not be found in a specific file
+ ///
+ public class ClassNotFoundException : Exception
+ {
+ public ClassNotFoundException(string className, string fileName) : base($"Class with name {className} cant be found in file {fileName}")
+ {
+ }
+ }
+}
diff --git a/Assets/SEE/Utils/LiveDocumentation/ClassNotFoundException.cs.meta b/Assets/SEE/Utils/LiveDocumentation/ClassNotFoundException.cs.meta
new file mode 100644
index 0000000000..49f30c2b8c
--- /dev/null
+++ b/Assets/SEE/Utils/LiveDocumentation/ClassNotFoundException.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 56ae360bab104b6ca3802a0cbfe08a7d
+timeCreated: 1684180281
\ No newline at end of file
diff --git a/Assets/SEE/Utils/LiveDocumentation/FileParser.cs b/Assets/SEE/Utils/LiveDocumentation/FileParser.cs
new file mode 100644
index 0000000000..c9fe1352d4
--- /dev/null
+++ b/Assets/SEE/Utils/LiveDocumentation/FileParser.cs
@@ -0,0 +1,70 @@
+using System.Collections.Generic;
+using System.IO;
+using JetBrains.Annotations;
+using SEE.Game.UI.LiveDocumentation.Buffer;
+using SEE.Game.UI.Notification;
+
+namespace SEE.Utils.LiveDocumentation
+{
+ ///
+ /// This class is used as an abstraction for documentation parsers for diffrent file types.
+ ///
+ /// To add a new supported file type extend a class from and append the file extension check in the constructor.
+ ///
+ public class FileParser
+ {
+ private IExtractor extractor;
+
+ ///
+ /// Constructs a new instance of a parser, which parses the file at the given file: .
+ ///
+ /// The name of the file which should be passed
+ /// Is thrown, when the file doesn't exist
+ public FileParser(string fileName)
+ {
+ // Check file extension and load the corresponding parser.
+ if (fileName.EndsWith(".cs"))
+ {
+ extractor = new CSharpExtractor(fileName);
+ }
+ else
+ {
+ ShowNotification.Error("Unknown Filetype",
+ "The file extension is not supported by the LiveDocumentation in SEE");
+ }
+ }
+
+ ///
+ /// Parses the documentation of a specific class
+ ///
+ /// The name of the class
+ /// Will be thrown, when the class cant be found
+ /// The parsed documentation of the class () with its links (if present)
+ [CanBeNull]
+ public LiveDocumentationBuffer ParseClassDoc(string className)
+ {
+ return extractor.ExtractClassComments(className);
+ }
+
+ ///
+ /// Parses the methods of a class
+ ///
+ /// The name of the class
+ /// A list of with the documentation for each class member/method of the class ()
+ [NotNull]
+ public List ParseClassMethods(string className)
+ {
+ return extractor.ExtractMethods(className);
+ }
+
+ ///
+ /// Parses the names of all imported namespaces/packages in the file.
+ ///
+ /// A List of the names of all imported namespace
+ [NotNull]
+ public List ParseNamespaceImports()
+ {
+ return extractor.ExtractImportedNamespaces();
+ }
+ }
+}
diff --git a/Assets/SEE/Utils/LiveDocumentation/FileParser.cs.meta b/Assets/SEE/Utils/LiveDocumentation/FileParser.cs.meta
new file mode 100644
index 0000000000..502a7e282b
--- /dev/null
+++ b/Assets/SEE/Utils/LiveDocumentation/FileParser.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: b17fcda70b5f462d8deda9bebea72f73
+timeCreated: 1683042174
\ No newline at end of file
diff --git a/Assets/SEE/Utils/LiveDocumentation/IExtractor.cs b/Assets/SEE/Utils/LiveDocumentation/IExtractor.cs
new file mode 100644
index 0000000000..a99ef228e9
--- /dev/null
+++ b/Assets/SEE/Utils/LiveDocumentation/IExtractor.cs
@@ -0,0 +1,42 @@
+using System.Collections.Generic;
+using JetBrains.Annotations;
+using SEE.Game.UI.LiveDocumentation.Buffer;
+
+namespace SEE.Utils.LiveDocumentation
+{
+ ///
+ /// Represents an general extractor for the LiveDocumentation.
+ ///
+ /// This interface is used to create new documentation parser for different languages.
+ ///
+ public interface IExtractor
+ {
+ ///
+ /// This method should extract the comments of an specific class in a specific source code file.
+ ///
+ ///
+ ///
+ /// A new containing the documentation
+ [NotNull]
+ public LiveDocumentationBuffer ExtractClassComments(string className);
+
+ ///
+ /// This method should extract all methods and their signatures
+ ///
+ ///
+ ///
+ /// Is thrown, when the class cant be found in the file
+ /// A list of for each of the class members/methods
+ [NotNull]
+ public List ExtractMethods(string className);
+
+
+ ///
+ /// This method should extract all import statements of the source code file.
+ ///
+ ///
+ /// A of the names of all imported namespaces
+ [NotNull]
+ public List ExtractImportedNamespaces();
+ }
+}
diff --git a/Assets/SEE/Utils/LiveDocumentation/IExtractor.cs.meta b/Assets/SEE/Utils/LiveDocumentation/IExtractor.cs.meta
new file mode 100644
index 0000000000..bec09c0bda
--- /dev/null
+++ b/Assets/SEE/Utils/LiveDocumentation/IExtractor.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: f4781f20d08844d7a43d1e81cdef9186
+timeCreated: 1682707289
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator.meta b/Assets/StreamingAssets/mini_calculator.meta
new file mode 100644
index 0000000000..3d027070a3
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ffb1fbe3b2af81c428fa2119048282d5
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/Architecture.csv b/Assets/StreamingAssets/mini_calculator/Architecture.csv
new file mode 100755
index 0000000000..42e70c5632
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/Architecture.csv
@@ -0,0 +1,4 @@
+ID;Metric.Number_of_Descendants;Metric.Number_of_Clusters;Metric.Architecture_Violations;Metric.Clone;Metric.Dead_Code;Metric.Cycle;Metric.Metric;Metric.Style;Metric.Universal
+H1;1;1;3;1;0;0;5;23123;0.1
+H2;1;1;3;3;1;0;8;34234;0.1
+H3;1;1;1;6;3;0;2;34;0.1
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator/Architecture.csv.meta b/Assets/StreamingAssets/mini_calculator/Architecture.csv.meta
new file mode 100644
index 0000000000..7fac1322d2
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/Architecture.csv.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: bedd5733e2f984b98a1a4885f1c6ab66
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/Architecture.gvl b/Assets/StreamingAssets/mini_calculator/Architecture.gvl
new file mode 100755
index 0000000000..91ec5c7b0a
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/Architecture.gvl
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/StreamingAssets/mini_calculator/Architecture.gvl.meta b/Assets/StreamingAssets/mini_calculator/Architecture.gvl.meta
new file mode 100644
index 0000000000..34ecbf2996
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/Architecture.gvl.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: d80e0694d1a1a4ce3ae4e7d790deab90
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/Architecture.gxl b/Assets/StreamingAssets/mini_calculator/Architecture.gxl
new file mode 100755
index 0000000000..4fc305dc1c
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/Architecture.gxl
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+ H1
+
+
+ H1
+
+
+
+
+
+ H2
+
+
+ H2
+
+
+
+
+
+ H3
+
+
+ H3
+
+
+
+
+
+ Architecture
+
+
+ Architecture
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/StreamingAssets/mini_calculator/Architecture.gxl.meta b/Assets/StreamingAssets/mini_calculator/Architecture.gxl.meta
new file mode 100644
index 0000000000..4f0097d828
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/Architecture.gxl.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b701628ed35994c98856d349d401597c
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/CodeFacts.cfg b/Assets/StreamingAssets/mini_calculator/CodeFacts.cfg
new file mode 100755
index 0000000000..38db7ae84a
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/CodeFacts.cfg
@@ -0,0 +1,214 @@
+ConfigPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini3/CodeFacts.cfg";
+ AbsolutePath : "";
+ };
+ProjectPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini3";
+ AbsolutePath : "";
+ };
+SolutionPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini3/src/mini.sln";
+ AbsolutePath : "";
+ };
+LODCulling : 0.00100000;
+HierarchicalEdges : [
+ "Enclosing";
+ "Belongs_To";
+ "Part_Of";
+ "Defined_In";
+ ];
+NodeTypes : [
+ [
+ "Class";
+ True;
+ ];
+ [
+ "Method";
+ True;
+ ];
+ [
+ "Member";
+ True;
+ ];
+ [
+ "Namespace";
+ True;
+ ];
+ ];
+ZScoreScale : False;
+ScaleOnlyLeafMetrics : True;
+LeafNodes : {
+ Shape : "Cylinders";
+ HeightMetric : "Metric.Lines.LOC";
+ StyleMetric : "Metric.McCabe_Complexity";
+ ColorRange : {
+ Lower : {
+ Red : 1.00000000;
+ Green : 1.00000000;
+ Blue : 1.00000000;
+ Alpha : 1.00000000;
+ };
+ Upper : {
+ Red : 1.00000000;
+ Green : 0.00000000;
+ Blue : 0.00000000;
+ Alpha : 1.00000000;
+ };
+ NumberOfColors : 10;
+ };
+ LabelSettings : {
+ Show : True;
+ Distance : 0.20000000;
+ FontSize : 0.40000000;
+ AnimationDuration : 0.50000000;
+ };
+ AntennnaSettings : {
+ Width : 0.10000000;
+ AntennaSections : [
+ {
+ Metric : "Metric.Lines.Comment";
+ Color : {
+ Red : 0.00000000;
+ Green : 0.00000000;
+ Blue : 0.00000000;
+ Alpha : 1.00000000;
+ };
+ };
+ {
+ Metric : "Metric.Lines.Fixme";
+ Color : {
+ Red : 0.92549020;
+ Green : 0.49019610;
+ Blue : 0.32549020;
+ Alpha : 1.00000000;
+ };
+ };
+ {
+ Metric : "Metric.Halstead.Volume";
+ Color : {
+ Red : 0.32549020;
+ Green : 0.86274510;
+ Blue : 0.92549020;
+ Alpha : 1.00000000;
+ };
+ };
+ ];
+ };
+ OutlineWidth : 1.00000000;
+ WidthMetric : "Metric.Number_Of_Calling_Routines";
+ DepthMetric : "Metric.Number_Of_Called_Routines";
+ MinimalBlockLength : 0.01000000;
+ MaximalBlockLength : 0.50000000;
+ };
+InnerNodes : {
+ Shape : "Cylinders";
+ HeightMetric : "0.0001";
+ StyleMetric : "Metric.Level";
+ ColorRange : {
+ Lower : {
+ Red : 0.26633140;
+ Green : 0.98347480;
+ Blue : 0.99056600;
+ Alpha : 1.00000000;
+ };
+ Upper : {
+ Red : 0.00000000;
+ Green : 0.00000000;
+ Blue : 1.00000000;
+ Alpha : 1.00000000;
+ };
+ NumberOfColors : 10;
+ };
+ LabelSettings : {
+ Show : True;
+ Distance : 0.20000000;
+ FontSize : 0.40000000;
+ AnimationDuration : 0.50000000;
+ };
+ AntennnaSettings : {
+ Width : 0.10000000;
+ AntennaSections : [
+ ];
+ };
+ OutlineWidth : 1.00000000;
+ ShowNames : False;
+ InnerDonutMetric : "Metric.IssuesTotal";
+ };
+ErosionIssues : {
+ ShowInnerErosions : False;
+ ShowLeafErosions : False;
+ LoadDashboardMetrics : False;
+ OverrideMetrics : True;
+ ShowIssuesInCodeWindow : False;
+ IssuesAddedFromVersion : "";
+ ErosionScalingFactor : 1.50000000;
+ StyleIssue : "Metric.Style";
+ UniversalIssue : "Metric.Universal";
+ MetricIssue : "Metric.Metric";
+ Dead_CodeIssue : "Metric.Dead_Code";
+ CycleIssue : "Metric.Cycle";
+ CloneIssue : "Metric.Clone";
+ ArchitectureIssue : "Metric.Architecture_Violations";
+ StyleIssue_SUM : "Metric.Style_SUM";
+ UniversalIssue_SUM : "Metric.Universal_SUM";
+ MetricIssue_SUM : "Metric.Metric_SUM";
+ Dead_CodeIssue_SUM : "Metric.Dead_Code_SUM";
+ CycleIssue_SUM : "Metric.Cycle_SUM";
+ CloneIssue_SUM : "Metric.Clone_SUM";
+ ArchitectureIssue_SUM : "Metric.Architecture_Violations_SUM";
+ };
+NodeLayout : {
+ NodeLayout : "CirclePacking";
+ LayoutPath : {
+ Root : "AssetsFolder";
+ RelativePath : "";
+ AbsolutePath : "";
+ };
+ };
+EdgeLayout : {
+ EdgeLayout : "Bundling";
+ EdgeWidth : 0.01000000;
+ EdgesAboveBlocks : True;
+ Tension : 0.85000000;
+ RDP : 0.00010000;
+ };
+EdgeSelection : {
+ TubularSegments : 50;
+ Radius : 0.00500000;
+ RadialSegments : 8;
+ AreSelectable : True;
+ };
+CoseGraph : {
+ EdgeLength : 20;
+ UseSmartIdealEdgeCalculation : False;
+ UseSmartMultilevelScaling : False;
+ PerLevelIdealEdgeLengthFactor : 0.10000000;
+ UseSmartRepulsionRangeCalculation : False;
+ GravityStrength : 0.80000000;
+ CompoundGravityStrength : 1.50000000;
+ RepulsionStrength : 50.00000000;
+ MultiLevelScaling : False;
+ ListInnerNodeToggle : [
+ ];
+ InnerNodeLayout : [
+ ];
+ InnerNodeShape : [
+ ];
+ LoadedForNodeTypes : [
+ ];
+ UseCalculationParameter : True;
+ UseIterativeCalculation : False;
+ };
+GXLPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini3/CodeFacts.gxl";
+ AbsolutePath : "";
+ };
+CSVPath : {
+ Root : "StreamingAssets";
+ RelativePath : "";
+ AbsolutePath : "";
+ };
diff --git a/Assets/StreamingAssets/mini_calculator/CodeFacts.cfg.meta b/Assets/StreamingAssets/mini_calculator/CodeFacts.cfg.meta
new file mode 100644
index 0000000000..0c13364516
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/CodeFacts.cfg.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: e30e5d6abcdcc485284f2cfa048fe7e7
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/CodeFacts.csv b/Assets/StreamingAssets/mini_calculator/CodeFacts.csv
new file mode 100755
index 0000000000..cea2b34be1
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/CodeFacts.csv
@@ -0,0 +1,5 @@
+ID;Metric.Developers
+C global:mini:C1^:C1;5
+C global:mini:C2^:C2;3
+C global:mini:MainClass^:!12+9!;2
+F global:mini:C2^:C2:attr;1
diff --git a/Assets/StreamingAssets/mini_calculator/CodeFacts.csv.meta b/Assets/StreamingAssets/mini_calculator/CodeFacts.csv.meta
new file mode 100644
index 0000000000..f743884b3e
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/CodeFacts.csv.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f38526f1a210c4cfc947a4d12ccdd3c6
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/CodeFacts.gvl b/Assets/StreamingAssets/mini_calculator/CodeFacts.gvl
new file mode 100755
index 0000000000..0e3b77ce3e
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/CodeFacts.gvl
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/StreamingAssets/mini_calculator/CodeFacts.gvl.meta b/Assets/StreamingAssets/mini_calculator/CodeFacts.gvl.meta
new file mode 100644
index 0000000000..43c5080590
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/CodeFacts.gvl.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 452e3cdea3b59426087d8167dcdf27f2
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/CodeFacts.gxl b/Assets/StreamingAssets/mini_calculator/CodeFacts.gxl
new file mode 100755
index 0000000000..dcffc33a4e
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/CodeFacts.gxl
@@ -0,0 +1,3564 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 86923
+
+
+ 17
+
+
+ 23
+
+
+ 17
+
+
+ 17
+
+
+ 1
+
+
+ 1
+
+
+ 17
+
+
+ 17
+
+
+ 1
+
+
+ 0
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 4
+
+
+ 3
+
+
+ 4
+
+
+ 3
+
+
+ 7
+
+
+ 7
+
+
+ 1.000000
+
+
+ 19.651485
+
+
+ 2.000000
+
+
+ 39.302971
+
+
+ p global:mini:Calculator:Operator^:!23+8!:Left
+
+
+ Left
+
+
+ src/
+
+
+ Operator.cs
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 86924
+
+
+ 22
+
+
+ 23
+
+
+ 22
+
+
+ 22
+
+
+ 1
+
+
+ 1
+
+
+ 22
+
+
+ 22
+
+
+ 1
+
+
+ 0
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 4
+
+
+ 3
+
+
+ 4
+
+
+ 3
+
+
+ 7
+
+
+ 7
+
+
+ 1.000000
+
+
+ 19.651485
+
+
+ 2.000000
+
+
+ 39.302971
+
+
+ p global:mini:Calculator:Operator^:!23+8!:Right
+
+
+ Right
+
+
+ src/
+
+
+ Operator.cs
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 167
+
+
+ 6
+
+
+ 5
+
+
+ 6
+
+
+ 6
+
+
+ 24
+
+
+ 24
+
+
+ 6
+
+
+ 6
+
+
+ 24
+
+
+ 3
+
+
+ 21
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 24
+
+
+ 21
+
+
+ 0
+
+
+ 66
+
+
+ 34
+
+
+ 17
+
+
+ 18
+
+
+ 100
+
+
+ 35
+
+
+ 2.857143
+
+
+ 512.928284
+
+
+ 16.055555
+
+
+ 8235.348633
+
+
+ C global:mini:MainClass^:!12+9!
+
+
+ MainClass
+
+
+ src/
+
+
+ MainClass.cs
+
+
+ src/
+
+
+ MainClass.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 581
+
+
+ 5
+
+
+ 12
+
+
+ 5
+
+
+ 5
+
+
+ 38
+
+
+ 38
+
+
+ 5
+
+
+ 5
+
+
+ 38
+
+
+ 1
+
+
+ 27
+
+
+ 10
+
+
+ 10
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 38
+
+
+ 27
+
+
+ 10
+
+
+ 78
+
+
+ 37
+
+
+ 21
+
+
+ 20
+
+
+ 115
+
+
+ 41
+
+
+ 2.804878
+
+
+ 616.118469
+
+
+ 19.424999
+
+
+ 11968.100586
+
+
+ C global:mini:Calculator:!14+10!^:!23+10!
+
+
+ Calculator
+
+
+ src/
+
+
+ Calculator.cs
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 582
+
+
+ 6
+
+
+ 12
+
+
+ 6
+
+
+ 6
+
+
+ 11
+
+
+ 11
+
+
+ 6
+
+
+ 6
+
+
+ 11
+
+
+ 1
+
+
+ 10
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 11
+
+
+ 10
+
+
+ 0
+
+
+ 28
+
+
+ 10
+
+
+ 14
+
+
+ 7
+
+
+ 38
+
+
+ 21
+
+
+ 1.809524
+
+
+ 166.908051
+
+
+ 10.000000
+
+
+ 1669.080566
+
+
+ C global:mini:Calculator:Minus^:Minus
+
+
+ Minus
+
+
+ src/
+
+
+ Minus.cs
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 583
+
+
+ 12
+
+
+ 21
+
+
+ 12
+
+
+ 12
+
+
+ 33
+
+
+ 33
+
+
+ 12
+
+
+ 12
+
+
+ 33
+
+
+ 3
+
+
+ 11
+
+
+ 19
+
+
+ 19
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 33
+
+
+ 11
+
+
+ 19
+
+
+ 30
+
+
+ 16
+
+
+ 12
+
+
+ 8
+
+
+ 46
+
+
+ 20
+
+
+ 2.300000
+
+
+ 198.808685
+
+
+ 12.000000
+
+
+ 2385.704102
+
+
+ C global:mini:Calculator:Operator^:!23+8!
+
+
+ Operator
+
+
+ src/
+
+
+ Operator.cs
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 584
+
+
+ 6
+
+
+ 12
+
+
+ 6
+
+
+ 6
+
+
+ 11
+
+
+ 11
+
+
+ 6
+
+
+ 6
+
+
+ 11
+
+
+ 1
+
+
+ 10
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 11
+
+
+ 10
+
+
+ 0
+
+
+ 28
+
+
+ 10
+
+
+ 14
+
+
+ 7
+
+
+ 38
+
+
+ 21
+
+
+ 1.809524
+
+
+ 166.908051
+
+
+ 10.000000
+
+
+ 1669.080566
+
+
+ C global:mini:Calculator:Plus^:Plus
+
+
+ Plus
+
+
+ src/
+
+
+ Plus.cs
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+
+
+
+
+
+
+ 95525
+
+
+ 17
+
+
+ 23
+
+
+ 17
+
+
+ 17
+
+
+ 25
+
+
+ 25
+
+
+ 17
+
+
+ 17
+
+
+ 3
+
+
+ 15
+
+
+ 1
+
+
+ 0
+
+
+ 9
+
+
+ 5
+
+
+ 5
+
+
+ 3
+
+
+ 4
+
+
+ 4
+
+
+ 24
+
+
+ 4
+
+
+ 2
+
+
+ 2
+
+
+ 1
+
+
+ 25
+
+
+ 1
+
+
+ 24
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 25
+
+
+ 24
+
+
+ 0
+
+
+ 74
+
+
+ 36
+
+
+ 20
+
+
+ 19
+
+
+ 110
+
+
+ 39
+
+
+ 0
+
+
+ 6
+
+
+ 1
+
+
+ 2.820513
+
+
+ 581.394226
+
+
+ 18.947369
+
+
+ 11015.890625
+
+
+ 0.066667
+
+
+ R global:mini:Calculator:!14+10!^:!23+10!:!14+8!e(!0+6!System:String@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll^,!53+78!,!134+7!)_s->!53+11!Double@C:!76+56!
+
+
+ Calculate
+
+
+ src/
+
+
+ Calculator.cs
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+
+
+
+
+
+
+ 95526
+
+
+ 8
+
+
+ 32
+
+
+ 8
+
+
+ 8
+
+
+ 4
+
+
+ 4
+
+
+ 8
+
+
+ 8
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 3
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 4
+
+
+ 0
+
+
+ 4
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 4
+
+
+ 4
+
+
+ 0
+
+
+ 10
+
+
+ 3
+
+
+ 10
+
+
+ 3
+
+
+ 13
+
+
+ 13
+
+
+ 0
+
+
+ 2
+
+
+ 0
+
+
+ 1.000000
+
+
+ 48.105713
+
+
+ 5.000000
+
+
+ 240.528564
+
+
+ 0.000000
+
+
+ R global:mini:Calculator:Minus^:Minus:Execute()_s->!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
+
+
+ Execute
+
+
+ src/
+
+
+ Minus.cs
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+
+
+
+
+
+
+ 95527
+
+
+ 43
+
+
+ 32
+
+
+ 43
+
+
+ 43
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ R global:mini:Calculator:Operator^:!23+8!:Execute()_s->!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
+
+
+ Execute
+
+
+ src/
+
+
+ Operator.cs
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+
+
+
+
+
+
+ 95528
+
+
+ 8
+
+
+ 32
+
+
+ 8
+
+
+ 8
+
+
+ 4
+
+
+ 4
+
+
+ 8
+
+
+ 8
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 3
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 4
+
+
+ 0
+
+
+ 4
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 4
+
+
+ 4
+
+
+ 0
+
+
+ 10
+
+
+ 3
+
+
+ 10
+
+
+ 3
+
+
+ 13
+
+
+ 13
+
+
+ 0
+
+
+ 2
+
+
+ 0
+
+
+ 1.000000
+
+
+ 48.105713
+
+
+ 5.000000
+
+
+ 240.528564
+
+
+ 0.000000
+
+
+ R global:mini:Calculator:Plus^:Plus:Execute()_s->!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
+
+
+ Execute
+
+
+ src/
+
+
+ Plus.cs
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+
+
+
+
+
+
+ 104766
+
+
+ 17
+
+
+ 30
+
+
+ 17
+
+
+ 17
+
+
+ 0
+
+
+ 0
+
+
+ 2
+
+
+ R global:mini:Calculator:Operator^:!23+8!:get_Left[Left]()_s->!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
+
+
+ get_Left
+
+
+ src/
+
+
+ Operator.cs
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+
+
+
+
+
+
+ 104767
+
+
+ 22
+
+
+ 31
+
+
+ 22
+
+
+ 22
+
+
+ 0
+
+
+ 0
+
+
+ 2
+
+
+ R global:mini:Calculator:Operator^:!23+8!:get_Right[Right]()_s->!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
+
+
+ get_Right
+
+
+ src/
+
+
+ Operator.cs
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 110712
+
+
+ 8
+
+
+ 21
+
+
+ 8
+
+
+ 8
+
+
+ 21
+
+
+ 21
+
+
+ 8
+
+
+ 8
+
+
+ 1
+
+
+ 11
+
+
+ 0
+
+
+ 0
+
+
+ 10
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
+ 20
+
+
+ 2
+
+
+ 1
+
+
+ 1
+
+
+ 0
+
+
+ 21
+
+
+ 3
+
+
+ 18
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 21
+
+
+ 18
+
+
+ 0
+
+
+ 63
+
+
+ 33
+
+
+ 16
+
+
+ 17
+
+
+ 96
+
+
+ 33
+
+
+ 0
+
+
+ 5
+
+
+ 1
+
+
+ 2.909091
+
+
+ 484.261841
+
+
+ 15.529411
+
+
+ 7520.301270
+
+
+ 0.000000
+
+
+ R global:mini:MainClass^:!12+9!:Main(!0+6!System:!35+11!String@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll^[]^)_s->!35+11!Void@C:!65+56!
+
+
+ Main
+
+
+ src/
+
+
+ MainClass.cs
+
+
+ src/
+
+
+ MainClass.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 117167
+
+
+ 13
+
+
+ 16
+
+
+ 13
+
+
+ 13
+
+
+ 3
+
+
+ 3
+
+
+ 13
+
+
+ 13
+
+
+ 2
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 2
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 3
+
+
+ 0
+
+
+ 3
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 3
+
+
+ 3
+
+
+ 0
+
+
+ 13
+
+
+ 5
+
+
+ 9
+
+
+ 3
+
+
+ 18
+
+
+ 12
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 1.500000
+
+
+ 64.529320
+
+
+ 7.500000
+
+
+ 483.969910
+
+
+ R global:mini:Calculator:Minus^:Minus:Minus(.ctor)(!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll,!49+77!)_s->!49+11!Void@C:!72+56!
+
+
+ Minus
+
+
+ src/
+
+
+ Minus.cs
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 117168
+
+
+ 31
+
+
+ 19
+
+
+ 31
+
+
+ 31
+
+
+ 5
+
+
+ 5
+
+
+ 31
+
+
+ 31
+
+
+ 2
+
+
+ 2
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 4
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ 5
+
+
+ 0
+
+
+ 5
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 5
+
+
+ 5
+
+
+ 0
+
+
+ 12
+
+
+ 7
+
+
+ 9
+
+
+ 5
+
+
+ 19
+
+
+ 14
+
+
+ 0
+
+
+ 1
+
+
+ 2
+
+
+ 1.357143
+
+
+ 72.339745
+
+
+ 6.300000
+
+
+ 455.740417
+
+
+ 0.500000
+
+
+ R global:mini:Calculator:Operator^:!23+8!:!25+8!(.ctor)(!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll,!56+77!)_s->!56+11!Void@C:!79+56!
+
+
+ Operator
+
+
+ src/
+
+
+ Operator.cs
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 117169
+
+
+ 13
+
+
+ 16
+
+
+ 13
+
+
+ 13
+
+
+ 3
+
+
+ 3
+
+
+ 13
+
+
+ 13
+
+
+ 2
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 2
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 3
+
+
+ 0
+
+
+ 3
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 3
+
+
+ 3
+
+
+ 0
+
+
+ 13
+
+
+ 5
+
+
+ 9
+
+
+ 3
+
+
+ 18
+
+
+ 12
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 1.500000
+
+
+ 64.529320
+
+
+ 7.500000
+
+
+ 483.969910
+
+
+ R global:mini:Calculator:Plus^:Plus:Plus(.ctor)(!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll,!46+77!)_s->!46+11!Void@C:!69+56!
+
+
+ Plus
+
+
+ src/
+
+
+ Plus.cs
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+
+
+
+
+
+
+ 16990
+
+
+ F global:mini:Calculator:Operator^:!23+8!:<Left>k__BackingField
+
+
+ <Left>k__BackingField
+
+
+
+
+
+
+
+
+
+
+
+ 16991
+
+
+ F global:mini:Calculator:Operator^:!23+8!:<Right>k__BackingField
+
+
+ <Right>k__BackingField
+
+
+
+
+
+ 90203
+
+
+ N global:mini
+
+
+ mini
+
+
+
+
+
+ 90222
+
+
+ N global:mini:Calculator
+
+
+ Calculator
+
+
+
+
+
+ 6
+
+
+ 5
+
+
+ 167
+
+
+ src/
+
+
+ MainClass.cs
+
+
+
+
+
+ 5
+
+
+ 12
+
+
+ 581
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 6
+
+
+ 12
+
+
+ 582
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+
+
+
+ 6
+
+
+ 26
+
+
+ 582
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+ 12
+
+
+ 21
+
+
+ 583
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+ 6
+
+
+ 12
+
+
+ 584
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+
+
+
+ 6
+
+
+ 25
+
+
+ 584
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+ 16990
+
+
+
+
+
+ 16991
+
+
+
+
+
+ 17
+
+
+ 23
+
+
+ 86923
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+ 22
+
+
+ 23
+
+
+ 86924
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+ 3
+
+
+ 1
+
+
+ 90222
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 17
+
+
+ 23
+
+
+ 95525
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 19
+
+
+ 22
+
+
+ 95525
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 8
+
+
+ 32
+
+
+ 95526
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+ 8
+
+
+ 32
+
+
+ 95526
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+ 43
+
+
+ 32
+
+
+ 95527
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+ 8
+
+
+ 32
+
+
+ 95528
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+ 8
+
+
+ 32
+
+
+ 95528
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+ 17
+
+
+ 30
+
+
+ 104766
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+ 22
+
+
+ 31
+
+
+ 104767
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+ 8
+
+
+ 21
+
+
+ 110712
+
+
+ src/
+
+
+ MainClass.cs
+
+
+
+
+
+ 19
+
+
+ 35
+
+
+ 110712
+
+
+ src/
+
+
+ MainClass.cs
+
+
+
+
+
+ 13
+
+
+ 16
+
+
+ 117167
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+ 31
+
+
+ 19
+
+
+ 117168
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+ 13
+
+
+ 16
+
+
+ 117169
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+ 25
+
+
+ 30
+
+
+ 160976
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 25
+
+
+ 30
+
+
+ 160976
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 28
+
+
+ 30
+
+
+ 160977
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 28
+
+
+ 30
+
+
+ 160977
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 583
+
+
+ 40
+
+
+ 30
+
+
+ 160970
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+
+
+
+ 583
+
+
+ 160929
+
+
+
+
+
+
+
+
+ 583
+
+
+ 160931
+
+
+
+
+
+ 19
+
+
+ 39
+
+
+ 160975
+
+
+ src/
+
+
+ MainClass.cs
+
+
+
+
+
+ 581
+
+
+ 22
+
+
+ 65
+
+
+ 160969
+
+
+ src/
+
+
+ MainClass.cs
+
+
+
+
+
+ 13
+
+
+ 51
+
+
+ 160966
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+
+
+
+ 583
+
+
+ 160979
+
+
+
+
+
+
+
+
+ 583
+
+
+ 160980
+
+
+
+
+
+ 13
+
+
+ 50
+
+
+ 160968
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
diff --git a/Assets/StreamingAssets/mini_calculator/CodeFacts.gxl.meta b/Assets/StreamingAssets/mini_calculator/CodeFacts.gxl.meta
new file mode 100644
index 0000000000..e82d8c9063
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/CodeFacts.gxl.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4a7f1b401e53a4557818cc64df41b2f9
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/CodeFacts.sld b/Assets/StreamingAssets/mini_calculator/CodeFacts.sld
new file mode 100755
index 0000000000..e87b48a5e1
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/CodeFacts.sld
@@ -0,0 +1,7 @@
+p1;-0.747;0.9665894;0.011;0;0;0;1;0.003078666;1
+p1.c2;-0.7837995;1.000039;0.2050307;0;0;0;0.1028275;0.06181962;0.1028275
+p1.c3;-1.021194;1.030794;0.1542153;0;0;0;0.2053471;0.1233314;0.2053471
+p1.c4;-0.8217776;1.06155;-0.2137368;0;0;0;0.3078666;0.1848431;0.3078666
+p1.c1;-0.5136386;0.9706681;0.1709507;0;0;0;0.3432581;0.003078666;0.3432581
+p1.c1.m1;-0.5969551;1.127141;0.1709507;0;0;0;0.1028275;0.3078666;0.1028275
+p1.c1.f1;-0.4303222;1.004117;0.1709507;0;0;0;0.1028275;0.06181962;0.1028275
diff --git a/Assets/StreamingAssets/mini_calculator/CodeFacts.sld.meta b/Assets/StreamingAssets/mini_calculator/CodeFacts.sld.meta
new file mode 100644
index 0000000000..2898777ed0
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/CodeFacts.sld.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 67c5b44dbea5941e287379d55dd8e77f
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/Mapping.gxl b/Assets/StreamingAssets/mini_calculator/Mapping.gxl
new file mode 100755
index 0000000000..9e2166d082
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/Mapping.gxl
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/Assets/StreamingAssets/mini_calculator/Mapping.gxl.meta b/Assets/StreamingAssets/mini_calculator/Mapping.gxl.meta
new file mode 100644
index 0000000000..783c3bb5c3
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/Mapping.gxl.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f8780da4d8537408ab80d0a9dbcdb984
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/build.bat b/Assets/StreamingAssets/mini_calculator/build.bat
new file mode 100755
index 0000000000..91e90a116e
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/build.bat
@@ -0,0 +1,30 @@
+@echo off
+
+REM This script creates a GXL file for all C# source files located in directory src.
+REM Precondition: The Axivion Suite must be installed.
+
+setlocal enabledelayedexpansion
+
+REM Determine the parent directory of the current directory
+REM for %%i in ("%~dp0..") do set "parent=%%~fi"
+set "base=%~dp0"
+REM Replace backslashes to slashes: Axivion Suite uses slashes
+set "base=%base:\=/%"
+
+REM Collect the source files
+set "files="
+for /R "src" %%f in (*.cs) do set files=!files! "%%f"
+echo "Process %files%"
+
+REM Create RFG for code
+cafesharp.exe -B"%base%" /out:mini.ir %files%
+ir2rfg.exe mini.ir mini.rfg
+
+REM Reduce the graph and export to GXL
+rfgscript reduce.py --graph mini.rfg --view "Code Facts" --linkname "N global:mini" out.rfg
+rfgexport -f GXL --view "Code Facts" out.rfg CodeFacts.gxl
+
+REM Delete intermediate files
+del out.rfg
+del mini.ir
+del mini.rfg
diff --git a/Assets/StreamingAssets/mini_calculator/build.bat.meta b/Assets/StreamingAssets/mini_calculator/build.bat.meta
new file mode 100644
index 0000000000..0d0cf6e1ea
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/build.bat.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 822b73eb44ccb473d9a1f508aa8c58e0
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/mini.cfg b/Assets/StreamingAssets/mini_calculator/mini.cfg
new file mode 100755
index 0000000000..f1920bbffb
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/mini.cfg
@@ -0,0 +1,360 @@
+ConfigPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini/mini.cfg";
+ AbsolutePath : "";
+};
+ProjectPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini/";
+ AbsolutePath : "";
+};
+SolutionPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini/src/mini.sln";
+ AbsolutePath : "";
+};
+LODCulling : 0.00100000;
+HierarchicalEdges : [
+ "Enclosing";
+ "Belongs_To";
+ "Part_Of";
+ "Defined_In";
+];
+NodeTypes : [
+ {
+ nodeType : "Class";
+ visualNodeAttributes : {
+ Shape : "Cylinders";
+ IsRelevant : True;
+ MetricToLength : [
+ "0.1";
+ "0.0001";
+ "0.1";
+ ];
+ ColorProperty : {
+ Property : "Type";
+ TypeColor : {
+ Red : 0.19353980;
+ Green : 0.93396230;
+ Blue : 0.06608222;
+ Alpha : 1.00000000;
+ };
+ ByLevel : True;
+ ColorMetric : "";
+ };
+ MinimalBlockLength : 0.00010000;
+ MaximalBlockLength : 1.00000000;
+ LabelSettings : {
+ Show : True;
+ Distance : 0.20000000;
+ FontSize : 0.40000000;
+ AnimationDuration : 0.50000000;
+ LabelAlpha : 1.00000000;
+ };
+ AntennnaSettings : {
+ AntennaSections : [
+ ];
+ };
+ OutlineWidth : 1.00000000;
+ ShowNames : False;
+ };
+ };
+ {
+ nodeType : "Method";
+ visualNodeAttributes : {
+ Shape : "Blocks";
+ IsRelevant : True;
+ MetricToLength : [
+ "Metric.LOC";
+ "Metric.Number_Of_Parameters";
+ "Metric.McCabe_Complexity";
+ ];
+ ColorProperty : {
+ Property : "Metric";
+ TypeColor : {
+ Red : 1.00000000;
+ Green : 1.00000000;
+ Blue : 1.00000000;
+ Alpha : 1.00000000;
+ };
+ ByLevel : True;
+ ColorMetric : "Metric.Lines.LOC";
+ };
+ MinimalBlockLength : 0.00100000;
+ MaximalBlockLength : 1.00000000;
+ LabelSettings : {
+ Show : True;
+ Distance : 0.20000000;
+ FontSize : 0.40000000;
+ AnimationDuration : 0.50000000;
+ LabelAlpha : 1.00000000;
+ };
+ AntennnaSettings : {
+ AntennaSections : [
+ "Metric.Number_Of_Invocations";
+ "Metric.Lines.LOC";
+ "Metric.Halstead.Vocabulary";
+ ];
+ };
+ OutlineWidth : 1.00000000;
+ ShowNames : False;
+ };
+ };
+ {
+ nodeType : "Member";
+ visualNodeAttributes : {
+ Shape : "Blocks";
+ IsRelevant : True;
+ MetricToLength : [
+ "0.5";
+ "0.5";
+ "0.5";
+ ];
+ ColorProperty : {
+ Property : "Type";
+ TypeColor : {
+ Red : 0.97457360;
+ Green : 0.99056600;
+ Blue : 0.07943219;
+ Alpha : 1.00000000;
+ };
+ ByLevel : True;
+ ColorMetric : "";
+ };
+ MinimalBlockLength : 0.00100000;
+ MaximalBlockLength : 1.00000000;
+ LabelSettings : {
+ Show : True;
+ Distance : 0.20000000;
+ FontSize : 0.40000000;
+ AnimationDuration : 0.50000000;
+ LabelAlpha : 1.00000000;
+ };
+ AntennnaSettings : {
+ AntennaSections : [
+ ];
+ };
+ OutlineWidth : 1.00000000;
+ ShowNames : False;
+ };
+ };
+ {
+ nodeType : "Namespace";
+ visualNodeAttributes : {
+ Shape : "Cylinders";
+ IsRelevant : True;
+ MetricToLength : [
+ "0.1";
+ "0.0001";
+ "0.1";
+ ];
+ ColorProperty : {
+ Property : "Type";
+ TypeColor : {
+ Red : 0.00000000;
+ Green : 0.00000000;
+ Blue : 1.00000000;
+ Alpha : 1.00000000;
+ };
+ ByLevel : True;
+ ColorMetric : "";
+ };
+ MinimalBlockLength : 0.00100000;
+ MaximalBlockLength : 1.00000000;
+ LabelSettings : {
+ Show : True;
+ Distance : 0.20000000;
+ FontSize : 0.40000000;
+ AnimationDuration : 0.50000000;
+ LabelAlpha : 1.00000000;
+ };
+ AntennnaSettings : {
+ AntennaSections : [
+ ];
+ };
+ OutlineWidth : 1.00000000;
+ ShowNames : False;
+ };
+ };
+ {
+ nodeType : "UNKNOWNTYPE";
+ visualNodeAttributes : {
+ Shape : "Blocks";
+ IsRelevant : True;
+ MetricToLength : [
+ "0.1";
+ "0.1";
+ "0.1";
+ ];
+ ColorProperty : {
+ Property : "Type";
+ TypeColor : {
+ Red : 0.00000000;
+ Green : 0.00000000;
+ Blue : 0.00000000;
+ Alpha : 1.00000000;
+ };
+ ByLevel : True;
+ ColorMetric : "";
+ };
+ MinimalBlockLength : 0.00100000;
+ MaximalBlockLength : 1.00000000;
+ LabelSettings : {
+ Show : True;
+ Distance : 0.20000000;
+ FontSize : 0.40000000;
+ AnimationDuration : 0.50000000;
+ LabelAlpha : 1.00000000;
+ };
+ AntennnaSettings : {
+ AntennaSections : [
+ ];
+ };
+ OutlineWidth : 1.00000000;
+ ShowNames : False;
+ };
+ };
+];
+IgnoreSelfLoopsInLifting : False;
+MaximalAntennaSegmentHeight : 0.25000000;
+AntennaWidth : 0.05000000;
+MetricToColor : [
+ {
+ name : "Metric.Lines.LOC";
+ color : {
+ Lower : {
+ Red : 1.00000000;
+ Green : 1.00000000;
+ Blue : 1.00000000;
+ Alpha : 1.00000000;
+ };
+ Upper : {
+ Red : 1.00000000;
+ Green : 0.00000000;
+ Blue : 0.00000000;
+ Alpha : 1.00000000;
+ };
+ NumberOfColors : 10;
+ };
+ };
+ {
+ name : "Metric.Number_Of_Invocations";
+ color : {
+ Lower : {
+ Red : 0.00000000;
+ Green : 0.99215690;
+ Blue : 1.00000000;
+ Alpha : 1.00000000;
+ };
+ Upper : {
+ Red : 0.00000000;
+ Green : 0.00000000;
+ Blue : 1.00000000;
+ Alpha : 1.00000000;
+ };
+ NumberOfColors : 2;
+ };
+ };
+ {
+ name : "Metric.Halstead.Vocabulary";
+ color : {
+ Lower : {
+ Red : 0.79294230;
+ Green : 0.97169810;
+ Blue : 0.88174930;
+ Alpha : 1.00000000;
+ };
+ Upper : {
+ Red : 0.00000000;
+ Green : 1.00000000;
+ Blue : 0.00000000;
+ Alpha : 1.00000000;
+ };
+ NumberOfColors : 10;
+ };
+ };
+];
+ZScoreScale : False;
+ScaleOnlyLeafMetrics : True;
+ErosionIssues : {
+ ShowInnerErosions : False;
+ ShowLeafErosions : False;
+ LoadDashboardMetrics : False;
+ OverrideMetrics : True;
+ ShowIssuesInCodeWindow : False;
+ IssuesAddedFromVersion : "";
+ ErosionScalingFactor : 1.50000000;
+ StyleIssue : "Metric.Style";
+ UniversalIssue : "Metric.Universal";
+ MetricIssue : "Metric.Metric";
+ Dead_CodeIssue : "Metric.Dead_Code";
+ CycleIssue : "Metric.Cycle";
+ CloneIssue : "Metric.Clone";
+ ArchitectureIssue : "Metric.Architecture_Violations";
+ StyleIssue_SUM : "Metric.Style_SUM";
+ UniversalIssue_SUM : "Metric.Universal_SUM";
+ MetricIssue_SUM : "Metric.Metric_SUM";
+ Dead_CodeIssue_SUM : "Metric.Dead_Code_SUM";
+ CycleIssue_SUM : "Metric.Cycle_SUM";
+ CloneIssue_SUM : "Metric.Clone_SUM";
+ ArchitectureIssue_SUM : "Metric.Architecture_Violations_SUM";
+};
+BoardSettings : {
+ BoardPath : {
+ Root : "AssetsFolder";
+ RelativePath : "";
+ AbsolutePath : "";
+ };
+};
+NodeLayout : {
+ NodeLayout : "CirclePacking";
+ LayoutPath : {
+ Root : "AssetsFolder";
+ RelativePath : "";
+ AbsolutePath : "";
+ };
+};
+EdgeLayout : {
+ EdgeLayout : "Bundling";
+ EdgeWidth : 0.01000000;
+ EdgesAboveBlocks : True;
+ Tension : 0.85000000;
+ RDP : 0.00010000;
+};
+EdgeSelection : {
+ TubularSegments : 50;
+ Radius : 0.00500000;
+ RadialSegments : 8;
+ AreSelectable : True;
+};
+CoseGraph : {
+ EdgeLength : 20;
+ UseSmartIdealEdgeCalculation : False;
+ UseSmartMultilevelScaling : False;
+ PerLevelIdealEdgeLengthFactor : 0.10000000;
+ UseSmartRepulsionRangeCalculation : False;
+ GravityStrength : 0.80000000;
+ CompoundGravityStrength : 1.50000000;
+ RepulsionStrength : 50.00000000;
+ MultiLevelScaling : False;
+ ListInnerNodeToggle : [
+ ];
+ InnerNodeLayout : [
+ ];
+ InnerNodeShape : [
+ ];
+ LoadedForNodeTypes : [
+ ];
+ UseCalculationParameter : True;
+ UseIterativeCalculation : False;
+};
+GXLPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini/CodeFacts.gxl";
+ AbsolutePath : "";
+};
+CSVPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini/CodeFacts.csv";
+ AbsolutePath : "";
+};
diff --git a/Assets/StreamingAssets/mini_calculator/mini.cfg.meta b/Assets/StreamingAssets/mini_calculator/mini.cfg.meta
new file mode 100644
index 0000000000..bf3c916729
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/mini.cfg.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: a79f4aa83c1a24e83942053da71a5886
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/reduce.py b/Assets/StreamingAssets/mini_calculator/reduce.py
new file mode 100755
index 0000000000..0ea4542244
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/reduce.py
@@ -0,0 +1,93 @@
+#!/usr/bin/env rfgscript
+
+# This script allows to reduce a view to all nodes in a subtree rooted by a given
+# node and all the edges between nodes of this subtree. Artifical nodes are
+# removed, too.
+
+from bauhaus.shared import bauhaustool
+from bauhaus.rfg import Graph, View, Node, EdgeType, NodeSet, EdgeSet, misc, rfgtool
+
+INPUTS = {
+ 'graph' : { 'doc' : 'the input rfg',
+ 'type' : 'rfg',
+ 'switches' : ['--graph', '--rfg'],
+ },
+ 'view' : { 'doc' : 'the view to be reduced',
+ 'type' : 'string',
+ 'switches' : ['--view'],
+ },
+ 'linkname' : { 'doc' : 'the linkage name of the node to be kept',
+ 'type' : 'string',
+ 'switches' : ['--linkname'],
+ },
+ }
+OUTPUT = 'rfg'
+
+# Name of the super type of all hierarchical edges
+BELONGS_TO = "Belongs_To"
+
+def reduce(graph: Graph, view_name: str, linkname: str):
+ """
+ graph: the rfg to be reduced;
+ view_name: the name of the view within graph that should be reduced;
+ linkname: the Linkage.Name of the root node of the node tree to be kept.
+ Returns the resulting modified graph.
+ """
+ if graph.is_edge_type_name(BELONGS_TO):
+ belongs_to = graph.edge_type(BELONGS_TO)
+ if graph.is_view_name(view_name):
+ view = graph.view(view_name)
+ reduce_view(view, linkname, belongs_to)
+ else:
+ print("View %s not found in RFG." % view_name)
+ else:
+ print("Edge type %s does not exist in RFG." % BELONGS_TO)
+ return graph
+
+def reduce_view(view: View, linkname: str, belongs_to: EdgeType):
+ """
+ view: the view to be reduced
+ linkname: the unique Linkage.Name of the root node of the subtree to be kept
+ belongs_to: the hierarchical edge type determining the nesting of the subtree
+ """
+ for node in view.xnodes():
+ if node["Linkage.Name"] == linkname:
+ descendants = gather_descendants(view, node, belongs_to)
+ keep_only(view, descendants)
+ break
+
+def keep_only(view: View, nodes: NodeSet):
+ """
+ Deletes all nodes in view but the ones in 'nodes'. Artifical nodes
+ are deleted no matter whether they are in 'nodes' or not.
+ view: view where nodes not included in 'nodes' are to be deleted
+ nodes: all nodes to be kept
+ """
+ deleted = 0
+ for node in view.xnodes():
+ if "Element.Is_Artificial" in node or node not in nodes:
+ view.remove(node)
+ deleted = deleted + 1
+ print("Deleted %s nodes." % deleted)
+
+def gather_descendants(view: View, root: Node, belongs_to: EdgeType):
+ """ Yields the transitive closure of all nodes reachable from given 'root' node
+ along belongs_to edges in backward direction. In other words, the
+ descendants of 'root' are returned including the root itself.
+ """
+ edge_predicate = misc.create_edge_predicate(view.graph, belongs_to)
+ return misc.transitive_neighbors(root, view, edge_predicate, "backward")
+
+@rfgtool.with_rfg_types
+@bauhaustool.BauhausTool(INPUTS, OUTPUT)
+def perform(**kwargs):
+ graph = kwargs['graph']
+ view = kwargs['view']
+ linkname = kwargs['linkname']
+ reduce(graph, view, linkname)
+ return graph
+
+if __name__ == '__main__':
+ perform.execute_as_command_line_tool\
+ (usage='%prog [options] ',
+ description = 'Reduces a view to a node with given linkage name and all its descendants (including their edges; excluding artificial nodes).')
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator/reduce.py.meta b/Assets/StreamingAssets/mini_calculator/reduce.py.meta
new file mode 100644
index 0000000000..20d5ee23a8
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/reduce.py.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 18c020bcf48a34435a21cd828e15a775
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src.meta b/Assets/StreamingAssets/mini_calculator/src.meta
new file mode 100644
index 0000000000..4f1cfb65dc
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: da8ebb9554b514a98a7278e682ad8d35
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src/Calculator.cs b/Assets/StreamingAssets/mini_calculator/src/Calculator.cs
new file mode 100755
index 0000000000..c870005605
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Calculator.cs
@@ -0,0 +1,43 @@
+using System;
+
+namespace mini.Calculator
+{
+ public class Calculator
+ {
+ ///
+ /// Calculates an operation of two numbers and an operand.
+ ///
+ /// If the operand is not known or the numbers cant be parsed an Exception is thrown
+ ///
+ /// The first operand
+ /// The seconds operand
+ /// The operand of the calculation
+ /// The result of the operation, which is also an
+ /// If the operator in unknown or the or cant be parsed.
+ public Double Calculate(string num1, string num2, string calculationOperator)
+ {
+ Operator op;
+ try
+ {
+ switch (calculationOperator)
+ {
+ case "+":
+ op = new Plus(Double.Parse(num1), Double.Parse(num2));
+ break;
+ case "-":
+ op = new Minus(Double.Parse(num1), Double.Parse(num2));
+ break;
+ default:
+ Console.WriteLine("Upsie wupsie");
+ throw new Exception("Unknown operation");
+ }
+ }
+ catch (Exception e)
+ {
+ throw e;
+ }
+
+ return op.Execute();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator/src/Calculator.cs.meta b/Assets/StreamingAssets/mini_calculator/src/Calculator.cs.meta
new file mode 100644
index 0000000000..ac892b6b63
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Calculator.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: e1b752dc5bb244f7fa3f7ed684186315
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src/Calculator.meta b/Assets/StreamingAssets/mini_calculator/src/Calculator.meta
new file mode 100644
index 0000000000..3a0d7e307e
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Calculator.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b3128dc08b18042c68401d7ea3e9a7c6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src/Calculator/Calculator.cs b/Assets/StreamingAssets/mini_calculator/src/Calculator/Calculator.cs
new file mode 100755
index 0000000000..14785b60c8
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Calculator/Calculator.cs
@@ -0,0 +1,43 @@
+using System;
+
+namespace mini.Calculator
+{
+ public class Calculator
+ {
+ ///
+ /// Calculates an operation of two numbers and an operand.
+ ///
+ /// If the operand is not known or the numbers cant be parsed an Exception is thrown
+ ///
+ /// The first operand
+ /// The seconds operand
+ /// The operand of the calculation
+ /// The result of the operation, which is also an
+ /// If the operator in unknown or the or cant be parsed.
+ public Double Calculate(string num1, string num2, string @operator)
+ {
+ Operator op;
+ try
+ {
+ switch (@operator)
+ {
+ case "+":
+ op = new Plus(Double.Parse(num1), Double.Parse(num2));
+ break;
+ case "-":
+ op = new Minus(Double.Parse(num1), Double.Parse(num2));
+ break;
+ default:
+ Console.WriteLine("Upsie wupsie");
+ throw new Exception("Unknown operation");
+ }
+ }
+ catch (Exception e)
+ {
+ throw e;
+ }
+
+ return op.Execute();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator/src/Calculator/Calculator.cs.meta b/Assets/StreamingAssets/mini_calculator/src/Calculator/Calculator.cs.meta
new file mode 100644
index 0000000000..f867ae7800
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Calculator/Calculator.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 6a27d238ec163434d8acbf0e7b388d9d
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src/Calculator/Operator.cs b/Assets/StreamingAssets/mini_calculator/src/Calculator/Operator.cs
new file mode 100755
index 0000000000..2c0be4085c
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Calculator/Operator.cs
@@ -0,0 +1,45 @@
+using System;
+
+namespace mini.Calculator
+{
+ ///
+ /// This class represents an abstract operator for basic math stuff.
+ ///
+ /// It contains two numbers, which should be processed in the calculation.
+ ///
+ /// This class can be extended to include more math operations.
+ ///
+ public abstract class Operator
+ {
+ ///
+ /// The Left operator.
+ ///
+ public Double Left { get; }
+
+ ///
+ /// The right operator.
+ ///
+ public Double Right { get; }
+
+ ///
+ /// Constructs a new Operator from two operands.
+ ///
+ /// The two operands should be of the type
+ ///
+ /// The left operand
+ /// The right operand
+ protected Operator(double left, double right)
+ {
+ Left = left;
+ Right = right;
+ }
+
+ ///
+ /// Executes the operation.
+ ///
+ /// The implementation should calculate the result.
+ ///
+ /// The result of the operation as
+ public abstract Double Execute();
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator/src/Calculator/Operator.cs.meta b/Assets/StreamingAssets/mini_calculator/src/Calculator/Operator.cs.meta
new file mode 100644
index 0000000000..36cf326733
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Calculator/Operator.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: c6fb1063566a8405cbc819ace0df462f
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators.meta b/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators.meta
new file mode 100644
index 0000000000..d9b60b69ea
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 342cf039c3e11488990d7eb63e6e8f54
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators/Minus.cs b/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators/Minus.cs
new file mode 100755
index 0000000000..d31a3c4c11
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators/Minus.cs
@@ -0,0 +1,17 @@
+namespace mini.Calculator
+{
+ ///
+ /// Same as in just with subtraction.
+ ///
+ public class Minus : Operator
+ {
+ public override double Execute()
+ {
+ return Left + Right;
+ }
+
+ public Minus(double left, double right) : base(left, right)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators/Minus.cs.meta b/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators/Minus.cs.meta
new file mode 100644
index 0000000000..b5b18923b1
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators/Minus.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 665a3d29279b94eabafa319b027f8106
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators/Plus.cs b/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators/Plus.cs
new file mode 100755
index 0000000000..e0775b3682
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators/Plus.cs
@@ -0,0 +1,17 @@
+namespace mini.Calculator
+{
+ ///
+ /// This is an implementation for a simple addition calculation.
+ ///
+ public class Plus : Operator
+ {
+ public override double Execute()
+ {
+ return Left + Right;
+ }
+
+ public Plus(double left, double right) : base(left, right)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators/Plus.cs.meta b/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators/Plus.cs.meta
new file mode 100644
index 0000000000..f92af53119
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Calculator/Operators/Plus.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 22c410b958ba145169a4ef03d9dd4414
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src/MainClass.cs b/Assets/StreamingAssets/mini_calculator/src/MainClass.cs
new file mode 100755
index 0000000000..532db92355
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/MainClass.cs
@@ -0,0 +1,30 @@
+using System;
+using mini.Calculator;
+
+namespace mini
+{
+ class MainClass
+ {
+ static void Main(string[] args)
+ {
+ Console.WriteLine("Bitte Zahl 1 eingeben:\n");
+ string number1 = Console.ReadLine();
+
+ Console.WriteLine("Bitte Zahl 2 eingeben:\n");
+ string number2 = Console.ReadLine();
+
+ Console.WriteLine("Bitte + oder - angeben");
+ string oper = Console.ReadLine();
+
+ Calculator.Calculator c = new Calculator.Calculator();
+ try
+ {
+ Console.WriteLine($"Die Lösung ist: {c.Calculate(number1, number2, oper)}");
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine("Upsie wupsie, i think this calculator Just broke :(");
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator/src/MainClass.cs.meta b/Assets/StreamingAssets/mini_calculator/src/MainClass.cs.meta
new file mode 100644
index 0000000000..32911b3116
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/MainClass.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: a7fd890c34e06470a9fed3b52ba7e647
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src/Minus.cs b/Assets/StreamingAssets/mini_calculator/src/Minus.cs
new file mode 100755
index 0000000000..d31a3c4c11
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Minus.cs
@@ -0,0 +1,17 @@
+namespace mini.Calculator
+{
+ ///
+ /// Same as in just with subtraction.
+ ///
+ public class Minus : Operator
+ {
+ public override double Execute()
+ {
+ return Left + Right;
+ }
+
+ public Minus(double left, double right) : base(left, right)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator/src/Minus.cs.meta b/Assets/StreamingAssets/mini_calculator/src/Minus.cs.meta
new file mode 100644
index 0000000000..6c1f6b5b06
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Minus.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: aa21e15f07705440fa84372d4c29b959
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src/Operator.cs b/Assets/StreamingAssets/mini_calculator/src/Operator.cs
new file mode 100755
index 0000000000..2c0be4085c
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Operator.cs
@@ -0,0 +1,45 @@
+using System;
+
+namespace mini.Calculator
+{
+ ///
+ /// This class represents an abstract operator for basic math stuff.
+ ///
+ /// It contains two numbers, which should be processed in the calculation.
+ ///
+ /// This class can be extended to include more math operations.
+ ///
+ public abstract class Operator
+ {
+ ///
+ /// The Left operator.
+ ///
+ public Double Left { get; }
+
+ ///
+ /// The right operator.
+ ///
+ public Double Right { get; }
+
+ ///
+ /// Constructs a new Operator from two operands.
+ ///
+ /// The two operands should be of the type
+ ///
+ /// The left operand
+ /// The right operand
+ protected Operator(double left, double right)
+ {
+ Left = left;
+ Right = right;
+ }
+
+ ///
+ /// Executes the operation.
+ ///
+ /// The implementation should calculate the result.
+ ///
+ /// The result of the operation as
+ public abstract Double Execute();
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator/src/Operator.cs.meta b/Assets/StreamingAssets/mini_calculator/src/Operator.cs.meta
new file mode 100644
index 0000000000..0e7b8a9436
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Operator.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: fb6eeb035024e4e30a43e3bc04ee6b22
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src/Operators.meta b/Assets/StreamingAssets/mini_calculator/src/Operators.meta
new file mode 100644
index 0000000000..b800f016b7
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Operators.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: aa0c732b993fe420097639b6f91d9825
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src/Plus.cs b/Assets/StreamingAssets/mini_calculator/src/Plus.cs
new file mode 100755
index 0000000000..e0775b3682
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Plus.cs
@@ -0,0 +1,17 @@
+namespace mini.Calculator
+{
+ ///
+ /// This is an implementation for a simple addition calculation.
+ ///
+ public class Plus : Operator
+ {
+ public override double Execute()
+ {
+ return Left + Right;
+ }
+
+ public Plus(double left, double right) : base(left, right)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator/src/Plus.cs.meta b/Assets/StreamingAssets/mini_calculator/src/Plus.cs.meta
new file mode 100644
index 0000000000..459f92099c
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/Plus.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 498b9162d2af0402ab3c274c53eb8c73
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src/bin.meta b/Assets/StreamingAssets/mini_calculator/src/bin.meta
new file mode 100644
index 0000000000..0d4e4afdf5
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/bin.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b0feeb5081f5245f9a998aad03c12669
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator/src/obj.meta b/Assets/StreamingAssets/mini_calculator/src/obj.meta
new file mode 100644
index 0000000000..7af6c2b70c
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator/src/obj.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f6a049a01f08446e79737993ff17a20b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2.meta b/Assets/StreamingAssets/mini_calculator2.meta
new file mode 100644
index 0000000000..bc51442c0c
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 26673f5fd261a1d478933ef0ca68c8c2
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/Architecture.csv b/Assets/StreamingAssets/mini_calculator2/Architecture.csv
new file mode 100755
index 0000000000..42e70c5632
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/Architecture.csv
@@ -0,0 +1,4 @@
+ID;Metric.Number_of_Descendants;Metric.Number_of_Clusters;Metric.Architecture_Violations;Metric.Clone;Metric.Dead_Code;Metric.Cycle;Metric.Metric;Metric.Style;Metric.Universal
+H1;1;1;3;1;0;0;5;23123;0.1
+H2;1;1;3;3;1;0;8;34234;0.1
+H3;1;1;1;6;3;0;2;34;0.1
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator2/Architecture.csv.meta b/Assets/StreamingAssets/mini_calculator2/Architecture.csv.meta
new file mode 100644
index 0000000000..bc3903f6e0
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/Architecture.csv.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 8314ccedab8ac42658546645fcaa4866
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/Architecture.gvl b/Assets/StreamingAssets/mini_calculator2/Architecture.gvl
new file mode 100755
index 0000000000..91ec5c7b0a
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/Architecture.gvl
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/StreamingAssets/mini_calculator2/Architecture.gvl.meta b/Assets/StreamingAssets/mini_calculator2/Architecture.gvl.meta
new file mode 100644
index 0000000000..038333e4ce
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/Architecture.gvl.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 787106870a6d34ebbb0eecf4a1d64ef7
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/Architecture.gxl b/Assets/StreamingAssets/mini_calculator2/Architecture.gxl
new file mode 100755
index 0000000000..4fc305dc1c
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/Architecture.gxl
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+ H1
+
+
+ H1
+
+
+
+
+
+ H2
+
+
+ H2
+
+
+
+
+
+ H3
+
+
+ H3
+
+
+
+
+
+ Architecture
+
+
+ Architecture
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/StreamingAssets/mini_calculator2/Architecture.gxl.meta b/Assets/StreamingAssets/mini_calculator2/Architecture.gxl.meta
new file mode 100644
index 0000000000..333b7b2f06
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/Architecture.gxl.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: cc55eee152e8b417aac28bdd0cfb05e1
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/CodeFacts.cfg b/Assets/StreamingAssets/mini_calculator2/CodeFacts.cfg
new file mode 100755
index 0000000000..38db7ae84a
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/CodeFacts.cfg
@@ -0,0 +1,214 @@
+ConfigPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini3/CodeFacts.cfg";
+ AbsolutePath : "";
+ };
+ProjectPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini3";
+ AbsolutePath : "";
+ };
+SolutionPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini3/src/mini.sln";
+ AbsolutePath : "";
+ };
+LODCulling : 0.00100000;
+HierarchicalEdges : [
+ "Enclosing";
+ "Belongs_To";
+ "Part_Of";
+ "Defined_In";
+ ];
+NodeTypes : [
+ [
+ "Class";
+ True;
+ ];
+ [
+ "Method";
+ True;
+ ];
+ [
+ "Member";
+ True;
+ ];
+ [
+ "Namespace";
+ True;
+ ];
+ ];
+ZScoreScale : False;
+ScaleOnlyLeafMetrics : True;
+LeafNodes : {
+ Shape : "Cylinders";
+ HeightMetric : "Metric.Lines.LOC";
+ StyleMetric : "Metric.McCabe_Complexity";
+ ColorRange : {
+ Lower : {
+ Red : 1.00000000;
+ Green : 1.00000000;
+ Blue : 1.00000000;
+ Alpha : 1.00000000;
+ };
+ Upper : {
+ Red : 1.00000000;
+ Green : 0.00000000;
+ Blue : 0.00000000;
+ Alpha : 1.00000000;
+ };
+ NumberOfColors : 10;
+ };
+ LabelSettings : {
+ Show : True;
+ Distance : 0.20000000;
+ FontSize : 0.40000000;
+ AnimationDuration : 0.50000000;
+ };
+ AntennnaSettings : {
+ Width : 0.10000000;
+ AntennaSections : [
+ {
+ Metric : "Metric.Lines.Comment";
+ Color : {
+ Red : 0.00000000;
+ Green : 0.00000000;
+ Blue : 0.00000000;
+ Alpha : 1.00000000;
+ };
+ };
+ {
+ Metric : "Metric.Lines.Fixme";
+ Color : {
+ Red : 0.92549020;
+ Green : 0.49019610;
+ Blue : 0.32549020;
+ Alpha : 1.00000000;
+ };
+ };
+ {
+ Metric : "Metric.Halstead.Volume";
+ Color : {
+ Red : 0.32549020;
+ Green : 0.86274510;
+ Blue : 0.92549020;
+ Alpha : 1.00000000;
+ };
+ };
+ ];
+ };
+ OutlineWidth : 1.00000000;
+ WidthMetric : "Metric.Number_Of_Calling_Routines";
+ DepthMetric : "Metric.Number_Of_Called_Routines";
+ MinimalBlockLength : 0.01000000;
+ MaximalBlockLength : 0.50000000;
+ };
+InnerNodes : {
+ Shape : "Cylinders";
+ HeightMetric : "0.0001";
+ StyleMetric : "Metric.Level";
+ ColorRange : {
+ Lower : {
+ Red : 0.26633140;
+ Green : 0.98347480;
+ Blue : 0.99056600;
+ Alpha : 1.00000000;
+ };
+ Upper : {
+ Red : 0.00000000;
+ Green : 0.00000000;
+ Blue : 1.00000000;
+ Alpha : 1.00000000;
+ };
+ NumberOfColors : 10;
+ };
+ LabelSettings : {
+ Show : True;
+ Distance : 0.20000000;
+ FontSize : 0.40000000;
+ AnimationDuration : 0.50000000;
+ };
+ AntennnaSettings : {
+ Width : 0.10000000;
+ AntennaSections : [
+ ];
+ };
+ OutlineWidth : 1.00000000;
+ ShowNames : False;
+ InnerDonutMetric : "Metric.IssuesTotal";
+ };
+ErosionIssues : {
+ ShowInnerErosions : False;
+ ShowLeafErosions : False;
+ LoadDashboardMetrics : False;
+ OverrideMetrics : True;
+ ShowIssuesInCodeWindow : False;
+ IssuesAddedFromVersion : "";
+ ErosionScalingFactor : 1.50000000;
+ StyleIssue : "Metric.Style";
+ UniversalIssue : "Metric.Universal";
+ MetricIssue : "Metric.Metric";
+ Dead_CodeIssue : "Metric.Dead_Code";
+ CycleIssue : "Metric.Cycle";
+ CloneIssue : "Metric.Clone";
+ ArchitectureIssue : "Metric.Architecture_Violations";
+ StyleIssue_SUM : "Metric.Style_SUM";
+ UniversalIssue_SUM : "Metric.Universal_SUM";
+ MetricIssue_SUM : "Metric.Metric_SUM";
+ Dead_CodeIssue_SUM : "Metric.Dead_Code_SUM";
+ CycleIssue_SUM : "Metric.Cycle_SUM";
+ CloneIssue_SUM : "Metric.Clone_SUM";
+ ArchitectureIssue_SUM : "Metric.Architecture_Violations_SUM";
+ };
+NodeLayout : {
+ NodeLayout : "CirclePacking";
+ LayoutPath : {
+ Root : "AssetsFolder";
+ RelativePath : "";
+ AbsolutePath : "";
+ };
+ };
+EdgeLayout : {
+ EdgeLayout : "Bundling";
+ EdgeWidth : 0.01000000;
+ EdgesAboveBlocks : True;
+ Tension : 0.85000000;
+ RDP : 0.00010000;
+ };
+EdgeSelection : {
+ TubularSegments : 50;
+ Radius : 0.00500000;
+ RadialSegments : 8;
+ AreSelectable : True;
+ };
+CoseGraph : {
+ EdgeLength : 20;
+ UseSmartIdealEdgeCalculation : False;
+ UseSmartMultilevelScaling : False;
+ PerLevelIdealEdgeLengthFactor : 0.10000000;
+ UseSmartRepulsionRangeCalculation : False;
+ GravityStrength : 0.80000000;
+ CompoundGravityStrength : 1.50000000;
+ RepulsionStrength : 50.00000000;
+ MultiLevelScaling : False;
+ ListInnerNodeToggle : [
+ ];
+ InnerNodeLayout : [
+ ];
+ InnerNodeShape : [
+ ];
+ LoadedForNodeTypes : [
+ ];
+ UseCalculationParameter : True;
+ UseIterativeCalculation : False;
+ };
+GXLPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini3/CodeFacts.gxl";
+ AbsolutePath : "";
+ };
+CSVPath : {
+ Root : "StreamingAssets";
+ RelativePath : "";
+ AbsolutePath : "";
+ };
diff --git a/Assets/StreamingAssets/mini_calculator2/CodeFacts.cfg.meta b/Assets/StreamingAssets/mini_calculator2/CodeFacts.cfg.meta
new file mode 100644
index 0000000000..cc7f7da11b
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/CodeFacts.cfg.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9a62e6f348cdd4018a7c23a7abab2f6b
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/CodeFacts.csv b/Assets/StreamingAssets/mini_calculator2/CodeFacts.csv
new file mode 100755
index 0000000000..cea2b34be1
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/CodeFacts.csv
@@ -0,0 +1,5 @@
+ID;Metric.Developers
+C global:mini:C1^:C1;5
+C global:mini:C2^:C2;3
+C global:mini:MainClass^:!12+9!;2
+F global:mini:C2^:C2:attr;1
diff --git a/Assets/StreamingAssets/mini_calculator2/CodeFacts.csv.meta b/Assets/StreamingAssets/mini_calculator2/CodeFacts.csv.meta
new file mode 100644
index 0000000000..2e1921a1b5
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/CodeFacts.csv.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 47014669239b64080b9014af3febbee0
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/CodeFacts.gvl b/Assets/StreamingAssets/mini_calculator2/CodeFacts.gvl
new file mode 100755
index 0000000000..0e3b77ce3e
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/CodeFacts.gvl
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/StreamingAssets/mini_calculator2/CodeFacts.gvl.meta b/Assets/StreamingAssets/mini_calculator2/CodeFacts.gvl.meta
new file mode 100644
index 0000000000..cb67fe3a3a
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/CodeFacts.gvl.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: adb734b20c4e4434f9f2ac0b5400fb99
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/CodeFacts.gxl b/Assets/StreamingAssets/mini_calculator2/CodeFacts.gxl
new file mode 100755
index 0000000000..b49266f1f1
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/CodeFacts.gxl
@@ -0,0 +1,3594 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 88576
+
+
+ 17
+
+
+ 23
+
+
+ 17
+
+
+ 17
+
+
+ 1
+
+
+ 1
+
+
+ 17
+
+
+ 17
+
+
+ 1
+
+
+ 0
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 4
+
+
+ 3
+
+
+ 4
+
+
+ 3
+
+
+ 7
+
+
+ 7
+
+
+ 1.000000
+
+
+ 19.651485
+
+
+ 2.000000
+
+
+ 39.302971
+
+
+ p global:mini:Calculator:Operators:!25+8!^:!33+8!:Left
+
+
+ Left
+
+
+ src/
+
+
+ Operator.cs
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 88577
+
+
+ 22
+
+
+ 23
+
+
+ 22
+
+
+ 22
+
+
+ 1
+
+
+ 1
+
+
+ 22
+
+
+ 22
+
+
+ 1
+
+
+ 0
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 4
+
+
+ 3
+
+
+ 4
+
+
+ 3
+
+
+ 7
+
+
+ 7
+
+
+ 1.000000
+
+
+ 19.651485
+
+
+ 2.000000
+
+
+ 39.302971
+
+
+ p global:mini:Calculator:Operators:!25+8!^:!33+8!:Right
+
+
+ Right
+
+
+ src/
+
+
+ Operator.cs
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 167
+
+
+ 6
+
+
+ 5
+
+
+ 6
+
+
+ 6
+
+
+ 24
+
+
+ 24
+
+
+ 6
+
+
+ 6
+
+
+ 24
+
+
+ 3
+
+
+ 21
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 24
+
+
+ 21
+
+
+ 0
+
+
+ 66
+
+
+ 34
+
+
+ 17
+
+
+ 18
+
+
+ 100
+
+
+ 35
+
+
+ 2.857143
+
+
+ 512.928284
+
+
+ 16.055555
+
+
+ 8235.348633
+
+
+ C global:mini:MainClass^:!12+9!
+
+
+ MainClass
+
+
+ src/
+
+
+ MainClass.cs
+
+
+ src/
+
+
+ MainClass.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 581
+
+
+ 6
+
+
+ 12
+
+
+ 6
+
+
+ 6
+
+
+ 41
+
+
+ 41
+
+
+ 6
+
+
+ 6
+
+
+ 41
+
+
+ 1
+
+
+ 27
+
+
+ 13
+
+
+ 13
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 41
+
+
+ 27
+
+
+ 13
+
+
+ 78
+
+
+ 37
+
+
+ 21
+
+
+ 20
+
+
+ 115
+
+
+ 41
+
+
+ 2.804878
+
+
+ 616.118469
+
+
+ 19.424999
+
+
+ 11968.100586
+
+
+ C global:mini:Calculator:!14+10!^:!23+10!
+
+
+ Calculator
+
+
+ src/
+
+
+ Calculator.cs
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1305
+
+
+ 6
+
+
+ 12
+
+
+ 6
+
+
+ 6
+
+
+ 11
+
+
+ 11
+
+
+ 6
+
+
+ 6
+
+
+ 11
+
+
+ 1
+
+
+ 10
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 11
+
+
+ 10
+
+
+ 0
+
+
+ 28
+
+
+ 10
+
+
+ 14
+
+
+ 7
+
+
+ 38
+
+
+ 21
+
+
+ 1.809524
+
+
+ 166.908051
+
+
+ 10.000000
+
+
+ 1669.080566
+
+
+ C global:mini:Calculator:Operators:Minus^:Minus
+
+
+ Minus
+
+
+ src/
+
+
+ Minus.cs
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1306
+
+
+ 12
+
+
+ 21
+
+
+ 12
+
+
+ 12
+
+
+ 33
+
+
+ 33
+
+
+ 12
+
+
+ 12
+
+
+ 33
+
+
+ 3
+
+
+ 11
+
+
+ 19
+
+
+ 19
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 33
+
+
+ 11
+
+
+ 19
+
+
+ 30
+
+
+ 16
+
+
+ 12
+
+
+ 8
+
+
+ 46
+
+
+ 20
+
+
+ 2.300000
+
+
+ 198.808685
+
+
+ 12.000000
+
+
+ 2385.704102
+
+
+ C global:mini:Calculator:Operators:!25+8!^:!33+8!
+
+
+ Operator
+
+
+ src/
+
+
+ Operator.cs
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1307
+
+
+ 6
+
+
+ 12
+
+
+ 6
+
+
+ 6
+
+
+ 11
+
+
+ 11
+
+
+ 6
+
+
+ 6
+
+
+ 11
+
+
+ 1
+
+
+ 10
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 11
+
+
+ 10
+
+
+ 0
+
+
+ 28
+
+
+ 10
+
+
+ 14
+
+
+ 7
+
+
+ 38
+
+
+ 21
+
+
+ 1.809524
+
+
+ 166.908051
+
+
+ 10.000000
+
+
+ 1669.080566
+
+
+ C global:mini:Calculator:Operators:Plus^:Plus
+
+
+ Plus
+
+
+ src/
+
+
+ Plus.cs
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+
+
+
+
+
+
+ 95526
+
+
+ 21
+
+
+ 23
+
+
+ 21
+
+
+ 21
+
+
+ 25
+
+
+ 25
+
+
+ 21
+
+
+ 21
+
+
+ 3
+
+
+ 15
+
+
+ 1
+
+
+ 0
+
+
+ 9
+
+
+ 5
+
+
+ 5
+
+
+ 3
+
+
+ 4
+
+
+ 4
+
+
+ 24
+
+
+ 4
+
+
+ 2
+
+
+ 2
+
+
+ 1
+
+
+ 25
+
+
+ 1
+
+
+ 24
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 25
+
+
+ 24
+
+
+ 0
+
+
+ 74
+
+
+ 36
+
+
+ 20
+
+
+ 19
+
+
+ 110
+
+
+ 39
+
+
+ 0
+
+
+ 6
+
+
+ 1
+
+
+ 2.820513
+
+
+ 581.394226
+
+
+ 18.947369
+
+
+ 11015.890625
+
+
+ 0.066667
+
+
+ R global:mini:Calculator:!14+10!^:!23+10!:!14+8!e(!0+6!System:String@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll^,!53+78!,!134+7!)_s->!53+11!Double@C:!76+56!
+
+
+ Calculate
+
+
+ src/
+
+
+ Calculator.cs
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+
+
+
+
+
+
+ 100242
+
+
+ 8
+
+
+ 32
+
+
+ 8
+
+
+ 8
+
+
+ 4
+
+
+ 4
+
+
+ 8
+
+
+ 8
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 3
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 4
+
+
+ 0
+
+
+ 4
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 4
+
+
+ 4
+
+
+ 0
+
+
+ 10
+
+
+ 3
+
+
+ 10
+
+
+ 3
+
+
+ 13
+
+
+ 13
+
+
+ 0
+
+
+ 2
+
+
+ 0
+
+
+ 1.000000
+
+
+ 48.105713
+
+
+ 5.000000
+
+
+ 240.528564
+
+
+ 0.000000
+
+
+ R global:mini:Calculator:Operators:Minus^:Minus:Execute()_s->!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
+
+
+ Execute
+
+
+ src/
+
+
+ Minus.cs
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+
+
+
+
+
+
+ 100243
+
+
+ 43
+
+
+ 32
+
+
+ 43
+
+
+ 43
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ R global:mini:Calculator:Operators:!25+8!^:!33+8!:Execute()_s->!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
+
+
+ Execute
+
+
+ src/
+
+
+ Operator.cs
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+
+
+
+
+
+
+ 100244
+
+
+ 8
+
+
+ 32
+
+
+ 8
+
+
+ 8
+
+
+ 4
+
+
+ 4
+
+
+ 8
+
+
+ 8
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 3
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 4
+
+
+ 0
+
+
+ 4
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 4
+
+
+ 4
+
+
+ 0
+
+
+ 10
+
+
+ 3
+
+
+ 10
+
+
+ 3
+
+
+ 13
+
+
+ 13
+
+
+ 0
+
+
+ 2
+
+
+ 0
+
+
+ 1.000000
+
+
+ 48.105713
+
+
+ 5.000000
+
+
+ 240.528564
+
+
+ 0.000000
+
+
+ R global:mini:Calculator:Operators:Plus^:Plus:Execute()_s->!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
+
+
+ Execute
+
+
+ src/
+
+
+ Plus.cs
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+
+
+
+
+
+
+ 106450
+
+
+ 17
+
+
+ 30
+
+
+ 17
+
+
+ 17
+
+
+ 0
+
+
+ 0
+
+
+ 2
+
+
+ R global:mini:Calculator:Operators:!25+8!^:!33+8!:get_Left[Left]()_s->!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
+
+
+ get_Left
+
+
+ src/
+
+
+ Operator.cs
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+
+
+
+
+
+
+ 106451
+
+
+ 22
+
+
+ 31
+
+
+ 22
+
+
+ 22
+
+
+ 0
+
+
+ 0
+
+
+ 2
+
+
+ R global:mini:Calculator:Operators:!25+8!^:!33+8!:get_Right[Right]()_s->!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
+
+
+ get_Right
+
+
+ src/
+
+
+ Operator.cs
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 110713
+
+
+ 8
+
+
+ 21
+
+
+ 8
+
+
+ 8
+
+
+ 21
+
+
+ 21
+
+
+ 8
+
+
+ 8
+
+
+ 1
+
+
+ 11
+
+
+ 0
+
+
+ 0
+
+
+ 10
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
+ 20
+
+
+ 2
+
+
+ 1
+
+
+ 1
+
+
+ 0
+
+
+ 21
+
+
+ 3
+
+
+ 18
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 21
+
+
+ 18
+
+
+ 0
+
+
+ 63
+
+
+ 33
+
+
+ 16
+
+
+ 17
+
+
+ 96
+
+
+ 33
+
+
+ 0
+
+
+ 5
+
+
+ 1
+
+
+ 2.909091
+
+
+ 484.261841
+
+
+ 15.529411
+
+
+ 7520.301270
+
+
+ 0.000000
+
+
+ R global:mini:MainClass^:!12+9!:Main(!0+6!System:!35+11!String@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll^[]^)_s->!35+11!Void@C:!65+56!
+
+
+ Main
+
+
+ src/
+
+
+ MainClass.cs
+
+
+ src/
+
+
+ MainClass.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 118516
+
+
+ 13
+
+
+ 16
+
+
+ 13
+
+
+ 13
+
+
+ 3
+
+
+ 3
+
+
+ 13
+
+
+ 13
+
+
+ 2
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 2
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 3
+
+
+ 0
+
+
+ 3
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 3
+
+
+ 3
+
+
+ 0
+
+
+ 13
+
+
+ 5
+
+
+ 9
+
+
+ 3
+
+
+ 18
+
+
+ 12
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 1.500000
+
+
+ 64.529320
+
+
+ 7.500000
+
+
+ 483.969910
+
+
+ R global:mini:Calculator:Operators:Minus^:Minus:Minus(.ctor)(!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll,!59+77!)_s->!59+11!Void@C:!82+56!
+
+
+ Minus
+
+
+ src/
+
+
+ Minus.cs
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 118517
+
+
+ 31
+
+
+ 19
+
+
+ 31
+
+
+ 31
+
+
+ 5
+
+
+ 5
+
+
+ 31
+
+
+ 31
+
+
+ 2
+
+
+ 2
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 4
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ 5
+
+
+ 0
+
+
+ 5
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 5
+
+
+ 5
+
+
+ 0
+
+
+ 12
+
+
+ 7
+
+
+ 9
+
+
+ 5
+
+
+ 19
+
+
+ 14
+
+
+ 0
+
+
+ 1
+
+
+ 2
+
+
+ 1.357143
+
+
+ 72.339745
+
+
+ 6.300000
+
+
+ 455.740417
+
+
+ 0.500000
+
+
+ R global:mini:Calculator:Operators:!25+8!^:!33+8!:!25+8!(.ctor)(!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll,!66+77!)_s->!66+11!Void@C:!89+56!
+
+
+ Operator
+
+
+ src/
+
+
+ Operator.cs
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 118518
+
+
+ 13
+
+
+ 16
+
+
+ 13
+
+
+ 13
+
+
+ 3
+
+
+ 3
+
+
+ 13
+
+
+ 13
+
+
+ 2
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 2
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 3
+
+
+ 0
+
+
+ 3
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 3
+
+
+ 3
+
+
+ 0
+
+
+ 13
+
+
+ 5
+
+
+ 9
+
+
+ 3
+
+
+ 18
+
+
+ 12
+
+
+ 0
+
+
+ 1
+
+
+ 1
+
+
+ 1.500000
+
+
+ 64.529320
+
+
+ 7.500000
+
+
+ 483.969910
+
+
+ R global:mini:Calculator:Operators:Plus^:Plus:Plus(.ctor)(!0+6!System:Double@C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll,!56+77!)_s->!56+11!Void@C:!79+56!
+
+
+ Plus
+
+
+ src/
+
+
+ Plus.cs
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+
+
+
+
+
+
+ 19386
+
+
+ F global:mini:Calculator:Operators:!25+8!^:!33+8!:<Left>k__BackingField
+
+
+ <Left>k__BackingField
+
+
+
+
+
+
+
+
+
+
+
+ 19387
+
+
+ F global:mini:Calculator:Operators:!25+8!^:!33+8!:<Right>k__BackingField
+
+
+ <Right>k__BackingField
+
+
+
+
+
+ 90203
+
+
+ N global:mini
+
+
+ mini
+
+
+
+
+
+ 90222
+
+
+ N global:mini:Calculator
+
+
+ Calculator
+
+
+
+
+
+ 90256
+
+
+ N global:mini:Calculator:Operators
+
+
+ Operators
+
+
+
+
+
+ 6
+
+
+ 5
+
+
+ 167
+
+
+ src/
+
+
+ MainClass.cs
+
+
+
+
+
+ 6
+
+
+ 12
+
+
+ 581
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 6
+
+
+ 12
+
+
+ 1305
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+
+
+
+ 6
+
+
+ 26
+
+
+ 1305
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+ 12
+
+
+ 21
+
+
+ 1306
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+ 6
+
+
+ 12
+
+
+ 1307
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+
+
+
+ 6
+
+
+ 25
+
+
+ 1307
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+ 19386
+
+
+
+
+
+ 19387
+
+
+
+
+
+ 17
+
+
+ 23
+
+
+ 88576
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+ 22
+
+
+ 23
+
+
+ 88577
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+ 4
+
+
+ 1
+
+
+ 90222
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 90256
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+ 21
+
+
+ 23
+
+
+ 95526
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 23
+
+
+ 22
+
+
+ 95526
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 8
+
+
+ 32
+
+
+ 100242
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+ 8
+
+
+ 32
+
+
+ 100242
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+ 43
+
+
+ 32
+
+
+ 100243
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+ 8
+
+
+ 32
+
+
+ 100244
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+ 8
+
+
+ 32
+
+
+ 100244
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+ 17
+
+
+ 30
+
+
+ 106450
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+ 22
+
+
+ 31
+
+
+ 106451
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+ 8
+
+
+ 21
+
+
+ 110713
+
+
+ src/
+
+
+ MainClass.cs
+
+
+
+
+
+ 19
+
+
+ 35
+
+
+ 110713
+
+
+ src/
+
+
+ MainClass.cs
+
+
+
+
+
+ 13
+
+
+ 16
+
+
+ 118516
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+ 31
+
+
+ 19
+
+
+ 118517
+
+
+ src/
+
+
+ Operator.cs
+
+
+
+
+
+ 13
+
+
+ 16
+
+
+ 118518
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
+
+ 29
+
+
+ 30
+
+
+ 160977
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 29
+
+
+ 30
+
+
+ 160977
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 32
+
+
+ 30
+
+
+ 160978
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 32
+
+
+ 30
+
+
+ 160978
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+ 1306
+
+
+ 44
+
+
+ 30
+
+
+ 160971
+
+
+ src/
+
+
+ Calculator.cs
+
+
+
+
+
+
+
+
+ 1306
+
+
+ 160930
+
+
+
+
+
+
+
+
+ 1306
+
+
+ 160932
+
+
+
+
+
+ 19
+
+
+ 39
+
+
+ 160976
+
+
+ src/
+
+
+ MainClass.cs
+
+
+
+
+
+ 581
+
+
+ 22
+
+
+ 65
+
+
+ 160970
+
+
+ src/
+
+
+ MainClass.cs
+
+
+
+
+
+ 13
+
+
+ 51
+
+
+ 160967
+
+
+ src/
+
+
+ Minus.cs
+
+
+
+
+
+
+
+
+ 1306
+
+
+ 160980
+
+
+
+
+
+
+
+
+ 1306
+
+
+ 160981
+
+
+
+
+
+ 13
+
+
+ 50
+
+
+ 160969
+
+
+ src/
+
+
+ Plus.cs
+
+
+
+
diff --git a/Assets/StreamingAssets/mini_calculator2/CodeFacts.gxl.meta b/Assets/StreamingAssets/mini_calculator2/CodeFacts.gxl.meta
new file mode 100644
index 0000000000..6a8f14fe1c
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/CodeFacts.gxl.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: cfbd1f93ebbb240a38e2e763e87b0dda
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/CodeFacts.sld b/Assets/StreamingAssets/mini_calculator2/CodeFacts.sld
new file mode 100755
index 0000000000..e87b48a5e1
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/CodeFacts.sld
@@ -0,0 +1,7 @@
+p1;-0.747;0.9665894;0.011;0;0;0;1;0.003078666;1
+p1.c2;-0.7837995;1.000039;0.2050307;0;0;0;0.1028275;0.06181962;0.1028275
+p1.c3;-1.021194;1.030794;0.1542153;0;0;0;0.2053471;0.1233314;0.2053471
+p1.c4;-0.8217776;1.06155;-0.2137368;0;0;0;0.3078666;0.1848431;0.3078666
+p1.c1;-0.5136386;0.9706681;0.1709507;0;0;0;0.3432581;0.003078666;0.3432581
+p1.c1.m1;-0.5969551;1.127141;0.1709507;0;0;0;0.1028275;0.3078666;0.1028275
+p1.c1.f1;-0.4303222;1.004117;0.1709507;0;0;0;0.1028275;0.06181962;0.1028275
diff --git a/Assets/StreamingAssets/mini_calculator2/CodeFacts.sld.meta b/Assets/StreamingAssets/mini_calculator2/CodeFacts.sld.meta
new file mode 100644
index 0000000000..3b40aa41d9
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/CodeFacts.sld.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 826dc8f1099c54057ac9a9be47ec46dc
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/Mapping.gxl b/Assets/StreamingAssets/mini_calculator2/Mapping.gxl
new file mode 100755
index 0000000000..9e2166d082
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/Mapping.gxl
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/Assets/StreamingAssets/mini_calculator2/Mapping.gxl.meta b/Assets/StreamingAssets/mini_calculator2/Mapping.gxl.meta
new file mode 100644
index 0000000000..6e59b20983
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/Mapping.gxl.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: dee9bccf332d6481697c10c307d3d65c
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/build.bat b/Assets/StreamingAssets/mini_calculator2/build.bat
new file mode 100755
index 0000000000..91e90a116e
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/build.bat
@@ -0,0 +1,30 @@
+@echo off
+
+REM This script creates a GXL file for all C# source files located in directory src.
+REM Precondition: The Axivion Suite must be installed.
+
+setlocal enabledelayedexpansion
+
+REM Determine the parent directory of the current directory
+REM for %%i in ("%~dp0..") do set "parent=%%~fi"
+set "base=%~dp0"
+REM Replace backslashes to slashes: Axivion Suite uses slashes
+set "base=%base:\=/%"
+
+REM Collect the source files
+set "files="
+for /R "src" %%f in (*.cs) do set files=!files! "%%f"
+echo "Process %files%"
+
+REM Create RFG for code
+cafesharp.exe -B"%base%" /out:mini.ir %files%
+ir2rfg.exe mini.ir mini.rfg
+
+REM Reduce the graph and export to GXL
+rfgscript reduce.py --graph mini.rfg --view "Code Facts" --linkname "N global:mini" out.rfg
+rfgexport -f GXL --view "Code Facts" out.rfg CodeFacts.gxl
+
+REM Delete intermediate files
+del out.rfg
+del mini.ir
+del mini.rfg
diff --git a/Assets/StreamingAssets/mini_calculator2/build.bat.meta b/Assets/StreamingAssets/mini_calculator2/build.bat.meta
new file mode 100644
index 0000000000..c43cd61c26
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/build.bat.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b3dc9f51300c249cf95324fd484ccf0a
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/mini.cfg b/Assets/StreamingAssets/mini_calculator2/mini.cfg
new file mode 100755
index 0000000000..ff8881c021
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/mini.cfg
@@ -0,0 +1,360 @@
+ConfigPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini_calculator2/mini.cfg";
+ AbsolutePath : "";
+};
+ProjectPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini_calculator2/";
+ AbsolutePath : "";
+};
+SolutionPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini_calculator2/src/mini.sln";
+ AbsolutePath : "";
+};
+LODCulling : 0.00100000;
+HierarchicalEdges : [
+ "Enclosing";
+ "Belongs_To";
+ "Part_Of";
+ "Defined_In";
+];
+NodeTypes : [
+ {
+ nodeType : "Class";
+ visualNodeAttributes : {
+ Shape : "Cylinders";
+ IsRelevant : True;
+ MetricToLength : [
+ "0.1";
+ "0.0001";
+ "0.1";
+ ];
+ ColorProperty : {
+ Property : "Type";
+ TypeColor : {
+ Red : 0.19353980;
+ Green : 0.93396230;
+ Blue : 0.06608222;
+ Alpha : 1.00000000;
+ };
+ ByLevel : True;
+ ColorMetric : "";
+ };
+ MinimalBlockLength : 0.00010000;
+ MaximalBlockLength : 1.00000000;
+ LabelSettings : {
+ Show : True;
+ Distance : 0.20000000;
+ FontSize : 0.40000000;
+ AnimationDuration : 0.50000000;
+ LabelAlpha : 1.00000000;
+ };
+ AntennnaSettings : {
+ AntennaSections : [
+ ];
+ };
+ OutlineWidth : 1.00000000;
+ ShowNames : False;
+ };
+ };
+ {
+ nodeType : "Method";
+ visualNodeAttributes : {
+ Shape : "Blocks";
+ IsRelevant : True;
+ MetricToLength : [
+ "Metric.LOC";
+ "Metric.Number_Of_Parameters";
+ "Metric.McCabe_Complexity";
+ ];
+ ColorProperty : {
+ Property : "Metric";
+ TypeColor : {
+ Red : 1.00000000;
+ Green : 1.00000000;
+ Blue : 1.00000000;
+ Alpha : 1.00000000;
+ };
+ ByLevel : True;
+ ColorMetric : "Metric.Lines.LOC";
+ };
+ MinimalBlockLength : 0.00100000;
+ MaximalBlockLength : 1.00000000;
+ LabelSettings : {
+ Show : True;
+ Distance : 0.20000000;
+ FontSize : 0.40000000;
+ AnimationDuration : 0.50000000;
+ LabelAlpha : 1.00000000;
+ };
+ AntennnaSettings : {
+ AntennaSections : [
+ "Metric.Number_Of_Invocations";
+ "Metric.Lines.LOC";
+ "Metric.Halstead.Vocabulary";
+ ];
+ };
+ OutlineWidth : 1.00000000;
+ ShowNames : False;
+ };
+ };
+ {
+ nodeType : "Member";
+ visualNodeAttributes : {
+ Shape : "Blocks";
+ IsRelevant : True;
+ MetricToLength : [
+ "0.5";
+ "0.5";
+ "0.5";
+ ];
+ ColorProperty : {
+ Property : "Type";
+ TypeColor : {
+ Red : 0.97457360;
+ Green : 0.99056600;
+ Blue : 0.07943219;
+ Alpha : 1.00000000;
+ };
+ ByLevel : True;
+ ColorMetric : "";
+ };
+ MinimalBlockLength : 0.00100000;
+ MaximalBlockLength : 1.00000000;
+ LabelSettings : {
+ Show : True;
+ Distance : 0.20000000;
+ FontSize : 0.40000000;
+ AnimationDuration : 0.50000000;
+ LabelAlpha : 1.00000000;
+ };
+ AntennnaSettings : {
+ AntennaSections : [
+ ];
+ };
+ OutlineWidth : 1.00000000;
+ ShowNames : False;
+ };
+ };
+ {
+ nodeType : "Namespace";
+ visualNodeAttributes : {
+ Shape : "Cylinders";
+ IsRelevant : True;
+ MetricToLength : [
+ "0.1";
+ "0.0001";
+ "0.1";
+ ];
+ ColorProperty : {
+ Property : "Type";
+ TypeColor : {
+ Red : 0.00000000;
+ Green : 0.00000000;
+ Blue : 1.00000000;
+ Alpha : 1.00000000;
+ };
+ ByLevel : True;
+ ColorMetric : "";
+ };
+ MinimalBlockLength : 0.00100000;
+ MaximalBlockLength : 1.00000000;
+ LabelSettings : {
+ Show : True;
+ Distance : 0.20000000;
+ FontSize : 0.40000000;
+ AnimationDuration : 0.50000000;
+ LabelAlpha : 1.00000000;
+ };
+ AntennnaSettings : {
+ AntennaSections : [
+ ];
+ };
+ OutlineWidth : 1.00000000;
+ ShowNames : False;
+ };
+ };
+ {
+ nodeType : "UNKNOWNTYPE";
+ visualNodeAttributes : {
+ Shape : "Blocks";
+ IsRelevant : True;
+ MetricToLength : [
+ "0.1";
+ "0.1";
+ "0.1";
+ ];
+ ColorProperty : {
+ Property : "Type";
+ TypeColor : {
+ Red : 0.00000000;
+ Green : 0.00000000;
+ Blue : 0.00000000;
+ Alpha : 1.00000000;
+ };
+ ByLevel : True;
+ ColorMetric : "";
+ };
+ MinimalBlockLength : 0.00100000;
+ MaximalBlockLength : 1.00000000;
+ LabelSettings : {
+ Show : True;
+ Distance : 0.20000000;
+ FontSize : 0.40000000;
+ AnimationDuration : 0.50000000;
+ LabelAlpha : 1.00000000;
+ };
+ AntennnaSettings : {
+ AntennaSections : [
+ ];
+ };
+ OutlineWidth : 1.00000000;
+ ShowNames : False;
+ };
+ };
+];
+IgnoreSelfLoopsInLifting : False;
+MaximalAntennaSegmentHeight : 0.25000000;
+AntennaWidth : 0.05000000;
+MetricToColor : [
+ {
+ name : "Metric.Lines.LOC";
+ color : {
+ Lower : {
+ Red : 1.00000000;
+ Green : 1.00000000;
+ Blue : 1.00000000;
+ Alpha : 1.00000000;
+ };
+ Upper : {
+ Red : 1.00000000;
+ Green : 0.00000000;
+ Blue : 0.00000000;
+ Alpha : 1.00000000;
+ };
+ NumberOfColors : 10;
+ };
+ };
+ {
+ name : "Metric.Number_Of_Invocations";
+ color : {
+ Lower : {
+ Red : 0.00000000;
+ Green : 0.99215690;
+ Blue : 1.00000000;
+ Alpha : 1.00000000;
+ };
+ Upper : {
+ Red : 0.00000000;
+ Green : 0.00000000;
+ Blue : 1.00000000;
+ Alpha : 1.00000000;
+ };
+ NumberOfColors : 2;
+ };
+ };
+ {
+ name : "Metric.Halstead.Vocabulary";
+ color : {
+ Lower : {
+ Red : 0.79294230;
+ Green : 0.97169810;
+ Blue : 0.88174930;
+ Alpha : 1.00000000;
+ };
+ Upper : {
+ Red : 0.00000000;
+ Green : 1.00000000;
+ Blue : 0.00000000;
+ Alpha : 1.00000000;
+ };
+ NumberOfColors : 10;
+ };
+ };
+];
+ZScoreScale : False;
+ScaleOnlyLeafMetrics : True;
+ErosionIssues : {
+ ShowInnerErosions : False;
+ ShowLeafErosions : False;
+ LoadDashboardMetrics : False;
+ OverrideMetrics : True;
+ ShowIssuesInCodeWindow : False;
+ IssuesAddedFromVersion : "";
+ ErosionScalingFactor : 1.50000000;
+ StyleIssue : "Metric.Style";
+ UniversalIssue : "Metric.Universal";
+ MetricIssue : "Metric.Metric";
+ Dead_CodeIssue : "Metric.Dead_Code";
+ CycleIssue : "Metric.Cycle";
+ CloneIssue : "Metric.Clone";
+ ArchitectureIssue : "Metric.Architecture_Violations";
+ StyleIssue_SUM : "Metric.Style_SUM";
+ UniversalIssue_SUM : "Metric.Universal_SUM";
+ MetricIssue_SUM : "Metric.Metric_SUM";
+ Dead_CodeIssue_SUM : "Metric.Dead_Code_SUM";
+ CycleIssue_SUM : "Metric.Cycle_SUM";
+ CloneIssue_SUM : "Metric.Clone_SUM";
+ ArchitectureIssue_SUM : "Metric.Architecture_Violations_SUM";
+};
+BoardSettings : {
+ BoardPath : {
+ Root : "AssetsFolder";
+ RelativePath : "";
+ AbsolutePath : "";
+ };
+};
+NodeLayout : {
+ NodeLayout : "CirclePacking";
+ LayoutPath : {
+ Root : "AssetsFolder";
+ RelativePath : "";
+ AbsolutePath : "";
+ };
+};
+EdgeLayout : {
+ EdgeLayout : "Bundling";
+ EdgeWidth : 0.01000000;
+ EdgesAboveBlocks : True;
+ Tension : 0.85000000;
+ RDP : 0.00010000;
+};
+EdgeSelection : {
+ TubularSegments : 50;
+ Radius : 0.00500000;
+ RadialSegments : 8;
+ AreSelectable : True;
+};
+CoseGraph : {
+ EdgeLength : 20;
+ UseSmartIdealEdgeCalculation : False;
+ UseSmartMultilevelScaling : False;
+ PerLevelIdealEdgeLengthFactor : 0.10000000;
+ UseSmartRepulsionRangeCalculation : False;
+ GravityStrength : 0.80000000;
+ CompoundGravityStrength : 1.50000000;
+ RepulsionStrength : 50.00000000;
+ MultiLevelScaling : False;
+ ListInnerNodeToggle : [
+ ];
+ InnerNodeLayout : [
+ ];
+ InnerNodeShape : [
+ ];
+ LoadedForNodeTypes : [
+ ];
+ UseCalculationParameter : True;
+ UseIterativeCalculation : False;
+};
+GXLPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini_calculator2/CodeFacts.gxl";
+ AbsolutePath : "";
+};
+CSVPath : {
+ Root : "StreamingAssets";
+ RelativePath : "/mini_calculator2/CodeFacts.csv";
+ AbsolutePath : "";
+};
diff --git a/Assets/StreamingAssets/mini_calculator2/mini.cfg.meta b/Assets/StreamingAssets/mini_calculator2/mini.cfg.meta
new file mode 100644
index 0000000000..a89240dede
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/mini.cfg.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 812fe70684de44955b756f017a78dd70
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/reduce.py b/Assets/StreamingAssets/mini_calculator2/reduce.py
new file mode 100755
index 0000000000..0ea4542244
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/reduce.py
@@ -0,0 +1,93 @@
+#!/usr/bin/env rfgscript
+
+# This script allows to reduce a view to all nodes in a subtree rooted by a given
+# node and all the edges between nodes of this subtree. Artifical nodes are
+# removed, too.
+
+from bauhaus.shared import bauhaustool
+from bauhaus.rfg import Graph, View, Node, EdgeType, NodeSet, EdgeSet, misc, rfgtool
+
+INPUTS = {
+ 'graph' : { 'doc' : 'the input rfg',
+ 'type' : 'rfg',
+ 'switches' : ['--graph', '--rfg'],
+ },
+ 'view' : { 'doc' : 'the view to be reduced',
+ 'type' : 'string',
+ 'switches' : ['--view'],
+ },
+ 'linkname' : { 'doc' : 'the linkage name of the node to be kept',
+ 'type' : 'string',
+ 'switches' : ['--linkname'],
+ },
+ }
+OUTPUT = 'rfg'
+
+# Name of the super type of all hierarchical edges
+BELONGS_TO = "Belongs_To"
+
+def reduce(graph: Graph, view_name: str, linkname: str):
+ """
+ graph: the rfg to be reduced;
+ view_name: the name of the view within graph that should be reduced;
+ linkname: the Linkage.Name of the root node of the node tree to be kept.
+ Returns the resulting modified graph.
+ """
+ if graph.is_edge_type_name(BELONGS_TO):
+ belongs_to = graph.edge_type(BELONGS_TO)
+ if graph.is_view_name(view_name):
+ view = graph.view(view_name)
+ reduce_view(view, linkname, belongs_to)
+ else:
+ print("View %s not found in RFG." % view_name)
+ else:
+ print("Edge type %s does not exist in RFG." % BELONGS_TO)
+ return graph
+
+def reduce_view(view: View, linkname: str, belongs_to: EdgeType):
+ """
+ view: the view to be reduced
+ linkname: the unique Linkage.Name of the root node of the subtree to be kept
+ belongs_to: the hierarchical edge type determining the nesting of the subtree
+ """
+ for node in view.xnodes():
+ if node["Linkage.Name"] == linkname:
+ descendants = gather_descendants(view, node, belongs_to)
+ keep_only(view, descendants)
+ break
+
+def keep_only(view: View, nodes: NodeSet):
+ """
+ Deletes all nodes in view but the ones in 'nodes'. Artifical nodes
+ are deleted no matter whether they are in 'nodes' or not.
+ view: view where nodes not included in 'nodes' are to be deleted
+ nodes: all nodes to be kept
+ """
+ deleted = 0
+ for node in view.xnodes():
+ if "Element.Is_Artificial" in node or node not in nodes:
+ view.remove(node)
+ deleted = deleted + 1
+ print("Deleted %s nodes." % deleted)
+
+def gather_descendants(view: View, root: Node, belongs_to: EdgeType):
+ """ Yields the transitive closure of all nodes reachable from given 'root' node
+ along belongs_to edges in backward direction. In other words, the
+ descendants of 'root' are returned including the root itself.
+ """
+ edge_predicate = misc.create_edge_predicate(view.graph, belongs_to)
+ return misc.transitive_neighbors(root, view, edge_predicate, "backward")
+
+@rfgtool.with_rfg_types
+@bauhaustool.BauhausTool(INPUTS, OUTPUT)
+def perform(**kwargs):
+ graph = kwargs['graph']
+ view = kwargs['view']
+ linkname = kwargs['linkname']
+ reduce(graph, view, linkname)
+ return graph
+
+if __name__ == '__main__':
+ perform.execute_as_command_line_tool\
+ (usage='%prog [options] ',
+ description = 'Reduces a view to a node with given linkage name and all its descendants (including their edges; excluding artificial nodes).')
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator2/reduce.py.meta b/Assets/StreamingAssets/mini_calculator2/reduce.py.meta
new file mode 100644
index 0000000000..dc5206ab99
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/reduce.py.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ae133410003e14eeab2ae829dd47ced8
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/src.meta b/Assets/StreamingAssets/mini_calculator2/src.meta
new file mode 100644
index 0000000000..e3207bdb73
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/src.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 98b82d2b69be84717b0818713b6bb8bf
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/src/Calculator.cs b/Assets/StreamingAssets/mini_calculator2/src/Calculator.cs
new file mode 100755
index 0000000000..1633a9c69c
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/src/Calculator.cs
@@ -0,0 +1,47 @@
+using System;
+using mini.Calculator.Operators;
+
+namespace mini.Calculator
+{
+ public class Calculator
+ {
+ ///
+ /// Calculates an operation of two numbers and an operand.
+ ///
+ /// The supported operants are:
+ /// and
+ ///
+ /// If the operand is not known or the numbers cant be parsed an Exception is thrown
+ ///
+ /// The first operand
+ /// The seconds operand
+ /// The operand of the calculation
+ /// The result of the operation, which is also an
+ /// If the operator in unknown or the or cant be parsed.
+ public Double Calculate(string num1, string num2, string calculationOperator)
+ {
+ Operator op;
+ try
+ {
+ switch (calculationOperator)
+ {
+ case "+":
+ op = new Plus(Double.Parse(num1), Double.Parse(num2));
+ break;
+ case "-":
+ op = new Minus(Double.Parse(num1), Double.Parse(num2));
+ break;
+ default:
+ Console.WriteLine("Upsie wupsie");
+ throw new Exception("Unknown operation");
+ }
+ }
+ catch (Exception e)
+ {
+ throw e;
+ }
+
+ return op.Execute();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator2/src/Calculator.cs.meta b/Assets/StreamingAssets/mini_calculator2/src/Calculator.cs.meta
new file mode 100644
index 0000000000..360243970e
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/src/Calculator.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 76a5a1d192b204a49b902c779626a56a
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/src/MainClass.cs b/Assets/StreamingAssets/mini_calculator2/src/MainClass.cs
new file mode 100755
index 0000000000..532db92355
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/src/MainClass.cs
@@ -0,0 +1,30 @@
+using System;
+using mini.Calculator;
+
+namespace mini
+{
+ class MainClass
+ {
+ static void Main(string[] args)
+ {
+ Console.WriteLine("Bitte Zahl 1 eingeben:\n");
+ string number1 = Console.ReadLine();
+
+ Console.WriteLine("Bitte Zahl 2 eingeben:\n");
+ string number2 = Console.ReadLine();
+
+ Console.WriteLine("Bitte + oder - angeben");
+ string oper = Console.ReadLine();
+
+ Calculator.Calculator c = new Calculator.Calculator();
+ try
+ {
+ Console.WriteLine($"Die Lösung ist: {c.Calculate(number1, number2, oper)}");
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine("Upsie wupsie, i think this calculator Just broke :(");
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator2/src/MainClass.cs.meta b/Assets/StreamingAssets/mini_calculator2/src/MainClass.cs.meta
new file mode 100644
index 0000000000..643ade0ccb
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/src/MainClass.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: cbda56391b8d744b297e9f1f81ebb2c5
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/src/Minus.cs b/Assets/StreamingAssets/mini_calculator2/src/Minus.cs
new file mode 100755
index 0000000000..be708b28f8
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/src/Minus.cs
@@ -0,0 +1,17 @@
+namespace mini.Calculator.Operators
+{
+ ///
+ /// Same as in just with subtraction.
+ ///
+ public class Minus : Operator
+ {
+ public override double Execute()
+ {
+ return Left + Right;
+ }
+
+ public Minus(double left, double right) : base(left, right)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator2/src/Minus.cs.meta b/Assets/StreamingAssets/mini_calculator2/src/Minus.cs.meta
new file mode 100644
index 0000000000..3ff30c8ad4
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/src/Minus.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4416e290e94c0478dbc81e461b5deadf
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/src/Operator.cs b/Assets/StreamingAssets/mini_calculator2/src/Operator.cs
new file mode 100755
index 0000000000..c0fc5bcfce
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/src/Operator.cs
@@ -0,0 +1,45 @@
+using System;
+
+namespace mini.Calculator.Operators
+{
+ ///
+ /// This class represents an abstract operator for basic math stuff.
+ ///
+ /// It contains two numbers, which should be processed in the calculation.
+ ///
+ /// This class can be extended to include more math operations.
+ ///
+ public abstract class Operator
+ {
+ ///
+ /// The Left operator.
+ ///
+ public Double Left { get; }
+
+ ///
+ /// The right operator.
+ ///
+ public Double Right { get; }
+
+ ///
+ /// Constructs a new Operator from two operands.
+ ///
+ /// The two operands should be of the type
+ ///
+ /// The left operand
+ /// The right operand
+ protected Operator(double left, double right)
+ {
+ Left = left;
+ Right = right;
+ }
+
+ ///
+ /// Executes the operation.
+ ///
+ /// The implementation should calculate the result.
+ ///
+ /// The result of the operation as
+ public abstract Double Execute();
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator2/src/Operator.cs.meta b/Assets/StreamingAssets/mini_calculator2/src/Operator.cs.meta
new file mode 100644
index 0000000000..d489554809
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/src/Operator.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 457b48ea71b3542cfb95f0ddb14cc9e3
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/mini_calculator2/src/Plus.cs b/Assets/StreamingAssets/mini_calculator2/src/Plus.cs
new file mode 100755
index 0000000000..4c12558324
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/src/Plus.cs
@@ -0,0 +1,17 @@
+namespace mini.Calculator.Operators
+{
+ ///
+ /// This is an implementation for a simple addition calculation.
+ ///
+ public class Plus : Operator
+ {
+ public override double Execute()
+ {
+ return Left + Right;
+ }
+
+ public Plus(double left, double right) : base(left, right)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/mini_calculator2/src/Plus.cs.meta b/Assets/StreamingAssets/mini_calculator2/src/Plus.cs.meta
new file mode 100644
index 0000000000..5c03394ade
--- /dev/null
+++ b/Assets/StreamingAssets/mini_calculator2/src/Plus.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 39d3f42731bbe40f899ac7e3bc2cd345
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/gen/CSharpCommentsGrammar.interp b/gen/CSharpCommentsGrammar.interp
new file mode 100644
index 0000000000..6d6b98e89c
--- /dev/null
+++ b/gen/CSharpCommentsGrammar.interp
@@ -0,0 +1,56 @@
+token literal names:
+null
+'/// '
+'/// '
+'/// '
+'/// '
+''
+null
+null
+null
+null
+'//'
+'='
+null
+null
+null
+'{'
+'}'
+null
+null
+
+token symbolic names:
+null
+null
+null
+null
+null
+null
+WS
+Comment
+PARAM
+TEXT
+SHORT_COMMENT
+EQUALS
+LineComment
+Classname
+TEXT_SKIP
+CURLY_BRACKET_OPEN
+CURLY_BRACKET_CLOSE
+CLASS_LINK
+PARAMREF
+
+rule names:
+className
+classLink
+paramref
+param
+summary
+return
+comment
+line_comment
+start
+
+
+atn:
+[4, 1, 18, 91, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 5, 3, 26, 8, 3, 10, 3, 12, 3, 29, 9, 3, 1, 3, 1, 3, 1, 4, 1, 4, 5, 4, 35, 8, 4, 10, 4, 12, 4, 38, 9, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 46, 8, 5, 10, 5, 12, 5, 49, 9, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 59, 8, 6, 1, 6, 5, 6, 62, 8, 6, 10, 6, 12, 6, 65, 9, 6, 1, 6, 1, 6, 5, 6, 69, 8, 6, 10, 6, 12, 6, 72, 9, 6, 1, 6, 3, 6, 75, 8, 6, 1, 7, 1, 7, 3, 7, 79, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 86, 8, 8, 10, 8, 12, 8, 89, 9, 8, 1, 8, 0, 0, 9, 0, 2, 4, 6, 8, 10, 12, 14, 16, 0, 1, 1, 0, 4, 5, 99, 0, 18, 1, 0, 0, 0, 2, 20, 1, 0, 0, 0, 4, 22, 1, 0, 0, 0, 6, 27, 1, 0, 0, 0, 8, 32, 1, 0, 0, 0, 10, 41, 1, 0, 0, 0, 12, 74, 1, 0, 0, 0, 14, 76, 1, 0, 0, 0, 16, 87, 1, 0, 0, 0, 18, 19, 5, 13, 0, 0, 19, 1, 1, 0, 0, 0, 20, 21, 5, 17, 0, 0, 21, 3, 1, 0, 0, 0, 22, 23, 5, 18, 0, 0, 23, 5, 1, 0, 0, 0, 24, 26, 5, 7, 0, 0, 25, 24, 1, 0, 0, 0, 26, 29, 1, 0, 0, 0, 27, 25, 1, 0, 0, 0, 27, 28, 1, 0, 0, 0, 28, 30, 1, 0, 0, 0, 29, 27, 1, 0, 0, 0, 30, 31, 5, 8, 0, 0, 31, 7, 1, 0, 0, 0, 32, 36, 5, 1, 0, 0, 33, 35, 3, 12, 6, 0, 34, 33, 1, 0, 0, 0, 35, 38, 1, 0, 0, 0, 36, 34, 1, 0, 0, 0, 36, 37, 1, 0, 0, 0, 37, 39, 1, 0, 0, 0, 38, 36, 1, 0, 0, 0, 39, 40, 5, 2, 0, 0, 40, 9, 1, 0, 0, 0, 41, 47, 5, 3, 0, 0, 42, 46, 3, 12, 6, 0, 43, 46, 5, 9, 0, 0, 44, 46, 3, 2, 1, 0, 45, 42, 1, 0, 0, 0, 45, 43, 1, 0, 0, 0, 45, 44, 1, 0, 0, 0, 46, 49, 1, 0, 0, 0, 47, 45, 1, 0, 0, 0, 47, 48, 1, 0, 0, 0, 48, 50, 1, 0, 0, 0, 49, 47, 1, 0, 0, 0, 50, 51, 7, 0, 0, 0, 51, 11, 1, 0, 0, 0, 52, 75, 3, 8, 4, 0, 53, 54, 3, 10, 5, 0, 54, 55, 5, 9, 0, 0, 55, 75, 1, 0, 0, 0, 56, 58, 5, 7, 0, 0, 57, 59, 3, 2, 1, 0, 58, 57, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 63, 1, 0, 0, 0, 60, 62, 5, 7, 0, 0, 61, 60, 1, 0, 0, 0, 62, 65, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 63, 64, 1, 0, 0, 0, 64, 75, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 66, 70, 3, 4, 2, 0, 67, 69, 5, 9, 0, 0, 68, 67, 1, 0, 0, 0, 69, 72, 1, 0, 0, 0, 70, 68, 1, 0, 0, 0, 70, 71, 1, 0, 0, 0, 71, 75, 1, 0, 0, 0, 72, 70, 1, 0, 0, 0, 73, 75, 3, 6, 3, 0, 74, 52, 1, 0, 0, 0, 74, 53, 1, 0, 0, 0, 74, 56, 1, 0, 0, 0, 74, 66, 1, 0, 0, 0, 74, 73, 1, 0, 0, 0, 75, 13, 1, 0, 0, 0, 76, 78, 5, 12, 0, 0, 77, 79, 3, 2, 1, 0, 78, 77, 1, 0, 0, 0, 78, 79, 1, 0, 0, 0, 79, 15, 1, 0, 0, 0, 80, 86, 5, 9, 0, 0, 81, 86, 5, 15, 0, 0, 82, 86, 5, 16, 0, 0, 83, 86, 5, 11, 0, 0, 84, 86, 3, 12, 6, 0, 85, 80, 1, 0, 0, 0, 85, 81, 1, 0, 0, 0, 85, 82, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 85, 84, 1, 0, 0, 0, 86, 89, 1, 0, 0, 0, 87, 85, 1, 0, 0, 0, 87, 88, 1, 0, 0, 0, 88, 17, 1, 0, 0, 0, 89, 87, 1, 0, 0, 0, 11, 27, 36, 45, 47, 58, 63, 70, 74, 78, 85, 87]
\ No newline at end of file
diff --git a/gen/CSharpCommentsGrammar.tokens b/gen/CSharpCommentsGrammar.tokens
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/gen/CSharpCommentsGrammarLexer.interp b/gen/CSharpCommentsGrammarLexer.interp
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/gen/CSharpCommentsGrammarLexer.tokens b/gen/CSharpCommentsGrammarLexer.tokens
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/generateHook.sh b/generateHook.sh
old mode 100755
new mode 100644
diff --git a/packages.config b/packages.config
new file mode 100644
index 0000000000..3bbf2d7c9a
--- /dev/null
+++ b/packages.config
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file