├── .DS_Store ├── .godot ├── .gdignore ├── editor │ ├── base_struct.gd-folding-750649e8ac7bb3d37fad9ea1e418c955.cfg │ ├── base_struct.gd-folding-b21db95fbe4a57d6854dcf054619b5cb.cfg │ ├── base_struct.gd-folding-ceab0d9e3eac18a7f747d40156044111.cfg │ ├── editor_layout.cfg │ ├── example_struct.gd-folding-3c484070aaa5bf20b94d46935d408ce1.cfg │ ├── favorites │ ├── favorites.Node │ ├── filesystem_cache8 │ ├── filesystem_update4 │ ├── fragstruct.gd-folding-89e7c879d584da7e7bcf8ce30dce60f4.cfg │ ├── plugin.gd-folding-7ed486a8ed525c956e39e5126b5f3c71.cfg │ ├── plugin.gd-folding-aa68d47c4d87513d051fe10d218b2845.cfg │ ├── project_metadata.cfg │ ├── recent_dirs │ ├── script_editor_cache.cfg │ ├── struct.gd-folding-244da1aac3aa718efcfb063cea2f4ee7.cfg │ ├── struct.gd-folding-93a20e8c4bebe0f0bfc23e7ca1d0d7c4.cfg │ ├── struct_plugin.gd-folding-40c683bee1b4eac458d213aeed1dc33e.cfg │ ├── test.gd-folding-02a0d47d10fc7d8cb1a93035d63f6424.cfg │ ├── test.gd-folding-7b0f1534aa4797104c4a1c2246d0373c.cfg │ ├── test.tscn-editstate-1955aacdc9602f33d69f33f7e8b9a131.cfg │ ├── test.tscn-editstate-f0a4ea32b72b64218d23e48a955cbc61.cfg │ ├── test.tscn-folding-1955aacdc9602f33d69f33f7e8b9a131.cfg │ ├── test.tscn-folding-f0a4ea32b72b64218d23e48a955cbc61.cfg │ └── test_struct.gd-folding-acaa6a01095e4b9f4751836127613e01.cfg ├── global_script_class_cache.cfg ├── imported │ ├── Construction100k.png-232e3f250aec71ee61a4e26b0d874df2.ctex │ ├── Construction100k.png-232e3f250aec71ee61a4e26b0d874df2.md5 │ ├── Construction100k.png-6660d294c5e0a8b0999f20793b66416a.md5 │ ├── Construction100k.png-703425ae6bb87def264b0ea778aae0ac.ctex │ ├── Construction100k.png-703425ae6bb87def264b0ea778aae0ac.md5 │ ├── GetSpeed.png-33564b5085aae53cb903fb91616fa10a.ctex │ ├── GetSpeed.png-33564b5085aae53cb903fb91616fa10a.md5 │ ├── GetSpeed.png-43a7d5dc0460985a572c716a9030ebf1.md5 │ ├── GetSpeed.png-4e179a4595dc26c2b7986e53494ffa89.ctex │ ├── GetSpeed.png-4e179a4595dc26c2b7986e53494ffa89.md5 │ ├── Memory100k.png-4bc11a0a348686f48d1cc17414c9c151.ctex │ ├── Memory100k.png-4bc11a0a348686f48d1cc17414c9c151.md5 │ ├── Memory100k.png-f6ef46852ab420a96950ff2c1ce5ee34.md5 │ ├── Memory100k.png-fe2feee85729fe5a9637fe769749296f.ctex │ ├── Memory100k.png-fe2feee85729fe5a9637fe769749296f.md5 │ ├── SetSpeed.png-29aba45f30504030db79a0ce5b3fa94e.md5 │ ├── SetSpeed.png-4c1827bcecfecd433fbc82583532d603.ctex │ ├── SetSpeed.png-4c1827bcecfecd433fbc82583532d603.md5 │ ├── SetSpeed.png-56cbcd57890c45c78ab1158700059a20.ctex │ ├── SetSpeed.png-56cbcd57890c45c78ab1158700059a20.md5 │ ├── Struct.svg-0184d67eb8e94e7ebf936ad64f1cff19.ctex │ ├── Struct.svg-0184d67eb8e94e7ebf936ad64f1cff19.md5 │ ├── Struct.svg-93cf475a43e6d813692731492349adf0.ctex │ ├── Struct.svg-93cf475a43e6d813692731492349adf0.md5 │ ├── Struct.svg-c055a278595fa9f26948fc994c22fe81.ctex │ ├── Struct.svg-c055a278595fa9f26948fc994c22fe81.md5 │ ├── benchmarks.png-1831c30e07c04155041e15ce690fdec9.md5 │ ├── benchmarksFinal.png-830b058cbb84194bc3e65ea3f1809837.ctex │ ├── benchmarksFinal.png-830b058cbb84194bc3e65ea3f1809837.md5 │ ├── icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex │ ├── icon.svg-218a8f2b3041327d8a5756f3a245f83b.md5 │ ├── mac256.png-574a9e1b269ab1feace42f9a058bbf2e.ctex │ └── mac256.png-574a9e1b269ab1feace42f9a058bbf2e.md5 ├── shader_cache │ ├── BlitShaderRD │ │ └── cf3b3093ca87f82a53c6a9dafc90b4cb66d08420e458843f8974e944bcb1449f │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── BokehDofShaderRD │ │ └── 2332fc406fd60dde1a5c8d06fbb797c1005f45796f1fcb243385c40a079cc74e │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CanvasOcclusionShaderRD │ │ └── 02b925db97545d496a95c430e81eabd60a630a207b9eb2e0f52bdf9153257dc6 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CanvasSdfShaderRD │ │ └── 88f05ed314fca69d84aed025060c463262b332f6c6d2c88d49729771a13d82a7 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CanvasShaderRD │ │ └── d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69 │ │ │ ├── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ │ │ ├── 45fb1ddc6499e56682916a355ce2839e61f42dfe.cache │ │ │ ├── 8a7277c8d3ac029b087c3fa9c55de85560be5119.cache │ │ │ ├── 9bcac378d4e61e619a04bca2518f348d5c571569.cache │ │ │ ├── c0a681ae42aa3e0b5abba232ccae0b036be455e4.cache │ │ │ ├── c58570947be7f76937b1582424c0fd3d81be0352.cache │ │ │ ├── ddbe30d4d1be5d69b00075293fd27da8decd4af2.cache │ │ │ └── f3e258e8f7ec2e7e740b62f3bc48ecf5c99fb0db.cache │ ├── ClusterDebugShaderRD │ │ └── 2bd8cf3209a6bd2b1555939ad7ffba1e8b5db18db45f3b3436b442086d9f9a7c │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── ClusterRenderShaderRD │ │ └── 054c961accc4e2c0dc8fad022350163830d5356aa712c7e3f216bcd363b8e743 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── ClusterStoreShaderRD │ │ └── b9b73ebdb1471918e51e80803483ec1e919d7bc07bba8b8b304abfae558881e3 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CopyShaderRD │ │ └── 68e7e30048d6ec879862a30a34f04d2c0559e66d05981d5a52302f6d77e5e320 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CopyToFbShaderRD │ │ └── 8599b5cd4e77a46811eb70062127b78edaa3c4c1c19e20210dd77a90428bfe49 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CubeToDpShaderRD │ │ └── 2a60ad76d5212192482dafe908e3c8abf1ed0e76e1a064ef9e6d8a984c585db3 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CubemapDownsamplerShaderRD │ │ └── 9f69f8bb60742c0a78c4381effff1a3d57192e6d49563350ccb4b71e9ba49a59 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CubemapFilterShaderRD │ │ └── 9816c8b79aea1049efe3d849dc77ce63dc757f8eabc9a40abecfc0c7b3ec93e4 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CubemapRoughnessShaderRD │ │ └── a7c2daf7247fae35c54470613d02fcd1b2a67c36a52326b29cea0d0d396a1469 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── FsrUpscaleShaderRD │ │ └── 8d42ad9738ca2207d05c346d8620dba3daaf3600621c2b1cb2640beeb3694d45 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── GiShaderRD │ │ └── 1aabbf45615089a934eaabcecb86cb0df6bca4aec80fc0a953b36369501f1dc3 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── LuminanceReduceShaderRD │ │ └── 7b957ef5e9c79b321e4332e062d017ca661dca6cd05d4bb63c5ec83504b022c1 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── MotionVectorsShaderRD │ │ └── d063d1ca7d1bc18e43c6052bffba5e667431508e806082ba809c08cc4cac05d1 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── ParticlesCopyShaderRD │ │ └── 2c12107b184bb4d44e6225ab168162ea355069713e387aea39333a97347c155d │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── ParticlesShaderRD │ │ └── 99287f71a201dd72d0cf852909c1ff8a5ea73e6166fc2e21be09addfb306957e │ │ │ └── f128cab0b22fb7e0d9f023d6cdb81309be392d95.cache │ ├── ResolveShaderRD │ │ └── 2b4264a537538dbb5029b8ee6bddf70fb2764621a62214df415723e9a3837ec6 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SceneForwardClusteredShaderRD │ │ └── 642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928 │ │ │ ├── 048236defb6bf03aff4593ae5e1ee179e6446005.cache │ │ │ ├── 0af7b6f7bb61aebad1151847167e4d4f8b8b89e5.cache │ │ │ ├── 0f1bcf11b9f7757773a7866f1cd2e297cb2acf5f.cache │ │ │ ├── 44a3b542d1a7aa433841301aac88e07ec68bb95b.cache │ │ │ ├── 513036325ff64a2245643eae4a83f8c916df1372.cache │ │ │ ├── 6f9f221665bfceef9ee7104462ade0892fae85b4.cache │ │ │ ├── 7e4276feb9e7788110465d53faa6226c57f8116f.cache │ │ │ ├── 7fb66440f65dac23b75016fc52fb82ae26e9393f.cache │ │ │ ├── 7fdaf9a9f33dad9936aaccf6e0d8586657dd71d5.cache │ │ │ ├── 9192e10d5d060dba18a014008198b12b09a48e50.cache │ │ │ ├── 91a7b7c4f6a2d81e1b66e70a1bdca580a0276806.cache │ │ │ ├── 979584fc9058fc31b2a6d1e00d2ae8801f62209b.cache │ │ │ ├── a3c143fc7cc5e43b3cd10abbecaa4001e645acad.cache │ │ │ ├── a6d99b637dfee75712ae57f13dc63ae39e299a45.cache │ │ │ ├── ab60f8b228c0dad11d9d882c2ab4f61eb6ca2f20.cache │ │ │ ├── c4c828897f8a3fe72e3713d35b4ba452d7ed9acf.cache │ │ │ ├── c911b2eb203b7525047b1fc26929407fb3d4191d.cache │ │ │ └── f24bd7cfaf611a139286a23d4d013a86b1753920.cache │ ├── ScreenSpaceReflectionFilterShaderRD │ │ └── 2826f8560d7bc2448fc88ccd171c2e1d1d8195f8b612d243af6e52eb566fdc92 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── ScreenSpaceReflectionScaleShaderRD │ │ └── 69c8036c97ed46ef55fd3f21bd6e1d7b18f5bff505216680d3df7439f5c4035d │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── ScreenSpaceReflectionShaderRD │ │ └── 82526d20c1ba3f92e55a34b4a64f74ac05668f0bba391a239c2116f07b897c29 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SdfgiDebugProbesShaderRD │ │ └── cc0a7220f6f1dfa1d08935bf7c3042f4b550e9176a735cce4a362dcd5aa33d7a │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SdfgiDebugShaderRD │ │ └── d4ca042c8e1f129d30c05d21565c6df8cff71cfd4b9ee4d78767eb167b992cdd │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SdfgiDirectLightShaderRD │ │ └── c8b81cc20f59bfe9eff1376acbf201ed54813b114ba68f478464df6028756296 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SdfgiIntegrateShaderRD │ │ └── f1a8076cc3fa91c8f00c20e3e00fd07c27f1c07deafec8f49b28ce18498cc02a │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SdfgiPreprocessShaderRD │ │ └── eab818f2d90e6fd698a84a657c8457172e492d59db03e419b80665ce82c859a1 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── ShadowFrustumShaderRD │ │ └── d8209bb7192a7f4bf485ba48cb55eb7e192460a0946f5f609a648ef8cb5830b4 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SkeletonShaderRD │ │ └── 6fb20f02140c99ddb53c45ea84b2de28fa0203306f032b181c732b350c4c63e8 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SkyShaderRD │ │ └── 457440cb3cc3580afc82b613f36fe23e8661343879dd1067cd7e4bddba119a4b │ │ │ ├── 03e3b11c69e24394b2d955a8c0ba85587bb70839.cache │ │ │ ├── 373ee543239aa1af0bc6b8ffc3d8251e6104a5b4.cache │ │ │ ├── de678811d1bad3cad4892a8db7b6ea0be197d51d.cache │ │ │ └── f0c584bf613e745cb630a0a20c515f41a21099e8.cache │ ├── SortShaderRD │ │ └── c744e148221eee2a0cfd287c578967f3baa6e55b5e1f2e178709b6703d606a78 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SpecularMergeShaderRD │ │ └── e3bf4029219fc28e239d130af41ed259779b995a7ca276ce11eb905d8ea8a57b │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsEffectsDownsampleShaderRD │ │ └── 0d1d15044d4f7ca7c2b5afe06ada316787ba6f5f834dd4a74bcb0f27c6ad4023 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsaoBlurShaderRD │ │ └── 852f83f68b0c4e7c5e3468c1378bc29d6cf6b1d6134e7f32bbe4a41f4c03248b │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsaoImportanceMapShaderRD │ │ └── 247f86447be456b51ea18b22b420ade338c99ee2f3e3152ed1aaa3ebadc67f7e │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsaoInterleaveShaderRD │ │ └── 9de9b4c023af22ab2be0dca678d7b4d664c8527ef9a52bccc206544bdfdfa05c │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsaoShaderRD │ │ └── fa138e7a98f2ae9eeb44824307aaedbc52d3d22163a0408bb4d633711eb08109 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsilBlurShaderRD │ │ └── dac38787c40fbc4e392aa08b4e3d9134bacc2f3d6e5271927479287ad852e5fc │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsilImportanceMapShaderRD │ │ └── ccc82a6fccfc6abe8392f15e6f7ae24510fcf40d8d6191c76a760609b4b006e6 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsilInterleaveShaderRD │ │ └── 177649cee5977aa2ad40f265c3fd51aff57597b4dccc1a7b9f2475291dbca628 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsilShaderRD │ │ └── bc34b7a32a087bbe48db39bda3560096aae58430b8cf31d2137c560389330586 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SubsurfaceScatteringShaderRD │ │ └── 8383f5c059d6d3a08d4d81fb2713bc401e1eb314729f2f8b5a5d4b8f2f2d8426 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── TaaResolveShaderRD │ │ └── c7d5c359b46158c4d5f2a51c059273ed76ee9b5113109a6efc8e1a53c4088d58 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── TonemapShaderRD │ │ └── 5a0afbb891b2e887948e0eb15232663943e30c50d7e1832d520a984332f1782c │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── VolumetricFogProcessShaderRD │ │ └── 64f4c4231c81e2b4bd0525c4ccb136ad53968c739b93f72c1ef896692590c0e1 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── VolumetricFogShaderRD │ │ └── 77a8d439be308acf751cf873c3e486f1179f68d4113c186eaac18b472f8eb27e │ │ │ └── 9a227745af2d65830f930370a9fbba551fbd6f60.cache │ ├── VoxelGiDebugShaderRD │ │ └── 19e3cda3628deea09919766e49d00fa6261afb498767c8dd3ef86d2a47cc74b2 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ └── VoxelGiShaderRD │ │ └── e0c893fe524a1bbf1f2c0236e28899795298860353291ecf5f310c503d9a65d5 │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache └── uid_cache.bin ├── LICENSE ├── README.md ├── addons └── structs │ ├── Struct.svg │ ├── Struct.svg.import │ ├── mac256.png │ ├── mac256.png.import │ └── struct.gd ├── icon.svg ├── icon.svg.import ├── project.godot └── test ├── Memory100k.png ├── README.md ├── benchmarks.txt ├── example_struct.gd ├── test.gd └── test.tscn /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.DS_Store -------------------------------------------------------------------------------- /.godot/.gdignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.godot/editor/base_struct.gd-folding-750649e8ac7bb3d37fad9ea1e418c955.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/base_struct.gd-folding-b21db95fbe4a57d6854dcf054619b5cb.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/base_struct.gd-folding-ceab0d9e3eac18a7f747d40156044111.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/editor_layout.cfg: -------------------------------------------------------------------------------- 1 | [docks] 2 | 3 | dock_1_selected_tab_idx=0 4 | dock_2_selected_tab_idx=0 5 | dock_3_selected_tab_idx=0 6 | dock_4_selected_tab_idx=0 7 | dock_5_selected_tab_idx=0 8 | dock_6_selected_tab_idx=0 9 | dock_7_selected_tab_idx=0 10 | dock_8_selected_tab_idx=0 11 | dock_floating={} 12 | dock_split_2=0 13 | dock_split_3=0 14 | dock_hsplit_1=0 15 | dock_hsplit_2=352 16 | dock_hsplit_3=-472 17 | dock_hsplit_4=0 18 | dock_filesystem_split=0 19 | dock_filesystem_display_mode=0 20 | dock_filesystem_file_sort=0 21 | dock_filesystem_file_list_display_mode=1 22 | dock_filesystem_selected_paths=PackedStringArray("res://") 23 | dock_filesystem_uncollapsed_paths=PackedStringArray("Favorites", "res://", "res://test/", "res://addons/", "res://addons/structs/") 24 | dock_3="Scene,Import" 25 | dock_4="FileSystem" 26 | dock_5="Inspector,Node,History" 27 | 28 | [EditorNode] 29 | 30 | open_scenes=PackedStringArray("res://test/test.tscn") 31 | current_scene="res://test/test.tscn" 32 | center_split_offset=-431 33 | selected_default_debugger_tab_idx=0 34 | selected_main_editor_idx=2 35 | selected_bottom_panel_item=0 36 | 37 | [ScriptEditor] 38 | 39 | open_scripts=["res://test/benchmarks.txt", "res://test/example_struct.gd", "res://test/README.md", "res://README.md", "res://addons/structs/struct.gd", "res://test/test.gd"] 40 | selected_script="res://README.md" 41 | open_help=["@GlobalScope"] 42 | script_split_offset=446 43 | list_split_offset=0 44 | 45 | [ShaderEditor] 46 | 47 | open_shaders=[] 48 | split_offset=0 49 | selected_shader="" 50 | -------------------------------------------------------------------------------- /.godot/editor/example_struct.gd-folding-3c484070aaa5bf20b94d46935d408ce1.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/favorites: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/editor/favorites -------------------------------------------------------------------------------- /.godot/editor/favorites.Node: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/editor/favorites.Node -------------------------------------------------------------------------------- /.godot/editor/filesystem_cache8: -------------------------------------------------------------------------------- 1 | ea4bc82a6ad023ab7ee23ee620429895 2 | ::res://::1717547786 3 | icon.svg::CompressedTexture2D::8642320688479720956::1716756807::1717422347::1::::<><>:: 4 | README.md::TextFile::-1::1717533903::0::1::::<><>:: 5 | ::res://addons/::1717464867 6 | ::res://addons/structs/::1717533903 7 | mac256.png::CompressedTexture2D::6199601666045428826::1717525167::1717533903::1::::<><>:: 8 | struct.gd::GDScript::-1::1717533903::0::1::::Struct<>Resource<>res://addons/structs/Struct.svg:: 9 | Struct.svg::CompressedTexture2D::1854453639399677724::1717464271::1717464877::1::::<><>:: 10 | ::res://test/::1717551397 11 | benchmarks.txrt.txt::TextFile::-1::1717551320::0::1::::<><>:: 12 | benchmarks_100k.txt::TextFile::-1::1717550930::0::1::::<><>:: 13 | example_struct.gd::GDScript::-1::1717525191::0::1::::ExampleStruct<>Struct<>:: 14 | README.md::TextFile::-1::1717533903::0::1::::<><>:: 15 | test.gd::GDScript::-1::1717551397::0::1::::<>Node2D<>:: 16 | test.tscn::PackedScene::6208142386567486439::1717551397::0::1::::<><>::res://test/test.gd 17 | -------------------------------------------------------------------------------- /.godot/editor/filesystem_update4: -------------------------------------------------------------------------------- 1 | res://test/test.tscn 2 | res://test/test.gd 3 | res://test/benchmarks_100k.txt 4 | res://test/benchmarks.txt 5 | res://test/README.md 6 | res://README.md 7 | -------------------------------------------------------------------------------- /.godot/editor/fragstruct.gd-folding-89e7c879d584da7e7bcf8ce30dce60f4.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/plugin.gd-folding-7ed486a8ed525c956e39e5126b5f3c71.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/plugin.gd-folding-aa68d47c4d87513d051fe10d218b2845.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/project_metadata.cfg: -------------------------------------------------------------------------------- 1 | [editor_metadata] 2 | 3 | executable_path="/Applications/Godot.app/Contents/MacOS/Godot" 4 | 5 | [debug_options] 6 | 7 | run_live_debug=true 8 | run_reload_scripts=true 9 | 10 | [linked_properties] 11 | 12 | Node2D:scale=true 13 | 14 | [recent_files] 15 | 16 | scenes=["res://test/test.tscn", "res://test.tscn"] 17 | scripts=["res://README.md", "res://test/README.md", "res://test/benchmarks.txt", "@GlobalScope", "res://test/benchmarks_100k.txt", "Struct", "Signal", "Resource", "RefCounted", "PackedInt64Array"] 18 | 19 | [script_setup] 20 | 21 | last_selected_language="GDScript" 22 | 23 | [dialog_bounds] 24 | 25 | project_settings=Rect2(1132, 468, 1574, 1224) 26 | create_new_node=Rect2(1132, 468, 1574, 1224) 27 | -------------------------------------------------------------------------------- /.godot/editor/recent_dirs: -------------------------------------------------------------------------------- 1 | /Users/samuelmcclure/dev/GitHub/gdscript-structs/test/ 2 | /Users/samuelmcclure/dev/GitHub/gdscript-structs/addons/ 3 | /Users/samuelmcclure/dev/GitHub/gdscript-structs/ 4 | res:// 5 | -------------------------------------------------------------------------------- /.godot/editor/script_editor_cache.cfg: -------------------------------------------------------------------------------- 1 | [res://README.md] 2 | 3 | state={ 4 | "bookmarks": PackedInt32Array(), 5 | "breakpoints": PackedInt32Array(), 6 | "column": 143, 7 | "folded_lines": Array[int]([]), 8 | "h_scroll_position": 0, 9 | "row": 21, 10 | "scroll_position": 36.74, 11 | "selection": false, 12 | "syntax_highlighter": "Plain Text" 13 | } 14 | 15 | [res://test/test.gd] 16 | 17 | state={ 18 | "bookmarks": PackedInt32Array(), 19 | "breakpoints": PackedInt32Array(), 20 | "column": 4, 21 | "folded_lines": Array[int]([]), 22 | "h_scroll_position": 0, 23 | "row": 15, 24 | "scroll_position": 2.0, 25 | "selection": false, 26 | "syntax_highlighter": "GDScript" 27 | } 28 | 29 | [res://addons/structs/struct.gd] 30 | 31 | state={ 32 | "bookmarks": PackedInt32Array(), 33 | "breakpoints": PackedInt32Array(), 34 | "column": 14, 35 | "folded_lines": Array[int]([]), 36 | "h_scroll_position": 0, 37 | "row": 196, 38 | "scroll_position": 132.0, 39 | "selection": false, 40 | "syntax_highlighter": "GDScript" 41 | } 42 | 43 | [res://test/example_struct.gd] 44 | 45 | state={ 46 | "bookmarks": PackedInt32Array(), 47 | "breakpoints": PackedInt32Array(), 48 | "column": 45, 49 | "folded_lines": Array[int]([]), 50 | "h_scroll_position": 0, 51 | "row": 15, 52 | "scroll_position": 0.0, 53 | "selection": false, 54 | "syntax_highlighter": "GDScript" 55 | } 56 | 57 | [res://test/README.md] 58 | 59 | state={ 60 | "bookmarks": PackedInt32Array(), 61 | "breakpoints": PackedInt32Array(), 62 | "column": 57, 63 | "folded_lines": Array[int]([]), 64 | "h_scroll_position": 0, 65 | "row": 28, 66 | "scroll_position": 0.0, 67 | "selection": false, 68 | "syntax_highlighter": "Plain Text" 69 | } 70 | 71 | [res://test/benchmarks.txt] 72 | 73 | state={ 74 | "bookmarks": PackedInt32Array(), 75 | "breakpoints": PackedInt32Array(), 76 | "column": 0, 77 | "folded_lines": Array[int]([]), 78 | "h_scroll_position": 24, 79 | "row": 29, 80 | "scroll_position": 0.0, 81 | "selection": true, 82 | "selection_from_column": 0, 83 | "selection_from_line": 0, 84 | "selection_to_column": 0, 85 | "selection_to_line": 29, 86 | "syntax_highlighter": "Plain Text" 87 | } 88 | -------------------------------------------------------------------------------- /.godot/editor/struct.gd-folding-244da1aac3aa718efcfb063cea2f4ee7.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/struct.gd-folding-93a20e8c4bebe0f0bfc23e7ca1d0d7c4.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/struct_plugin.gd-folding-40c683bee1b4eac458d213aeed1dc33e.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/test.gd-folding-02a0d47d10fc7d8cb1a93035d63f6424.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/test.gd-folding-7b0f1534aa4797104c4a1c2246d0373c.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/test.tscn-editstate-1955aacdc9602f33d69f33f7e8b9a131.cfg: -------------------------------------------------------------------------------- 1 | [editor_states] 2 | 3 | Anim={ 4 | "visible": false 5 | } 6 | 2D={ 7 | "grid_offset": Vector2(0, 0), 8 | "grid_snap_active": false, 9 | "grid_step": Vector2(8, 8), 10 | "grid_visibility": 1, 11 | "ofs": Vector2(-176.25, -121.25), 12 | "primary_grid_step": Vector2i(8, 8), 13 | "show_edit_locks": true, 14 | "show_guides": true, 15 | "show_helpers": false, 16 | "show_origin": true, 17 | "show_rulers": true, 18 | "show_transformation_gizmos": true, 19 | "show_viewport": true, 20 | "show_zoom_control": true, 21 | "smart_snap_active": false, 22 | "snap_guides": true, 23 | "snap_node_anchors": true, 24 | "snap_node_center": true, 25 | "snap_node_parent": true, 26 | "snap_node_sides": true, 27 | "snap_other_nodes": true, 28 | "snap_pixel": true, 29 | "snap_relative": false, 30 | "snap_rotation": false, 31 | "snap_rotation_offset": 0.0, 32 | "snap_rotation_step": 0.261799, 33 | "snap_scale": false, 34 | "snap_scale_step": 0.1, 35 | "zoom": 0.326531 36 | } 37 | 3D={ 38 | "fov": 70.01, 39 | "gizmos_status": { 40 | "AudioListener3D": 0, 41 | "AudioStreamPlayer3D": 0, 42 | "CPUParticles3D": 0, 43 | "CSGShape3D": 0, 44 | "Camera3D": 0, 45 | "CollisionObject3D": 0, 46 | "CollisionPolygon3D": 0, 47 | "CollisionShape3D": 0, 48 | "Decal": 0, 49 | "FogVolume": 0, 50 | "GPUParticles3D": 0, 51 | "GPUParticlesCollision3D": 0, 52 | "Joint3D": 0, 53 | "Light3D": 0, 54 | "LightmapGI": 0, 55 | "LightmapProbe": 0, 56 | "Marker3D": 0, 57 | "NavigationLink3D": 0, 58 | "NavigationRegion3D": 0, 59 | "OccluderInstance3D": 0, 60 | "Path3D": 0, 61 | "PhysicalBone3D": 0, 62 | "RayCast3D": 0, 63 | "ReflectionProbe": 0, 64 | "ShapeCast3D": 0, 65 | "Skeleton3D": 0, 66 | "SoftBody3D": 0, 67 | "SpringArm3D": 0, 68 | "VehicleWheel3D": 0, 69 | "VisibleOnScreenNotifier3D": 0, 70 | "VoxelGI": 0 71 | }, 72 | "local_coords": false, 73 | "preview_sun_env": { 74 | "environ_ao_enabled": false, 75 | "environ_enabled": true, 76 | "environ_energy": 1.0, 77 | "environ_gi_enabled": false, 78 | "environ_glow_enabled": true, 79 | "environ_ground_color": Color(0.2, 0.169, 0.133, 1), 80 | "environ_sky_color": Color(0.385, 0.454, 0.55, 1), 81 | "environ_tonemap_enabled": true, 82 | "sun_color": Color(1, 1, 1, 1), 83 | "sun_enabled": true, 84 | "sun_energy": 1.0, 85 | "sun_max_distance": 100.0, 86 | "sun_rotation": Vector2(-1.0472, 2.61799) 87 | }, 88 | "rotate_snap": 15.0, 89 | "scale_snap": 10.0, 90 | "show_grid": true, 91 | "show_origin": true, 92 | "snap_enabled": false, 93 | "translate_snap": 1.0, 94 | "viewport_mode": 1, 95 | "viewports": [{ 96 | "auto_orthogonal": false, 97 | "auto_orthogonal_enabled": true, 98 | "cinematic_preview": false, 99 | "display_mode": 20, 100 | "distance": 4.0, 101 | "doppler": false, 102 | "frame_time": false, 103 | "gizmos": true, 104 | "half_res": false, 105 | "information": false, 106 | "listener": true, 107 | "lock_rotation": false, 108 | "orthogonal": false, 109 | "position": Vector3(0, 0, 0), 110 | "use_environment": false, 111 | "view_type": 0, 112 | "x_rotation": 0.5, 113 | "y_rotation": -0.5 114 | }, { 115 | "auto_orthogonal": false, 116 | "auto_orthogonal_enabled": true, 117 | "cinematic_preview": false, 118 | "display_mode": 20, 119 | "distance": 4.0, 120 | "doppler": false, 121 | "frame_time": false, 122 | "gizmos": true, 123 | "half_res": false, 124 | "information": false, 125 | "listener": false, 126 | "lock_rotation": false, 127 | "orthogonal": false, 128 | "position": Vector3(0, 0, 0), 129 | "use_environment": false, 130 | "view_type": 0, 131 | "x_rotation": 0.5, 132 | "y_rotation": -0.5 133 | }, { 134 | "auto_orthogonal": false, 135 | "auto_orthogonal_enabled": true, 136 | "cinematic_preview": false, 137 | "display_mode": 20, 138 | "distance": 4.0, 139 | "doppler": false, 140 | "frame_time": false, 141 | "gizmos": true, 142 | "half_res": false, 143 | "information": false, 144 | "listener": false, 145 | "lock_rotation": false, 146 | "orthogonal": false, 147 | "position": Vector3(0, 0, 0), 148 | "use_environment": false, 149 | "view_type": 0, 150 | "x_rotation": 0.5, 151 | "y_rotation": -0.5 152 | }, { 153 | "auto_orthogonal": false, 154 | "auto_orthogonal_enabled": true, 155 | "cinematic_preview": false, 156 | "display_mode": 20, 157 | "distance": 4.0, 158 | "doppler": false, 159 | "frame_time": false, 160 | "gizmos": true, 161 | "half_res": false, 162 | "information": false, 163 | "listener": false, 164 | "lock_rotation": false, 165 | "orthogonal": false, 166 | "position": Vector3(0, 0, 0), 167 | "use_environment": false, 168 | "view_type": 0, 169 | "x_rotation": 0.5, 170 | "y_rotation": -0.5 171 | }], 172 | "zfar": 4000.01, 173 | "znear": 0.05 174 | } 175 | selected_nodes=Array[NodePath]([]) 176 | -------------------------------------------------------------------------------- /.godot/editor/test.tscn-editstate-f0a4ea32b72b64218d23e48a955cbc61.cfg: -------------------------------------------------------------------------------- 1 | [editor_states] 2 | 3 | Anim={ 4 | "visible": false 5 | } 6 | 2D={ 7 | "grid_offset": Vector2(0, 0), 8 | "grid_snap_active": false, 9 | "grid_step": Vector2(8, 8), 10 | "grid_visibility": 1, 11 | "ofs": Vector2(-176.25, -121.25), 12 | "primary_grid_step": Vector2i(8, 8), 13 | "show_edit_locks": true, 14 | "show_guides": true, 15 | "show_helpers": false, 16 | "show_origin": true, 17 | "show_rulers": true, 18 | "show_transformation_gizmos": true, 19 | "show_viewport": true, 20 | "show_zoom_control": true, 21 | "smart_snap_active": false, 22 | "snap_guides": true, 23 | "snap_node_anchors": true, 24 | "snap_node_center": true, 25 | "snap_node_parent": true, 26 | "snap_node_sides": true, 27 | "snap_other_nodes": true, 28 | "snap_pixel": true, 29 | "snap_relative": false, 30 | "snap_rotation": false, 31 | "snap_rotation_offset": 0.0, 32 | "snap_rotation_step": 0.261799, 33 | "snap_scale": false, 34 | "snap_scale_step": 0.1, 35 | "zoom": 0.326531 36 | } 37 | 3D={ 38 | "fov": 70.01, 39 | "gizmos_status": { 40 | "AudioListener3D": 0, 41 | "AudioStreamPlayer3D": 0, 42 | "CPUParticles3D": 0, 43 | "CSGShape3D": 0, 44 | "Camera3D": 0, 45 | "CollisionObject3D": 0, 46 | "CollisionPolygon3D": 0, 47 | "CollisionShape3D": 0, 48 | "Decal": 0, 49 | "FogVolume": 0, 50 | "GPUParticles3D": 0, 51 | "GPUParticlesCollision3D": 0, 52 | "Joint3D": 0, 53 | "Light3D": 0, 54 | "LightmapGI": 0, 55 | "LightmapProbe": 0, 56 | "Marker3D": 0, 57 | "NavigationLink3D": 0, 58 | "NavigationRegion3D": 0, 59 | "OccluderInstance3D": 0, 60 | "Path3D": 0, 61 | "PhysicalBone3D": 0, 62 | "RayCast3D": 0, 63 | "ReflectionProbe": 0, 64 | "ShapeCast3D": 0, 65 | "Skeleton3D": 0, 66 | "SoftBody3D": 0, 67 | "SpringArm3D": 0, 68 | "VehicleWheel3D": 0, 69 | "VisibleOnScreenNotifier3D": 0, 70 | "VoxelGI": 0 71 | }, 72 | "local_coords": false, 73 | "preview_sun_env": { 74 | "environ_ao_enabled": false, 75 | "environ_enabled": true, 76 | "environ_energy": 1.0, 77 | "environ_gi_enabled": false, 78 | "environ_glow_enabled": true, 79 | "environ_ground_color": Color(0.2, 0.169, 0.133, 1), 80 | "environ_sky_color": Color(0.385, 0.454, 0.55, 1), 81 | "environ_tonemap_enabled": true, 82 | "sun_color": Color(1, 1, 1, 1), 83 | "sun_enabled": true, 84 | "sun_energy": 1.0, 85 | "sun_max_distance": 100.0, 86 | "sun_rotation": Vector2(-1.0472, 2.61799) 87 | }, 88 | "rotate_snap": 15.0, 89 | "scale_snap": 10.0, 90 | "show_grid": true, 91 | "show_origin": true, 92 | "snap_enabled": false, 93 | "translate_snap": 1.0, 94 | "viewport_mode": 1, 95 | "viewports": [{ 96 | "auto_orthogonal": false, 97 | "auto_orthogonal_enabled": true, 98 | "cinematic_preview": false, 99 | "display_mode": 20, 100 | "distance": 4.0, 101 | "doppler": false, 102 | "frame_time": false, 103 | "gizmos": true, 104 | "half_res": false, 105 | "information": false, 106 | "listener": true, 107 | "lock_rotation": false, 108 | "orthogonal": false, 109 | "position": Vector3(0, 0, 0), 110 | "use_environment": false, 111 | "view_type": 0, 112 | "x_rotation": 0.5, 113 | "y_rotation": -0.5 114 | }, { 115 | "auto_orthogonal": false, 116 | "auto_orthogonal_enabled": true, 117 | "cinematic_preview": false, 118 | "display_mode": 20, 119 | "distance": 4.0, 120 | "doppler": false, 121 | "frame_time": false, 122 | "gizmos": true, 123 | "half_res": false, 124 | "information": false, 125 | "listener": false, 126 | "lock_rotation": false, 127 | "orthogonal": false, 128 | "position": Vector3(0, 0, 0), 129 | "use_environment": false, 130 | "view_type": 0, 131 | "x_rotation": 0.5, 132 | "y_rotation": -0.5 133 | }, { 134 | "auto_orthogonal": false, 135 | "auto_orthogonal_enabled": true, 136 | "cinematic_preview": false, 137 | "display_mode": 20, 138 | "distance": 4.0, 139 | "doppler": false, 140 | "frame_time": false, 141 | "gizmos": true, 142 | "half_res": false, 143 | "information": false, 144 | "listener": false, 145 | "lock_rotation": false, 146 | "orthogonal": false, 147 | "position": Vector3(0, 0, 0), 148 | "use_environment": false, 149 | "view_type": 0, 150 | "x_rotation": 0.5, 151 | "y_rotation": -0.5 152 | }, { 153 | "auto_orthogonal": false, 154 | "auto_orthogonal_enabled": true, 155 | "cinematic_preview": false, 156 | "display_mode": 20, 157 | "distance": 4.0, 158 | "doppler": false, 159 | "frame_time": false, 160 | "gizmos": true, 161 | "half_res": false, 162 | "information": false, 163 | "listener": false, 164 | "lock_rotation": false, 165 | "orthogonal": false, 166 | "position": Vector3(0, 0, 0), 167 | "use_environment": false, 168 | "view_type": 0, 169 | "x_rotation": 0.5, 170 | "y_rotation": -0.5 171 | }], 172 | "zfar": 4000.01, 173 | "znear": 0.05 174 | } 175 | selected_nodes=Array[NodePath]([]) 176 | -------------------------------------------------------------------------------- /.godot/editor/test.tscn-folding-1955aacdc9602f33d69f33f7e8b9a131.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | node_unfolds=[NodePath("."), PackedStringArray("Transform")] 4 | resource_unfolds=[] 5 | nodes_folded=[] 6 | -------------------------------------------------------------------------------- /.godot/editor/test.tscn-folding-f0a4ea32b72b64218d23e48a955cbc61.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | node_unfolds=[] 4 | resource_unfolds=[] 5 | nodes_folded=[] 6 | -------------------------------------------------------------------------------- /.godot/editor/test_struct.gd-folding-acaa6a01095e4b9f4751836127613e01.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/global_script_class_cache.cfg: -------------------------------------------------------------------------------- 1 | list=Array[Dictionary]([{ 2 | "base": &"Struct", 3 | "class": &"ExampleStruct", 4 | "icon": "", 5 | "language": &"GDScript", 6 | "path": "res://test/example_struct.gd" 7 | }, { 8 | "base": &"Resource", 9 | "class": &"Struct", 10 | "icon": "res://addons/structs/Struct.svg", 11 | "language": &"GDScript", 12 | "path": "res://addons/structs/struct.gd" 13 | }]) 14 | -------------------------------------------------------------------------------- /.godot/imported/Construction100k.png-232e3f250aec71ee61a4e26b0d874df2.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/imported/Construction100k.png-232e3f250aec71ee61a4e26b0d874df2.ctex -------------------------------------------------------------------------------- /.godot/imported/Construction100k.png-232e3f250aec71ee61a4e26b0d874df2.md5: -------------------------------------------------------------------------------- 1 | source_md5="5dd7724e691f5e3943d494085afe1a08" 2 | dest_md5="680f053b77e21a1927a54508acb2493f" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/Construction100k.png-6660d294c5e0a8b0999f20793b66416a.md5: -------------------------------------------------------------------------------- 1 | source_md5="5dd7724e691f5e3943d494085afe1a08" 2 | dest_md5="680f053b77e21a1927a54508acb2493f" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/Construction100k.png-703425ae6bb87def264b0ea778aae0ac.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/imported/Construction100k.png-703425ae6bb87def264b0ea778aae0ac.ctex -------------------------------------------------------------------------------- /.godot/imported/Construction100k.png-703425ae6bb87def264b0ea778aae0ac.md5: -------------------------------------------------------------------------------- 1 | source_md5="5dd7724e691f5e3943d494085afe1a08" 2 | dest_md5="680f053b77e21a1927a54508acb2493f" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/GetSpeed.png-33564b5085aae53cb903fb91616fa10a.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/imported/GetSpeed.png-33564b5085aae53cb903fb91616fa10a.ctex -------------------------------------------------------------------------------- /.godot/imported/GetSpeed.png-33564b5085aae53cb903fb91616fa10a.md5: -------------------------------------------------------------------------------- 1 | source_md5="6eba690abb2638df3ab5f396af7190a1" 2 | dest_md5="42eb126ff687a544c1af49e494b8fb77" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/GetSpeed.png-43a7d5dc0460985a572c716a9030ebf1.md5: -------------------------------------------------------------------------------- 1 | source_md5="6eba690abb2638df3ab5f396af7190a1" 2 | dest_md5="42eb126ff687a544c1af49e494b8fb77" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/GetSpeed.png-4e179a4595dc26c2b7986e53494ffa89.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/imported/GetSpeed.png-4e179a4595dc26c2b7986e53494ffa89.ctex -------------------------------------------------------------------------------- /.godot/imported/GetSpeed.png-4e179a4595dc26c2b7986e53494ffa89.md5: -------------------------------------------------------------------------------- 1 | source_md5="6eba690abb2638df3ab5f396af7190a1" 2 | dest_md5="42eb126ff687a544c1af49e494b8fb77" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/Memory100k.png-4bc11a0a348686f48d1cc17414c9c151.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/imported/Memory100k.png-4bc11a0a348686f48d1cc17414c9c151.ctex -------------------------------------------------------------------------------- /.godot/imported/Memory100k.png-4bc11a0a348686f48d1cc17414c9c151.md5: -------------------------------------------------------------------------------- 1 | source_md5="a11d16213cb9b8187a05830c2f05e942" 2 | dest_md5="d7e38688992812cc1f55bb0ecadefc44" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/Memory100k.png-f6ef46852ab420a96950ff2c1ce5ee34.md5: -------------------------------------------------------------------------------- 1 | source_md5="a11d16213cb9b8187a05830c2f05e942" 2 | dest_md5="d7e38688992812cc1f55bb0ecadefc44" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/Memory100k.png-fe2feee85729fe5a9637fe769749296f.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/imported/Memory100k.png-fe2feee85729fe5a9637fe769749296f.ctex -------------------------------------------------------------------------------- /.godot/imported/Memory100k.png-fe2feee85729fe5a9637fe769749296f.md5: -------------------------------------------------------------------------------- 1 | source_md5="a11d16213cb9b8187a05830c2f05e942" 2 | dest_md5="d7e38688992812cc1f55bb0ecadefc44" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/SetSpeed.png-29aba45f30504030db79a0ce5b3fa94e.md5: -------------------------------------------------------------------------------- 1 | source_md5="5db861d1b0e7fa4e9713cb297b4b9e9f" 2 | dest_md5="07d0f48e5317d2776b73419e7e8d4502" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/SetSpeed.png-4c1827bcecfecd433fbc82583532d603.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/imported/SetSpeed.png-4c1827bcecfecd433fbc82583532d603.ctex -------------------------------------------------------------------------------- /.godot/imported/SetSpeed.png-4c1827bcecfecd433fbc82583532d603.md5: -------------------------------------------------------------------------------- 1 | source_md5="5db861d1b0e7fa4e9713cb297b4b9e9f" 2 | dest_md5="07d0f48e5317d2776b73419e7e8d4502" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/SetSpeed.png-56cbcd57890c45c78ab1158700059a20.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/imported/SetSpeed.png-56cbcd57890c45c78ab1158700059a20.ctex -------------------------------------------------------------------------------- /.godot/imported/SetSpeed.png-56cbcd57890c45c78ab1158700059a20.md5: -------------------------------------------------------------------------------- 1 | source_md5="5db861d1b0e7fa4e9713cb297b4b9e9f" 2 | dest_md5="07d0f48e5317d2776b73419e7e8d4502" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/Struct.svg-0184d67eb8e94e7ebf936ad64f1cff19.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/imported/Struct.svg-0184d67eb8e94e7ebf936ad64f1cff19.ctex -------------------------------------------------------------------------------- /.godot/imported/Struct.svg-0184d67eb8e94e7ebf936ad64f1cff19.md5: -------------------------------------------------------------------------------- 1 | source_md5="67fbc4095b43f68a84421ed795d7c204" 2 | dest_md5="89d2720be6c713ab9a3d74630fb72fdb" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/Struct.svg-93cf475a43e6d813692731492349adf0.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/imported/Struct.svg-93cf475a43e6d813692731492349adf0.ctex -------------------------------------------------------------------------------- /.godot/imported/Struct.svg-93cf475a43e6d813692731492349adf0.md5: -------------------------------------------------------------------------------- 1 | source_md5="67fbc4095b43f68a84421ed795d7c204" 2 | dest_md5="89d2720be6c713ab9a3d74630fb72fdb" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/Struct.svg-c055a278595fa9f26948fc994c22fe81.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/imported/Struct.svg-c055a278595fa9f26948fc994c22fe81.ctex -------------------------------------------------------------------------------- /.godot/imported/Struct.svg-c055a278595fa9f26948fc994c22fe81.md5: -------------------------------------------------------------------------------- 1 | source_md5="67fbc4095b43f68a84421ed795d7c204" 2 | dest_md5="89d2720be6c713ab9a3d74630fb72fdb" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/benchmarks.png-1831c30e07c04155041e15ce690fdec9.md5: -------------------------------------------------------------------------------- 1 | source_md5="7b3f3b2fd8c4806e0c26e20c7ceb5c6a" 2 | dest_md5="1a7834acdc6e1b75113d59d0a8e7fa58" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/benchmarksFinal.png-830b058cbb84194bc3e65ea3f1809837.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/imported/benchmarksFinal.png-830b058cbb84194bc3e65ea3f1809837.ctex -------------------------------------------------------------------------------- /.godot/imported/benchmarksFinal.png-830b058cbb84194bc3e65ea3f1809837.md5: -------------------------------------------------------------------------------- 1 | source_md5="7b3f3b2fd8c4806e0c26e20c7ceb5c6a" 2 | dest_md5="1a7834acdc6e1b75113d59d0a8e7fa58" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex -------------------------------------------------------------------------------- /.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.md5: -------------------------------------------------------------------------------- 1 | source_md5="6b889d078fa758143359bc161bfef966" 2 | dest_md5="efbc9a5174dc45bf0d631c4faedd17a8" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/mac256.png-574a9e1b269ab1feace42f9a058bbf2e.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/imported/mac256.png-574a9e1b269ab1feace42f9a058bbf2e.ctex -------------------------------------------------------------------------------- /.godot/imported/mac256.png-574a9e1b269ab1feace42f9a058bbf2e.md5: -------------------------------------------------------------------------------- 1 | source_md5="918a3319c68e4ab49dcae7560b15a704" 2 | dest_md5="c6ff83a59a8a3329924dd9d12bf2a4a1" 3 | 4 | -------------------------------------------------------------------------------- /.godot/shader_cache/BlitShaderRD/cf3b3093ca87f82a53c6a9dafc90b4cb66d08420e458843f8974e944bcb1449f/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/BlitShaderRD/cf3b3093ca87f82a53c6a9dafc90b4cb66d08420e458843f8974e944bcb1449f/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/BokehDofShaderRD/2332fc406fd60dde1a5c8d06fbb797c1005f45796f1fcb243385c40a079cc74e/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/BokehDofShaderRD/2332fc406fd60dde1a5c8d06fbb797c1005f45796f1fcb243385c40a079cc74e/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasOcclusionShaderRD/02b925db97545d496a95c430e81eabd60a630a207b9eb2e0f52bdf9153257dc6/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CanvasOcclusionShaderRD/02b925db97545d496a95c430e81eabd60a630a207b9eb2e0f52bdf9153257dc6/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasSdfShaderRD/88f05ed314fca69d84aed025060c463262b332f6c6d2c88d49729771a13d82a7/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CanvasSdfShaderRD/88f05ed314fca69d84aed025060c463262b332f6c6d2c88d49729771a13d82a7/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/45fb1ddc6499e56682916a355ce2839e61f42dfe.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/45fb1ddc6499e56682916a355ce2839e61f42dfe.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/8a7277c8d3ac029b087c3fa9c55de85560be5119.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/8a7277c8d3ac029b087c3fa9c55de85560be5119.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/9bcac378d4e61e619a04bca2518f348d5c571569.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/9bcac378d4e61e619a04bca2518f348d5c571569.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/c0a681ae42aa3e0b5abba232ccae0b036be455e4.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/c0a681ae42aa3e0b5abba232ccae0b036be455e4.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/c58570947be7f76937b1582424c0fd3d81be0352.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/c58570947be7f76937b1582424c0fd3d81be0352.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/ddbe30d4d1be5d69b00075293fd27da8decd4af2.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/ddbe30d4d1be5d69b00075293fd27da8decd4af2.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/f3e258e8f7ec2e7e740b62f3bc48ecf5c99fb0db.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CanvasShaderRD/d1779f76f8f65a683e3dc40fc4a54edf12678e4f8a756e2d00cc8eaaaa7c6c69/f3e258e8f7ec2e7e740b62f3bc48ecf5c99fb0db.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ClusterDebugShaderRD/2bd8cf3209a6bd2b1555939ad7ffba1e8b5db18db45f3b3436b442086d9f9a7c/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/ClusterDebugShaderRD/2bd8cf3209a6bd2b1555939ad7ffba1e8b5db18db45f3b3436b442086d9f9a7c/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ClusterRenderShaderRD/054c961accc4e2c0dc8fad022350163830d5356aa712c7e3f216bcd363b8e743/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/ClusterRenderShaderRD/054c961accc4e2c0dc8fad022350163830d5356aa712c7e3f216bcd363b8e743/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ClusterStoreShaderRD/b9b73ebdb1471918e51e80803483ec1e919d7bc07bba8b8b304abfae558881e3/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/ClusterStoreShaderRD/b9b73ebdb1471918e51e80803483ec1e919d7bc07bba8b8b304abfae558881e3/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CopyShaderRD/68e7e30048d6ec879862a30a34f04d2c0559e66d05981d5a52302f6d77e5e320/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CopyShaderRD/68e7e30048d6ec879862a30a34f04d2c0559e66d05981d5a52302f6d77e5e320/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CopyToFbShaderRD/8599b5cd4e77a46811eb70062127b78edaa3c4c1c19e20210dd77a90428bfe49/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CopyToFbShaderRD/8599b5cd4e77a46811eb70062127b78edaa3c4c1c19e20210dd77a90428bfe49/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CubeToDpShaderRD/2a60ad76d5212192482dafe908e3c8abf1ed0e76e1a064ef9e6d8a984c585db3/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CubeToDpShaderRD/2a60ad76d5212192482dafe908e3c8abf1ed0e76e1a064ef9e6d8a984c585db3/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CubemapDownsamplerShaderRD/9f69f8bb60742c0a78c4381effff1a3d57192e6d49563350ccb4b71e9ba49a59/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CubemapDownsamplerShaderRD/9f69f8bb60742c0a78c4381effff1a3d57192e6d49563350ccb4b71e9ba49a59/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CubemapFilterShaderRD/9816c8b79aea1049efe3d849dc77ce63dc757f8eabc9a40abecfc0c7b3ec93e4/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CubemapFilterShaderRD/9816c8b79aea1049efe3d849dc77ce63dc757f8eabc9a40abecfc0c7b3ec93e4/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CubemapRoughnessShaderRD/a7c2daf7247fae35c54470613d02fcd1b2a67c36a52326b29cea0d0d396a1469/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/CubemapRoughnessShaderRD/a7c2daf7247fae35c54470613d02fcd1b2a67c36a52326b29cea0d0d396a1469/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/FsrUpscaleShaderRD/8d42ad9738ca2207d05c346d8620dba3daaf3600621c2b1cb2640beeb3694d45/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/FsrUpscaleShaderRD/8d42ad9738ca2207d05c346d8620dba3daaf3600621c2b1cb2640beeb3694d45/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/GiShaderRD/1aabbf45615089a934eaabcecb86cb0df6bca4aec80fc0a953b36369501f1dc3/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/GiShaderRD/1aabbf45615089a934eaabcecb86cb0df6bca4aec80fc0a953b36369501f1dc3/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/LuminanceReduceShaderRD/7b957ef5e9c79b321e4332e062d017ca661dca6cd05d4bb63c5ec83504b022c1/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/LuminanceReduceShaderRD/7b957ef5e9c79b321e4332e062d017ca661dca6cd05d4bb63c5ec83504b022c1/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/MotionVectorsShaderRD/d063d1ca7d1bc18e43c6052bffba5e667431508e806082ba809c08cc4cac05d1/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/MotionVectorsShaderRD/d063d1ca7d1bc18e43c6052bffba5e667431508e806082ba809c08cc4cac05d1/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ParticlesCopyShaderRD/2c12107b184bb4d44e6225ab168162ea355069713e387aea39333a97347c155d/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/ParticlesCopyShaderRD/2c12107b184bb4d44e6225ab168162ea355069713e387aea39333a97347c155d/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ParticlesShaderRD/99287f71a201dd72d0cf852909c1ff8a5ea73e6166fc2e21be09addfb306957e/f128cab0b22fb7e0d9f023d6cdb81309be392d95.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/ParticlesShaderRD/99287f71a201dd72d0cf852909c1ff8a5ea73e6166fc2e21be09addfb306957e/f128cab0b22fb7e0d9f023d6cdb81309be392d95.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ResolveShaderRD/2b4264a537538dbb5029b8ee6bddf70fb2764621a62214df415723e9a3837ec6/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/ResolveShaderRD/2b4264a537538dbb5029b8ee6bddf70fb2764621a62214df415723e9a3837ec6/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/048236defb6bf03aff4593ae5e1ee179e6446005.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/048236defb6bf03aff4593ae5e1ee179e6446005.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/0af7b6f7bb61aebad1151847167e4d4f8b8b89e5.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/0af7b6f7bb61aebad1151847167e4d4f8b8b89e5.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/0f1bcf11b9f7757773a7866f1cd2e297cb2acf5f.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/0f1bcf11b9f7757773a7866f1cd2e297cb2acf5f.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/44a3b542d1a7aa433841301aac88e07ec68bb95b.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/44a3b542d1a7aa433841301aac88e07ec68bb95b.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/513036325ff64a2245643eae4a83f8c916df1372.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/513036325ff64a2245643eae4a83f8c916df1372.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/6f9f221665bfceef9ee7104462ade0892fae85b4.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/6f9f221665bfceef9ee7104462ade0892fae85b4.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/7e4276feb9e7788110465d53faa6226c57f8116f.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/7e4276feb9e7788110465d53faa6226c57f8116f.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/7fb66440f65dac23b75016fc52fb82ae26e9393f.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/7fb66440f65dac23b75016fc52fb82ae26e9393f.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/7fdaf9a9f33dad9936aaccf6e0d8586657dd71d5.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/7fdaf9a9f33dad9936aaccf6e0d8586657dd71d5.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/9192e10d5d060dba18a014008198b12b09a48e50.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/9192e10d5d060dba18a014008198b12b09a48e50.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/91a7b7c4f6a2d81e1b66e70a1bdca580a0276806.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/91a7b7c4f6a2d81e1b66e70a1bdca580a0276806.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/979584fc9058fc31b2a6d1e00d2ae8801f62209b.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/979584fc9058fc31b2a6d1e00d2ae8801f62209b.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/a3c143fc7cc5e43b3cd10abbecaa4001e645acad.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/a3c143fc7cc5e43b3cd10abbecaa4001e645acad.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/a6d99b637dfee75712ae57f13dc63ae39e299a45.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/a6d99b637dfee75712ae57f13dc63ae39e299a45.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/ab60f8b228c0dad11d9d882c2ab4f61eb6ca2f20.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/ab60f8b228c0dad11d9d882c2ab4f61eb6ca2f20.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/c4c828897f8a3fe72e3713d35b4ba452d7ed9acf.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/c4c828897f8a3fe72e3713d35b4ba452d7ed9acf.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/c911b2eb203b7525047b1fc26929407fb3d4191d.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/c911b2eb203b7525047b1fc26929407fb3d4191d.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/f24bd7cfaf611a139286a23d4d013a86b1753920.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SceneForwardClusteredShaderRD/642a646c6367e6b7d3333a9274c8ef577bbd43c7dfed357368bbc04043846928/f24bd7cfaf611a139286a23d4d013a86b1753920.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ScreenSpaceReflectionFilterShaderRD/2826f8560d7bc2448fc88ccd171c2e1d1d8195f8b612d243af6e52eb566fdc92/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/ScreenSpaceReflectionFilterShaderRD/2826f8560d7bc2448fc88ccd171c2e1d1d8195f8b612d243af6e52eb566fdc92/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ScreenSpaceReflectionScaleShaderRD/69c8036c97ed46ef55fd3f21bd6e1d7b18f5bff505216680d3df7439f5c4035d/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/ScreenSpaceReflectionScaleShaderRD/69c8036c97ed46ef55fd3f21bd6e1d7b18f5bff505216680d3df7439f5c4035d/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ScreenSpaceReflectionShaderRD/82526d20c1ba3f92e55a34b4a64f74ac05668f0bba391a239c2116f07b897c29/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/ScreenSpaceReflectionShaderRD/82526d20c1ba3f92e55a34b4a64f74ac05668f0bba391a239c2116f07b897c29/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SdfgiDebugProbesShaderRD/cc0a7220f6f1dfa1d08935bf7c3042f4b550e9176a735cce4a362dcd5aa33d7a/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SdfgiDebugProbesShaderRD/cc0a7220f6f1dfa1d08935bf7c3042f4b550e9176a735cce4a362dcd5aa33d7a/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SdfgiDebugShaderRD/d4ca042c8e1f129d30c05d21565c6df8cff71cfd4b9ee4d78767eb167b992cdd/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SdfgiDebugShaderRD/d4ca042c8e1f129d30c05d21565c6df8cff71cfd4b9ee4d78767eb167b992cdd/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SdfgiDirectLightShaderRD/c8b81cc20f59bfe9eff1376acbf201ed54813b114ba68f478464df6028756296/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SdfgiDirectLightShaderRD/c8b81cc20f59bfe9eff1376acbf201ed54813b114ba68f478464df6028756296/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SdfgiIntegrateShaderRD/f1a8076cc3fa91c8f00c20e3e00fd07c27f1c07deafec8f49b28ce18498cc02a/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SdfgiIntegrateShaderRD/f1a8076cc3fa91c8f00c20e3e00fd07c27f1c07deafec8f49b28ce18498cc02a/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SdfgiPreprocessShaderRD/eab818f2d90e6fd698a84a657c8457172e492d59db03e419b80665ce82c859a1/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SdfgiPreprocessShaderRD/eab818f2d90e6fd698a84a657c8457172e492d59db03e419b80665ce82c859a1/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ShadowFrustumShaderRD/d8209bb7192a7f4bf485ba48cb55eb7e192460a0946f5f609a648ef8cb5830b4/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/ShadowFrustumShaderRD/d8209bb7192a7f4bf485ba48cb55eb7e192460a0946f5f609a648ef8cb5830b4/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SkeletonShaderRD/6fb20f02140c99ddb53c45ea84b2de28fa0203306f032b181c732b350c4c63e8/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SkeletonShaderRD/6fb20f02140c99ddb53c45ea84b2de28fa0203306f032b181c732b350c4c63e8/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SkyShaderRD/457440cb3cc3580afc82b613f36fe23e8661343879dd1067cd7e4bddba119a4b/03e3b11c69e24394b2d955a8c0ba85587bb70839.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SkyShaderRD/457440cb3cc3580afc82b613f36fe23e8661343879dd1067cd7e4bddba119a4b/03e3b11c69e24394b2d955a8c0ba85587bb70839.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SkyShaderRD/457440cb3cc3580afc82b613f36fe23e8661343879dd1067cd7e4bddba119a4b/373ee543239aa1af0bc6b8ffc3d8251e6104a5b4.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SkyShaderRD/457440cb3cc3580afc82b613f36fe23e8661343879dd1067cd7e4bddba119a4b/373ee543239aa1af0bc6b8ffc3d8251e6104a5b4.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SkyShaderRD/457440cb3cc3580afc82b613f36fe23e8661343879dd1067cd7e4bddba119a4b/de678811d1bad3cad4892a8db7b6ea0be197d51d.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SkyShaderRD/457440cb3cc3580afc82b613f36fe23e8661343879dd1067cd7e4bddba119a4b/de678811d1bad3cad4892a8db7b6ea0be197d51d.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SkyShaderRD/457440cb3cc3580afc82b613f36fe23e8661343879dd1067cd7e4bddba119a4b/f0c584bf613e745cb630a0a20c515f41a21099e8.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SkyShaderRD/457440cb3cc3580afc82b613f36fe23e8661343879dd1067cd7e4bddba119a4b/f0c584bf613e745cb630a0a20c515f41a21099e8.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SortShaderRD/c744e148221eee2a0cfd287c578967f3baa6e55b5e1f2e178709b6703d606a78/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SortShaderRD/c744e148221eee2a0cfd287c578967f3baa6e55b5e1f2e178709b6703d606a78/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SpecularMergeShaderRD/e3bf4029219fc28e239d130af41ed259779b995a7ca276ce11eb905d8ea8a57b/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SpecularMergeShaderRD/e3bf4029219fc28e239d130af41ed259779b995a7ca276ce11eb905d8ea8a57b/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsEffectsDownsampleShaderRD/0d1d15044d4f7ca7c2b5afe06ada316787ba6f5f834dd4a74bcb0f27c6ad4023/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SsEffectsDownsampleShaderRD/0d1d15044d4f7ca7c2b5afe06ada316787ba6f5f834dd4a74bcb0f27c6ad4023/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsaoBlurShaderRD/852f83f68b0c4e7c5e3468c1378bc29d6cf6b1d6134e7f32bbe4a41f4c03248b/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SsaoBlurShaderRD/852f83f68b0c4e7c5e3468c1378bc29d6cf6b1d6134e7f32bbe4a41f4c03248b/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsaoImportanceMapShaderRD/247f86447be456b51ea18b22b420ade338c99ee2f3e3152ed1aaa3ebadc67f7e/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SsaoImportanceMapShaderRD/247f86447be456b51ea18b22b420ade338c99ee2f3e3152ed1aaa3ebadc67f7e/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsaoInterleaveShaderRD/9de9b4c023af22ab2be0dca678d7b4d664c8527ef9a52bccc206544bdfdfa05c/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SsaoInterleaveShaderRD/9de9b4c023af22ab2be0dca678d7b4d664c8527ef9a52bccc206544bdfdfa05c/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsaoShaderRD/fa138e7a98f2ae9eeb44824307aaedbc52d3d22163a0408bb4d633711eb08109/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SsaoShaderRD/fa138e7a98f2ae9eeb44824307aaedbc52d3d22163a0408bb4d633711eb08109/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsilBlurShaderRD/dac38787c40fbc4e392aa08b4e3d9134bacc2f3d6e5271927479287ad852e5fc/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SsilBlurShaderRD/dac38787c40fbc4e392aa08b4e3d9134bacc2f3d6e5271927479287ad852e5fc/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsilImportanceMapShaderRD/ccc82a6fccfc6abe8392f15e6f7ae24510fcf40d8d6191c76a760609b4b006e6/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SsilImportanceMapShaderRD/ccc82a6fccfc6abe8392f15e6f7ae24510fcf40d8d6191c76a760609b4b006e6/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsilInterleaveShaderRD/177649cee5977aa2ad40f265c3fd51aff57597b4dccc1a7b9f2475291dbca628/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SsilInterleaveShaderRD/177649cee5977aa2ad40f265c3fd51aff57597b4dccc1a7b9f2475291dbca628/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsilShaderRD/bc34b7a32a087bbe48db39bda3560096aae58430b8cf31d2137c560389330586/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SsilShaderRD/bc34b7a32a087bbe48db39bda3560096aae58430b8cf31d2137c560389330586/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SubsurfaceScatteringShaderRD/8383f5c059d6d3a08d4d81fb2713bc401e1eb314729f2f8b5a5d4b8f2f2d8426/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/SubsurfaceScatteringShaderRD/8383f5c059d6d3a08d4d81fb2713bc401e1eb314729f2f8b5a5d4b8f2f2d8426/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/TaaResolveShaderRD/c7d5c359b46158c4d5f2a51c059273ed76ee9b5113109a6efc8e1a53c4088d58/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/TaaResolveShaderRD/c7d5c359b46158c4d5f2a51c059273ed76ee9b5113109a6efc8e1a53c4088d58/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/TonemapShaderRD/5a0afbb891b2e887948e0eb15232663943e30c50d7e1832d520a984332f1782c/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/TonemapShaderRD/5a0afbb891b2e887948e0eb15232663943e30c50d7e1832d520a984332f1782c/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/VolumetricFogProcessShaderRD/64f4c4231c81e2b4bd0525c4ccb136ad53968c739b93f72c1ef896692590c0e1/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/VolumetricFogProcessShaderRD/64f4c4231c81e2b4bd0525c4ccb136ad53968c739b93f72c1ef896692590c0e1/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/VolumetricFogShaderRD/77a8d439be308acf751cf873c3e486f1179f68d4113c186eaac18b472f8eb27e/9a227745af2d65830f930370a9fbba551fbd6f60.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/VolumetricFogShaderRD/77a8d439be308acf751cf873c3e486f1179f68d4113c186eaac18b472f8eb27e/9a227745af2d65830f930370a9fbba551fbd6f60.cache -------------------------------------------------------------------------------- /.godot/shader_cache/VoxelGiDebugShaderRD/19e3cda3628deea09919766e49d00fa6261afb498767c8dd3ef86d2a47cc74b2/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/VoxelGiDebugShaderRD/19e3cda3628deea09919766e49d00fa6261afb498767c8dd3ef86d2a47cc74b2/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/VoxelGiShaderRD/e0c893fe524a1bbf1f2c0236e28899795298860353291ecf5f310c503d9a65d5/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/shader_cache/VoxelGiShaderRD/e0c893fe524a1bbf1f2c0236e28899795298860353291ecf5f310c503d9a65d5/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/uid_cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/.godot/uid_cache.bin -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Anaxarchus 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Struct Class 2 | 3 | The Struct class is a versatile tool for managing structured data in Godot Engine. It provides a flexible way to define and manipulate data structures with typed properties, akin to a database table or a struct in traditional programming languages. 4 | 5 | ## Overview 6 | 7 | The `Struct` class is an extendable `Resource` implementing Godot's server/resource pattern to provide highly memory optimized and type safe structs. Data is distributed into PackedArrays and is accessed through the structs index, which doubles as its unique ID. This convention allows for very fast lookups, on par with Godot's internal Classes, while maintaining a memory footprint more then 25x smaller then an identical `Object` and more then 35x smaller then an identical `Node2D`. 8 | 9 | 10 | ## Features 11 | 12 | - **Typed Properties**: Define properties with specific data types such as strings, integers, floats, vectors, and colors. 13 | - **Efficient Memory Management**: Utilizes Godot's packed arrays for efficient memory usage. 14 | - **Dynamic Instance Management**: Easily create and manage multiple instances of structured data. 15 | - **Property Management**: Add, remove, and clear properties dynamically. 16 | - **Convenient Access Methods**: Access and manipulate data using property names or indices. 17 | - **Extensible**: Easily extend the class to create custom structured data types. 18 | 19 | 20 | ## Benchmark 21 | 22 | Comparisons were run against other common Godot Object's to see how this class performed with regards to memory usage, set times and get times. [results](test/README.md) 23 | 24 | 25 | ## Usage 26 | 27 | ### Creating a Struct 28 | 29 | ```gdscript 30 | var car := Struct.new([ 31 | {"name":"make", "type":Struct.DataType.TypeString, "default":""}, 32 | {"name":"model", "type":Struct.DataType.TypeString, "default":""}, 33 | {"name":"year", "type":Struct.DataType.TypeInt32, "default":0}, 34 | {"name":"color", "type":Struct.DataType.TypeColor, "default":Color.WHITE}, 35 | ]) 36 | ``` 37 | 38 | ### Instance Management 39 | 40 | ```gdscript 41 | car.instance_count = 20 42 | var my_car := car.instance() 43 | ``` 44 | 45 | ### Setting and Getting Properties 46 | 47 | ```gdscript 48 | car.instance_set_property(my_car, "make", "Batmobile") 49 | var my_car_make: String = car.instance_get_property(my_car, "make") 50 | ``` 51 | 52 | ### Extending the Struct Class 53 | 54 | ```gdscript 55 | class_name Car extends Struct 56 | 57 | func _init(): 58 | property_add("make", Struct.DataType.TypeString, "") 59 | 60 | func new(make: String) -> int: 61 | return instance({"make":make}) 62 | 63 | func set_instance_make(instance_id: int, value: String) -> void: 64 | data[0][instance_id] = value 65 | 66 | func get_instance_make(instance_id: int) -> String: 67 | return data[0][instance_id] 68 | ``` 69 | 70 | Now we can interact in a manner that's at least somewhat more object oriented: 71 | ```gdscript 72 | var car := Car.new() 73 | var my_car := car.new("KITT") 74 | print( car.get_instance_make(my_car) ) # KITT 75 | 76 | car.set_instance_make(my_car, "Batmobile") 77 | print( car.get_instance_make(my_car) ) # Batmobile 78 | ``` 79 | 80 | ### Clearing Struct Data 81 | 82 | ```gdscript 83 | car.clear() 84 | ``` 85 | 86 | ## Notes 87 | 88 | - This class is marked as experimental and may undergo changes in future versions. 89 | - For more detailed information, refer to the class documentation and comments in the source code. 90 | -------------------------------------------------------------------------------- /addons/structs/Struct.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | Layer 1 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /addons/structs/Struct.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://1okt0cbrp6hk" 6 | path="res://.godot/imported/Struct.svg-93cf475a43e6d813692731492349adf0.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/structs/Struct.svg" 14 | dest_files=["res://.godot/imported/Struct.svg-93cf475a43e6d813692731492349adf0.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | svg/scale=1.0 36 | editor/scale_with_editor_scale=false 37 | editor/convert_colors_with_editor_theme=false 38 | -------------------------------------------------------------------------------- /addons/structs/mac256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/addons/structs/mac256.png -------------------------------------------------------------------------------- /addons/structs/mac256.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://culese6h6thxi" 6 | path="res://.godot/imported/mac256.png-574a9e1b269ab1feace42f9a058bbf2e.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/structs/mac256.png" 14 | dest_files=["res://.godot/imported/mac256.png-574a9e1b269ab1feace42f9a058bbf2e.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/structs/struct.gd: -------------------------------------------------------------------------------- 1 | @icon("res://addons/structs/Struct.svg") 2 | class_name Struct extends Resource 3 | ## A struct implementation using the Server/Resource pattern. 4 | ## 5 | ## Structs are an abstraction over type safe, and highly memory efficient data pools. 6 | ## Creating a struct is done by passing in a list of Dictionary's describing the properties: 7 | ## 8 | ## [codeblock] 9 | ## var car := Struct.new([ 10 | ## {"name":"make", "type":Struct.DataType.TypeString, "default":""}, 11 | ## {"name":"model", "type":Struct.DataType.TypeString, "default":""}, 12 | ## {"name":"year", "type":Struct.DataType.TypeInt32, "default":0}, 13 | ## {"name":"color", "type":Struct.DataType.TypeColor, "default":Color.WHITE}, 14 | ## ]) 15 | ## [/codeblock] 16 | ## 17 | ## Instancing can be done by simply defining the number of instances, or more discretely with [method Struct.instance] 18 | ## [codeblock] 19 | ## car.instance_count = 20 20 | ## var my_car := car.instance() 21 | ## print( my_car ) # 20 22 | ## [/codeblock] 23 | ## 24 | ## Setting and Getting is done using Godot's Server pattern, using the index of the instance as id: 25 | ## [codeblock] 26 | ## car.instance_set_property(my_car, "make", "Batmobile") 27 | ## var my_car_make: String = car.instance_get_property(my_car, "make") 28 | ## print( my_car_make ) # Batmobile 29 | ## [/codeblock] 30 | ## 31 | ## Setting and Getting can be made more performant by using [method Struct.instance_get_at] and [method Struct.instance_set_at] methods: 32 | ## [codeblock] 33 | ## # The index of the property `make` matches the order in which we passed them to the struct in Struct.new() 34 | ## var make_property_index: int = 0 35 | ## 36 | ## car.instance_set_at(my_car, make_property_index, "Batmobile") 37 | ## var my_car_make: String = car.instance_get_at(my_car, make_property_index) 38 | ## print( my_car_make ) # Batmobile 39 | ## [/codeblock] 40 | ## 41 | ## This class becomes much friendlier when we extend it: 42 | ## [codeblock] 43 | ## class_name Car extends Struct 44 | ## 45 | ## func _init(): 46 | ## property_add("make", Struct.DataType.TypeString, "") 47 | ## 48 | ## func new(make: String) -> int: 49 | ## return instance({"make":make}) 50 | ## 51 | ## func set_instance_make(instance_id: int, value: String) -> void: 52 | ## data[0][instance_id] = value 53 | ## 54 | ## func get_instance_make(instance_id: int) -> String: 55 | ## return data[0][instance_id] 56 | ## [/codeblock] 57 | ## 58 | ## [codeblock] 59 | ## var car := Car.new() 60 | ## var my_car := car.new("KITT") 61 | ## print( car.get_instance_make(my_car) ) # KITT 62 | ## 63 | ## car.set_instance_make(my_car, "Batmobile") 64 | ## print( car.get_instance_make(my_car) ) # Batmobile 65 | ## [/codeblock] 66 | ## 67 | ## @experimental 68 | 69 | const TYPE_64BIT = (1<<6) 70 | 71 | ## Valid data types the Struct class is built to handle. 72 | enum DataType { 73 | ## Same as [enum Variant.Type.TYPE_STRING] 74 | TypeString = TYPE_STRING, 75 | ## Same as [enum Variant.Type.TYPE_INT] 76 | TypeInt64 = TYPE_INT | TYPE_64BIT, 77 | TypeInt32 = TYPE_INT, 78 | ## Same as [enum Variant.Type.TYPE_FLOAT] 79 | TypeFloat64 = TYPE_FLOAT | TYPE_64BIT, 80 | TypeFloat32 = TYPE_FLOAT, 81 | ## Same as [enum Variant.Type.TYPE_VECTOR2] 82 | TypeVector2 = TYPE_VECTOR2, 83 | ## Same as [enum Variant.Type.TYPE_VECTOR3] 84 | TypeVector3 = TYPE_VECTOR3, 85 | ## Same as [enum Variant.Type.TYPE_COLOR] 86 | TypeColor = TYPE_COLOR 87 | } 88 | 89 | ## This is the table container. Each property appends a typed packed array where the values can be efficiently managed. 90 | @export 91 | var data: Array 92 | 93 | ## This is a list of [enum Struct.DataType] corresponding to the property with same index. 94 | @export 95 | var property_types: PackedInt32Array 96 | 97 | ## This list contains default values of the property with the matching index 98 | @export 99 | var property_defaults: Array 100 | 101 | ## This list contains the names of the property with the matching index 102 | @export 103 | var property_names: PackedStringArray 104 | 105 | ## The current number of instances. This is equivalent to the number of rows in a table. 106 | @export 107 | var instance_count : int : 108 | set(value): ## When set, the table is simply resized. It drops the instances at the end if shrinking, or adds new empty rows at the bottom. 109 | instance_count = value 110 | for array in data: 111 | array.resize(instance_count) 112 | 113 | func _init(properties:Array[Dictionary] = [], initial_instance_count:int = 0): 114 | for property in properties: 115 | assert(property.has("name"), "property is missing required parameter: `name: String`") 116 | assert(property.get("name") is String, "`name` property must be of type `String`") 117 | assert(property.has("type"), "property is missing required parameter: `type: DataType`") 118 | assert(property.get("type") is Struct.DataType, "property must be member of enum `DataType`") 119 | assert(property.has("default"), "property is missing required parameter: `default: Variant`") 120 | property_add(property.name, property.type, property.default) 121 | instance_count = initial_instance_count 122 | 123 | ## This method will completely wipe the struct, clearing both instance and property data. 124 | func clear(): 125 | data.clear() 126 | property_types.clear() 127 | property_defaults.clear() 128 | property_names.clear() 129 | instance_count = 0 130 | 131 | ## Adds a property column to the struct table. 132 | func property_add(name: String, type: DataType, default: Variant=null) -> int: 133 | data.append(_type_get_packed_array(type, instance_count)) 134 | var pid:int = property_names.size() 135 | property_names.append(name) 136 | property_defaults.append(_type_get_default(type) if default == null else default) 137 | property_types.append(type) 138 | return pid 139 | 140 | ## Removes a property column from the struct table. 141 | func property_remove(pid: int) -> void: 142 | if pid < 0 or pid > property_names.size(): 143 | return 144 | data.remove_at(pid) 145 | property_names.remove_at(pid) 146 | property_defaults.remove_at(pid) 147 | property_types.remove_at(pid) 148 | 149 | ## Clears a property of all it's data, resetting every instance's value to the default value for that property. 150 | func property_clear(pid: int) -> void: 151 | if pid < 0 or pid > property_names.size(): 152 | return 153 | data[pid].fill(property_defaults[pid]) 154 | 155 | ## Get the name associated with the property of the given index. 156 | func property_get_name(pid: int) -> String: 157 | if pid < 0 or pid > property_names.size(): 158 | return "" 159 | return property_names[pid] 160 | 161 | ## Get the DataType associated with the property of the given index. 162 | func property_get_type(pid: int) -> DataType: 163 | if pid < 0 or pid > property_names.size(): 164 | return -1 165 | return property_types[pid] 166 | 167 | ## Get the default value associated with the property of the given index. 168 | func property_get_default(pid: int) -> Variant: 169 | if pid < 0 or pid > property_names.size(): 170 | return null 171 | return property_defaults[pid] 172 | 173 | ## Get the index of the property with the given name. 174 | func property_get_id(property: String) -> int: 175 | return property_names.find(property) 176 | 177 | ## Increments the instance counter and returns the count. Useful abstraction for storing the id of particular instances: 178 | ## Can optionally pass in initial data in a dictionary: [code]{"property":"value"}[/code] 179 | func instance(initial_data: Dictionary = {}) -> int: 180 | instance_count += 1 181 | for key in initial_data.keys(): 182 | instance_set_property(instance_count, key, initial_data[key]) 183 | return instance_count 184 | 185 | func instance_set_property(sid: int, property: String, value: Variant) -> void: 186 | if !property_names.has(property): 187 | return 188 | data[property_names.find(property)][sid] = value 189 | 190 | func instance_get_property(sid: int, property: String) -> Variant: 191 | if !property_names.has(property): 192 | return 193 | return data[property_names.find(property)][sid] 194 | 195 | func instance_set_at(sid: int, pid:int, value: Variant) -> void: 196 | data[pid][sid] = value 197 | 198 | func instance_get_at(sid: int, pid:int) -> Variant: 199 | return data[pid][sid] 200 | 201 | func instance_get(sid: int) -> Array[Variant]: 202 | var res: Array[Variant] 203 | for pid in property_names.size(): 204 | res.append(data[pid][sid]) 205 | return res 206 | 207 | func instance_set(sid: int, properties: Array[Variant]) -> void: 208 | for pid in properties.size(): 209 | data[pid][sid] = properties[pid] 210 | 211 | func instance_get_dict(sid: int) -> Dictionary: 212 | var res: Dictionary 213 | for pid in property_names.size(): 214 | res[property_names[pid]] = data[pid][sid] 215 | return res 216 | 217 | func instance_set_dict(sid: int, properties: Dictionary) -> void: 218 | for key in properties.keys(): 219 | var pid := property_names.find(key) 220 | if pid == -1: 221 | continue 222 | data[pid][sid] = properties[key] 223 | 224 | func instance_clear(sid: int) -> void: 225 | for i in property_names.size(): 226 | data[i][sid] = property_defaults[i] 227 | 228 | func _type_get_default(type: DataType) -> Variant: 229 | match type: 230 | DataType.TypeString: 231 | return "" 232 | DataType.TypeInt64: 233 | return 0 234 | DataType.TypeInt32: 235 | return 0 236 | DataType.TypeFloat64: 237 | return 0.0 238 | DataType.TypeFloat32: 239 | return 0.0 240 | DataType.TypeVector2: 241 | return Vector2.ZERO 242 | DataType.TypeVector3: 243 | return Vector3.ZERO 244 | DataType.TypeColor: 245 | return Color.WHITE 246 | _: 247 | return null 248 | 249 | func _type_get_packed_array(type: DataType, size: int) -> Variant: 250 | match type: 251 | DataType.TypeString: 252 | var array: PackedStringArray 253 | array.resize(size) 254 | return array 255 | DataType.TypeInt64: 256 | var array: PackedInt64Array 257 | array.resize(size) 258 | return array 259 | DataType.TypeInt32: 260 | var array: PackedInt32Array 261 | array.resize(size) 262 | return array 263 | DataType.TypeFloat64: 264 | var array: PackedFloat64Array 265 | array.resize(size) 266 | return array 267 | DataType.TypeFloat32: 268 | var array: PackedFloat32Array 269 | array.resize(size) 270 | return array 271 | DataType.TypeVector2: 272 | var array: PackedVector2Array 273 | array.resize(size) 274 | return array 275 | DataType.TypeVector3: 276 | var array: PackedVector3Array 277 | array.resize(size) 278 | return array 279 | DataType.TypeColor: 280 | var array: PackedColorArray 281 | array.resize(size) 282 | return array 283 | _: 284 | return null 285 | 286 | func _type_is_valid(type: int) -> bool: 287 | return type in DataType.values() 288 | -------------------------------------------------------------------------------- /icon.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /icon.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dven02q5qdwga" 6 | path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://icon.svg" 14 | dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | svg/scale=1.0 36 | editor/scale_with_editor_scale=false 37 | editor/convert_colors_with_editor_theme=false 38 | -------------------------------------------------------------------------------- /project.godot: -------------------------------------------------------------------------------- 1 | ; Engine configuration file. 2 | ; It's best edited using the editor UI and not directly, 3 | ; since the parameters that go here are not all obvious. 4 | ; 5 | ; Format: 6 | ; [section] ; section goes between [] 7 | ; param=value ; assign values to parameters 8 | 9 | config_version=5 10 | 11 | [application] 12 | 13 | config/name="Structs" 14 | run/main_scene="res://test/test.tscn" 15 | config/features=PackedStringArray("4.2", "Forward Plus") 16 | config/icon="res://icon.svg" 17 | 18 | [editor_plugins] 19 | 20 | enabled=PackedStringArray("res://addons/structs/plugin.cfg") 21 | -------------------------------------------------------------------------------- /test/Memory100k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Anaxarchus/gdscript-structs/ecea8beaf96227e447731978643df060d0c5ace2/test/Memory100k.png -------------------------------------------------------------------------------- /test/README.md: -------------------------------------------------------------------------------- 1 | ## Benchmarks 2 | 3 | ### Hardware 4 | - **CPU** Apple M2 5 | - **Memory** 8gb 6 | 7 | Times Averaged from 100 property queries in 1000 Object instance samples for a total of 100,000 samples 8 | 9 | | Type | **Count** | Data Hash | Usage (mb) | Set Time (nanoseconds) | Get Time (nanoseconds) | 10 | |------|-------|-----------|------------|------------------------|------------------------| 11 | | Struct (using property name) | 100,000 | 3970848985 | 5.274 | 397.861 | 340.9386 | 12 | | Struct (using property name) | 250,000 | 3970848985 | 10.5168 | 388.391 | 333.8981 | 13 | | Struct (using property name) | 500,000 | 3970848985 | 21.0026 | 391.8791 | 331.7904 | 14 | | Struct (using property name) | 1,000,000 | 3970848985 | 41.9741 | 389.9813 | 325.911 | 15 | | ||||| 16 | | Struct (using property index) | 100,000 | 3970848985 | 5.274 | 310.4997 | 242.5218 | 17 | | Struct (using property index) | 250,000 | 3970848985 | 10.5168 | 302.1812 | 239.4414 | 18 | | Struct (using property index) | 500,000 | 3970848985 | 21.0026 | 306.1581 | 239.7895 | 19 | | Struct (using property index) | 1,000,000 | 3970848985 | 41.9741 | 300.9081 | 233.9196 | 20 | |||||| 21 | | Object | 100,000 | 3970848985 | 83.0951 | 294.7211 | 234.7708 | 22 | | Object | 250,000 | 3970848985 | 288.0223 | 284.3404 | 229.1703 | 23 | | Object | 500,000 | 3970848985 | 631.6052 | 284.1401 | 227.5801 | 24 | | Object | 1,000,000 | 3970848985 | 1318.7312 | 293.6292 | 237 | 25 | |||||| 26 | | Resource | 100,000 | 3970848985 | 95.9308 | 300.1285 | 245.0109 | 27 | | Resource | 250,000 | 3970848985 | 319.9825 | 297.1482 | 248.22 | 28 | | Resource | 500,000 | 3970848985 | 695.6052 | 307.4312 | 247.6692 | 29 | | Resource | 1,000,000 | 3970848985 | 1446.7312 | 312.3999 | 247.7789 | 30 | |||||| 31 | | Node | 100,000 | 3970848985 | 57.091 | 311.749 | 262.0792 | 32 | | Node | 250,000 | 3970848985 | 222.9824 | 311.4796 | 260.5486 | 33 | | Node | 500,000 | 3970848985 | 501.5654 | 315.969 | 265.1715 | 34 | | Node | 1,000,000 | 3970848985 | 1058.7312 | 307.6601 | 256.6099 | 35 | |||||| 36 | | Node2D | 100,000 | 3970848985 | 129.9021 | 316.2503 | 276.711 | 37 | | Node2D | 250,000 | 3970848985 | 405.0104 | 325.1886 | 285.6207 | 38 | | Node2D | 500,000 | 3970848985 | 865.6611 | 322.4516 | 284.6098 | 39 | | Node2D | 1,000,000 | 3970848985 | 1786.8829 | 326.3783 | 289.6905 | 40 | 41 | Each object type was given the following properties, if they didn't previously exist: 42 | ``` 43 | var editor_description: String = "some description" 44 | var name: String = "TestObject" 45 | var process_mode: int = 1 46 | var process_physics_priority: int = 999 47 | var process_priority: int = 999 48 | var process_thread_group_order: int = 999 49 | var scene_file_path: String = "some/filepath/to/somewhere" 50 | ``` 51 | -------------------------------------------------------------------------------- /test/benchmarks.txt: -------------------------------------------------------------------------------- 1 | CPU: Apple M2 2 | Times Averaged from 100 property queries in each of 1000 Object instances for a total of 100000 samples 3 | 4 | | Type | Count | Data Hash | Usage (mb) | Set Time (nanoseconds) | Get Time (nanoseconds) | 5 | |------|-------|-----------|------------|------------------------|------------------------| 6 | | Struct (using property name) | 100000 | 3970848985 | 5.274 | 397.861 | 340.9386 | 7 | | Struct (using property index) | 100000 | 3970848985 | 5.274 | 310.4997 | 242.5218 | 8 | | Struct (using property name) | 250000 | 3970848985 | 10.5168 | 388.391 | 333.8981 | 9 | | Struct (using property index) | 250000 | 3970848985 | 10.5168 | 302.1812 | 239.4414 | 10 | | Struct (using property name) | 500000 | 3970848985 | 21.0026 | 391.8791 | 331.7904 | 11 | | Struct (using property index) | 500000 | 3970848985 | 21.0026 | 306.1581 | 239.7895 | 12 | | Struct (using property name) | 1000000 | 3970848985 | 41.9741 | 389.9813 | 325.911 | 13 | | Struct (using property index) | 1000000 | 3970848985 | 41.9741 | 300.9081 | 233.9196 | 14 | | Object | 100000 | 3970848985 | 83.0951 | 294.7211 | 234.7708 | 15 | | Object | 250000 | 3970848985 | 288.0223 | 284.3404 | 229.1703 | 16 | | Object | 500000 | 3970848985 | 631.6052 | 284.1401 | 227.5801 | 17 | | Object | 1000000 | 3970848985 | 1318.7312 | 293.6292 | 237 | 18 | | Resource | 100000 | 3970848985 | 95.9308 | 300.1285 | 245.0109 | 19 | | Resource | 250000 | 3970848985 | 319.9825 | 297.1482 | 248.22 | 20 | | Resource | 500000 | 3970848985 | 695.6052 | 307.4312 | 247.6692 | 21 | | Resource | 1000000 | 3970848985 | 1446.7312 | 312.3999 | 247.7789 | 22 | | Node | 100000 | 3970848985 | 57.091 | 311.749 | 262.0792 | 23 | | Node | 250000 | 3970848985 | 222.9824 | 311.4796 | 260.5486 | 24 | | Node | 500000 | 3970848985 | 501.5654 | 315.969 | 265.1715 | 25 | | Node | 1000000 | 3970848985 | 1058.7312 | 307.6601 | 256.6099 | 26 | | Node2D | 100000 | 3970848985 | 129.9021 | 316.2503 | 276.711 | 27 | | Node2D | 250000 | 3970848985 | 405.0104 | 325.1886 | 285.6207 | 28 | | Node2D | 500000 | 3970848985 | 865.6611 | 322.4516 | 284.6098 | 29 | | Node2D | 1000000 | 3970848985 | 1786.8829 | 326.3783 | 289.6905 | 30 | -------------------------------------------------------------------------------- /test/example_struct.gd: -------------------------------------------------------------------------------- 1 | class_name ExampleStruct extends Struct 2 | 3 | const PropertyPosition: int = 0 4 | const PropertyRotation: int = 1 5 | const PropertyScale: int = 2 6 | 7 | func _init() -> void: 8 | property_add("position", DataType.TypeVector3, Vector3.ZERO) 9 | property_add("rotation", DataType.TypeVector3, Vector3.ZERO) 10 | property_add("scale", DataType.TypeVector3, Vector3.ZERO) 11 | 12 | func set_position(struct_id: int, value: Vector3) -> void: 13 | data[PropertyPosition][struct_id] = value 14 | 15 | func set_rotation(struct_id: int, value: Vector3) -> void: 16 | data[PropertyRotation][struct_id] = value 17 | 18 | func set_scale(struct_id: int, value: Vector3) -> void: 19 | data[PropertyScale][struct_id] = value 20 | 21 | func get_position(struct_id: int) -> Vector3: 22 | return data[PropertyPosition][struct_id] 23 | 24 | func get_rotation(struct_id: int) -> Vector3: 25 | return data[PropertyRotation][struct_id] 26 | 27 | func get_scale(struct_id: int) -> Vector3: 28 | return data[PropertyScale][struct_id] 29 | -------------------------------------------------------------------------------- /test/test.gd: -------------------------------------------------------------------------------- 1 | extends Node2D 2 | 3 | 4 | # Number of set calls to generate 5 | const SetSamples:int = 100 6 | # Number of Objects to call the set calls on 7 | const ObjectSamples:int = 1000 8 | var start_time: float 9 | 10 | var output: String 11 | 12 | 13 | 14 | func _ready() -> void: 15 | var which:int = 4 16 | var count: int = 100_000 17 | #var count: int = 250_000 18 | #var count: int = 500_000 19 | #var count: int = 1_000_000 20 | var sets := generate_sets(SetSamples) 21 | 22 | #output += "CPU: " + OS.get_processor_name() + "\n" 23 | #output += ("Times Averaged from {0} property queries in each of {1} Object instances for a total of {2} samples\n\n".format([SetSamples, ObjectSamples, SetSamples*ObjectSamples])) 24 | #print("") 25 | #output += "| Type | Count | Data Hash | Usage (mb) | Set Time (nanoseconds) | Get Time (nanoseconds) |\n" 26 | #output += "|______|_______|___________|____________|________________________|________________________|\n" 27 | output = FileAccess.get_file_as_string("res://test/benchmarks.txt") 28 | 29 | var sample_instance:int = randi_range(0, count-1) 30 | match which: 31 | 0: 32 | test_structs(count, sets, sample_instance) 33 | 1: 34 | test_objects(count, sets, sample_instance) 35 | 2: 36 | test_resources(count, sets, sample_instance) 37 | 3: 38 | test_nodes(count, sets, sample_instance) 39 | 4: 40 | test_node2ds(count, sets, sample_instance) 41 | 42 | var file := FileAccess.open("res://test/benchmarks.txt", FileAccess.WRITE) 43 | if file != null: 44 | file.store_string(output) 45 | file.close() 46 | else: 47 | print("could not store data: ", FileAccess.get_open_error()) 48 | ERR_PARSE_ERROR 49 | print_rich("[color=green]Finished[/color]") 50 | 51 | func test_structs(count: int, sets: Array[Dictionary], subject: int): 52 | var struct := Struct.new([ 53 | { "name": "editor_description", "type": Struct.DataType.TypeString, "default": "some description" }, 54 | { "name": "name", "type": Struct.DataType.TypeString, "default": "TestStruct" }, 55 | { "name": "process_mode", "type": Struct.DataType.TypeInt32, "default": 999 }, 56 | { "name": "process_physics_priority", "type": Struct.DataType.TypeInt32, "default": 999 }, 57 | { "name": "process_priority", "type": Struct.DataType.TypeInt32, "default": 999 }, 58 | { "name": "process_thread_group_order", "type": Struct.DataType.TypeInt32, "default": 999 }, 59 | { "name": "scene_file_path", "type": Struct.DataType.TypeString, "default": "some/filepath/to/somewhere" }, 60 | ]) 61 | var bmu := OS.get_static_memory_usage() 62 | 63 | time_start() 64 | struct.instance_count = count 65 | var construction_time := time_end() 66 | 67 | time_start() 68 | for x in ObjectSamples: 69 | for row in sets: 70 | struct.instance_set_property(subject, row.property, row.value) 71 | var set_property_time := time_end() 72 | 73 | var pids := sets.duplicate(true) 74 | for x in pids.size(): 75 | pids[x].property = struct.property_get_id(pids[x].property) 76 | 77 | time_start() 78 | for x in ObjectSamples: 79 | for row in pids: 80 | struct.instance_set_at(subject, row.property, row.value) 81 | var set_at_time := time_end() 82 | 83 | time_start() 84 | for x in ObjectSamples: 85 | for row in sets: 86 | struct.instance_get_property(subject, row.property) 87 | var get_property_time := time_end() 88 | 89 | time_start() 90 | for x in ObjectSamples: 91 | for row in pids: 92 | struct.instance_get_at(subject, row.property) 93 | var get_at_time := time_end() 94 | 95 | var memory := OS.get_static_memory_usage() 96 | 97 | print_results("Struct (using property name)", count, sets.hash(), float(memory-bmu), set_property_time, get_property_time) 98 | print_results("Struct (using property index)", count, sets.hash(), float(memory-bmu), set_at_time, get_at_time) 99 | 100 | #print("\nTest Results: Structs -----------------------") 101 | #print("Number of instances: ", count) 102 | #print("Construction time: ", construction_time) 103 | #print("") 104 | #print("Total Memory Used Before Instancing: ", float(bmu)/1_000_000, "mb") 105 | #print("Total Memory Used After Instancing: ", float(memory)/1_000_000, "mb") 106 | #print(" Struct Memory Usage: ", float(memory-bmu)/1_000_000, "mb") 107 | #print("") 108 | #print("Number of properties set: ", sets.size()) 109 | #print(" Time to set all instances using property: ", set_property_time) 110 | #print(" Average set property time per instance: ", set_property_time/sets.size()) 111 | #print("") 112 | #print(" Time to set all instances using index: ", set_at_time) 113 | #print(" Average set at time per instance: ", set_at_time/sets.size()) 114 | #print("") 115 | #print("Number of properties get: ", sets.size()) 116 | #print(" Time to get all instances using property: ", get_property_time) 117 | #print(" Average get property time per instance: ", get_property_time/sets.size()) 118 | #print("") 119 | #print(" Time to get all instances using index: ", get_at_time) 120 | #print(" Average get at time per instance: ", get_at_time/sets.size()) 121 | #print("----------------------------------------------\n") 122 | 123 | 124 | func test_objects(count: int, sets: Array[Dictionary], subject: int): 125 | var bmu := OS.get_static_memory_usage() 126 | var list: Array 127 | 128 | time_start() 129 | for i in count: 130 | list.append(TestObject.new()) 131 | var construction_time := time_end() 132 | var memory := OS.get_static_memory_usage() - bmu 133 | 134 | time_start() 135 | for x in ObjectSamples: 136 | for prop in sets: 137 | list[subject].set(prop.property, prop.value) 138 | var set_time := time_end() 139 | 140 | time_start() 141 | for x in ObjectSamples: 142 | for prop in sets: 143 | list[subject].get(prop.property) 144 | var get_time := time_end() 145 | 146 | for obj in list: 147 | obj.free() 148 | 149 | print_results("Object", count, sets.hash(), float(memory-bmu), set_time, get_time) 150 | 151 | #print("\nTest Results: Objects -----------------------") 152 | #print("Number of instances: ", count) 153 | #print(" Memory usage: ", float(memory)/1_000_000, "mb") 154 | #print("") 155 | #print("Number of properties set: ", sets.size()) 156 | #print(" Time to complete all sets: ", set_time) 157 | #print(" Average set time: ", set_time/sets.size()) 158 | #print("") 159 | #print("Number of properties get: ", sets.size()) 160 | #print(" Time to complete all gets: ", get_time) 161 | #print(" Average get time: ", get_time/sets.size()) 162 | #print("----------------------------------------------\n") 163 | 164 | func test_resources(count: int, sets: Array[Dictionary], subject: int): 165 | var bmu := OS.get_static_memory_usage() 166 | var list: Array 167 | 168 | time_start() 169 | for i in count: 170 | list.append(TestResource.new()) 171 | var construction_time := time_end() 172 | var memory := OS.get_static_memory_usage() - bmu 173 | 174 | time_start() 175 | for x in ObjectSamples: 176 | for prop in sets: 177 | list[subject].set(prop.property, prop.value) 178 | var set_time := time_end() 179 | 180 | time_start() 181 | for x in ObjectSamples: 182 | for prop in sets: 183 | list[subject].get(prop.property) 184 | var get_time := time_end() 185 | 186 | print_results("Resource", count, sets.hash(), float(memory-bmu), set_time, get_time) 187 | 188 | #print("\nTest Results: Resources ----------------------") 189 | #print("Number of instances: ", count) 190 | #print(" Memory usage: ", float(memory)/1_000_000, "mb") 191 | #print("") 192 | #print("Number of properties set: ", sets.size()) 193 | #print(" Time to complete all sets: ", set_time) 194 | #print(" Average set time: ", set_time/sets.size()) 195 | #print("") 196 | #print("Number of properties get: ", sets.size()) 197 | #print(" Time to complete all gets: ", get_time) 198 | #print(" Average get time: ", get_time/sets.size()) 199 | #print("----------------------------------------------\n") 200 | 201 | func test_nodes(count: int, sets: Array[Dictionary], subject: int): 202 | var bmu := OS.get_static_memory_usage() 203 | var list: Array 204 | 205 | time_start() 206 | for i in count: 207 | list.append(Node.new()) 208 | var construction_time := time_end() 209 | var memory := OS.get_static_memory_usage() - bmu 210 | 211 | time_start() 212 | for x in ObjectSamples: 213 | for prop in sets: 214 | list[subject].set(prop.property, prop.value) 215 | var set_time := time_end() 216 | 217 | time_start() 218 | for x in ObjectSamples: 219 | for prop in sets: 220 | list[subject].get(prop.property) 221 | var get_time := time_end() 222 | 223 | for obj in list: 224 | obj.queue_free() 225 | 226 | print_results("Node", count, sets.hash(), float(memory-bmu), set_time, get_time) 227 | 228 | #print("\nTest Results: Nodes -------------------------") 229 | #print("Number of instances: ", count) 230 | #print(" Memory usage: ", float(memory)/1_000_000, "mb") 231 | #print("") 232 | #print("Number of properties set: ", sets.size()) 233 | #print(" Time to complete all sets: ", set_time) 234 | #print(" Average set time: ", set_time/sets.size()) 235 | #print("") 236 | #print("Number of properties get: ", sets.size()) 237 | #print(" Time to complete all gets: ", get_time) 238 | #print(" Average get time: ", get_time/sets.size()) 239 | #print("----------------------------------------------\n") 240 | 241 | func test_node2ds(count: int, sets: Array[Dictionary], subject: int): 242 | var bmu := OS.get_static_memory_usage() 243 | var list: Array 244 | 245 | time_start() 246 | for i in count: 247 | list.append(Node2D.new()) 248 | var construction_time := time_end() 249 | var memory := OS.get_static_memory_usage() - bmu 250 | 251 | time_start() 252 | for x in ObjectSamples: 253 | for prop in sets: 254 | list[subject].set(prop.property, prop.value) 255 | var set_time := time_end() 256 | 257 | time_start() 258 | for x in ObjectSamples: 259 | for prop in sets: 260 | list[subject].get(prop.property) 261 | var get_time := time_end() 262 | 263 | for obj in list: 264 | obj.queue_free() 265 | 266 | print_results("Node2D", count, sets.hash(), float(memory-bmu), set_time, get_time) 267 | 268 | #print("\nTest Results: Node2Ds -----------------------") 269 | #print("Number of instances: ", count) 270 | #print(" Memory usage: ", float(memory)/1_000_000, "mb") 271 | #print("") 272 | #print("Number of properties set: ", sets.size()) 273 | #print(" Time to complete all sets: ", set_time) 274 | #print(" Average set time: ", set_time/sets.size()) 275 | #print("") 276 | #print("Number of properties get: ", sets.size()) 277 | #print(" Time to complete all gets: ", get_time) 278 | #print(" Average get time: ", get_time/sets.size()) 279 | #print("----------------------------------------------\n") 280 | 281 | func time_start() -> float: 282 | start_time = Time.get_unix_time_from_system() 283 | return start_time 284 | 285 | func time_end() -> float: 286 | return Time.get_unix_time_from_system() - start_time 287 | 288 | func print_results(object_type: String, object_count: int, sample_data_hash: int, memory: float, set_time: float, get_time: float): 289 | #print("| {0} | {1} | {2} | {3} | {4} | {5} |".format([object_type, object_count, sample_data_hash, snappedf(memory/1_000_000, 0.0001), snappedf(set_time*1e+9/ObjectSamples/SetSamples, 0.0001), snappedf(get_time*1e+9/ObjectSamples/SetSamples, 0.0001)])) 290 | output += ("| {0} | {1} | {2} | {3} | {4} | {5} |\n".format([object_type, object_count, sample_data_hash, snappedf(memory/1_000_000, 0.0001), snappedf(set_time*1e+9/ObjectSamples/SetSamples, 0.0001), snappedf(get_time*1e+9/ObjectSamples/SetSamples, 0.0001)])) 291 | 292 | func generate_sets(count: int) -> Array[Dictionary]: 293 | var rng := RandomNumberGenerator.new() 294 | rng.seed = 69420 295 | var props = [ 296 | "editor_description", 297 | "name", 298 | "process_mode", 299 | "process_physics_priority", 300 | "process_priority", 301 | "process_thread_group_order", 302 | "scene_file_path" 303 | ] 304 | var result: Array[Dictionary] 305 | var abc: String = "abcdefghijklmnopqrstuvwxyz" 306 | for x in count: 307 | var prop: String = props[rng.randi_range(0, props.size()-1)] 308 | match prop: 309 | "editor_description", "scene_file_path", "name": 310 | var value: String 311 | for i in rng.randi_range(12, 24): 312 | value += abc[rng.randi_range(0, abc.length()-1)] 313 | result.append({"property": prop, "value": value}) 314 | "process_mode", "process_physics_priority", "process_priority", "process_thread_group_order": 315 | result.append({"property": prop, "value": rng.randi()}) 316 | 317 | return result 318 | 319 | 320 | func _sets_to_ints(sets: Array[Dictionary]) -> Array[Dictionary]: 321 | for each in sets: 322 | match each.property: 323 | "editor_description": 324 | each.property = 0 325 | "name": 326 | each.property = 1 327 | "process_mode": 328 | each.property = 2 329 | "process_physics_priority": 330 | each.property = 3 331 | "process_priority": 332 | each.property = 4 333 | "process_thread_group_order": 334 | each.property = 5 335 | "scene_file_path": 336 | each.property = 6 337 | return sets 338 | 339 | 340 | class TestObject extends Object: 341 | var editor_description: String = "some description" 342 | var name: String = "TestObject" 343 | var process_mode: int = 1 344 | var process_physics_priority: int = 999 345 | var process_priority: int = 999 346 | var process_thread_group_order: int = 999 347 | var scene_file_path: String = "some/filepath/to/somewhere" 348 | 349 | class TestResource extends Resource: 350 | var editor_description: String = "some description" 351 | var name: String = "TestObject" 352 | var process_mode: int = 1 353 | var process_physics_priority: int = 999 354 | var process_priority: int = 999 355 | var process_thread_group_order: int = 999 356 | var scene_file_path: String = "some/filepath/to/somewhere" 357 | -------------------------------------------------------------------------------- /test/test.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://cupjgy8tg43ap"] 2 | 3 | [ext_resource type="Script" path="res://test/test.gd" id="1_gphns"] 4 | 5 | [node name="test" type="Node2D"] 6 | script = ExtResource("1_gphns") 7 | --------------------------------------------------------------------------------