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