├── .gitattributes ├── .godot ├── .gdignore ├── editor │ ├── Delaunator.gd-folding-7108ebf2fd0288976d5f98f0cfe2207c.cfg │ ├── Demo.gd-folding-7ee78fc71e2671a750a33c38a8a42fc0.cfg │ ├── Demo.tscn-editstate-fb94f1b4b007fc3d927da4eed1f7a59f.cfg │ ├── Demo.tscn-folding-fb94f1b4b007fc3d927da4eed1f7a59f.cfg │ ├── MapRegion.gd-folding-61cb7545d8cafcb47ccba48f73b5b131.cfg │ ├── default_env.tres-folding-7cf3fd67ad9f55210191d77b582b8209.cfg │ ├── editor_layout.cfg │ ├── filesystem_cache8 │ ├── filesystem_update4 │ ├── project_metadata.cfg │ └── script_editor_cache.cfg ├── global_script_class_cache.cfg ├── imported │ ├── icon.png-487276ed1e3a0c39cad0279d744ee560.ctex │ ├── icon.png-487276ed1e3a0c39cad0279d744ee560.md5 │ ├── screenshot.png-024a21af5d37bf0f0dd0e2bccdd149d0.ctex │ └── screenshot.png-024a21af5d37bf0f0dd0e2bccdd149d0.md5 ├── shader_cache │ ├── BlitShaderRD │ │ └── cc8b73e92b59634169c18582ef62bbfbb4226813d2489c795e0a2534665dd693 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── BokehDofShaderRD │ │ └── f78d1254a84ac716f239ae02ba6e366cc348e536e963607d588aa6c4ae8030af │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CanvasOcclusionShaderRD │ │ └── 4cccdae8448e7a52c5fa32de6d822f1d1caa919466948e6c475c5adbf1be360b │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CanvasSdfShaderRD │ │ └── daf99a56d0b25e048eefca7aaf5b1c22578402adb1b800a6f45917e4357276b8 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CanvasShaderRD │ │ └── 7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65 │ │ │ ├── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ │ │ ├── 6c94b25d75b1ec58f806edc8e65c2a35743ad557.cache │ │ │ ├── 86b4b6d51b4a45af6d7a93cd8ccd2af80a156da9.cache │ │ │ ├── 98676c93f49a619be763bf730c8db104e1e3ad96.cache │ │ │ ├── 9d0533530a382e64370fc542a58d7fdac6c773bd.cache │ │ │ ├── a444689c2f13418983bd978ab522bd863aed69c5.cache │ │ │ ├── cfbe819c6b55623a3cfeaf8d0ab83aeaa2d48269.cache │ │ │ └── eaf44e18cd01e1dcdf84a400c6fbe82c311d34e7.cache │ ├── ClusterDebugShaderRD │ │ └── f56c974dfc818bfb9a8ece7f74e09038026da2ad28e2799467b5db44d20e62e8 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── ClusterRenderShaderRD │ │ └── f5986cc3fd97bcb7df2604d922836b400eecb01b9285ed2bb4d82259cc40ba3d │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── ClusterStoreShaderRD │ │ └── ed704afe4835639c24bb3c8196c6f346d8f6b534551c10d6ac078129d40e90cb │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CopyShaderRD │ │ └── 3072feb55db1b3808055ebb104896c93439ccae4420372ca089aa9d0a67ac4a2 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CopyToFbShaderRD │ │ └── 8522190b912403ed5da7d3ac1b4752c85891e7bec73bdfe4714f003713d96968 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CubeToDpShaderRD │ │ └── 14050de720ff9f26ff167840afa573a08e99e87ec7140c3a71a433c0d0994c75 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CubemapDownsamplerShaderRD │ │ └── e44e2dc5e22cf4462d31a6a29f2ba7fdc1689eb74f45b130b84c6f8471d9410e │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CubemapFilterShaderRD │ │ └── 54ee6406df8a7c0963259fd147274ecfd3cbf880038725385ca930fd900dc455 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── CubemapRoughnessShaderRD │ │ └── 6d50adfa09ee2bd3609f8ecb72f19ae608533451b0d552b3057def0f726a87b5 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── FsrUpscaleShaderRD │ │ └── cd401b10bb9b55e925f29618c2708770787663229f8770314ab589fd54dc2348 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── GiShaderRD │ │ └── 72a7860719d6eb1f7ac44e6b26f0b6d8ae7861e01d149cd60f5ca95ca2876e51 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── LuminanceReduceShaderRD │ │ └── a4aae7bf704c75d79db6bd69eef2f8e59856b3c9bec97ec027d02f2be0b30eec │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── ParticlesCopyShaderRD │ │ └── 98b48849051498a92e0dfb63e6dc10444dd6688e497cf3e9055bb9dc5dcc0aea │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── ParticlesShaderRD │ │ └── a38bfc2f18eda1aeb148208fc38baeeeef746006b51d8efcdf4e65dae3da15c9 │ │ │ └── f128cab0b22fb7e0d9f023d6cdb81309be392d95.cache │ ├── ResolveShaderRD │ │ └── 71430662c927a351e13250dd0e16ecc24065e3453e0317c3fba8abeedf9424d0 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── RoughnessLimiterShaderRD │ │ └── 0fca6e36b32cd1c8d49db4f943255efafd3e71b7adce1e33841006ed8290ae27 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SceneForwardClusteredShaderRD │ │ └── f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922 │ │ │ ├── 118ba36f6ebd3257d0e24fef9b5c1f403c461a66.cache │ │ │ ├── 1344ce3d77ef72d56eef3c9cd0d5417bdd0a4b13.cache │ │ │ ├── 3c2004ff2f4cb10be32eecce3aef58999f3a3c00.cache │ │ │ ├── 3d0d92e506ebed59ea8f1359f384dea3a9c607db.cache │ │ │ ├── 56b5925a2b0572c2ded75f0fcb579c223484ca13.cache │ │ │ ├── 5e1ddc0dfdfa4a0280e0bd9cfc3279252e3c7973.cache │ │ │ ├── 7e6f09e567701e5ed403065b0ec9125225432ba4.cache │ │ │ ├── 84f3bfa29ba52d036ccb227b544f4212261b97e7.cache │ │ │ ├── 8c405797d04cff2252b29dc660af5eda3a9bef6a.cache │ │ │ ├── 8d29d1fcc64ce2d8b7ed49c901c65a91146fbb76.cache │ │ │ ├── 90d1f2dc8493a4c954ba463e0fb3e0232f84d84d.cache │ │ │ ├── 9909cf38417b9edb6e5a64b31241317810757356.cache │ │ │ ├── 9bac24b6b27ed3d77e750d66523fc854f8d3e4d8.cache │ │ │ ├── 9daebd2e9a93be48c2f780ac379da9f156a37fc1.cache │ │ │ ├── d5380b6ac7ee6d22bc98457496eb4495a49b1c6f.cache │ │ │ └── f56c506d48f920a47e552ed6cf6059536156a939.cache │ ├── ScreenSpaceReflectionFilterShaderRD │ │ └── bf4b7529daef27ae894a2075cb9c1cbc76a0c6207019e1a789480b735e63400c │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── ScreenSpaceReflectionScaleShaderRD │ │ └── 05459384760db045ecd2f8fa1d1a08d0d53827d68571e02e1c7dd0e52db68ccd │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── ScreenSpaceReflectionShaderRD │ │ └── 071bffcb6fad782111085ab9fcfd1d7a8dd9ed208ce5ea82ff0a3cb569c058cb │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SdfgiDebugProbesShaderRD │ │ └── 458ed212b96dc32f290a3c944711538c17f9247bb880b0525159ed36e0137853 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SdfgiDebugShaderRD │ │ └── f637e792ccd65559edc2fd6593f02f09f93aa8f37958a16c1abf064fbb400253 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SdfgiDirectLightShaderRD │ │ └── b7e595f5f8da24113168327ea49d5c27b10e9dffc2bcb5baea453e180f83c1f5 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SdfgiIntegrateShaderRD │ │ └── ea535f8d3bddbddb83b1ce0512bb385cc4df19eb2ac075c54537bb4d7ee5aeb7 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SdfgiPreprocessShaderRD │ │ └── e9af7e25291752dd28af68a7ef1579397a180a48b3ba053287f4b4b4ba78c743 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SkeletonShaderRD │ │ └── 1f7b6a0d9cfc84e255eaae38ebcad6e58945ed0e2dec9ed56b4515fe144d312a │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SkyShaderRD │ │ └── 377c1836950901dc2b955aa0b411a1b2260b277dc7e5bba0bb79e2efb3ef7cc3 │ │ │ ├── 03e3b11c69e24394b2d955a8c0ba85587bb70839.cache │ │ │ ├── 59fe6cf05bf4a13d34c144643274612aacecb959.cache │ │ │ ├── 793ce7e11b582451627017df13679d8dac889488.cache │ │ │ ├── 95e55bdcfff59c30143e80c9cabfe2f175ddb660.cache │ │ │ ├── de678811d1bad3cad4892a8db7b6ea0be197d51d.cache │ │ │ └── f01de7cfc190c5a681916d623818c76cd220b8f4.cache │ ├── SortShaderRD │ │ └── f11ad58821630448aab7c7e8d20d83187ddb4f4420f4c8813c5b093ed3d0ac1b │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SpecularMergeShaderRD │ │ └── 72a17c12dcc6f3943fe1b4fdcf24a665dcbb930abaf9ae4565c8bf55fdaefd90 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsEffectsDownsampleShaderRD │ │ └── 78fb675feae75a908f4a7f69bfd314082a73bcf39dfd588dec658a115e968b2e │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsaoBlurShaderRD │ │ └── a09d4ebccb9749d5af33c4c91106bf57933f7595bf962efc128bb0d17aef55ea │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsaoImportanceMapShaderRD │ │ └── 9a11c44be557427cc87de036025a9e6c4928a9b329516b3b7d688af901d60190 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsaoInterleaveShaderRD │ │ └── 3259121d7f2c47c6bc6b21a2ca5cec211287dfff2a8569a7c22cd551f92157c7 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsaoShaderRD │ │ └── 01e40c424d390d165f5fa29e6395e07c0a952e0830fcfafdf224a3ff7c11446a │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsilBlurShaderRD │ │ └── 5e1111c6562b03e1ce56329effb083736d17546d953a47c82feda92f3516f989 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsilImportanceMapShaderRD │ │ └── 516b59a35de7b5ec4dfab689ef2b42c52a7f3e343ba07cfdfbe28c5abdf934e8 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsilInterleaveShaderRD │ │ └── fdcf18d296b50964d5ec51ad96be10a994d715bba8dc0b8234ee930988fe2b11 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SsilShaderRD │ │ └── 435909128f06199fda443fd6e97683ab1fc6c47e95fafce262bfd6e526fe45e2 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── SubsurfaceScatteringShaderRD │ │ └── 306823a1e6e2ff2fffb1b2695ae742ce2fb9da6cf9c523749cbdbccdb4109a1b │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── TaaResolveShaderRD │ │ └── 23e05c091e775d6ec6e5fb710ddc9fe770073566f186a68261b3534af6cca4c5 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── TonemapShaderRD │ │ └── bfd4389b24a7895b6abfad0b8f9c1126b72f7f82f948fa3816be5ab4c72b6fde │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── VolumetricFogProcessShaderRD │ │ └── 338854193b3429afb964b2db2c629e012be72aa0c465959ec664df99234acc46 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ ├── VolumetricFogShaderRD │ │ └── d39d535d47bc2f8b2cfe4ac764280d2e92cb9d3011fd1c80b5c7e790f2a90f5c │ │ │ └── 9a227745af2d65830f930370a9fbba551fbd6f60.cache │ ├── VoxelGiDebugShaderRD │ │ └── 957955845c0759b84f4eea26fe96da8cba577182b799448aa39c72450923bf44 │ │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache │ └── VoxelGiShaderRD │ │ └── 1451b0b9f1bda6b990d8cf8a66fac75e126732c3e8e88de1a6ab23d5a6237fcd │ │ └── 087916079fba7c625e62b0c2cca570e0fb87c99a.cache └── uid_cache.bin ├── .import ├── icon.png-487276ed1e3a0c39cad0279d744ee560.md5 └── icon.png-487276ed1e3a0c39cad0279d744ee560.stex ├── Delaunator.gd ├── Demo.gd ├── Demo.tscn ├── LICENSE ├── MapRegion.gd ├── MapRegion.tscn ├── README.md ├── VoronoiHelper.gd ├── default_env.tres ├── icon.png ├── icon.png.import ├── project.godot ├── screenshot.png └── screenshot.png.import /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.godot/.gdignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.godot/editor/Delaunator.gd-folding-7108ebf2fd0288976d5f98f0cfe2207c.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/Demo.gd-folding-7ee78fc71e2671a750a33c38a8a42fc0.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/Demo.tscn-editstate-fb94f1b4b007fc3d927da4eed1f7a59f.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(-165, -110), 12 | "primary_grid_steps": 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": 1.0 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 | "position": Vector3(0, 0, 0), 108 | "use_environment": false, 109 | "use_orthogonal": false, 110 | "view_type": 0, 111 | "x_rotation": 0.5, 112 | "y_rotation": -0.5 113 | }, { 114 | "auto_orthogonal": false, 115 | "auto_orthogonal_enabled": true, 116 | "cinematic_preview": false, 117 | "display_mode": 20, 118 | "distance": 4.0, 119 | "doppler": false, 120 | "frame_time": false, 121 | "gizmos": true, 122 | "half_res": false, 123 | "information": false, 124 | "listener": false, 125 | "position": Vector3(0, 0, 0), 126 | "use_environment": false, 127 | "use_orthogonal": false, 128 | "view_type": 0, 129 | "x_rotation": 0.5, 130 | "y_rotation": -0.5 131 | }, { 132 | "auto_orthogonal": false, 133 | "auto_orthogonal_enabled": true, 134 | "cinematic_preview": false, 135 | "display_mode": 20, 136 | "distance": 4.0, 137 | "doppler": false, 138 | "frame_time": false, 139 | "gizmos": true, 140 | "half_res": false, 141 | "information": false, 142 | "listener": false, 143 | "position": Vector3(0, 0, 0), 144 | "use_environment": false, 145 | "use_orthogonal": false, 146 | "view_type": 0, 147 | "x_rotation": 0.5, 148 | "y_rotation": -0.5 149 | }, { 150 | "auto_orthogonal": false, 151 | "auto_orthogonal_enabled": true, 152 | "cinematic_preview": false, 153 | "display_mode": 20, 154 | "distance": 4.0, 155 | "doppler": false, 156 | "frame_time": false, 157 | "gizmos": true, 158 | "half_res": false, 159 | "information": false, 160 | "listener": false, 161 | "position": Vector3(0, 0, 0), 162 | "use_environment": false, 163 | "use_orthogonal": false, 164 | "view_type": 0, 165 | "x_rotation": 0.5, 166 | "y_rotation": -0.5 167 | }], 168 | "zfar": 4000.01, 169 | "znear": 0.05 170 | } 171 | -------------------------------------------------------------------------------- /.godot/editor/Demo.tscn-folding-fb94f1b4b007fc3d927da4eed1f7a59f.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | node_unfolds=[NodePath("."), PackedStringArray("Transform")] 4 | resource_unfolds=[] 5 | nodes_folded=[] 6 | -------------------------------------------------------------------------------- /.godot/editor/MapRegion.gd-folding-61cb7545d8cafcb47ccba48f73b5b131.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/default_env.tres-folding-7cf3fd67ad9f55210191d77b582b8209.cfg: -------------------------------------------------------------------------------- 1 | [folding] 2 | 3 | sections_unfolded=PackedStringArray() 4 | -------------------------------------------------------------------------------- /.godot/editor/editor_layout.cfg: -------------------------------------------------------------------------------- 1 | [docks] 2 | 3 | dock_filesystem_split=0 4 | dock_filesystem_display_mode=0 5 | dock_filesystem_file_sort=0 6 | dock_filesystem_file_list_display_mode=1 7 | dock_split_2=0 8 | dock_split_3=0 9 | dock_hsplit_1=0 10 | dock_hsplit_2=270 11 | dock_hsplit_3=-270 12 | dock_hsplit_4=0 13 | dock_3="Scene,Import" 14 | dock_4="FileSystem" 15 | dock_5="Inspector,Node,History" 16 | 17 | [EditorNode] 18 | 19 | open_scenes=["res://Demo.tscn"] 20 | 21 | [ScriptEditor] 22 | 23 | open_scripts=["res://Delaunator.gd", "res://Demo.gd", "res://MapRegion.gd", "res://VoronoiHelper.gd"] 24 | open_help=[] 25 | script_split_offset=70 26 | list_split_offset=0 27 | -------------------------------------------------------------------------------- /.godot/editor/filesystem_cache8: -------------------------------------------------------------------------------- 1 | 2a60927148abd1d33b818b535e306557 2 | ::res://::1686306823 3 | default_env.tres::Environment::529314299406553492::1686306733::0::1::::<><>:: 4 | Delaunator.gd::GDScript::-1::1686305003::0::1::::Delaunator<>RefCounted<>:: 5 | Demo.gd::GDScript::-1::1686306059::0::1::::<>Node2D<>:: 6 | Demo.tscn::PackedScene::4831484930861872289::1686306733::0::1::::<><>::res://Demo.gd 7 | icon.png::CompressedTexture2D::4781867082816258268::1686302879::1686303002::1::::<><>:: 8 | MapRegion.gd::GDScript::-1::1686306059::0::1::::MapRegion<>Area2D<>:: 9 | MapRegion.tscn::PackedScene::-1::1686302978::0::1::::<><>::res://MapRegion.gd 10 | README.md::TextFile::-1::1686302879::0::1::::<><>:: 11 | screenshot.png::CompressedTexture2D::6061650295485224613::1686306823::1686306838::1::::<><>:: 12 | VoronoiHelper.gd::GDScript::-1::1686302978::0::1::::<>Node<>:: 13 | -------------------------------------------------------------------------------- /.godot/editor/filesystem_update4: -------------------------------------------------------------------------------- 1 | res://default_env.tres 2 | res://Demo.tscn 3 | -------------------------------------------------------------------------------- /.godot/editor/project_metadata.cfg: -------------------------------------------------------------------------------- 1 | [editor_metadata] 2 | 3 | executable_path="C:/Users/karchert/Desktop/Godot_v4.0.3-stable_win64.exe" 4 | 5 | [debug_options] 6 | 7 | run_live_debug=true 8 | run_reload_scripts=true 9 | 10 | [recent_files] 11 | 12 | scenes=["res://Demo.tscn"] 13 | scripts=["res://MapRegion.gd", "res://VoronoiHelper.gd", "res://Delaunator.gd", "res://Demo.gd"] 14 | -------------------------------------------------------------------------------- /.godot/editor/script_editor_cache.cfg: -------------------------------------------------------------------------------- 1 | [res://Demo.gd] 2 | 3 | state={ 4 | "bookmarks": PackedInt32Array(), 5 | "breakpoints": PackedInt32Array(), 6 | "column": 23, 7 | "folded_lines": Array[int]([]), 8 | "h_scroll_position": 0, 9 | "row": 15, 10 | "scroll_position": 0.0, 11 | "selection": false, 12 | "syntax_highlighter": "GDScript" 13 | } 14 | 15 | [res://Delaunator.gd] 16 | 17 | state={ 18 | "bookmarks": PackedInt32Array(), 19 | "breakpoints": PackedInt32Array(), 20 | "column": 38, 21 | "folded_lines": Array[int]([]), 22 | "h_scroll_position": 0, 23 | "row": 7, 24 | "scroll_position": 0.0, 25 | "selection": false, 26 | "syntax_highlighter": "GDScript" 27 | } 28 | 29 | [res://VoronoiHelper.gd] 30 | 31 | state={ 32 | "bookmarks": PackedInt32Array(), 33 | "breakpoints": PackedInt32Array(), 34 | "column": 43, 35 | "folded_lines": Array[int]([]), 36 | "h_scroll_position": 0, 37 | "row": 26, 38 | "scroll_position": 0.0, 39 | "selection": false, 40 | "syntax_highlighter": "GDScript" 41 | } 42 | 43 | [res://MapRegion.gd] 44 | 45 | state={ 46 | "bookmarks": PackedInt32Array(), 47 | "breakpoints": PackedInt32Array(), 48 | "column": 27, 49 | "folded_lines": Array[int]([]), 50 | "h_scroll_position": 0, 51 | "row": 23, 52 | "scroll_position": 1.0, 53 | "selection": false, 54 | "syntax_highlighter": "GDScript" 55 | } 56 | -------------------------------------------------------------------------------- /.godot/global_script_class_cache.cfg: -------------------------------------------------------------------------------- 1 | list=Array[Dictionary]([{ 2 | "base": &"RefCounted", 3 | "class": &"Delaunator", 4 | "icon": "", 5 | "language": &"GDScript", 6 | "path": "res://Delaunator.gd" 7 | }, { 8 | "base": &"Area2D", 9 | "class": &"MapRegion", 10 | "icon": "", 11 | "language": &"GDScript", 12 | "path": "res://MapRegion.gd" 13 | }]) 14 | -------------------------------------------------------------------------------- /.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex -------------------------------------------------------------------------------- /.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.md5: -------------------------------------------------------------------------------- 1 | source_md5="47313fa4c47a9963fddd764e1ec6e4a8" 2 | dest_md5="e460ea20cd8f2b0bb93e0b9aea181c60" 3 | 4 | -------------------------------------------------------------------------------- /.godot/imported/screenshot.png-024a21af5d37bf0f0dd0e2bccdd149d0.ctex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/imported/screenshot.png-024a21af5d37bf0f0dd0e2bccdd149d0.ctex -------------------------------------------------------------------------------- /.godot/imported/screenshot.png-024a21af5d37bf0f0dd0e2bccdd149d0.md5: -------------------------------------------------------------------------------- 1 | source_md5="9f6a7a049b11e2fe01b3168201332ba5" 2 | dest_md5="7838d429270fd724dd0b2c3c9d90f168" 3 | 4 | -------------------------------------------------------------------------------- /.godot/shader_cache/BlitShaderRD/cc8b73e92b59634169c18582ef62bbfbb4226813d2489c795e0a2534665dd693/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/BlitShaderRD/cc8b73e92b59634169c18582ef62bbfbb4226813d2489c795e0a2534665dd693/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/BokehDofShaderRD/f78d1254a84ac716f239ae02ba6e366cc348e536e963607d588aa6c4ae8030af/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/BokehDofShaderRD/f78d1254a84ac716f239ae02ba6e366cc348e536e963607d588aa6c4ae8030af/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasOcclusionShaderRD/4cccdae8448e7a52c5fa32de6d822f1d1caa919466948e6c475c5adbf1be360b/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CanvasOcclusionShaderRD/4cccdae8448e7a52c5fa32de6d822f1d1caa919466948e6c475c5adbf1be360b/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasSdfShaderRD/daf99a56d0b25e048eefca7aaf5b1c22578402adb1b800a6f45917e4357276b8/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CanvasSdfShaderRD/daf99a56d0b25e048eefca7aaf5b1c22578402adb1b800a6f45917e4357276b8/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/6c94b25d75b1ec58f806edc8e65c2a35743ad557.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/6c94b25d75b1ec58f806edc8e65c2a35743ad557.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/86b4b6d51b4a45af6d7a93cd8ccd2af80a156da9.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/86b4b6d51b4a45af6d7a93cd8ccd2af80a156da9.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/98676c93f49a619be763bf730c8db104e1e3ad96.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/98676c93f49a619be763bf730c8db104e1e3ad96.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/9d0533530a382e64370fc542a58d7fdac6c773bd.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/9d0533530a382e64370fc542a58d7fdac6c773bd.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/a444689c2f13418983bd978ab522bd863aed69c5.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/a444689c2f13418983bd978ab522bd863aed69c5.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/cfbe819c6b55623a3cfeaf8d0ab83aeaa2d48269.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/cfbe819c6b55623a3cfeaf8d0ab83aeaa2d48269.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/eaf44e18cd01e1dcdf84a400c6fbe82c311d34e7.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CanvasShaderRD/7869e8df70846a92db718ff0c5865153a46dd626855671d2303116bcd3e05a65/eaf44e18cd01e1dcdf84a400c6fbe82c311d34e7.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ClusterDebugShaderRD/f56c974dfc818bfb9a8ece7f74e09038026da2ad28e2799467b5db44d20e62e8/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/ClusterDebugShaderRD/f56c974dfc818bfb9a8ece7f74e09038026da2ad28e2799467b5db44d20e62e8/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ClusterRenderShaderRD/f5986cc3fd97bcb7df2604d922836b400eecb01b9285ed2bb4d82259cc40ba3d/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/ClusterRenderShaderRD/f5986cc3fd97bcb7df2604d922836b400eecb01b9285ed2bb4d82259cc40ba3d/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ClusterStoreShaderRD/ed704afe4835639c24bb3c8196c6f346d8f6b534551c10d6ac078129d40e90cb/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/ClusterStoreShaderRD/ed704afe4835639c24bb3c8196c6f346d8f6b534551c10d6ac078129d40e90cb/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CopyShaderRD/3072feb55db1b3808055ebb104896c93439ccae4420372ca089aa9d0a67ac4a2/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CopyShaderRD/3072feb55db1b3808055ebb104896c93439ccae4420372ca089aa9d0a67ac4a2/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CopyToFbShaderRD/8522190b912403ed5da7d3ac1b4752c85891e7bec73bdfe4714f003713d96968/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CopyToFbShaderRD/8522190b912403ed5da7d3ac1b4752c85891e7bec73bdfe4714f003713d96968/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CubeToDpShaderRD/14050de720ff9f26ff167840afa573a08e99e87ec7140c3a71a433c0d0994c75/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CubeToDpShaderRD/14050de720ff9f26ff167840afa573a08e99e87ec7140c3a71a433c0d0994c75/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CubemapDownsamplerShaderRD/e44e2dc5e22cf4462d31a6a29f2ba7fdc1689eb74f45b130b84c6f8471d9410e/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CubemapDownsamplerShaderRD/e44e2dc5e22cf4462d31a6a29f2ba7fdc1689eb74f45b130b84c6f8471d9410e/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CubemapFilterShaderRD/54ee6406df8a7c0963259fd147274ecfd3cbf880038725385ca930fd900dc455/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CubemapFilterShaderRD/54ee6406df8a7c0963259fd147274ecfd3cbf880038725385ca930fd900dc455/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/CubemapRoughnessShaderRD/6d50adfa09ee2bd3609f8ecb72f19ae608533451b0d552b3057def0f726a87b5/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/CubemapRoughnessShaderRD/6d50adfa09ee2bd3609f8ecb72f19ae608533451b0d552b3057def0f726a87b5/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/FsrUpscaleShaderRD/cd401b10bb9b55e925f29618c2708770787663229f8770314ab589fd54dc2348/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/FsrUpscaleShaderRD/cd401b10bb9b55e925f29618c2708770787663229f8770314ab589fd54dc2348/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/GiShaderRD/72a7860719d6eb1f7ac44e6b26f0b6d8ae7861e01d149cd60f5ca95ca2876e51/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/GiShaderRD/72a7860719d6eb1f7ac44e6b26f0b6d8ae7861e01d149cd60f5ca95ca2876e51/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/LuminanceReduceShaderRD/a4aae7bf704c75d79db6bd69eef2f8e59856b3c9bec97ec027d02f2be0b30eec/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/LuminanceReduceShaderRD/a4aae7bf704c75d79db6bd69eef2f8e59856b3c9bec97ec027d02f2be0b30eec/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ParticlesCopyShaderRD/98b48849051498a92e0dfb63e6dc10444dd6688e497cf3e9055bb9dc5dcc0aea/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/ParticlesCopyShaderRD/98b48849051498a92e0dfb63e6dc10444dd6688e497cf3e9055bb9dc5dcc0aea/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ParticlesShaderRD/a38bfc2f18eda1aeb148208fc38baeeeef746006b51d8efcdf4e65dae3da15c9/f128cab0b22fb7e0d9f023d6cdb81309be392d95.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/ParticlesShaderRD/a38bfc2f18eda1aeb148208fc38baeeeef746006b51d8efcdf4e65dae3da15c9/f128cab0b22fb7e0d9f023d6cdb81309be392d95.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ResolveShaderRD/71430662c927a351e13250dd0e16ecc24065e3453e0317c3fba8abeedf9424d0/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/ResolveShaderRD/71430662c927a351e13250dd0e16ecc24065e3453e0317c3fba8abeedf9424d0/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/RoughnessLimiterShaderRD/0fca6e36b32cd1c8d49db4f943255efafd3e71b7adce1e33841006ed8290ae27/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/RoughnessLimiterShaderRD/0fca6e36b32cd1c8d49db4f943255efafd3e71b7adce1e33841006ed8290ae27/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/118ba36f6ebd3257d0e24fef9b5c1f403c461a66.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/118ba36f6ebd3257d0e24fef9b5c1f403c461a66.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/1344ce3d77ef72d56eef3c9cd0d5417bdd0a4b13.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/1344ce3d77ef72d56eef3c9cd0d5417bdd0a4b13.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/3c2004ff2f4cb10be32eecce3aef58999f3a3c00.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/3c2004ff2f4cb10be32eecce3aef58999f3a3c00.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/3d0d92e506ebed59ea8f1359f384dea3a9c607db.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/3d0d92e506ebed59ea8f1359f384dea3a9c607db.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/56b5925a2b0572c2ded75f0fcb579c223484ca13.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/56b5925a2b0572c2ded75f0fcb579c223484ca13.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/5e1ddc0dfdfa4a0280e0bd9cfc3279252e3c7973.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/5e1ddc0dfdfa4a0280e0bd9cfc3279252e3c7973.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/7e6f09e567701e5ed403065b0ec9125225432ba4.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/7e6f09e567701e5ed403065b0ec9125225432ba4.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/84f3bfa29ba52d036ccb227b544f4212261b97e7.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/84f3bfa29ba52d036ccb227b544f4212261b97e7.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/8c405797d04cff2252b29dc660af5eda3a9bef6a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/8c405797d04cff2252b29dc660af5eda3a9bef6a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/8d29d1fcc64ce2d8b7ed49c901c65a91146fbb76.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/8d29d1fcc64ce2d8b7ed49c901c65a91146fbb76.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/90d1f2dc8493a4c954ba463e0fb3e0232f84d84d.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/90d1f2dc8493a4c954ba463e0fb3e0232f84d84d.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/9909cf38417b9edb6e5a64b31241317810757356.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/9909cf38417b9edb6e5a64b31241317810757356.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/9bac24b6b27ed3d77e750d66523fc854f8d3e4d8.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/9bac24b6b27ed3d77e750d66523fc854f8d3e4d8.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/9daebd2e9a93be48c2f780ac379da9f156a37fc1.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/9daebd2e9a93be48c2f780ac379da9f156a37fc1.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/d5380b6ac7ee6d22bc98457496eb4495a49b1c6f.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/d5380b6ac7ee6d22bc98457496eb4495a49b1c6f.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/f56c506d48f920a47e552ed6cf6059536156a939.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SceneForwardClusteredShaderRD/f6771e937d090b42738e4c68709a70f9c6ace8738cbd559c806e6324cd2af922/f56c506d48f920a47e552ed6cf6059536156a939.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ScreenSpaceReflectionFilterShaderRD/bf4b7529daef27ae894a2075cb9c1cbc76a0c6207019e1a789480b735e63400c/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/ScreenSpaceReflectionFilterShaderRD/bf4b7529daef27ae894a2075cb9c1cbc76a0c6207019e1a789480b735e63400c/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ScreenSpaceReflectionScaleShaderRD/05459384760db045ecd2f8fa1d1a08d0d53827d68571e02e1c7dd0e52db68ccd/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/ScreenSpaceReflectionScaleShaderRD/05459384760db045ecd2f8fa1d1a08d0d53827d68571e02e1c7dd0e52db68ccd/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/ScreenSpaceReflectionShaderRD/071bffcb6fad782111085ab9fcfd1d7a8dd9ed208ce5ea82ff0a3cb569c058cb/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/ScreenSpaceReflectionShaderRD/071bffcb6fad782111085ab9fcfd1d7a8dd9ed208ce5ea82ff0a3cb569c058cb/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SdfgiDebugProbesShaderRD/458ed212b96dc32f290a3c944711538c17f9247bb880b0525159ed36e0137853/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SdfgiDebugProbesShaderRD/458ed212b96dc32f290a3c944711538c17f9247bb880b0525159ed36e0137853/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SdfgiDebugShaderRD/f637e792ccd65559edc2fd6593f02f09f93aa8f37958a16c1abf064fbb400253/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SdfgiDebugShaderRD/f637e792ccd65559edc2fd6593f02f09f93aa8f37958a16c1abf064fbb400253/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SdfgiDirectLightShaderRD/b7e595f5f8da24113168327ea49d5c27b10e9dffc2bcb5baea453e180f83c1f5/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SdfgiDirectLightShaderRD/b7e595f5f8da24113168327ea49d5c27b10e9dffc2bcb5baea453e180f83c1f5/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SdfgiIntegrateShaderRD/ea535f8d3bddbddb83b1ce0512bb385cc4df19eb2ac075c54537bb4d7ee5aeb7/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SdfgiIntegrateShaderRD/ea535f8d3bddbddb83b1ce0512bb385cc4df19eb2ac075c54537bb4d7ee5aeb7/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SdfgiPreprocessShaderRD/e9af7e25291752dd28af68a7ef1579397a180a48b3ba053287f4b4b4ba78c743/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SdfgiPreprocessShaderRD/e9af7e25291752dd28af68a7ef1579397a180a48b3ba053287f4b4b4ba78c743/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SkeletonShaderRD/1f7b6a0d9cfc84e255eaae38ebcad6e58945ed0e2dec9ed56b4515fe144d312a/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SkeletonShaderRD/1f7b6a0d9cfc84e255eaae38ebcad6e58945ed0e2dec9ed56b4515fe144d312a/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SkyShaderRD/377c1836950901dc2b955aa0b411a1b2260b277dc7e5bba0bb79e2efb3ef7cc3/03e3b11c69e24394b2d955a8c0ba85587bb70839.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SkyShaderRD/377c1836950901dc2b955aa0b411a1b2260b277dc7e5bba0bb79e2efb3ef7cc3/03e3b11c69e24394b2d955a8c0ba85587bb70839.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SkyShaderRD/377c1836950901dc2b955aa0b411a1b2260b277dc7e5bba0bb79e2efb3ef7cc3/59fe6cf05bf4a13d34c144643274612aacecb959.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SkyShaderRD/377c1836950901dc2b955aa0b411a1b2260b277dc7e5bba0bb79e2efb3ef7cc3/59fe6cf05bf4a13d34c144643274612aacecb959.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SkyShaderRD/377c1836950901dc2b955aa0b411a1b2260b277dc7e5bba0bb79e2efb3ef7cc3/793ce7e11b582451627017df13679d8dac889488.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SkyShaderRD/377c1836950901dc2b955aa0b411a1b2260b277dc7e5bba0bb79e2efb3ef7cc3/793ce7e11b582451627017df13679d8dac889488.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SkyShaderRD/377c1836950901dc2b955aa0b411a1b2260b277dc7e5bba0bb79e2efb3ef7cc3/95e55bdcfff59c30143e80c9cabfe2f175ddb660.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SkyShaderRD/377c1836950901dc2b955aa0b411a1b2260b277dc7e5bba0bb79e2efb3ef7cc3/95e55bdcfff59c30143e80c9cabfe2f175ddb660.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SkyShaderRD/377c1836950901dc2b955aa0b411a1b2260b277dc7e5bba0bb79e2efb3ef7cc3/de678811d1bad3cad4892a8db7b6ea0be197d51d.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SkyShaderRD/377c1836950901dc2b955aa0b411a1b2260b277dc7e5bba0bb79e2efb3ef7cc3/de678811d1bad3cad4892a8db7b6ea0be197d51d.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SkyShaderRD/377c1836950901dc2b955aa0b411a1b2260b277dc7e5bba0bb79e2efb3ef7cc3/f01de7cfc190c5a681916d623818c76cd220b8f4.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SkyShaderRD/377c1836950901dc2b955aa0b411a1b2260b277dc7e5bba0bb79e2efb3ef7cc3/f01de7cfc190c5a681916d623818c76cd220b8f4.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SortShaderRD/f11ad58821630448aab7c7e8d20d83187ddb4f4420f4c8813c5b093ed3d0ac1b/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SortShaderRD/f11ad58821630448aab7c7e8d20d83187ddb4f4420f4c8813c5b093ed3d0ac1b/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SpecularMergeShaderRD/72a17c12dcc6f3943fe1b4fdcf24a665dcbb930abaf9ae4565c8bf55fdaefd90/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SpecularMergeShaderRD/72a17c12dcc6f3943fe1b4fdcf24a665dcbb930abaf9ae4565c8bf55fdaefd90/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsEffectsDownsampleShaderRD/78fb675feae75a908f4a7f69bfd314082a73bcf39dfd588dec658a115e968b2e/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SsEffectsDownsampleShaderRD/78fb675feae75a908f4a7f69bfd314082a73bcf39dfd588dec658a115e968b2e/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsaoBlurShaderRD/a09d4ebccb9749d5af33c4c91106bf57933f7595bf962efc128bb0d17aef55ea/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SsaoBlurShaderRD/a09d4ebccb9749d5af33c4c91106bf57933f7595bf962efc128bb0d17aef55ea/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsaoImportanceMapShaderRD/9a11c44be557427cc87de036025a9e6c4928a9b329516b3b7d688af901d60190/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SsaoImportanceMapShaderRD/9a11c44be557427cc87de036025a9e6c4928a9b329516b3b7d688af901d60190/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsaoInterleaveShaderRD/3259121d7f2c47c6bc6b21a2ca5cec211287dfff2a8569a7c22cd551f92157c7/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SsaoInterleaveShaderRD/3259121d7f2c47c6bc6b21a2ca5cec211287dfff2a8569a7c22cd551f92157c7/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsaoShaderRD/01e40c424d390d165f5fa29e6395e07c0a952e0830fcfafdf224a3ff7c11446a/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SsaoShaderRD/01e40c424d390d165f5fa29e6395e07c0a952e0830fcfafdf224a3ff7c11446a/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsilBlurShaderRD/5e1111c6562b03e1ce56329effb083736d17546d953a47c82feda92f3516f989/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SsilBlurShaderRD/5e1111c6562b03e1ce56329effb083736d17546d953a47c82feda92f3516f989/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsilImportanceMapShaderRD/516b59a35de7b5ec4dfab689ef2b42c52a7f3e343ba07cfdfbe28c5abdf934e8/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SsilImportanceMapShaderRD/516b59a35de7b5ec4dfab689ef2b42c52a7f3e343ba07cfdfbe28c5abdf934e8/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsilInterleaveShaderRD/fdcf18d296b50964d5ec51ad96be10a994d715bba8dc0b8234ee930988fe2b11/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SsilInterleaveShaderRD/fdcf18d296b50964d5ec51ad96be10a994d715bba8dc0b8234ee930988fe2b11/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SsilShaderRD/435909128f06199fda443fd6e97683ab1fc6c47e95fafce262bfd6e526fe45e2/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SsilShaderRD/435909128f06199fda443fd6e97683ab1fc6c47e95fafce262bfd6e526fe45e2/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/SubsurfaceScatteringShaderRD/306823a1e6e2ff2fffb1b2695ae742ce2fb9da6cf9c523749cbdbccdb4109a1b/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/SubsurfaceScatteringShaderRD/306823a1e6e2ff2fffb1b2695ae742ce2fb9da6cf9c523749cbdbccdb4109a1b/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/TaaResolveShaderRD/23e05c091e775d6ec6e5fb710ddc9fe770073566f186a68261b3534af6cca4c5/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/TaaResolveShaderRD/23e05c091e775d6ec6e5fb710ddc9fe770073566f186a68261b3534af6cca4c5/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/TonemapShaderRD/bfd4389b24a7895b6abfad0b8f9c1126b72f7f82f948fa3816be5ab4c72b6fde/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/TonemapShaderRD/bfd4389b24a7895b6abfad0b8f9c1126b72f7f82f948fa3816be5ab4c72b6fde/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/VolumetricFogProcessShaderRD/338854193b3429afb964b2db2c629e012be72aa0c465959ec664df99234acc46/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/VolumetricFogProcessShaderRD/338854193b3429afb964b2db2c629e012be72aa0c465959ec664df99234acc46/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/VolumetricFogShaderRD/d39d535d47bc2f8b2cfe4ac764280d2e92cb9d3011fd1c80b5c7e790f2a90f5c/9a227745af2d65830f930370a9fbba551fbd6f60.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/VolumetricFogShaderRD/d39d535d47bc2f8b2cfe4ac764280d2e92cb9d3011fd1c80b5c7e790f2a90f5c/9a227745af2d65830f930370a9fbba551fbd6f60.cache -------------------------------------------------------------------------------- /.godot/shader_cache/VoxelGiDebugShaderRD/957955845c0759b84f4eea26fe96da8cba577182b799448aa39c72450923bf44/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/VoxelGiDebugShaderRD/957955845c0759b84f4eea26fe96da8cba577182b799448aa39c72450923bf44/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/shader_cache/VoxelGiShaderRD/1451b0b9f1bda6b990d8cf8a66fac75e126732c3e8e88de1a6ab23d5a6237fcd/087916079fba7c625e62b0c2cca570e0fb87c99a.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/shader_cache/VoxelGiShaderRD/1451b0b9f1bda6b990d8cf8a66fac75e126732c3e8e88de1a6ab23d5a6237fcd/087916079fba7c625e62b0c2cca570e0fb87c99a.cache -------------------------------------------------------------------------------- /.godot/uid_cache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.godot/uid_cache.bin -------------------------------------------------------------------------------- /.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5: -------------------------------------------------------------------------------- 1 | source_md5="47313fa4c47a9963fddd764e1ec6e4a8" 2 | dest_md5="2ded9e7f9060e2b530aab678b135fc5b" 3 | 4 | -------------------------------------------------------------------------------- /.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex -------------------------------------------------------------------------------- /Delaunator.gd: -------------------------------------------------------------------------------- 1 | class_name Delaunator 2 | 3 | const EPSILON = pow(2, -52) 4 | 5 | var coords : PackedFloat32Array = [] 6 | var edge_stack = [] 7 | var halfedges : PackedInt32Array = [] 8 | var hull = [] # This array should be a PackedInt32Array but we need to use the super.slice() function on it. 9 | var triangles : PackedInt32Array = [] 10 | var triangles_len = 0 11 | var _cx 12 | var _cy 13 | var _dists : PackedFloat32Array = [] 14 | var _halfedges = [] # This array should be a PackedInt32Array but we need to use the super.slice() function on it. 15 | var _hash_size 16 | var _hull_hash : PackedInt32Array = [] 17 | var _hull_next : PackedInt32Array = [] 18 | var _hull_prev : PackedInt32Array = [] 19 | var _hull_start 20 | var _hull_tri : PackedInt32Array = [] 21 | var _ids = [] # PackedInt32Array, but doesn't work with static typing 22 | var _triangles = [] # This array should be a PackedInt32Array but we need to use the super.slice() function on it. 23 | 24 | 25 | func _init(points): 26 | if points.size() < 3: 27 | push_error(ProjectSettings.get_setting("application/config/name") + " needs at least 3 points.") 28 | return 29 | 30 | edge_stack.resize(512) 31 | 32 | var n = points.size() 33 | 34 | coords.resize(n * 2) 35 | 36 | for i in n: 37 | var p = points[i] 38 | coords[2 * i] = p[0] 39 | coords[2 * i + 1] = p[1] 40 | 41 | _constructor() 42 | 43 | 44 | func _constructor(): 45 | var n = coords.size() >> 1 46 | 47 | # Arrays that will store the triangulation graph. 48 | var max_triangles = max(2 * n - 5, 0) 49 | _triangles.resize(max_triangles * 3) 50 | _halfedges.resize(max_triangles * 3) 51 | 52 | # Temporary arrays for tracking the edges of the advancing convex hull. 53 | _hash_size = ceil(sqrt(n)) 54 | _hull_prev.resize(n) # Edge to prev edge. 55 | _hull_next.resize(n) # Edge to next edge. 56 | _hull_tri.resize(n) # Edge to adjacent triangle. 57 | 58 | _hull_hash.resize(_hash_size) 59 | for i in _hash_size: 60 | _hull_hash[i] = -1 # angular edge hash 61 | 62 | # Temporary arrays for sorting points. 63 | _ids.resize(n) 64 | _dists.resize(n) 65 | 66 | update() 67 | 68 | 69 | func update(): 70 | var n = coords.size() >> 1 71 | 72 | # Populate an array of point indices; calculate input data bbox. 73 | var min_x = INF 74 | var min_y = INF 75 | var max_x = -INF 76 | var max_y = -INF 77 | 78 | for i in n: 79 | var x = coords[2 * i] 80 | var y = coords[2 * i + 1] 81 | if x < min_x: min_x = x 82 | if y < min_y: min_y = y 83 | if x > max_x: max_x = x 84 | if y > max_y: max_y = y 85 | _ids[i] = i 86 | 87 | var cx = (min_x + max_x) / 2 88 | var cy = (min_y + max_y) / 2 89 | 90 | var min_dist = INF 91 | var i0 = 0 92 | var i1 = 0 93 | var i2 = 0 94 | 95 | # Pick a seed point close to the center. 96 | for i in n: 97 | var d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]) 98 | if (d < min_dist): 99 | i0 = i 100 | min_dist = d 101 | var i0x = coords[2 * i0] 102 | var i0y = coords[2 * i0 + 1] 103 | 104 | min_dist = INF 105 | 106 | # Find the point closest to the seed. 107 | for i in n: 108 | if i == i0: continue 109 | var d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]) 110 | if (d < min_dist and d > 0): 111 | i1 = i 112 | min_dist = d 113 | var i1x = coords[2 * i1] 114 | var i1y = coords[2 * i1 + 1] 115 | 116 | var min_radius = INF 117 | 118 | # Find the third point which forms the smallest circumcircle with the first two. 119 | for i in n: 120 | if i == i0 or i == i1: continue 121 | var r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]) 122 | if r < min_radius: 123 | i2 = i 124 | min_radius = r 125 | var i2x = coords[2 * i2] 126 | var i2y = coords[2 * i2 + 1] 127 | 128 | if min_radius == INF: 129 | # Order collinear points by dx (or dy if all x are identical) 130 | # and return the list as a hull. 131 | for i in n: 132 | var _dist_temp 133 | 134 | if coords[2 * i] - coords[0]: 135 | _dist_temp = coords[2 * i] - coords[0] 136 | elif coords[2 * i + 1] - coords[1]: 137 | _dist_temp = coords[2 * i + 1] - coords[1] 138 | else: 139 | _dist_temp = 0 140 | 141 | _dists[i] = _dist_temp 142 | 143 | quicksort(_ids, _dists, 0, n - 1) 144 | hull = [] 145 | hull.resize(n) 146 | var j = 0 147 | var d0 = -INF 148 | 149 | for i in n: 150 | var id = _ids[i] 151 | if _dists[id] > d0: 152 | hull[j] = id 153 | j += 1 154 | d0 = _dists[id] 155 | hull = hull.slice(0, j) 156 | triangles = [] 157 | halfedges = [] 158 | 159 | return 160 | 161 | # Swap the order of the seed points for counter-clockwise orientation. 162 | if orient(i0x, i0y, i1x, i1y, i2x, i2y): 163 | var i = i1 164 | var x = i1x 165 | var y = i1y 166 | i1 = i2 167 | i1x = i2x 168 | i1y = i2y 169 | i2 = i 170 | i2x = x 171 | i2y = y 172 | 173 | var center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y) 174 | _cx = center[0] 175 | _cy = center[1] 176 | 177 | for i in n: 178 | _dists[i] = dist(coords[2 * i], coords[2 * i + 1], center[0], center[1]) 179 | 180 | # Sort the points by distance from the seed triangle circumcenter. 181 | quicksort(_ids, _dists, 0, n - 1) 182 | 183 | # Set up the seed triangle as the starting hull. 184 | _hull_start = i0 185 | var hull_size = 3 186 | 187 | _hull_next[i0] = i1 188 | _hull_prev[i2] = i1 189 | _hull_next[i1] = i2 190 | _hull_prev[i0] = i2 191 | _hull_next[i2] = i0 192 | _hull_prev[i1] = i0 193 | 194 | _hull_tri[i0] = 0 195 | _hull_tri[i1] = 1 196 | _hull_tri[i2] = 2 197 | 198 | for i in _hull_hash.size(): 199 | _hull_hash[i] = -1 200 | _hull_hash[_hash_key(i0x, i0y)] = i0 201 | _hull_hash[_hash_key(i1x, i1y)] = i1 202 | _hull_hash[_hash_key(i2x, i2y)] = i2 203 | 204 | # triangles_len = 0 205 | _add_triangle(i0, i1, i2, -1, -1, -1) 206 | 207 | var xp = 0 208 | var yp = 0 209 | 210 | for k in _ids.size(): 211 | var i = _ids[k] 212 | var x = coords[2 * i] 213 | var y = coords[2 * i + 1] 214 | 215 | # Skip near-duplicate points. 216 | if k > 0 and abs(x - xp) <= EPSILON and abs(y - yp) <= EPSILON: continue 217 | 218 | xp = x 219 | yp = y 220 | 221 | # Skip seed triangle points. 222 | if i == i0 or i == i1 or i == i2: continue 223 | 224 | # Find a visible edge on the convex hull using edge hash. 225 | var start = 0 226 | var key = _hash_key(x, y) 227 | 228 | for j in _hash_size: 229 | start = _hull_hash[fmod((key + j), _hash_size)] 230 | if (start != -1 and start != _hull_next[start]): break 231 | 232 | start = _hull_prev[start] 233 | var e = start 234 | 235 | while true: 236 | var q = _hull_next[e] 237 | if orient(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]): break 238 | e = q 239 | 240 | if (e == start): 241 | e = -1 242 | break 243 | 244 | if (e == -1): continue # Likely a near-duplicate point; Skip it. 245 | 246 | # Add the first triangle from the point. 247 | var t = _add_triangle(e, i, _hull_next[e], -1, -1, _hull_tri[e]) 248 | # Recursively flip triangles from the point until they satisfy the Delaunay condition. 249 | _hull_tri[i] = _legalize(t + 2) 250 | _hull_tri[e] = t # Keep track of boundary triangles on the hull. 251 | hull_size += 1 252 | 253 | # Walk forward through the hull, adding more triangles and flipping recursively. 254 | n = _hull_next[e] 255 | 256 | while true: 257 | var q = _hull_next[n] 258 | if not orient(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]): break 259 | t = _add_triangle(n, i, q, _hull_tri[i], -1, _hull_tri[n]) 260 | _hull_tri[i] = _legalize(t + 2) 261 | _hull_next[n] = n # Mark as removed. 262 | hull_size -= 1 263 | n = q 264 | 265 | # Walk backward from the other side, adding more triangles and flipping. 266 | if (e == start): 267 | while true: 268 | var q = _hull_prev[e] 269 | if not orient(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]): break 270 | t = _add_triangle(q, i, e, -1, _hull_tri[e], _hull_tri[q]) 271 | _legalize(t + 2) 272 | _hull_tri[q] = t 273 | _hull_next[e] = e # Mark as removed. 274 | hull_size -= 1 275 | e = q 276 | 277 | # Update the hull indices. 278 | _hull_start = e 279 | _hull_prev[i] = e 280 | _hull_next[e] = i 281 | _hull_prev[n] = i 282 | _hull_next[i] = n 283 | 284 | # Save the two new edges in the hash table. 285 | _hull_hash[_hash_key(x, y)] = i 286 | _hull_hash[_hash_key(coords[2 * e], coords[2 * e + 1])] = e 287 | 288 | hull.resize(hull_size) 289 | var e = _hull_start 290 | for i in hull_size: 291 | hull[i] = e 292 | e = _hull_next[e] 293 | 294 | # Trim typed triangle mesh arrays. 295 | triangles = _triangles.slice(0, triangles_len) 296 | halfedges = _halfedges.slice(0, triangles_len) 297 | 298 | 299 | func _hash_key(x, y): 300 | return fmod(floor(pseudo_angle(x - _cx, y - _cy) * _hash_size), _hash_size) 301 | 302 | 303 | func _legalize(a): 304 | var i = 0 305 | var ar = 0 306 | 307 | # Recursion eliminated with a fixed-size stack. 308 | while true: 309 | var b = _halfedges[a] 310 | 311 | # If the pair of triangles doesn't satisfy the Delaunay condition 312 | # (p1 is inside the circumcircle of [p0, pl, pr]), flip them, 313 | # then do the same check/flip recursively for the new pair of triangles 314 | # 315 | # pl pl 316 | # /||\ / \ 317 | # al/ || \bl al/ \a 318 | # / || \ / \ 319 | # / a||b \ flip /___ar___\ 320 | # p0\ || /p1 => p0\---bl---/p1 321 | # \ || / \ / 322 | # ar\ || /br b\ /br 323 | # \||/ \ / 324 | # pr pr 325 | 326 | var a0 = a - a % 3 327 | ar = a0 + (a + 2) % 3 328 | 329 | if b == -1: # Convex hull edge. 330 | if i == 0: break 331 | i -= 1 332 | a = edge_stack[i] 333 | continue 334 | 335 | var b0 = b - b % 3 336 | var al = a0 + (a + 1) % 3 337 | var bl = b0 + (b + 2) % 3 338 | 339 | var p0 = _triangles[ar] 340 | var pr = _triangles[a] 341 | var pl = _triangles[al] 342 | var p1 = _triangles[bl] 343 | 344 | var illegal = in_circle( 345 | coords[2 * p0], coords[2 * p0 + 1], 346 | coords[2 * pr], coords[2 * pr + 1], 347 | coords[2 * pl], coords[2 * pl + 1], 348 | coords[2 * p1], coords[2 * p1 + 1] 349 | ) 350 | 351 | if illegal: 352 | _triangles[a] = p1 353 | _triangles[b] = p0 354 | 355 | var hbl = _halfedges[bl] 356 | 357 | # Edge swapped on the other side of the hull (rare); Fix the halfedge reference. 358 | if (hbl == -1): 359 | var e = _hull_start 360 | while true: 361 | if _hull_tri[e] == bl: 362 | _hull_tri[e] = a 363 | break 364 | 365 | e = _hull_prev[e] 366 | if e == _hull_start: break 367 | 368 | _link(a, hbl) 369 | _link(b, _halfedges[ar]) 370 | _link(ar, bl) 371 | 372 | var br = b0 + (b + 1) % 3 373 | 374 | # Don't worry about hitting the cap: it can only happen on extremely degenerate input. 375 | if i < edge_stack.size(): 376 | edge_stack[i] = br 377 | i += 1 378 | else: 379 | if i == 0: break 380 | i -= 1 381 | a = edge_stack[i] 382 | 383 | return ar 384 | 385 | 386 | func _link(a, b): 387 | _halfedges[a] = b 388 | if (b != -1): 389 | _halfedges[b] = a 390 | 391 | 392 | # Add a new triangle given vertex indices and adjacent half-edge ids. 393 | func _add_triangle(i0, i1, i2, a, b, c): 394 | var t = triangles_len 395 | 396 | _triangles[t] = i0 397 | _triangles[t + 1] = i1 398 | _triangles[t + 2] = i2 399 | 400 | _link(t, a) 401 | _link(t + 1, b) 402 | _link(t + 2, c) 403 | 404 | triangles_len += 3 405 | 406 | return t 407 | 408 | 409 | # Monotonically increases with real angle, but doesn't need expensive trigonometry. 410 | func pseudo_angle(dx, dy): 411 | var p = dx / (abs(dx) + abs(dy)) 412 | 413 | if (dy > 0): 414 | return (3 - p) / 4 # [0..1] 415 | else: 416 | return (1 + p) / 4 # [0..1] 417 | 418 | 419 | func dist(ax, ay, bx, by): 420 | var dx = ax - bx 421 | var dy = ay - by 422 | return dx * dx + dy * dy 423 | 424 | 425 | # Return 2d orientation sign if we're confident in it through J. Shewchuk's error bound check. 426 | func orient_if_sure(px, py, rx, ry, qx, qy): 427 | var l = (ry - py) * (qx - px) 428 | var r = (rx - px) * (qy - py) 429 | 430 | if (abs(l - r) >= 0.00000000000000033306690738754716 * abs(l + r)): 431 | return l - r 432 | else: 433 | return 0 434 | 435 | 436 | # A more robust orientation test that's stable in a given triangle (to fix robustness issues). 437 | func orient(rx, ry, qx, qy, px, py): 438 | var _sign 439 | 440 | if orient_if_sure(px, py, rx, ry, qx, qy): 441 | _sign = orient_if_sure(px, py, rx, ry, qx, qy) 442 | elif orient_if_sure(rx, ry, qx, qy, px, py): 443 | _sign = orient_if_sure(rx, ry, qx, qy, px, py) 444 | elif orient_if_sure(qx, qy, px, py, rx, ry): 445 | _sign = orient_if_sure(qx, qy, px, py, rx, ry) 446 | 447 | return false if _sign == null else _sign < 0 448 | 449 | 450 | func in_circle(ax, ay, bx, by, cx, cy, px, py): 451 | var dx = ax - px 452 | var dy = ay - py 453 | var ex = bx - px 454 | var ey = by - py 455 | var fx = cx - px 456 | var fy = cy - py 457 | 458 | var ap = dx * dx + dy * dy 459 | var bp = ex * ex + ey * ey 460 | var cp = fx * fx + fy * fy 461 | 462 | return dx * (ey * cp - bp * fy) -\ 463 | dy * (ex * cp - bp * fx) +\ 464 | ap * (ex * fy - ey * fx) < 0 465 | 466 | 467 | func circumradius(ax, ay, bx, by, cx, cy): 468 | var dx = bx - ax 469 | var dy = by - ay 470 | var ex = cx - ax 471 | var ey = cy - ay 472 | 473 | var bl = dx * dx + dy * dy 474 | var cl = ex * ex + ey * ey 475 | 476 | # When you divide by 0 in Godot you get an error. 477 | # It should return INF (positive or negative). 478 | var d 479 | if (dx * ey - dy * ex) == 0: 480 | d = INF 481 | elif (dx * ey - dy * ex) == -0: 482 | d = -INF 483 | else: 484 | d = 0.5 / (dx * ey - dy * ex) 485 | 486 | var x = (ey * bl - dy * cl) * d 487 | var y = (dx * cl - ex * bl) * d 488 | 489 | return x * x + y * y 490 | 491 | 492 | func circumcenter(ax, ay, bx, by, cx, cy): 493 | var dx = bx - ax 494 | var dy = by - ay 495 | var ex = cx - ax 496 | var ey = cy - ay 497 | 498 | var bl = dx * dx + dy * dy 499 | var cl = ex * ex + ey * ey 500 | 501 | # When you divide by 0 in Godot you get an error. 502 | # It should return INF (positive or negative). 503 | var d 504 | if (dx * ey - dy * ex) == 0: 505 | d = INF 506 | elif (dx * ey - dy * ex) == -0: 507 | d = -INF 508 | else: 509 | d = 0.5 / (dx * ey - dy * ex) 510 | 511 | var x = ax + (ey * bl - dy * cl) * d 512 | var y = ay + (dx * cl - ex * bl) * d 513 | 514 | return [x, y] 515 | 516 | 517 | func quicksort(ids, dists, left, right): 518 | if right - left <= 20: 519 | for i in range(left + 1, right + 1): 520 | var temp = ids[i] 521 | var temp_dist = dists[temp] 522 | var j = i - 1 523 | while j >= left and dists[ids[j]] > temp_dist: 524 | ids[j + 1] = ids[j] 525 | j -= 1 526 | ids[j + 1] = temp 527 | else: 528 | var median = (left + right) >> 1 529 | var i = left + 1 530 | var j = right 531 | swap(ids, median, i) 532 | 533 | if (dists[ids[left]] > dists[ids[right]]): 534 | swap(ids, left, right) 535 | 536 | if (dists[ids[i]] > dists[ids[right]]): 537 | swap(ids, i, right) 538 | 539 | if (dists[ids[left]] > dists[ids[i]]): 540 | swap(ids, left, i) 541 | 542 | var temp = ids[i] 543 | var temp_dist = dists[temp] 544 | 545 | while true: 546 | while true: 547 | i += 1 548 | if dists[ids[i]] >= temp_dist: break 549 | 550 | while true: 551 | j -= 1 552 | if dists[ids[j]] <= temp_dist: break 553 | 554 | if j < i: break 555 | swap(ids, i, j) 556 | 557 | ids[left + 1] = ids[j] 558 | ids[j] = temp 559 | 560 | if right - i + 1 >= j - left: 561 | quicksort(ids, dists, i, right) 562 | quicksort(ids, dists, left, j - 1) 563 | else: 564 | quicksort(ids, dists, left, j - 1) 565 | quicksort(ids, dists, i, right) 566 | 567 | 568 | func swap(arr, i, j): 569 | var tmp = arr[i] 570 | arr[i] = arr[j] 571 | arr[j] = tmp 572 | -------------------------------------------------------------------------------- /Demo.gd: -------------------------------------------------------------------------------- 1 | extends Node2D 2 | 3 | const Delaunator := preload("res://Delaunator.gd") 4 | const MapRegionScene := preload("res://MapRegion.tscn") 5 | 6 | var points := PackedVector2Array([ 7 | Vector2(0, 0), Vector2(1024, 0), Vector2(1024, 600), Vector2(0, 600), Vector2(29, 390), Vector2(859, 300), Vector2(65, 342), Vector2(86, 333), Vector2(962, 212), Vector2(211, 351), Vector2(3, 594), Vector2(421, 278), Vector2(608, 271), Vector2(230, 538), Vector2(870, 454), Vector2(850, 351), Vector2(583, 385), Vector2(907, 480), Vector2(749, 533), Vector2(877, 232), Vector2(720, 546), Vector2(1003, 541), Vector2(696, 594), Vector2(102, 306) 8 | ]) 9 | 10 | @onready var delaunay := Delaunator.new(points) 11 | @onready var cells := VoronoiHelper.get_voronoi_cells(points, delaunay) 12 | 13 | func _ready(): 14 | for i in range(cells.size()): 15 | var map_region : MapRegion = MapRegionScene.instantiate() 16 | add_child(map_region) 17 | map_region.shape = cells[i] 18 | map_region.region_selected.connect(_on_MapRegion_selected.bind(i)) 19 | 20 | func _on_MapRegion_selected(id : int): 21 | print ("Region #" + str(id) + " was selected.") 22 | -------------------------------------------------------------------------------- /Demo.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://ca3n36wwne5dt"] 2 | 3 | [ext_resource type="Script" path="res://Demo.gd" id="1"] 4 | 5 | [node name="Demo" type="Node2D"] 6 | script = ExtResource("1") 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Thomas Karcher 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 | -------------------------------------------------------------------------------- /MapRegion.gd: -------------------------------------------------------------------------------- 1 | extends Area2D 2 | class_name MapRegion 3 | 4 | signal region_selected 5 | 6 | var shape : PackedVector2Array: set = set_shape 7 | 8 | @onready var _poly := $Polygon2D 9 | @onready var _coll := $CollisionPolygon2D 10 | 11 | func set_shape(new_shape: PackedVector2Array): 12 | _poly.set_polygon(new_shape) 13 | _poly.color = Color(randf(), randf(), randf(), 0.6) 14 | _coll.set_polygon(new_shape) 15 | shape = new_shape 16 | 17 | func _on_MapRegion_mouse_entered(): 18 | _poly.color.a = 1 19 | 20 | func _on_MapRegion_mouse_exited(): 21 | _poly.color.a = 0.6 22 | 23 | func _on_MapRegion_input_event(_viewport, event, _shape_idx): 24 | if event is InputEventMouseButton and event.pressed: 25 | region_selected.emit() 26 | -------------------------------------------------------------------------------- /MapRegion.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://MapRegion.gd" type="Script" id=1] 4 | 5 | [node name="MapRegion" type="Area2D"] 6 | script = ExtResource( 1 ) 7 | 8 | [node name="Polygon2D" type="Polygon2D" parent="."] 9 | 10 | [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] 11 | [connection signal="input_event" from="." to="." method="_on_MapRegion_input_event"] 12 | [connection signal="mouse_entered" from="." to="." method="_on_MapRegion_mouse_entered"] 13 | [connection signal="mouse_exited" from="." to="." method="_on_MapRegion_mouse_exited"] 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ClickableMap 2 | A demo of a clickable map of voronoi cells, implemented using the Godot Engine 4.0. 3 | ![Screenshot](screenshot.png) 4 | 5 | # Credits 6 | Thanks to [hiulit](https://github.com/hiulit) for creating [Delaunator GDScript](https://github.com/hiulit/Delaunator-GDScript), a GDScript library for Delaunay triangulation of 2D points used in this project. 7 | -------------------------------------------------------------------------------- /VoronoiHelper.gd: -------------------------------------------------------------------------------- 1 | extends Node 2 | 3 | # Some helper functions to get an array of voronoi cells out of the Delaunator class 4 | 5 | func next_half_edge(e): 6 | return e - 2 if e % 3 == 2 else e + 1 7 | 8 | func edges_around_point(delaunay, start): 9 | var result = [] 10 | var incoming = start 11 | while true: 12 | result.append(incoming); 13 | var outgoing = next_half_edge(incoming) 14 | incoming = delaunay.halfedges[outgoing]; 15 | if not (incoming != -1 and incoming != start): break 16 | return result 17 | 18 | func triangle_of_edge(e): 19 | return floor(e / 3) 20 | 21 | func edges_of_triangle(t): 22 | return [3 * t, 3 * t + 1, 3 * t + 2] 23 | 24 | func points_of_triangle(points, delaunay, t): 25 | var points_of_triangle = [] 26 | for e in edges_of_triangle(t): 27 | points_of_triangle.append(points[delaunay.triangles[e]]) 28 | return points_of_triangle 29 | 30 | func circumcenter(a, b, c): 31 | var ad = a[0] * a[0] + a[1] * a[1] 32 | var bd = b[0] * b[0] + b[1] * b[1] 33 | var cd = c[0] * c[0] + c[1] * c[1] 34 | var D = 2 * (a[0] * (b[1] - c[1]) + b[0] * (c[1] - a[1]) + c[0] * (a[1] - b[1])) 35 | 36 | return [ 37 | 1 / D * (ad * (b[1] - c[1]) + bd * (c[1] - a[1]) + cd * (a[1] - b[1])), 38 | 1 / D * (ad * (c[0] - b[0]) + bd * (a[0] - c[0]) + cd * (b[0] - a[0])) 39 | ] 40 | 41 | func centroid(a, b, c): 42 | var c_x = (a[0] + b[0] + c[0]) / 3 43 | var c_y = (a[1] + b[1] + c[1]) / 3 44 | 45 | return [c_x, c_y] 46 | 47 | func incenter(a, b, c): 48 | var ab = sqrt(pow(a[0] - b[0], 2) + pow(b[1] - a[1], 2)) 49 | var bc = sqrt(pow(b[0] - c[0], 2) + pow(c[1] - b[1], 2)) 50 | var ac = sqrt(pow(a[0] - c[0], 2) + pow(c[1] - a[1], 2)) 51 | var c_x = (ab * a[0] + bc * b[0] + ac * c[0]) / (ab + bc + ac) 52 | var c_y = (ab * a[1] + bc * b[1] + ac * c[1]) / (ab + bc + ac) 53 | 54 | return [c_x, c_y] 55 | 56 | func triangle_center(points, delaunay, t, center = "circumcenter"): 57 | var vertices = points_of_triangle(points, delaunay, t) 58 | match center: 59 | "circumcenter": return circumcenter(vertices[0], vertices[1], vertices[2]) 60 | "centroid": return centroid(vertices[0], vertices[1], vertices[2]) 61 | "incenter": return incenter(vertices[0], vertices[1], vertices[2]) 62 | 63 | func get_voronoi_cells(points, delaunay) -> Array : 64 | var result : Array = [] 65 | var seen = [] 66 | for e in delaunay.triangles.size(): 67 | var triangles = [] 68 | var vertices = [] 69 | var p = delaunay.triangles[next_half_edge(e)] 70 | if not seen.has(p): 71 | seen.append(p) 72 | var edges = edges_around_point(delaunay, e) 73 | for edge in edges: 74 | triangles.append(triangle_of_edge(edge)) 75 | for t in triangles: 76 | vertices.append(triangle_center(points, delaunay, t)) 77 | 78 | if triangles.size() > 2: 79 | var voronoi_cell = PackedVector2Array() 80 | for vertice in vertices: 81 | voronoi_cell.append(Vector2(vertice[0], vertice[1])) 82 | result.append(voronoi_cell) 83 | return result 84 | -------------------------------------------------------------------------------- /default_env.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Environment" load_steps=2 format=3 uid="uid://hsny16ucd0uq"] 2 | 3 | [sub_resource type="Sky" id="1"] 4 | 5 | [resource] 6 | background_mode = 2 7 | sky = SubResource("1") 8 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/icon.png -------------------------------------------------------------------------------- /icon.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://caemwf7vwrhfo" 6 | path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://icon.png" 14 | dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.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 | -------------------------------------------------------------------------------- /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="ClickableMap" 14 | run/main_scene="res://Demo.tscn" 15 | config/features=PackedStringArray("4.0") 16 | config/icon="res://icon.png" 17 | 18 | [autoload] 19 | 20 | VoronoiHelper="*res://VoronoiHelper.gd" 21 | 22 | [rendering] 23 | 24 | environment/defaults/default_environment="res://default_env.tres" 25 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/t-karcher/ClickableMap/d014d7c029bbce03a72c60330ac1b23fd2ff79a0/screenshot.png -------------------------------------------------------------------------------- /screenshot.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://csmkq26ufukvd" 6 | path="res://.godot/imported/screenshot.png-024a21af5d37bf0f0dd0e2bccdd149d0.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://screenshot.png" 14 | dest_files=["res://.godot/imported/screenshot.png-024a21af5d37bf0f0dd0e2bccdd149d0.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 | --------------------------------------------------------------------------------