diff --git a/.gitignore b/.gitignore index ac540bd..9eb0807 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,8 @@ screenshot.png shot_*.png screenshot.png.import shitboxes/ +before_*.png +after_*.png +before_*.png.import +after_*.png.import +*.iso diff --git a/README.md b/README.md index 2df92d8..68abfdb 100644 --- a/README.md +++ b/README.md @@ -75,10 +75,58 @@ reference to hand-detail hero landmarks on the OSM base. Levels so far: woolies_carpark, queen_st_mall, southbank, albert_parklands, story_bridge (procedural steel truss along Bradfield Highway), kangaroo_point. -Textures in assets/textures/ are FLUX-generated (Cloudflare Workers AI) -- -regenerate or add with tools/flux_texture.sh "" assets/textures/.jpg -(creds read from .env, never printed). The builder box-projects UVs; facades pick -glass/brick/concrete/heritage by height and id hash. + +Area JSONs are cached in `~/.cache/burnout_osm` (override with `$OSM_CACHE`); +`tools/build_all_levels.sh` rebuilds every level from them. + +### What the builder makes of the OSM data + +Beyond the street grid and building footprints, it uses the furniture OSM +already carries — street lamps, benches, bins, bollards, bus stops and the +whole footway network — so most of the detail is real Brisbane, not invented: + +- **Buildings** extrude with a glazed shopfront band at street level, a + cantilevered awning over the footpath (three canvas colours, varied heights, + ~70% of buildings — a whole street at one height in one colour reads as a + painted stripe), a roof parapet, and a plant room on anything tall. +- **Footpaths** come from the OSM footway ways, raised 14 cm with a chamfered + kerb. The chamfer is deliberate: a hard vertical edge at 120 km/h reads as a + crash to the jolt detector in car.gd. +- **Roads** get dashed centre lines; `footway=crossing` becomes zebra bars laid + flat on the road instead of a raised strip you'd launch off. +- **Trees** are a trunk plus three offset welded spheres (figs) or radiating + fronds (palms), scattered along kerbs on top of the ones OSM maps — Brisbane + has far more street trees than are tagged. +- **Queen Street Mall's winged canopies** grow along pedestrian ways whose name + starts with the `canopy` argument. Note OSM splits the mall into a 15 m stub + named "Queen Street Mall" plus the 438 m pedestrian way named just + "Queen Street", hence prefix matching. + +Variation is seeded off OSM ids, so rebuilds are reproducible. + +### Textures + +`assets/textures/` is FLUX-generated (Cloudflare Workers AI). Regenerate the +whole set with `tools/gen_textures.sh` or one with +`tools/gen_textures.sh `; creds are read from `.env`, never printed. + +Two things worth knowing before you re-prompt: + +- FLUX returns a **near-white blank sheet** for anything described as pale + ("off white metal panel" came back at 240/255 however it was worded), and a + blown-out albedo renders as a featureless void in game. The spec table's last + column is a target mean luma that clamps this deterministically. +- `tools/check_textures.py` reports mean/contrast for the set and flags the + duds. Run it after regenerating. + +The builder box-projects UVs at a per-material metres-per-tile scale; facades +pick glass/brick/concrete/heritage/sandstone by height, building tag and id hash. + +`woolies_carpark` is the one level still built in GDScript rather than as a GLB +([carpark.gd](levels/woolies_carpark/carpark.gd)) — its parked shitboxes have to +stay shuntable RigidBodies, which a static GLB can't carry. It picks its parked +cars at random from the real fleet. Its Trolley Run junction runs convoys along +the aisles at `z = 15/12` and `z = -21/-24`, so keep those lanes clear. ## Add a level diff --git a/assets/textures/asphalt.jpg b/assets/textures/asphalt.jpg index 30b225f..488f4b4 100644 Binary files a/assets/textures/asphalt.jpg and b/assets/textures/asphalt.jpg differ diff --git a/assets/textures/awning_cream.jpg b/assets/textures/awning_cream.jpg new file mode 100644 index 0000000..ee8e490 Binary files /dev/null and b/assets/textures/awning_cream.jpg differ diff --git a/assets/textures/awning_cream.jpg.import b/assets/textures/awning_cream.jpg.import new file mode 100644 index 0000000..2b1b487 --- /dev/null +++ b/assets/textures/awning_cream.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bahwjq31cp3nq" +path="res://.godot/imported/awning_cream.jpg-17313b61ee4e13ec24cad705cd05fa80.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/awning_cream.jpg" +dest_files=["res://.godot/imported/awning_cream.jpg-17313b61ee4e13ec24cad705cd05fa80.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/awning_green.jpg b/assets/textures/awning_green.jpg new file mode 100644 index 0000000..2acf8e8 Binary files /dev/null and b/assets/textures/awning_green.jpg differ diff --git a/assets/textures/awning_green.jpg.import b/assets/textures/awning_green.jpg.import new file mode 100644 index 0000000..6445dc7 --- /dev/null +++ b/assets/textures/awning_green.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bx6b264oqaspv" +path="res://.godot/imported/awning_green.jpg-3fbc04e1653e8a63066563c4de5d4f36.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/awning_green.jpg" +dest_files=["res://.godot/imported/awning_green.jpg-3fbc04e1653e8a63066563c4de5d4f36.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/awning_grey.jpg b/assets/textures/awning_grey.jpg new file mode 100644 index 0000000..bc89374 Binary files /dev/null and b/assets/textures/awning_grey.jpg differ diff --git a/assets/textures/awning_grey.jpg.import b/assets/textures/awning_grey.jpg.import new file mode 100644 index 0000000..2e07c36 --- /dev/null +++ b/assets/textures/awning_grey.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://di0g3raluadha" +path="res://.godot/imported/awning_grey.jpg-0b48c9677efe07c386492191d4228a64.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/awning_grey.jpg" +dest_files=["res://.godot/imported/awning_grey.jpg-0b48c9677efe07c386492191d4228a64.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/bark.jpg b/assets/textures/bark.jpg new file mode 100644 index 0000000..b79bb22 Binary files /dev/null and b/assets/textures/bark.jpg differ diff --git a/assets/textures/bark.jpg.import b/assets/textures/bark.jpg.import new file mode 100644 index 0000000..e0737c2 --- /dev/null +++ b/assets/textures/bark.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ceahbjw1c0uwt" +path="res://.godot/imported/bark.jpg-984a9ed1f147d885c28ba5678cab2dcc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/bark.jpg" +dest_files=["res://.godot/imported/bark.jpg-984a9ed1f147d885c28ba5678cab2dcc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/concrete_ground.jpg b/assets/textures/concrete_ground.jpg index f8e5395..c7d0746 100644 Binary files a/assets/textures/concrete_ground.jpg and b/assets/textures/concrete_ground.jpg differ diff --git a/assets/textures/facade_brick.jpg b/assets/textures/facade_brick.jpg index fa42b9a..3635f16 100644 Binary files a/assets/textures/facade_brick.jpg and b/assets/textures/facade_brick.jpg differ diff --git a/assets/textures/facade_concrete.jpg b/assets/textures/facade_concrete.jpg index 414e774..e29cb95 100644 Binary files a/assets/textures/facade_concrete.jpg and b/assets/textures/facade_concrete.jpg differ diff --git a/assets/textures/facade_glass.jpg b/assets/textures/facade_glass.jpg index c690591..d0882db 100644 Binary files a/assets/textures/facade_glass.jpg and b/assets/textures/facade_glass.jpg differ diff --git a/assets/textures/facade_heritage.jpg b/assets/textures/facade_heritage.jpg index 1fc72b8..f1c496b 100644 Binary files a/assets/textures/facade_heritage.jpg and b/assets/textures/facade_heritage.jpg differ diff --git a/assets/textures/foliage.jpg b/assets/textures/foliage.jpg new file mode 100644 index 0000000..600d981 Binary files /dev/null and b/assets/textures/foliage.jpg differ diff --git a/assets/textures/foliage.jpg.import b/assets/textures/foliage.jpg.import new file mode 100644 index 0000000..fedf361 --- /dev/null +++ b/assets/textures/foliage.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhnd76cslrrnl" +path="res://.godot/imported/foliage.jpg-59a57e231783a7e1f0eb95a2a5b3efd5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/foliage.jpg" +dest_files=["res://.godot/imported/foliage.jpg-59a57e231783a7e1f0eb95a2a5b3efd5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/footpath.jpg b/assets/textures/footpath.jpg new file mode 100644 index 0000000..f4fb7ba Binary files /dev/null and b/assets/textures/footpath.jpg differ diff --git a/assets/textures/footpath.jpg.import b/assets/textures/footpath.jpg.import new file mode 100644 index 0000000..b24b004 --- /dev/null +++ b/assets/textures/footpath.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8cn4og7gcla5" +path="res://.godot/imported/footpath.jpg-774d17763837b1839c006d287d37ed58.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/footpath.jpg" +dest_files=["res://.godot/imported/footpath.jpg-774d17763837b1839c006d287d37ed58.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/grass.jpg b/assets/textures/grass.jpg index 7120bc1..f5ac6c5 100644 Binary files a/assets/textures/grass.jpg and b/assets/textures/grass.jpg differ diff --git a/assets/textures/panel_white.jpg b/assets/textures/panel_white.jpg new file mode 100644 index 0000000..86db047 Binary files /dev/null and b/assets/textures/panel_white.jpg differ diff --git a/assets/textures/panel_white.jpg.import b/assets/textures/panel_white.jpg.import new file mode 100644 index 0000000..b3b9903 --- /dev/null +++ b/assets/textures/panel_white.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://j7l0g7f1oie8" +path="res://.godot/imported/panel_white.jpg-6414430b8c3be6bd8da789ae20dd21cc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/panel_white.jpg" +dest_files=["res://.godot/imported/panel_white.jpg-6414430b8c3be6bd8da789ae20dd21cc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/pavers.jpg b/assets/textures/pavers.jpg index b1f0c4a..37c942e 100644 Binary files a/assets/textures/pavers.jpg and b/assets/textures/pavers.jpg differ diff --git a/assets/textures/planter.jpg b/assets/textures/planter.jpg new file mode 100644 index 0000000..7eb2e19 Binary files /dev/null and b/assets/textures/planter.jpg differ diff --git a/assets/textures/planter.jpg.import b/assets/textures/planter.jpg.import new file mode 100644 index 0000000..ee1f1a8 --- /dev/null +++ b/assets/textures/planter.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bj0m24th2pcww" +path="res://.godot/imported/planter.jpg-658c6b625b8f5b7b979ef7491df7393b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/planter.jpg" +dest_files=["res://.godot/imported/planter.jpg-658c6b625b8f5b7b979ef7491df7393b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/rock.jpg b/assets/textures/rock.jpg index 8cdf9e5..13d7d4e 100644 Binary files a/assets/textures/rock.jpg and b/assets/textures/rock.jpg differ diff --git a/assets/textures/roof_deck.jpg b/assets/textures/roof_deck.jpg new file mode 100644 index 0000000..1e80376 Binary files /dev/null and b/assets/textures/roof_deck.jpg differ diff --git a/assets/textures/roof_deck.jpg.import b/assets/textures/roof_deck.jpg.import new file mode 100644 index 0000000..310518f --- /dev/null +++ b/assets/textures/roof_deck.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6y2yblvyneyr" +path="res://.godot/imported/roof_deck.jpg-21a77d967f313acaa6ebc378f450a94f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/roof_deck.jpg" +dest_files=["res://.godot/imported/roof_deck.jpg-21a77d967f313acaa6ebc378f450a94f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/sandstone.jpg b/assets/textures/sandstone.jpg new file mode 100644 index 0000000..5d77cc4 Binary files /dev/null and b/assets/textures/sandstone.jpg differ diff --git a/assets/textures/sandstone.jpg.import b/assets/textures/sandstone.jpg.import new file mode 100644 index 0000000..7634091 --- /dev/null +++ b/assets/textures/sandstone.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://com5x0nyxjtta" +path="res://.godot/imported/sandstone.jpg-0c376f81b80d4febbbc8da8404dc7542.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/sandstone.jpg" +dest_files=["res://.godot/imported/sandstone.jpg-0c376f81b80d4febbbc8da8404dc7542.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/shopfront.jpg b/assets/textures/shopfront.jpg new file mode 100644 index 0000000..070ea5d Binary files /dev/null and b/assets/textures/shopfront.jpg differ diff --git a/assets/textures/shopfront.jpg.import b/assets/textures/shopfront.jpg.import new file mode 100644 index 0000000..0ad6ab5 --- /dev/null +++ b/assets/textures/shopfront.jpg.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://248bjcomp8xg" +path="res://.godot/imported/shopfront.jpg-798c9b55858f3c28133440f936187cf8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/shopfront.jpg" +dest_files=["res://.godot/imported/shopfront.jpg-798c9b55858f3c28133440f936187cf8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/steel.jpg b/assets/textures/steel.jpg index 394b48e..c3a953c 100644 Binary files a/assets/textures/steel.jpg and b/assets/textures/steel.jpg differ diff --git a/assets/textures/water.jpg b/assets/textures/water.jpg index 0ed0b39..abcba62 100644 Binary files a/assets/textures/water.jpg and b/assets/textures/water.jpg differ diff --git a/cars/busted_leyland/car.glb.import b/cars/busted_leyland/car.glb.import index 3affbf4..222a843 100644 --- a/cars/busted_leyland/car.glb.import +++ b/cars/busted_leyland/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-83dc9dc6c652642a105e0f2a66299065.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/casserola_dx/car.glb.import b/cars/casserola_dx/car.glb.import index 646f99f..4198d4e 100644 --- a/cars/casserola_dx/car.glb.import +++ b/cars/casserola_dx/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-6d8f2b8e5e0b6a46e40628e041439d43.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/casserola_ke80/car.glb.import b/cars/casserola_ke80/car.glb.import index 4b34530..ea54c2b 100644 --- a/cars/casserola_ke80/car.glb.import +++ b/cars/casserola_ke80/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-888ade643893876c6f3cbf5f096bc196.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/chaebol_90/car.glb.import b/cars/chaebol_90/car.glb.import index f876e79..d1f3cc2 100644 --- a/cars/chaebol_90/car.glb.import +++ b/cars/chaebol_90/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-b9a963b783a87dd8918e04189617abe6.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/chaebol_92/car.glb.import b/cars/chaebol_92/car.glb.import index 44c666b..1ece3cf 100644 --- a/cars/chaebol_92/car.glb.import +++ b/cars/chaebol_92/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-e4ba91234cb9b6df3053db87b5e9b3ed.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/chaebol_x1/car.glb.import b/cars/chaebol_x1/car.glb.import index 7689ee9..3795b6e 100644 --- a/cars/chaebol_x1/car.glb.import +++ b/cars/chaebol_x1/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-b83a6b460f9c56a0648b67e3b86c1edc.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/chaebol_x2/car.glb.import b/cars/chaebol_x2/car.glb.import index 2f81756..9ac3a06 100644 --- a/cars/chaebol_x2/car.glb.import +++ b/cars/chaebol_x2/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-d7adc59db485179de3474633c72bfbe3.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/dadson_240z/car.glb.import b/cars/dadson_240z/car.glb.import index c318617..3f0836d 100644 --- a/cars/dadson_240z/car.glb.import +++ b/cars/dadson_240z/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-b6ced16fcc87bd776be5d08d52171c3e.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/datto_120y/car.glb.import b/cars/datto_120y/car.glb.import index 02a2488..cfdab78 100644 --- a/cars/datto_120y/car.glb.import +++ b/cars/datto_120y/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-e378097fb9e4310b2b03d3bb742810f8.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/derelica/car.glb.import b/cars/derelica/car.glb.import index 90deadc..144660c 100644 --- a/cars/derelica/car.glb.import +++ b/cars/derelica/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-2e5c16c70059d3f3f3237c43b3072ade.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/excel_x3/car.glb.import b/cars/excel_x3/car.glb.import index 327e707..20d14a7 100644 --- a/cars/excel_x3/car.glb.import +++ b/cars/excel_x3/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-a57f742564ace5ed237ebc4564dfb8c3.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/floored_xd/car.glb.import b/cars/floored_xd/car.glb.import index 62c3bf7..e7a6432 100644 --- a/cars/floored_xd/car.glb.import +++ b/cars/floored_xd/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-0a80c2c77b5fd88764c90110abc62a5c.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/gemmy_tx/car.glb.import b/cars/gemmy_tx/car.glb.import index 08711fe..db90984 100644 --- a/cars/gemmy_tx/car.glb.import +++ b/cars/gemmy_tx/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-5e5ac440118a817d281119d908a29b56.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/hardon_cmere/car.glb.import b/cars/hardon_cmere/car.glb.import index 59492b9..b789775 100644 --- a/cars/hardon_cmere/car.glb.import +++ b/cars/hardon_cmere/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-c1c77771d0d8c2fb17209daa24402119.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/hardon_effex/car.glb.import b/cars/hardon_effex/car.glb.import index be99896..37692c2 100644 --- a/cars/hardon_effex/car.glb.import +++ b/cars/hardon_effex/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-fb875ed8fd5318cc29c7768f84bea7d3.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/hardon_eh/car.glb.import b/cars/hardon_eh/car.glb.import index b6b7f77..dccaa11 100644 --- a/cars/hardon_eh/car.glb.import +++ b/cars/hardon_eh/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-4a8876b095c0f5115d0a5ee9d327bc90.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/hardon_hr/car.glb.import b/cars/hardon_hr/car.glb.import index e62f907..0d4b61c 100644 --- a/cars/hardon_hr/car.glb.import +++ b/cars/hardon_hr/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-1666d788af206253ffc26c895a58c64b.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/hardon_shaggen/car.glb.import b/cars/hardon_shaggen/car.glb.import index 77fc17a..dfaf675 100644 --- a/cars/hardon_shaggen/car.glb.import +++ b/cars/hardon_shaggen/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-9f1ddebc9927c2e6e83490ea92684b71.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/kingswood_hq/car.glb.import b/cars/kingswood_hq/car.glb.import index 67bf016..a0da101 100644 --- a/cars/kingswood_hq/car.glb.import +++ b/cars/kingswood_hq/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-6977f92ee10a58fcde53200be4b3a9fb.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/kingswood_hz/car.glb.import b/cars/kingswood_hz/car.glb.import index 003d2ca..a2e1050 100644 --- a/cars/kingswood_hz/car.glb.import +++ b/cars/kingswood_hz/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-8606c9b6c28db92746e656c06899ec70.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/leyland_morry/car.glb.import b/cars/leyland_morry/car.glb.import index 6ab5ca5..67a91b6 100644 --- a/cars/leyland_morry/car.glb.import +++ b/cars/leyland_morry/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-e3ff46c55a9c7fa64e8ac85c132de26e.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/maxi_merk/car.glb.import b/cars/maxi_merk/car.glb.import index da6fa8f..ec0b2e4 100644 --- a/cars/maxi_merk/car.glb.import +++ b/cars/maxi_merk/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-79503cc654b181d9b94d035ccfa1cfaa.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/mini_merk/car.glb.import b/cars/mini_merk/car.glb.import index f9b1208..e9d96f8 100644 --- a/cars/mini_merk/car.glb.import +++ b/cars/mini_merk/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-6a6391a8dfa537986da8e39a8baed19e.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/minicab/car.glb.import b/cars/minicab/car.glb.import index 4df1bc1..e02cbca 100644 --- a/cars/minicab/car.glb.import +++ b/cars/minicab/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-e7031c566c8b2fd76d2d4d52f3260a15.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/morry/car.glb.import b/cars/morry/car.glb.import index 9ad58a1..416acd2 100644 --- a/cars/morry/car.glb.import +++ b/cars/morry/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-0f2fdbe283a5aac151743baf08dd07fa.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/turdeno/car.glb.import b/cars/turdeno/car.glb.import index 654d314..68fe5d3 100644 --- a/cars/turdeno/car.glb.import +++ b/cars/turdeno/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-e51374821d8b91f29e963bdfb2220d93.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/turdrunner_slur/car.glb.import b/cars/turdrunner_slur/car.glb.import index cc69edf..f3e7ec7 100644 --- a/cars/turdrunner_slur/car.glb.import +++ b/cars/turdrunner_slur/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-82b38045503d6fb6d0c217ab3364162e.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/vl_terbo/car.glb.import b/cars/vl_terbo/car.glb.import index ec58ed1..aa2ae7a 100644 --- a/cars/vl_terbo/car.glb.import +++ b/cars/vl_terbo/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-d562177d050e8bc9348a99036622f776.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/cars/xf_falcon/car.glb.import b/cars/xf_falcon/car.glb.import index 03bd420..ca3a521 100644 --- a/cars/xf_falcon/car.glb.import +++ b/cars/xf_falcon/car.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/car.glb-43049e0c6f8686c1178cc0743ec34159.scn" nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/levels/albert_parklands/level.glb b/levels/albert_parklands/level.glb index b66ddee..52dc292 100644 Binary files a/levels/albert_parklands/level.glb and b/levels/albert_parklands/level.glb differ diff --git a/levels/albert_parklands/level.glb.import b/levels/albert_parklands/level.glb.import index 6f20163..8993373 100644 --- a/levels/albert_parklands/level.glb.import +++ b/levels/albert_parklands/level.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/level.glb-4aa597fe23a02438c7c91aac8329adb8.sc nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/levels/albert_parklands/level_asphalt.jpg b/levels/albert_parklands/level_asphalt.jpg index 30b225f..488f4b4 100644 Binary files a/levels/albert_parklands/level_asphalt.jpg and b/levels/albert_parklands/level_asphalt.jpg differ diff --git a/levels/albert_parklands/level_asphalt.jpg.import b/levels/albert_parklands/level_asphalt.jpg.import index 8a79c9f..f78837d 100644 --- a/levels/albert_parklands/level_asphalt.jpg.import +++ b/levels/albert_parklands/level_asphalt.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dnopbj8e4ushf" +uid="uid://bglycxv0qlx8e" path="res://.godot/imported/level_asphalt.jpg-1ac2ae4fb3e445d6981aa783a949306d.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "61f0484dca5fc32f16b6163e4f2d82f7" +"md5": "6d4e58bce08ad885d626807f4870dd6b" } [deps] diff --git a/levels/albert_parklands/level_awning_cream.jpg b/levels/albert_parklands/level_awning_cream.jpg new file mode 100644 index 0000000..ee8e490 Binary files /dev/null and b/levels/albert_parklands/level_awning_cream.jpg differ diff --git a/levels/albert_parklands/level_awning_cream.jpg.import b/levels/albert_parklands/level_awning_cream.jpg.import new file mode 100644 index 0000000..04985d5 --- /dev/null +++ b/levels/albert_parklands/level_awning_cream.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cehdbyav6qtnp" +path="res://.godot/imported/level_awning_cream.jpg-e22542c59093958202cc8be6f8ba087b.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "fd6eadc50ee05328df123d962ebcc1a2" +} + +[deps] + +source_file="res://levels/albert_parklands/level_awning_cream.jpg" +dest_files=["res://.godot/imported/level_awning_cream.jpg-e22542c59093958202cc8be6f8ba087b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/albert_parklands/level_awning_green.jpg b/levels/albert_parklands/level_awning_green.jpg new file mode 100644 index 0000000..2acf8e8 Binary files /dev/null and b/levels/albert_parklands/level_awning_green.jpg differ diff --git a/levels/albert_parklands/level_awning_green.jpg.import b/levels/albert_parklands/level_awning_green.jpg.import new file mode 100644 index 0000000..594e2fa --- /dev/null +++ b/levels/albert_parklands/level_awning_green.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cwg4jtxjsrsd7" +path="res://.godot/imported/level_awning_green.jpg-cc299c320f6e7bfbf2e0c4f47d79f77a.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "5f02e613fa470f9c1aae51f038c294a8" +} + +[deps] + +source_file="res://levels/albert_parklands/level_awning_green.jpg" +dest_files=["res://.godot/imported/level_awning_green.jpg-cc299c320f6e7bfbf2e0c4f47d79f77a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/albert_parklands/level_awning_grey.jpg b/levels/albert_parklands/level_awning_grey.jpg new file mode 100644 index 0000000..bc89374 Binary files /dev/null and b/levels/albert_parklands/level_awning_grey.jpg differ diff --git a/levels/albert_parklands/level_awning_grey.jpg.import b/levels/albert_parklands/level_awning_grey.jpg.import new file mode 100644 index 0000000..6030982 --- /dev/null +++ b/levels/albert_parklands/level_awning_grey.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://exllgjm8nbgc" +path="res://.godot/imported/level_awning_grey.jpg-ed52b4d22d3544a6d46bc1342a7f3fd4.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "3dbfb0d5f478755a1370246878836a74" +} + +[deps] + +source_file="res://levels/albert_parklands/level_awning_grey.jpg" +dest_files=["res://.godot/imported/level_awning_grey.jpg-ed52b4d22d3544a6d46bc1342a7f3fd4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/albert_parklands/level_bark.jpg b/levels/albert_parklands/level_bark.jpg new file mode 100644 index 0000000..b79bb22 Binary files /dev/null and b/levels/albert_parklands/level_bark.jpg differ diff --git a/levels/albert_parklands/level_bark.jpg.import b/levels/albert_parklands/level_bark.jpg.import new file mode 100644 index 0000000..42d8f6d --- /dev/null +++ b/levels/albert_parklands/level_bark.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvtk1m5obt65s" +path="res://.godot/imported/level_bark.jpg-2dca0a216e0ed5fd7da95716605e16f7.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "21804a334d55f3bdba9fe0ac964afcd4" +} + +[deps] + +source_file="res://levels/albert_parklands/level_bark.jpg" +dest_files=["res://.godot/imported/level_bark.jpg-2dca0a216e0ed5fd7da95716605e16f7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/albert_parklands/level_concrete_ground.jpg b/levels/albert_parklands/level_concrete_ground.jpg index f8e5395..c7d0746 100644 Binary files a/levels/albert_parklands/level_concrete_ground.jpg and b/levels/albert_parklands/level_concrete_ground.jpg differ diff --git a/levels/albert_parklands/level_concrete_ground.jpg.import b/levels/albert_parklands/level_concrete_ground.jpg.import index 8ad4368..c857219 100644 --- a/levels/albert_parklands/level_concrete_ground.jpg.import +++ b/levels/albert_parklands/level_concrete_ground.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://b01u1eaxtya7b" +uid="uid://c6l7othhgal08" path="res://.godot/imported/level_concrete_ground.jpg-ef709039d84af6f29e8d0445c492333c.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "94f81407db30c3621a4cfc3d4cc59777" +"md5": "da8e49ed928188692e8b27f94880d0f0" } [deps] diff --git a/levels/albert_parklands/level_facade_brick.jpg b/levels/albert_parklands/level_facade_brick.jpg index fa42b9a..3635f16 100644 Binary files a/levels/albert_parklands/level_facade_brick.jpg and b/levels/albert_parklands/level_facade_brick.jpg differ diff --git a/levels/albert_parklands/level_facade_brick.jpg.import b/levels/albert_parklands/level_facade_brick.jpg.import index 0d1bca3..25a07f4 100644 --- a/levels/albert_parklands/level_facade_brick.jpg.import +++ b/levels/albert_parklands/level_facade_brick.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cc5b0mqhlv57h" +uid="uid://75eevveak5ns" path="res://.godot/imported/level_facade_brick.jpg-24bd49b527dd8d4f43772981f5862d31.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "cc443eec121e9f1349f538ecdf2b8732" +"md5": "9bbc1f659c3ae0f8ff50415e0e25b0a0" } [deps] diff --git a/levels/albert_parklands/level_facade_concrete.jpg b/levels/albert_parklands/level_facade_concrete.jpg index 414e774..e29cb95 100644 Binary files a/levels/albert_parklands/level_facade_concrete.jpg and b/levels/albert_parklands/level_facade_concrete.jpg differ diff --git a/levels/albert_parklands/level_facade_concrete.jpg.import b/levels/albert_parklands/level_facade_concrete.jpg.import index a863eec..d689993 100644 --- a/levels/albert_parklands/level_facade_concrete.jpg.import +++ b/levels/albert_parklands/level_facade_concrete.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dbfu4xrnd2w4f" +uid="uid://c3y8b8ikxngt7" path="res://.godot/imported/level_facade_concrete.jpg-34a8a93b8c74d277a5dd137026850a2c.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "797a8dc03abefe25eec80c9e4fbb396e" +"md5": "01abc5a72c9b0db9fa03d6a8187d657e" } [deps] diff --git a/levels/albert_parklands/level_facade_glass.jpg b/levels/albert_parklands/level_facade_glass.jpg index c690591..d0882db 100644 Binary files a/levels/albert_parklands/level_facade_glass.jpg and b/levels/albert_parklands/level_facade_glass.jpg differ diff --git a/levels/albert_parklands/level_facade_glass.jpg.import b/levels/albert_parklands/level_facade_glass.jpg.import index 2c8ae08..4ccb90f 100644 --- a/levels/albert_parklands/level_facade_glass.jpg.import +++ b/levels/albert_parklands/level_facade_glass.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://tqfx5gsd6pa1" +uid="uid://dyjlvnqu7q1hl" path="res://.godot/imported/level_facade_glass.jpg-18e307c0becea51123c7b60c2951eac0.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "e12fc674ce5e0ccfb17f8d06c372410a" +"md5": "1e88904ab07ea05ef51b0ad5ef8a5176" } [deps] diff --git a/levels/albert_parklands/level_facade_heritage.jpg b/levels/albert_parklands/level_facade_heritage.jpg index 1fc72b8..f1c496b 100644 Binary files a/levels/albert_parklands/level_facade_heritage.jpg and b/levels/albert_parklands/level_facade_heritage.jpg differ diff --git a/levels/albert_parklands/level_facade_heritage.jpg.import b/levels/albert_parklands/level_facade_heritage.jpg.import index 4a412ed..cfe6d00 100644 --- a/levels/albert_parklands/level_facade_heritage.jpg.import +++ b/levels/albert_parklands/level_facade_heritage.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://djjp73l1wkdhi" +uid="uid://dj0w4t3gsb7b3" path="res://.godot/imported/level_facade_heritage.jpg-a08e33b3814db2fcdd77d3149ae09e7b.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "ed74e50bd0061f0567ff573f00ba52e8" +"md5": "ba9e1709cb12bd8fdb4a19289f624abe" } [deps] diff --git a/levels/albert_parklands/level_foliage.jpg b/levels/albert_parklands/level_foliage.jpg new file mode 100644 index 0000000..600d981 Binary files /dev/null and b/levels/albert_parklands/level_foliage.jpg differ diff --git a/levels/albert_parklands/level_foliage.jpg.import b/levels/albert_parklands/level_foliage.jpg.import new file mode 100644 index 0000000..063ef95 --- /dev/null +++ b/levels/albert_parklands/level_foliage.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://br53pi8w5up20" +path="res://.godot/imported/level_foliage.jpg-5a9dec51d02a7b10523cdacf95f0a567.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "ab3257b92ff0b75b17ceb374a6bfe480" +} + +[deps] + +source_file="res://levels/albert_parklands/level_foliage.jpg" +dest_files=["res://.godot/imported/level_foliage.jpg-5a9dec51d02a7b10523cdacf95f0a567.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/albert_parklands/level_footpath.jpg b/levels/albert_parklands/level_footpath.jpg new file mode 100644 index 0000000..f4fb7ba Binary files /dev/null and b/levels/albert_parklands/level_footpath.jpg differ diff --git a/levels/albert_parklands/level_footpath.jpg.import b/levels/albert_parklands/level_footpath.jpg.import new file mode 100644 index 0000000..d6a8d68 --- /dev/null +++ b/levels/albert_parklands/level_footpath.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://u46vclaqj4ty" +path="res://.godot/imported/level_footpath.jpg-25a0361b9338a26052892367a2aa8b7f.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "7cbdf662fc4a640b776d7b1845d41e45" +} + +[deps] + +source_file="res://levels/albert_parklands/level_footpath.jpg" +dest_files=["res://.godot/imported/level_footpath.jpg-25a0361b9338a26052892367a2aa8b7f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/albert_parklands/level_grass.jpg b/levels/albert_parklands/level_grass.jpg index 7120bc1..f5ac6c5 100644 Binary files a/levels/albert_parklands/level_grass.jpg and b/levels/albert_parklands/level_grass.jpg differ diff --git a/levels/albert_parklands/level_grass.jpg.import b/levels/albert_parklands/level_grass.jpg.import index 86b1c58..216a343 100644 --- a/levels/albert_parklands/level_grass.jpg.import +++ b/levels/albert_parklands/level_grass.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://caxxwafr3fm8v" +uid="uid://bgkg2whfpyank" path="res://.godot/imported/level_grass.jpg-02115274ab7b7ae161b97964f2e0c549.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "2b4b3320271b35c9a81f4cd8ddf7ea7a" +"md5": "01321994e4e9a94eb2f15dbe2978140b" } [deps] diff --git a/levels/albert_parklands/level_pavers.jpg b/levels/albert_parklands/level_pavers.jpg index b1f0c4a..37c942e 100644 Binary files a/levels/albert_parklands/level_pavers.jpg and b/levels/albert_parklands/level_pavers.jpg differ diff --git a/levels/albert_parklands/level_pavers.jpg.import b/levels/albert_parklands/level_pavers.jpg.import index 22cae5c..7ecd3b6 100644 --- a/levels/albert_parklands/level_pavers.jpg.import +++ b/levels/albert_parklands/level_pavers.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://ev83fs768tlm" +uid="uid://bujw2uvkf2tvi" path="res://.godot/imported/level_pavers.jpg-90f056c7ca15803eb06ef97e9b7a610e.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "4a9175b67948bd01619ca6271457748b" +"md5": "b1bbbe65052bf830311c774d65b64bc9" } [deps] diff --git a/levels/albert_parklands/level_planter.jpg b/levels/albert_parklands/level_planter.jpg new file mode 100644 index 0000000..7eb2e19 Binary files /dev/null and b/levels/albert_parklands/level_planter.jpg differ diff --git a/levels/albert_parklands/level_planter.jpg.import b/levels/albert_parklands/level_planter.jpg.import new file mode 100644 index 0000000..00bc315 --- /dev/null +++ b/levels/albert_parklands/level_planter.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5f3q0n40fupy" +path="res://.godot/imported/level_planter.jpg-2a59b20add4bf8c85f91c45371a66ab6.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "a2c7fc1915b10d99f4cb35a41d3de89e" +} + +[deps] + +source_file="res://levels/albert_parklands/level_planter.jpg" +dest_files=["res://.godot/imported/level_planter.jpg-2a59b20add4bf8c85f91c45371a66ab6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/albert_parklands/level_roof_deck.jpg b/levels/albert_parklands/level_roof_deck.jpg new file mode 100644 index 0000000..1e80376 Binary files /dev/null and b/levels/albert_parklands/level_roof_deck.jpg differ diff --git a/levels/albert_parklands/level_roof_deck.jpg.import b/levels/albert_parklands/level_roof_deck.jpg.import new file mode 100644 index 0000000..8996bb7 --- /dev/null +++ b/levels/albert_parklands/level_roof_deck.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://byhrsvi3j1c5u" +path="res://.godot/imported/level_roof_deck.jpg-86f24aacd3d7d19c86226fb2c48d1e86.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "abefe2c913e535b8e45c15c2fd64c035" +} + +[deps] + +source_file="res://levels/albert_parklands/level_roof_deck.jpg" +dest_files=["res://.godot/imported/level_roof_deck.jpg-86f24aacd3d7d19c86226fb2c48d1e86.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/albert_parklands/level_sandstone.jpg b/levels/albert_parklands/level_sandstone.jpg new file mode 100644 index 0000000..5d77cc4 Binary files /dev/null and b/levels/albert_parklands/level_sandstone.jpg differ diff --git a/levels/albert_parklands/level_sandstone.jpg.import b/levels/albert_parklands/level_sandstone.jpg.import new file mode 100644 index 0000000..1f812b0 --- /dev/null +++ b/levels/albert_parklands/level_sandstone.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://36hbuxoo2qlk" +path="res://.godot/imported/level_sandstone.jpg-ccefbe1c6777f713e614074ac0e6bb7a.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "4542fecfd809fc8ba6d5ffe37023980e" +} + +[deps] + +source_file="res://levels/albert_parklands/level_sandstone.jpg" +dest_files=["res://.godot/imported/level_sandstone.jpg-ccefbe1c6777f713e614074ac0e6bb7a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/albert_parklands/level_shopfront.jpg b/levels/albert_parklands/level_shopfront.jpg new file mode 100644 index 0000000..070ea5d Binary files /dev/null and b/levels/albert_parklands/level_shopfront.jpg differ diff --git a/levels/albert_parklands/level_shopfront.jpg.import b/levels/albert_parklands/level_shopfront.jpg.import new file mode 100644 index 0000000..33793f7 --- /dev/null +++ b/levels/albert_parklands/level_shopfront.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c36rfxwf4qpda" +path="res://.godot/imported/level_shopfront.jpg-0367879044142c73585c4f1cc3d222ac.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "54365d23c4a16f4093874e323505f747" +} + +[deps] + +source_file="res://levels/albert_parklands/level_shopfront.jpg" +dest_files=["res://.godot/imported/level_shopfront.jpg-0367879044142c73585c4f1cc3d222ac.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/albert_parklands/level_water.jpg b/levels/albert_parklands/level_water.jpg index 0ed0b39..abcba62 100644 Binary files a/levels/albert_parklands/level_water.jpg and b/levels/albert_parklands/level_water.jpg differ diff --git a/levels/albert_parklands/level_water.jpg.import b/levels/albert_parklands/level_water.jpg.import index 331bf97..50def89 100644 --- a/levels/albert_parklands/level_water.jpg.import +++ b/levels/albert_parklands/level_water.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://b78j71vlc7h0a" +uid="uid://c26jdny76ytti" path="res://.godot/imported/level_water.jpg-d40f7d202a33caec44c959daab3c051c.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "0cc84403ee5cb5f5a87fd4df17c0af6b" +"md5": "5c09ce05f3ec08d64ff6edccd71fef85" } [deps] diff --git a/levels/kangaroo_point/level.glb b/levels/kangaroo_point/level.glb index c5e8e3f..6d9fc35 100644 Binary files a/levels/kangaroo_point/level.glb and b/levels/kangaroo_point/level.glb differ diff --git a/levels/kangaroo_point/level.glb.import b/levels/kangaroo_point/level.glb.import index 4766877..5c7cea3 100644 --- a/levels/kangaroo_point/level.glb.import +++ b/levels/kangaroo_point/level.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/level.glb-30461b4810ef38297351fb89cbe9aa18.sc nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/levels/kangaroo_point/level_asphalt.jpg b/levels/kangaroo_point/level_asphalt.jpg index 30b225f..488f4b4 100644 Binary files a/levels/kangaroo_point/level_asphalt.jpg and b/levels/kangaroo_point/level_asphalt.jpg differ diff --git a/levels/kangaroo_point/level_asphalt.jpg.import b/levels/kangaroo_point/level_asphalt.jpg.import index 039d95c..b785229 100644 --- a/levels/kangaroo_point/level_asphalt.jpg.import +++ b/levels/kangaroo_point/level_asphalt.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dfiiw08f8qmgr" +uid="uid://xdpmhfdxsgcy" path="res://.godot/imported/level_asphalt.jpg-23c0384d78044660e730133c4c647819.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "61f0484dca5fc32f16b6163e4f2d82f7" +"md5": "6d4e58bce08ad885d626807f4870dd6b" } [deps] diff --git a/levels/kangaroo_point/level_awning_cream.jpg b/levels/kangaroo_point/level_awning_cream.jpg new file mode 100644 index 0000000..ee8e490 Binary files /dev/null and b/levels/kangaroo_point/level_awning_cream.jpg differ diff --git a/levels/kangaroo_point/level_awning_cream.jpg.import b/levels/kangaroo_point/level_awning_cream.jpg.import new file mode 100644 index 0000000..438049e --- /dev/null +++ b/levels/kangaroo_point/level_awning_cream.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dx8ofpw0gdx2i" +path="res://.godot/imported/level_awning_cream.jpg-777ad9975518e12a5c04171d80017b74.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "fd6eadc50ee05328df123d962ebcc1a2" +} + +[deps] + +source_file="res://levels/kangaroo_point/level_awning_cream.jpg" +dest_files=["res://.godot/imported/level_awning_cream.jpg-777ad9975518e12a5c04171d80017b74.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/kangaroo_point/level_awning_green.jpg b/levels/kangaroo_point/level_awning_green.jpg new file mode 100644 index 0000000..2acf8e8 Binary files /dev/null and b/levels/kangaroo_point/level_awning_green.jpg differ diff --git a/levels/kangaroo_point/level_awning_green.jpg.import b/levels/kangaroo_point/level_awning_green.jpg.import new file mode 100644 index 0000000..82333e2 --- /dev/null +++ b/levels/kangaroo_point/level_awning_green.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dmlonhxhsllao" +path="res://.godot/imported/level_awning_green.jpg-f0031ee4bb3affb9eaacd124afef083f.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "5f02e613fa470f9c1aae51f038c294a8" +} + +[deps] + +source_file="res://levels/kangaroo_point/level_awning_green.jpg" +dest_files=["res://.godot/imported/level_awning_green.jpg-f0031ee4bb3affb9eaacd124afef083f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/kangaroo_point/level_awning_grey.jpg b/levels/kangaroo_point/level_awning_grey.jpg new file mode 100644 index 0000000..bc89374 Binary files /dev/null and b/levels/kangaroo_point/level_awning_grey.jpg differ diff --git a/levels/kangaroo_point/level_awning_grey.jpg.import b/levels/kangaroo_point/level_awning_grey.jpg.import new file mode 100644 index 0000000..296a4e8 --- /dev/null +++ b/levels/kangaroo_point/level_awning_grey.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfutd6rdpxx6x" +path="res://.godot/imported/level_awning_grey.jpg-87dcfd335a3958c873bf300c214ccffd.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "3dbfb0d5f478755a1370246878836a74" +} + +[deps] + +source_file="res://levels/kangaroo_point/level_awning_grey.jpg" +dest_files=["res://.godot/imported/level_awning_grey.jpg-87dcfd335a3958c873bf300c214ccffd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/kangaroo_point/level_bark.jpg b/levels/kangaroo_point/level_bark.jpg new file mode 100644 index 0000000..b79bb22 Binary files /dev/null and b/levels/kangaroo_point/level_bark.jpg differ diff --git a/levels/story_bridge/level_water.jpg.import b/levels/kangaroo_point/level_bark.jpg.import similarity index 70% rename from levels/story_bridge/level_water.jpg.import rename to levels/kangaroo_point/level_bark.jpg.import index 5156330..3d14f93 100644 --- a/levels/story_bridge/level_water.jpg.import +++ b/levels/kangaroo_point/level_bark.jpg.import @@ -2,19 +2,19 @@ importer="texture" type="CompressedTexture2D" -uid="uid://c8ffcgd5qn3bs" -path="res://.godot/imported/level_water.jpg-f55c5497258e6ba03f33896132c66b93.ctex" +uid="uid://brvmx2imsis0" +path="res://.godot/imported/level_bark.jpg-f9a97634541641281b3615ed2dfe3a15.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "0cc84403ee5cb5f5a87fd4df17c0af6b" +"md5": "21804a334d55f3bdba9fe0ac964afcd4" } [deps] -source_file="res://levels/story_bridge/level_water.jpg" -dest_files=["res://.godot/imported/level_water.jpg-f55c5497258e6ba03f33896132c66b93.ctex"] +source_file="res://levels/kangaroo_point/level_bark.jpg" +dest_files=["res://.godot/imported/level_bark.jpg-f9a97634541641281b3615ed2dfe3a15.ctex"] [params] diff --git a/levels/kangaroo_point/level_concrete_ground.jpg b/levels/kangaroo_point/level_concrete_ground.jpg index f8e5395..c7d0746 100644 Binary files a/levels/kangaroo_point/level_concrete_ground.jpg and b/levels/kangaroo_point/level_concrete_ground.jpg differ diff --git a/levels/kangaroo_point/level_concrete_ground.jpg.import b/levels/kangaroo_point/level_concrete_ground.jpg.import index de4ee62..84356f6 100644 --- a/levels/kangaroo_point/level_concrete_ground.jpg.import +++ b/levels/kangaroo_point/level_concrete_ground.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://c0c3vjyv28amj" +uid="uid://xllc0ha6a2d6" path="res://.godot/imported/level_concrete_ground.jpg-3039b71c6429d182f8fb423eabd24012.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "94f81407db30c3621a4cfc3d4cc59777" +"md5": "da8e49ed928188692e8b27f94880d0f0" } [deps] diff --git a/levels/kangaroo_point/level_facade_brick.jpg b/levels/kangaroo_point/level_facade_brick.jpg index fa42b9a..3635f16 100644 Binary files a/levels/kangaroo_point/level_facade_brick.jpg and b/levels/kangaroo_point/level_facade_brick.jpg differ diff --git a/levels/kangaroo_point/level_facade_brick.jpg.import b/levels/kangaroo_point/level_facade_brick.jpg.import index d0b372d..f04c2ed 100644 --- a/levels/kangaroo_point/level_facade_brick.jpg.import +++ b/levels/kangaroo_point/level_facade_brick.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bva58uq3c67i7" +uid="uid://cmt6lv6xjqc0q" path="res://.godot/imported/level_facade_brick.jpg-63618c624dfb6d17fc72f34972853a1f.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "cc443eec121e9f1349f538ecdf2b8732" +"md5": "9bbc1f659c3ae0f8ff50415e0e25b0a0" } [deps] diff --git a/levels/kangaroo_point/level_facade_concrete.jpg b/levels/kangaroo_point/level_facade_concrete.jpg index 414e774..e29cb95 100644 Binary files a/levels/kangaroo_point/level_facade_concrete.jpg and b/levels/kangaroo_point/level_facade_concrete.jpg differ diff --git a/levels/kangaroo_point/level_facade_concrete.jpg.import b/levels/kangaroo_point/level_facade_concrete.jpg.import index 5ffc1df..d9d7670 100644 --- a/levels/kangaroo_point/level_facade_concrete.jpg.import +++ b/levels/kangaroo_point/level_facade_concrete.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bxw4eywb53n3u" +uid="uid://df6vehxgqqc5c" path="res://.godot/imported/level_facade_concrete.jpg-adac43bfcb2b425e3377ad52d804bab5.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "797a8dc03abefe25eec80c9e4fbb396e" +"md5": "01abc5a72c9b0db9fa03d6a8187d657e" } [deps] diff --git a/levels/kangaroo_point/level_facade_glass.jpg b/levels/kangaroo_point/level_facade_glass.jpg index c690591..d0882db 100644 Binary files a/levels/kangaroo_point/level_facade_glass.jpg and b/levels/kangaroo_point/level_facade_glass.jpg differ diff --git a/levels/kangaroo_point/level_facade_glass.jpg.import b/levels/kangaroo_point/level_facade_glass.jpg.import index 97fe32f..dc619cb 100644 --- a/levels/kangaroo_point/level_facade_glass.jpg.import +++ b/levels/kangaroo_point/level_facade_glass.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://53l8axasg7vr" +uid="uid://dcdwvr4qluh2p" path="res://.godot/imported/level_facade_glass.jpg-36ad4c531e5c721102605a81e76be03d.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "e12fc674ce5e0ccfb17f8d06c372410a" +"md5": "1e88904ab07ea05ef51b0ad5ef8a5176" } [deps] diff --git a/levels/kangaroo_point/level_facade_heritage.jpg b/levels/kangaroo_point/level_facade_heritage.jpg index 1fc72b8..f1c496b 100644 Binary files a/levels/kangaroo_point/level_facade_heritage.jpg and b/levels/kangaroo_point/level_facade_heritage.jpg differ diff --git a/levels/kangaroo_point/level_facade_heritage.jpg.import b/levels/kangaroo_point/level_facade_heritage.jpg.import index 880af44..ab80e3d 100644 --- a/levels/kangaroo_point/level_facade_heritage.jpg.import +++ b/levels/kangaroo_point/level_facade_heritage.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dvbc5cplfqucf" +uid="uid://68v6g71gg1nm" path="res://.godot/imported/level_facade_heritage.jpg-fbd854331bb878f6629cb153b7d7deb0.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "ed74e50bd0061f0567ff573f00ba52e8" +"md5": "ba9e1709cb12bd8fdb4a19289f624abe" } [deps] diff --git a/levels/kangaroo_point/level_foliage.jpg b/levels/kangaroo_point/level_foliage.jpg new file mode 100644 index 0000000..600d981 Binary files /dev/null and b/levels/kangaroo_point/level_foliage.jpg differ diff --git a/levels/kangaroo_point/level_foliage.jpg.import b/levels/kangaroo_point/level_foliage.jpg.import new file mode 100644 index 0000000..2c7b046 --- /dev/null +++ b/levels/kangaroo_point/level_foliage.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhs3cwwntuyrk" +path="res://.godot/imported/level_foliage.jpg-216d672e5b8b83ef955cb19371e5c903.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "ab3257b92ff0b75b17ceb374a6bfe480" +} + +[deps] + +source_file="res://levels/kangaroo_point/level_foliage.jpg" +dest_files=["res://.godot/imported/level_foliage.jpg-216d672e5b8b83ef955cb19371e5c903.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/kangaroo_point/level_footpath.jpg b/levels/kangaroo_point/level_footpath.jpg new file mode 100644 index 0000000..f4fb7ba Binary files /dev/null and b/levels/kangaroo_point/level_footpath.jpg differ diff --git a/levels/kangaroo_point/level_footpath.jpg.import b/levels/kangaroo_point/level_footpath.jpg.import new file mode 100644 index 0000000..8e62446 --- /dev/null +++ b/levels/kangaroo_point/level_footpath.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ugyyuw6ktuyf" +path="res://.godot/imported/level_footpath.jpg-e7f8343ae4cd5bca9c1986a33ec9f17c.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "7cbdf662fc4a640b776d7b1845d41e45" +} + +[deps] + +source_file="res://levels/kangaroo_point/level_footpath.jpg" +dest_files=["res://.godot/imported/level_footpath.jpg-e7f8343ae4cd5bca9c1986a33ec9f17c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/kangaroo_point/level_grass.jpg b/levels/kangaroo_point/level_grass.jpg index 7120bc1..f5ac6c5 100644 Binary files a/levels/kangaroo_point/level_grass.jpg and b/levels/kangaroo_point/level_grass.jpg differ diff --git a/levels/kangaroo_point/level_grass.jpg.import b/levels/kangaroo_point/level_grass.jpg.import index 127d8d9..ba80d07 100644 --- a/levels/kangaroo_point/level_grass.jpg.import +++ b/levels/kangaroo_point/level_grass.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://my2mpo8m875l" +uid="uid://bkcig5vmqs416" path="res://.godot/imported/level_grass.jpg-2e59d2ff49ef13ecd25a8c4eba4532ca.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "2b4b3320271b35c9a81f4cd8ddf7ea7a" +"md5": "01321994e4e9a94eb2f15dbe2978140b" } [deps] diff --git a/levels/kangaroo_point/level_pavers.jpg b/levels/kangaroo_point/level_pavers.jpg index b1f0c4a..37c942e 100644 Binary files a/levels/kangaroo_point/level_pavers.jpg and b/levels/kangaroo_point/level_pavers.jpg differ diff --git a/levels/kangaroo_point/level_pavers.jpg.import b/levels/kangaroo_point/level_pavers.jpg.import index 1f81eb2..d2f16d1 100644 --- a/levels/kangaroo_point/level_pavers.jpg.import +++ b/levels/kangaroo_point/level_pavers.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bf5qxsgxdhm24" +uid="uid://5q0lxs1h63bg" path="res://.godot/imported/level_pavers.jpg-1230a0e12d447e6d21fd8af57b534605.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "4a9175b67948bd01619ca6271457748b" +"md5": "b1bbbe65052bf830311c774d65b64bc9" } [deps] diff --git a/levels/kangaroo_point/level_planter.jpg b/levels/kangaroo_point/level_planter.jpg new file mode 100644 index 0000000..7eb2e19 Binary files /dev/null and b/levels/kangaroo_point/level_planter.jpg differ diff --git a/levels/kangaroo_point/level_planter.jpg.import b/levels/kangaroo_point/level_planter.jpg.import new file mode 100644 index 0000000..c060728 --- /dev/null +++ b/levels/kangaroo_point/level_planter.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bcmxlya1q0pbb" +path="res://.godot/imported/level_planter.jpg-53133f9473be80c0e33d872ebbaf7072.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "a2c7fc1915b10d99f4cb35a41d3de89e" +} + +[deps] + +source_file="res://levels/kangaroo_point/level_planter.jpg" +dest_files=["res://.godot/imported/level_planter.jpg-53133f9473be80c0e33d872ebbaf7072.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/kangaroo_point/level_rock.jpg b/levels/kangaroo_point/level_rock.jpg index 8cdf9e5..13d7d4e 100644 Binary files a/levels/kangaroo_point/level_rock.jpg and b/levels/kangaroo_point/level_rock.jpg differ diff --git a/levels/kangaroo_point/level_rock.jpg.import b/levels/kangaroo_point/level_rock.jpg.import index 539a9d1..10d28a4 100644 --- a/levels/kangaroo_point/level_rock.jpg.import +++ b/levels/kangaroo_point/level_rock.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bfwc7pjj6mx50" +uid="uid://dufmvtemgahcb" path="res://.godot/imported/level_rock.jpg-6b7fbc4ad06f4bf909541069dfa6e146.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "17b69eeff0d1d65076a44a6c6a51dddb" +"md5": "c0b75b793fd4409b9c53ae92b3095cf5" } [deps] diff --git a/levels/kangaroo_point/level_roof_deck.jpg b/levels/kangaroo_point/level_roof_deck.jpg new file mode 100644 index 0000000..1e80376 Binary files /dev/null and b/levels/kangaroo_point/level_roof_deck.jpg differ diff --git a/levels/kangaroo_point/level_roof_deck.jpg.import b/levels/kangaroo_point/level_roof_deck.jpg.import new file mode 100644 index 0000000..4f4b74d --- /dev/null +++ b/levels/kangaroo_point/level_roof_deck.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://myn7tr55gsn7" +path="res://.godot/imported/level_roof_deck.jpg-ff7ef44b629ed1d3a49d9f89d2691679.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "abefe2c913e535b8e45c15c2fd64c035" +} + +[deps] + +source_file="res://levels/kangaroo_point/level_roof_deck.jpg" +dest_files=["res://.godot/imported/level_roof_deck.jpg-ff7ef44b629ed1d3a49d9f89d2691679.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/kangaroo_point/level_sandstone.jpg b/levels/kangaroo_point/level_sandstone.jpg new file mode 100644 index 0000000..5d77cc4 Binary files /dev/null and b/levels/kangaroo_point/level_sandstone.jpg differ diff --git a/levels/kangaroo_point/level_sandstone.jpg.import b/levels/kangaroo_point/level_sandstone.jpg.import new file mode 100644 index 0000000..6867d75 --- /dev/null +++ b/levels/kangaroo_point/level_sandstone.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0vwjbqpjy1af" +path="res://.godot/imported/level_sandstone.jpg-5dd25dcb10ac773e75fdca0fd92c7fcd.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "4542fecfd809fc8ba6d5ffe37023980e" +} + +[deps] + +source_file="res://levels/kangaroo_point/level_sandstone.jpg" +dest_files=["res://.godot/imported/level_sandstone.jpg-5dd25dcb10ac773e75fdca0fd92c7fcd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/kangaroo_point/level_shopfront.jpg b/levels/kangaroo_point/level_shopfront.jpg new file mode 100644 index 0000000..070ea5d Binary files /dev/null and b/levels/kangaroo_point/level_shopfront.jpg differ diff --git a/levels/kangaroo_point/level_shopfront.jpg.import b/levels/kangaroo_point/level_shopfront.jpg.import new file mode 100644 index 0000000..3664d63 --- /dev/null +++ b/levels/kangaroo_point/level_shopfront.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cdt48jro7d6d1" +path="res://.godot/imported/level_shopfront.jpg-ad5cb155cb4eef22552ff72f89a66ae3.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "54365d23c4a16f4093874e323505f747" +} + +[deps] + +source_file="res://levels/kangaroo_point/level_shopfront.jpg" +dest_files=["res://.godot/imported/level_shopfront.jpg-ad5cb155cb4eef22552ff72f89a66ae3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/kangaroo_point/level_water.jpg b/levels/kangaroo_point/level_water.jpg index 0ed0b39..abcba62 100644 Binary files a/levels/kangaroo_point/level_water.jpg and b/levels/kangaroo_point/level_water.jpg differ diff --git a/levels/kangaroo_point/level_water.jpg.import b/levels/kangaroo_point/level_water.jpg.import index 7163bf3..993fbdb 100644 --- a/levels/kangaroo_point/level_water.jpg.import +++ b/levels/kangaroo_point/level_water.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dla5ahca2hu1" +uid="uid://r3fm1voesr2b" path="res://.godot/imported/level_water.jpg-9dbf85d41434bcbf41266739a016faad.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "0cc84403ee5cb5f5a87fd4df17c0af6b" +"md5": "5c09ce05f3ec08d64ff6edccd71fef85" } [deps] diff --git a/levels/queen_st_mall/level.glb b/levels/queen_st_mall/level.glb index 107422c..121b945 100644 Binary files a/levels/queen_st_mall/level.glb and b/levels/queen_st_mall/level.glb differ diff --git a/levels/queen_st_mall/level.glb.import b/levels/queen_st_mall/level.glb.import index c282948..dbf5793 100644 --- a/levels/queen_st_mall/level.glb.import +++ b/levels/queen_st_mall/level.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/level.glb-f093d0a503a60c4e982eefdc88ad879e.sc nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/levels/queen_st_mall/level_asphalt.jpg b/levels/queen_st_mall/level_asphalt.jpg index 30b225f..488f4b4 100644 Binary files a/levels/queen_st_mall/level_asphalt.jpg and b/levels/queen_st_mall/level_asphalt.jpg differ diff --git a/levels/queen_st_mall/level_asphalt.jpg.import b/levels/queen_st_mall/level_asphalt.jpg.import index 4affb2c..63d4673 100644 --- a/levels/queen_st_mall/level_asphalt.jpg.import +++ b/levels/queen_st_mall/level_asphalt.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://c3qpbim7rcrl1" +uid="uid://cyp3l8f8455lp" path="res://.godot/imported/level_asphalt.jpg-3d895746153fd66dc21078b9fe82f0f4.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "61f0484dca5fc32f16b6163e4f2d82f7" +"md5": "6d4e58bce08ad885d626807f4870dd6b" } [deps] diff --git a/levels/queen_st_mall/level_awning_cream.jpg b/levels/queen_st_mall/level_awning_cream.jpg new file mode 100644 index 0000000..ee8e490 Binary files /dev/null and b/levels/queen_st_mall/level_awning_cream.jpg differ diff --git a/levels/queen_st_mall/level_awning_cream.jpg.import b/levels/queen_st_mall/level_awning_cream.jpg.import new file mode 100644 index 0000000..4448ae4 --- /dev/null +++ b/levels/queen_st_mall/level_awning_cream.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csoqmc3o5s4ar" +path="res://.godot/imported/level_awning_cream.jpg-be89d912053c9553563c15ed4dd0f358.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "fd6eadc50ee05328df123d962ebcc1a2" +} + +[deps] + +source_file="res://levels/queen_st_mall/level_awning_cream.jpg" +dest_files=["res://.godot/imported/level_awning_cream.jpg-be89d912053c9553563c15ed4dd0f358.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/queen_st_mall/level_awning_green.jpg b/levels/queen_st_mall/level_awning_green.jpg new file mode 100644 index 0000000..2acf8e8 Binary files /dev/null and b/levels/queen_st_mall/level_awning_green.jpg differ diff --git a/levels/queen_st_mall/level_awning_green.jpg.import b/levels/queen_st_mall/level_awning_green.jpg.import new file mode 100644 index 0000000..2267667 --- /dev/null +++ b/levels/queen_st_mall/level_awning_green.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://de5wg3geypcv" +path="res://.godot/imported/level_awning_green.jpg-8785d6fd1c26ab364b2602c3245f765a.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "5f02e613fa470f9c1aae51f038c294a8" +} + +[deps] + +source_file="res://levels/queen_st_mall/level_awning_green.jpg" +dest_files=["res://.godot/imported/level_awning_green.jpg-8785d6fd1c26ab364b2602c3245f765a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/queen_st_mall/level_awning_grey.jpg b/levels/queen_st_mall/level_awning_grey.jpg new file mode 100644 index 0000000..bc89374 Binary files /dev/null and b/levels/queen_st_mall/level_awning_grey.jpg differ diff --git a/levels/queen_st_mall/level_awning_grey.jpg.import b/levels/queen_st_mall/level_awning_grey.jpg.import new file mode 100644 index 0000000..a4596ba --- /dev/null +++ b/levels/queen_st_mall/level_awning_grey.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://231uloh7pb5g" +path="res://.godot/imported/level_awning_grey.jpg-6d70d25c12a9bba1f1c373c7df9b769f.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "3dbfb0d5f478755a1370246878836a74" +} + +[deps] + +source_file="res://levels/queen_st_mall/level_awning_grey.jpg" +dest_files=["res://.godot/imported/level_awning_grey.jpg-6d70d25c12a9bba1f1c373c7df9b769f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/queen_st_mall/level_bark.jpg b/levels/queen_st_mall/level_bark.jpg new file mode 100644 index 0000000..b79bb22 Binary files /dev/null and b/levels/queen_st_mall/level_bark.jpg differ diff --git a/levels/queen_st_mall/level_bark.jpg.import b/levels/queen_st_mall/level_bark.jpg.import new file mode 100644 index 0000000..b7ca49c --- /dev/null +++ b/levels/queen_st_mall/level_bark.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1a5o0y3ylebe" +path="res://.godot/imported/level_bark.jpg-dbc171192b8d026a1dad2b3f6fa52f64.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "21804a334d55f3bdba9fe0ac964afcd4" +} + +[deps] + +source_file="res://levels/queen_st_mall/level_bark.jpg" +dest_files=["res://.godot/imported/level_bark.jpg-dbc171192b8d026a1dad2b3f6fa52f64.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/queen_st_mall/level_concrete_ground.jpg b/levels/queen_st_mall/level_concrete_ground.jpg index f8e5395..c7d0746 100644 Binary files a/levels/queen_st_mall/level_concrete_ground.jpg and b/levels/queen_st_mall/level_concrete_ground.jpg differ diff --git a/levels/queen_st_mall/level_concrete_ground.jpg.import b/levels/queen_st_mall/level_concrete_ground.jpg.import index dae31ce..affb5be 100644 --- a/levels/queen_st_mall/level_concrete_ground.jpg.import +++ b/levels/queen_st_mall/level_concrete_ground.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://wtjcdsecfniu" +uid="uid://dxophub168o3w" path="res://.godot/imported/level_concrete_ground.jpg-ec43a7977f078de2592c0e32f5c1d949.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "94f81407db30c3621a4cfc3d4cc59777" +"md5": "da8e49ed928188692e8b27f94880d0f0" } [deps] diff --git a/levels/queen_st_mall/level_facade_brick.jpg b/levels/queen_st_mall/level_facade_brick.jpg index fa42b9a..3635f16 100644 Binary files a/levels/queen_st_mall/level_facade_brick.jpg and b/levels/queen_st_mall/level_facade_brick.jpg differ diff --git a/levels/queen_st_mall/level_facade_brick.jpg.import b/levels/queen_st_mall/level_facade_brick.jpg.import index 85512eb..5603b43 100644 --- a/levels/queen_st_mall/level_facade_brick.jpg.import +++ b/levels/queen_st_mall/level_facade_brick.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://1vnodmlo3npq" +uid="uid://caonqs8rn2tah" path="res://.godot/imported/level_facade_brick.jpg-3d2ab9215be80fa2bea4019f5e083a58.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "cc443eec121e9f1349f538ecdf2b8732" +"md5": "9bbc1f659c3ae0f8ff50415e0e25b0a0" } [deps] diff --git a/levels/queen_st_mall/level_facade_concrete.jpg b/levels/queen_st_mall/level_facade_concrete.jpg index 414e774..e29cb95 100644 Binary files a/levels/queen_st_mall/level_facade_concrete.jpg and b/levels/queen_st_mall/level_facade_concrete.jpg differ diff --git a/levels/queen_st_mall/level_facade_concrete.jpg.import b/levels/queen_st_mall/level_facade_concrete.jpg.import index 23f0683..45f85cb 100644 --- a/levels/queen_st_mall/level_facade_concrete.jpg.import +++ b/levels/queen_st_mall/level_facade_concrete.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://b33aim0yuh5p8" +uid="uid://cguxo3k8hbjkk" path="res://.godot/imported/level_facade_concrete.jpg-ee349dbe566b7a0d3afbba0650d94658.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "797a8dc03abefe25eec80c9e4fbb396e" +"md5": "01abc5a72c9b0db9fa03d6a8187d657e" } [deps] diff --git a/levels/queen_st_mall/level_facade_glass.jpg b/levels/queen_st_mall/level_facade_glass.jpg index c690591..d0882db 100644 Binary files a/levels/queen_st_mall/level_facade_glass.jpg and b/levels/queen_st_mall/level_facade_glass.jpg differ diff --git a/levels/queen_st_mall/level_facade_glass.jpg.import b/levels/queen_st_mall/level_facade_glass.jpg.import index b3b7d41..627aeab 100644 --- a/levels/queen_st_mall/level_facade_glass.jpg.import +++ b/levels/queen_st_mall/level_facade_glass.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dld8ggynwnscd" +uid="uid://d4h7dxcanu1dj" path="res://.godot/imported/level_facade_glass.jpg-3aec6add040ec226fd782ede740d6930.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "e12fc674ce5e0ccfb17f8d06c372410a" +"md5": "1e88904ab07ea05ef51b0ad5ef8a5176" } [deps] diff --git a/levels/queen_st_mall/level_facade_heritage.jpg b/levels/queen_st_mall/level_facade_heritage.jpg index 1fc72b8..f1c496b 100644 Binary files a/levels/queen_st_mall/level_facade_heritage.jpg and b/levels/queen_st_mall/level_facade_heritage.jpg differ diff --git a/levels/queen_st_mall/level_facade_heritage.jpg.import b/levels/queen_st_mall/level_facade_heritage.jpg.import index 4d1ae2c..14de0cf 100644 --- a/levels/queen_st_mall/level_facade_heritage.jpg.import +++ b/levels/queen_st_mall/level_facade_heritage.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://c3mfvmmjhps4k" +uid="uid://bwfodpmq6hcs4" path="res://.godot/imported/level_facade_heritage.jpg-fb64f32489f7ba1d9a21e683bb9a4214.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "ed74e50bd0061f0567ff573f00ba52e8" +"md5": "ba9e1709cb12bd8fdb4a19289f624abe" } [deps] diff --git a/levels/queen_st_mall/level_foliage.jpg b/levels/queen_st_mall/level_foliage.jpg new file mode 100644 index 0000000..600d981 Binary files /dev/null and b/levels/queen_st_mall/level_foliage.jpg differ diff --git a/levels/queen_st_mall/level_foliage.jpg.import b/levels/queen_st_mall/level_foliage.jpg.import new file mode 100644 index 0000000..2060413 --- /dev/null +++ b/levels/queen_st_mall/level_foliage.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://4ut64lqgeb42" +path="res://.godot/imported/level_foliage.jpg-aac33a4478f8381ce11229012d583c3b.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "ab3257b92ff0b75b17ceb374a6bfe480" +} + +[deps] + +source_file="res://levels/queen_st_mall/level_foliage.jpg" +dest_files=["res://.godot/imported/level_foliage.jpg-aac33a4478f8381ce11229012d583c3b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/queen_st_mall/level_footpath.jpg b/levels/queen_st_mall/level_footpath.jpg new file mode 100644 index 0000000..f4fb7ba Binary files /dev/null and b/levels/queen_st_mall/level_footpath.jpg differ diff --git a/levels/queen_st_mall/level_footpath.jpg.import b/levels/queen_st_mall/level_footpath.jpg.import new file mode 100644 index 0000000..1406bd2 --- /dev/null +++ b/levels/queen_st_mall/level_footpath.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://e78uey4qd5jf" +path="res://.godot/imported/level_footpath.jpg-f107ae69b2e1135bb5e4095e1b8fc26e.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "7cbdf662fc4a640b776d7b1845d41e45" +} + +[deps] + +source_file="res://levels/queen_st_mall/level_footpath.jpg" +dest_files=["res://.godot/imported/level_footpath.jpg-f107ae69b2e1135bb5e4095e1b8fc26e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/queen_st_mall/level_grass.jpg b/levels/queen_st_mall/level_grass.jpg index 7120bc1..f5ac6c5 100644 Binary files a/levels/queen_st_mall/level_grass.jpg and b/levels/queen_st_mall/level_grass.jpg differ diff --git a/levels/queen_st_mall/level_grass.jpg.import b/levels/queen_st_mall/level_grass.jpg.import index 0c829b3..6b432e4 100644 --- a/levels/queen_st_mall/level_grass.jpg.import +++ b/levels/queen_st_mall/level_grass.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bl0oqlup5686p" +uid="uid://dbc0kd2585kkj" path="res://.godot/imported/level_grass.jpg-13d6035a6eeb80e112609ac3d84adc42.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "2b4b3320271b35c9a81f4cd8ddf7ea7a" +"md5": "01321994e4e9a94eb2f15dbe2978140b" } [deps] diff --git a/levels/queen_st_mall/level_panel_white.jpg b/levels/queen_st_mall/level_panel_white.jpg new file mode 100644 index 0000000..86db047 Binary files /dev/null and b/levels/queen_st_mall/level_panel_white.jpg differ diff --git a/levels/queen_st_mall/level_panel_white.jpg.import b/levels/queen_st_mall/level_panel_white.jpg.import new file mode 100644 index 0000000..c18b369 --- /dev/null +++ b/levels/queen_st_mall/level_panel_white.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://by20bwv4pl8no" +path="res://.godot/imported/level_panel_white.jpg-820de42ea6f5aeaaf63e60684c067481.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "cfedf8ba4acf1158ff462ccfa8722c45" +} + +[deps] + +source_file="res://levels/queen_st_mall/level_panel_white.jpg" +dest_files=["res://.godot/imported/level_panel_white.jpg-820de42ea6f5aeaaf63e60684c067481.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/queen_st_mall/level_pavers.jpg b/levels/queen_st_mall/level_pavers.jpg index b1f0c4a..37c942e 100644 Binary files a/levels/queen_st_mall/level_pavers.jpg and b/levels/queen_st_mall/level_pavers.jpg differ diff --git a/levels/queen_st_mall/level_pavers.jpg.import b/levels/queen_st_mall/level_pavers.jpg.import index db53bf8..d9d6a5b 100644 --- a/levels/queen_st_mall/level_pavers.jpg.import +++ b/levels/queen_st_mall/level_pavers.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bqkposa7ei7ux" +uid="uid://c7g5x8bu8cggf" path="res://.godot/imported/level_pavers.jpg-d87800716b7af0b9d073be732c636a9f.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "4a9175b67948bd01619ca6271457748b" +"md5": "b1bbbe65052bf830311c774d65b64bc9" } [deps] diff --git a/levels/queen_st_mall/level_planter.jpg b/levels/queen_st_mall/level_planter.jpg new file mode 100644 index 0000000..7eb2e19 Binary files /dev/null and b/levels/queen_st_mall/level_planter.jpg differ diff --git a/levels/queen_st_mall/level_planter.jpg.import b/levels/queen_st_mall/level_planter.jpg.import new file mode 100644 index 0000000..df47e02 --- /dev/null +++ b/levels/queen_st_mall/level_planter.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxtu7o5wow1hi" +path="res://.godot/imported/level_planter.jpg-3a9e083c44c5dc6f1492074c160c3c31.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "a2c7fc1915b10d99f4cb35a41d3de89e" +} + +[deps] + +source_file="res://levels/queen_st_mall/level_planter.jpg" +dest_files=["res://.godot/imported/level_planter.jpg-3a9e083c44c5dc6f1492074c160c3c31.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/queen_st_mall/level_rock.jpg b/levels/queen_st_mall/level_rock.jpg index 8cdf9e5..13d7d4e 100644 Binary files a/levels/queen_st_mall/level_rock.jpg and b/levels/queen_st_mall/level_rock.jpg differ diff --git a/levels/queen_st_mall/level_rock.jpg.import b/levels/queen_st_mall/level_rock.jpg.import index ecc5888..f51988f 100644 --- a/levels/queen_st_mall/level_rock.jpg.import +++ b/levels/queen_st_mall/level_rock.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://q7k3jog18i6i" +uid="uid://bi2j7gs7cwxkr" path="res://.godot/imported/level_rock.jpg-2d1fd05ee0c034f0a006438e038aeaaa.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "17b69eeff0d1d65076a44a6c6a51dddb" +"md5": "c0b75b793fd4409b9c53ae92b3095cf5" } [deps] diff --git a/levels/queen_st_mall/level_roof_deck.jpg b/levels/queen_st_mall/level_roof_deck.jpg new file mode 100644 index 0000000..1e80376 Binary files /dev/null and b/levels/queen_st_mall/level_roof_deck.jpg differ diff --git a/levels/queen_st_mall/level_roof_deck.jpg.import b/levels/queen_st_mall/level_roof_deck.jpg.import new file mode 100644 index 0000000..1c8215a --- /dev/null +++ b/levels/queen_st_mall/level_roof_deck.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4ehvso24jype" +path="res://.godot/imported/level_roof_deck.jpg-4920c071c16b0e1a3b7a0363b01b35fe.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "abefe2c913e535b8e45c15c2fd64c035" +} + +[deps] + +source_file="res://levels/queen_st_mall/level_roof_deck.jpg" +dest_files=["res://.godot/imported/level_roof_deck.jpg-4920c071c16b0e1a3b7a0363b01b35fe.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/queen_st_mall/level_sandstone.jpg b/levels/queen_st_mall/level_sandstone.jpg new file mode 100644 index 0000000..5d77cc4 Binary files /dev/null and b/levels/queen_st_mall/level_sandstone.jpg differ diff --git a/levels/queen_st_mall/level_sandstone.jpg.import b/levels/queen_st_mall/level_sandstone.jpg.import new file mode 100644 index 0000000..f469c79 --- /dev/null +++ b/levels/queen_st_mall/level_sandstone.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d2ftxu2h3wudl" +path="res://.godot/imported/level_sandstone.jpg-84523b6459affc6ff4a4d980ec9fd606.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "4542fecfd809fc8ba6d5ffe37023980e" +} + +[deps] + +source_file="res://levels/queen_st_mall/level_sandstone.jpg" +dest_files=["res://.godot/imported/level_sandstone.jpg-84523b6459affc6ff4a4d980ec9fd606.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/queen_st_mall/level_shopfront.jpg b/levels/queen_st_mall/level_shopfront.jpg new file mode 100644 index 0000000..070ea5d Binary files /dev/null and b/levels/queen_st_mall/level_shopfront.jpg differ diff --git a/levels/queen_st_mall/level_shopfront.jpg.import b/levels/queen_st_mall/level_shopfront.jpg.import new file mode 100644 index 0000000..1e426b4 --- /dev/null +++ b/levels/queen_st_mall/level_shopfront.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4j7pc20y6ek2" +path="res://.godot/imported/level_shopfront.jpg-a072b2c2304f862d1ec87b9e7d1a1bfc.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "54365d23c4a16f4093874e323505f747" +} + +[deps] + +source_file="res://levels/queen_st_mall/level_shopfront.jpg" +dest_files=["res://.godot/imported/level_shopfront.jpg-a072b2c2304f862d1ec87b9e7d1a1bfc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/queen_st_mall/level_water.jpg b/levels/queen_st_mall/level_water.jpg new file mode 100644 index 0000000..abcba62 Binary files /dev/null and b/levels/queen_st_mall/level_water.jpg differ diff --git a/levels/queen_st_mall/level_water.jpg.import b/levels/queen_st_mall/level_water.jpg.import new file mode 100644 index 0000000..4c70fba --- /dev/null +++ b/levels/queen_st_mall/level_water.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cfheg185mr0vq" +path="res://.godot/imported/level_water.jpg-04192bc33f2694c4f37ff35257aba417.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "5c09ce05f3ec08d64ff6edccd71fef85" +} + +[deps] + +source_file="res://levels/queen_st_mall/level_water.jpg" +dest_files=["res://.godot/imported/level_water.jpg-04192bc33f2694c4f37ff35257aba417.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/southbank/level.glb b/levels/southbank/level.glb index c038ee8..cd1541a 100644 Binary files a/levels/southbank/level.glb and b/levels/southbank/level.glb differ diff --git a/levels/southbank/level.glb.import b/levels/southbank/level.glb.import index 0145339..d263f5a 100644 --- a/levels/southbank/level.glb.import +++ b/levels/southbank/level.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/level.glb-17af9cdeb05fd15a816097b7ae0fb96c.sc nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/levels/southbank/level_asphalt.jpg b/levels/southbank/level_asphalt.jpg index 30b225f..488f4b4 100644 Binary files a/levels/southbank/level_asphalt.jpg and b/levels/southbank/level_asphalt.jpg differ diff --git a/levels/southbank/level_asphalt.jpg.import b/levels/southbank/level_asphalt.jpg.import index 553b997..0e8e317 100644 --- a/levels/southbank/level_asphalt.jpg.import +++ b/levels/southbank/level_asphalt.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dw5hldh78jv83" +uid="uid://xbuxk6njawtx" path="res://.godot/imported/level_asphalt.jpg-b793b32bb8f5247e53fce396641569e9.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "61f0484dca5fc32f16b6163e4f2d82f7" +"md5": "6d4e58bce08ad885d626807f4870dd6b" } [deps] diff --git a/levels/southbank/level_awning_cream.jpg b/levels/southbank/level_awning_cream.jpg new file mode 100644 index 0000000..ee8e490 Binary files /dev/null and b/levels/southbank/level_awning_cream.jpg differ diff --git a/levels/southbank/level_awning_cream.jpg.import b/levels/southbank/level_awning_cream.jpg.import new file mode 100644 index 0000000..59c5076 --- /dev/null +++ b/levels/southbank/level_awning_cream.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4y4y1vvhotel" +path="res://.godot/imported/level_awning_cream.jpg-1f54f2ed5f94143870440abdd2bf1b50.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "fd6eadc50ee05328df123d962ebcc1a2" +} + +[deps] + +source_file="res://levels/southbank/level_awning_cream.jpg" +dest_files=["res://.godot/imported/level_awning_cream.jpg-1f54f2ed5f94143870440abdd2bf1b50.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/southbank/level_awning_green.jpg b/levels/southbank/level_awning_green.jpg new file mode 100644 index 0000000..2acf8e8 Binary files /dev/null and b/levels/southbank/level_awning_green.jpg differ diff --git a/levels/southbank/level_awning_green.jpg.import b/levels/southbank/level_awning_green.jpg.import new file mode 100644 index 0000000..e6c1fd9 --- /dev/null +++ b/levels/southbank/level_awning_green.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dcn8vgn5t8dww" +path="res://.godot/imported/level_awning_green.jpg-a6b5e981f542b7712ca244914c1ba768.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "5f02e613fa470f9c1aae51f038c294a8" +} + +[deps] + +source_file="res://levels/southbank/level_awning_green.jpg" +dest_files=["res://.godot/imported/level_awning_green.jpg-a6b5e981f542b7712ca244914c1ba768.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/southbank/level_awning_grey.jpg b/levels/southbank/level_awning_grey.jpg new file mode 100644 index 0000000..bc89374 Binary files /dev/null and b/levels/southbank/level_awning_grey.jpg differ diff --git a/levels/southbank/level_awning_grey.jpg.import b/levels/southbank/level_awning_grey.jpg.import new file mode 100644 index 0000000..6671a25 --- /dev/null +++ b/levels/southbank/level_awning_grey.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d1him1eivg1ng" +path="res://.godot/imported/level_awning_grey.jpg-ca518de50fca2dd30a9b68e9bf3f0f6e.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "3dbfb0d5f478755a1370246878836a74" +} + +[deps] + +source_file="res://levels/southbank/level_awning_grey.jpg" +dest_files=["res://.godot/imported/level_awning_grey.jpg-ca518de50fca2dd30a9b68e9bf3f0f6e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/southbank/level_bark.jpg b/levels/southbank/level_bark.jpg new file mode 100644 index 0000000..b79bb22 Binary files /dev/null and b/levels/southbank/level_bark.jpg differ diff --git a/levels/southbank/level_bark.jpg.import b/levels/southbank/level_bark.jpg.import new file mode 100644 index 0000000..d4e8343 --- /dev/null +++ b/levels/southbank/level_bark.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnliqjrguulhk" +path="res://.godot/imported/level_bark.jpg-2d8cacbf88dd2468f52958a8c64805c0.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "21804a334d55f3bdba9fe0ac964afcd4" +} + +[deps] + +source_file="res://levels/southbank/level_bark.jpg" +dest_files=["res://.godot/imported/level_bark.jpg-2d8cacbf88dd2468f52958a8c64805c0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/southbank/level_concrete_ground.jpg b/levels/southbank/level_concrete_ground.jpg index f8e5395..c7d0746 100644 Binary files a/levels/southbank/level_concrete_ground.jpg and b/levels/southbank/level_concrete_ground.jpg differ diff --git a/levels/southbank/level_concrete_ground.jpg.import b/levels/southbank/level_concrete_ground.jpg.import index 56229d5..9fad7df 100644 --- a/levels/southbank/level_concrete_ground.jpg.import +++ b/levels/southbank/level_concrete_ground.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dtdusjv2k2pxm" +uid="uid://dj2j8hb30rpo0" path="res://.godot/imported/level_concrete_ground.jpg-bd2b53d43b87aa4c3e50860a7b180a0d.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "94f81407db30c3621a4cfc3d4cc59777" +"md5": "da8e49ed928188692e8b27f94880d0f0" } [deps] diff --git a/levels/southbank/level_facade_brick.jpg b/levels/southbank/level_facade_brick.jpg index fa42b9a..3635f16 100644 Binary files a/levels/southbank/level_facade_brick.jpg and b/levels/southbank/level_facade_brick.jpg differ diff --git a/levels/southbank/level_facade_brick.jpg.import b/levels/southbank/level_facade_brick.jpg.import index a6859de..d471af6 100644 --- a/levels/southbank/level_facade_brick.jpg.import +++ b/levels/southbank/level_facade_brick.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bxd5h16q8k0b2" +uid="uid://uy0r61512roo" path="res://.godot/imported/level_facade_brick.jpg-414eb4097e7647c48311bc9245f6a8dc.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "cc443eec121e9f1349f538ecdf2b8732" +"md5": "9bbc1f659c3ae0f8ff50415e0e25b0a0" } [deps] diff --git a/levels/southbank/level_facade_concrete.jpg b/levels/southbank/level_facade_concrete.jpg index 414e774..e29cb95 100644 Binary files a/levels/southbank/level_facade_concrete.jpg and b/levels/southbank/level_facade_concrete.jpg differ diff --git a/levels/southbank/level_facade_concrete.jpg.import b/levels/southbank/level_facade_concrete.jpg.import index a02bbf9..3897613 100644 --- a/levels/southbank/level_facade_concrete.jpg.import +++ b/levels/southbank/level_facade_concrete.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://d34vl4cexgtf3" +uid="uid://cb8u61dtrs5nv" path="res://.godot/imported/level_facade_concrete.jpg-8a6dd7665a26ab818b7ca82d1fed9e40.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "797a8dc03abefe25eec80c9e4fbb396e" +"md5": "01abc5a72c9b0db9fa03d6a8187d657e" } [deps] diff --git a/levels/southbank/level_facade_glass.jpg b/levels/southbank/level_facade_glass.jpg index c690591..d0882db 100644 Binary files a/levels/southbank/level_facade_glass.jpg and b/levels/southbank/level_facade_glass.jpg differ diff --git a/levels/southbank/level_facade_glass.jpg.import b/levels/southbank/level_facade_glass.jpg.import index e21b329..131da18 100644 --- a/levels/southbank/level_facade_glass.jpg.import +++ b/levels/southbank/level_facade_glass.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://c88a0xwiqc0v5" +uid="uid://df4adklewgv4f" path="res://.godot/imported/level_facade_glass.jpg-bd0b5599e4534fb1beee1f6030e87f02.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "e12fc674ce5e0ccfb17f8d06c372410a" +"md5": "1e88904ab07ea05ef51b0ad5ef8a5176" } [deps] diff --git a/levels/southbank/level_facade_heritage.jpg b/levels/southbank/level_facade_heritage.jpg index 1fc72b8..f1c496b 100644 Binary files a/levels/southbank/level_facade_heritage.jpg and b/levels/southbank/level_facade_heritage.jpg differ diff --git a/levels/southbank/level_facade_heritage.jpg.import b/levels/southbank/level_facade_heritage.jpg.import index 9a05bd0..80a4e26 100644 --- a/levels/southbank/level_facade_heritage.jpg.import +++ b/levels/southbank/level_facade_heritage.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dbgk588g2kcb3" +uid="uid://bubmct5qoaw8q" path="res://.godot/imported/level_facade_heritage.jpg-c0a3bebaf42567b83c820573a8263c1b.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "ed74e50bd0061f0567ff573f00ba52e8" +"md5": "ba9e1709cb12bd8fdb4a19289f624abe" } [deps] diff --git a/levels/southbank/level_foliage.jpg b/levels/southbank/level_foliage.jpg new file mode 100644 index 0000000..600d981 Binary files /dev/null and b/levels/southbank/level_foliage.jpg differ diff --git a/levels/southbank/level_foliage.jpg.import b/levels/southbank/level_foliage.jpg.import new file mode 100644 index 0000000..afe2214 --- /dev/null +++ b/levels/southbank/level_foliage.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cyro5oajkn4tw" +path="res://.godot/imported/level_foliage.jpg-b022780453b81b5ebb1de0efd642101f.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "ab3257b92ff0b75b17ceb374a6bfe480" +} + +[deps] + +source_file="res://levels/southbank/level_foliage.jpg" +dest_files=["res://.godot/imported/level_foliage.jpg-b022780453b81b5ebb1de0efd642101f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/southbank/level_footpath.jpg b/levels/southbank/level_footpath.jpg new file mode 100644 index 0000000..f4fb7ba Binary files /dev/null and b/levels/southbank/level_footpath.jpg differ diff --git a/levels/southbank/level_footpath.jpg.import b/levels/southbank/level_footpath.jpg.import new file mode 100644 index 0000000..70a4ae7 --- /dev/null +++ b/levels/southbank/level_footpath.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5h6jpuxuse4i" +path="res://.godot/imported/level_footpath.jpg-fb905c3a25591d70461cb0d2fbf5db81.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "7cbdf662fc4a640b776d7b1845d41e45" +} + +[deps] + +source_file="res://levels/southbank/level_footpath.jpg" +dest_files=["res://.godot/imported/level_footpath.jpg-fb905c3a25591d70461cb0d2fbf5db81.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/southbank/level_grass.jpg b/levels/southbank/level_grass.jpg index 7120bc1..f5ac6c5 100644 Binary files a/levels/southbank/level_grass.jpg and b/levels/southbank/level_grass.jpg differ diff --git a/levels/southbank/level_grass.jpg.import b/levels/southbank/level_grass.jpg.import index 568b3e6..f43ed35 100644 --- a/levels/southbank/level_grass.jpg.import +++ b/levels/southbank/level_grass.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://dks4um1ylu4l6" +uid="uid://dsgo1ci7jxm5b" path="res://.godot/imported/level_grass.jpg-e747c7c3bfa74c3e8e81903abb92ca39.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "2b4b3320271b35c9a81f4cd8ddf7ea7a" +"md5": "01321994e4e9a94eb2f15dbe2978140b" } [deps] diff --git a/levels/southbank/level_pavers.jpg b/levels/southbank/level_pavers.jpg index b1f0c4a..37c942e 100644 Binary files a/levels/southbank/level_pavers.jpg and b/levels/southbank/level_pavers.jpg differ diff --git a/levels/southbank/level_pavers.jpg.import b/levels/southbank/level_pavers.jpg.import index b0a6096..5c83b36 100644 --- a/levels/southbank/level_pavers.jpg.import +++ b/levels/southbank/level_pavers.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bluxg8vceh2rn" +uid="uid://f52a4rvffofu" path="res://.godot/imported/level_pavers.jpg-1330d2adc892acadea0e48e320586e6f.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "4a9175b67948bd01619ca6271457748b" +"md5": "b1bbbe65052bf830311c774d65b64bc9" } [deps] diff --git a/levels/southbank/level_planter.jpg b/levels/southbank/level_planter.jpg new file mode 100644 index 0000000..7eb2e19 Binary files /dev/null and b/levels/southbank/level_planter.jpg differ diff --git a/levels/southbank/level_planter.jpg.import b/levels/southbank/level_planter.jpg.import new file mode 100644 index 0000000..903ddbc --- /dev/null +++ b/levels/southbank/level_planter.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgv38qnasvojg" +path="res://.godot/imported/level_planter.jpg-bcdf313aab632ef006b623b7664f2710.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "a2c7fc1915b10d99f4cb35a41d3de89e" +} + +[deps] + +source_file="res://levels/southbank/level_planter.jpg" +dest_files=["res://.godot/imported/level_planter.jpg-bcdf313aab632ef006b623b7664f2710.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/southbank/level_rock.jpg b/levels/southbank/level_rock.jpg index 8cdf9e5..13d7d4e 100644 Binary files a/levels/southbank/level_rock.jpg and b/levels/southbank/level_rock.jpg differ diff --git a/levels/southbank/level_rock.jpg.import b/levels/southbank/level_rock.jpg.import index 84023b9..3a12573 100644 --- a/levels/southbank/level_rock.jpg.import +++ b/levels/southbank/level_rock.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bpuau8lmmyxkj" +uid="uid://cu5fyhp1re4vg" path="res://.godot/imported/level_rock.jpg-9890b8975d8ee215157e6f269b2ef3d2.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "17b69eeff0d1d65076a44a6c6a51dddb" +"md5": "c0b75b793fd4409b9c53ae92b3095cf5" } [deps] diff --git a/levels/southbank/level_roof_deck.jpg b/levels/southbank/level_roof_deck.jpg new file mode 100644 index 0000000..1e80376 Binary files /dev/null and b/levels/southbank/level_roof_deck.jpg differ diff --git a/levels/southbank/level_roof_deck.jpg.import b/levels/southbank/level_roof_deck.jpg.import new file mode 100644 index 0000000..14e3249 --- /dev/null +++ b/levels/southbank/level_roof_deck.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckb3fe7c4obuh" +path="res://.godot/imported/level_roof_deck.jpg-e6fa3bcc18553c26bf2562200ca3005b.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "abefe2c913e535b8e45c15c2fd64c035" +} + +[deps] + +source_file="res://levels/southbank/level_roof_deck.jpg" +dest_files=["res://.godot/imported/level_roof_deck.jpg-e6fa3bcc18553c26bf2562200ca3005b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/southbank/level_sandstone.jpg b/levels/southbank/level_sandstone.jpg new file mode 100644 index 0000000..5d77cc4 Binary files /dev/null and b/levels/southbank/level_sandstone.jpg differ diff --git a/levels/southbank/level_sandstone.jpg.import b/levels/southbank/level_sandstone.jpg.import new file mode 100644 index 0000000..84fbfe5 --- /dev/null +++ b/levels/southbank/level_sandstone.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://lblfmi2q6ub6" +path="res://.godot/imported/level_sandstone.jpg-ed52e26cd48d1c33bcd861f24c56be65.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "4542fecfd809fc8ba6d5ffe37023980e" +} + +[deps] + +source_file="res://levels/southbank/level_sandstone.jpg" +dest_files=["res://.godot/imported/level_sandstone.jpg-ed52e26cd48d1c33bcd861f24c56be65.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/southbank/level_shopfront.jpg b/levels/southbank/level_shopfront.jpg new file mode 100644 index 0000000..070ea5d Binary files /dev/null and b/levels/southbank/level_shopfront.jpg differ diff --git a/levels/southbank/level_shopfront.jpg.import b/levels/southbank/level_shopfront.jpg.import new file mode 100644 index 0000000..27a9cb3 --- /dev/null +++ b/levels/southbank/level_shopfront.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bgv0treorwk7a" +path="res://.godot/imported/level_shopfront.jpg-3015c86a7f8b5776c0f8cf7f891176d6.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "54365d23c4a16f4093874e323505f747" +} + +[deps] + +source_file="res://levels/southbank/level_shopfront.jpg" +dest_files=["res://.godot/imported/level_shopfront.jpg-3015c86a7f8b5776c0f8cf7f891176d6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/southbank/level_water.jpg b/levels/southbank/level_water.jpg index 0ed0b39..abcba62 100644 Binary files a/levels/southbank/level_water.jpg and b/levels/southbank/level_water.jpg differ diff --git a/levels/southbank/level_water.jpg.import b/levels/southbank/level_water.jpg.import index 2c0fc41..41e4f1e 100644 --- a/levels/southbank/level_water.jpg.import +++ b/levels/southbank/level_water.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://d1m4p5c01f6c" +uid="uid://pfflsno1557t" path="res://.godot/imported/level_water.jpg-d28915b84ac8cf257bdf892067b17e66.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "0cc84403ee5cb5f5a87fd4df17c0af6b" +"md5": "5c09ce05f3ec08d64ff6edccd71fef85" } [deps] diff --git a/levels/story_bridge/level.glb b/levels/story_bridge/level.glb index 5f2b91b..a4f686c 100644 Binary files a/levels/story_bridge/level.glb and b/levels/story_bridge/level.glb differ diff --git a/levels/story_bridge/level.glb.import b/levels/story_bridge/level.glb.import index e1cb2f7..ae6a87a 100644 --- a/levels/story_bridge/level.glb.import +++ b/levels/story_bridge/level.glb.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/level.glb-045fc5cf8c0e529ecdc2678ee7acde2a.sc nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -40,3 +42,4 @@ materials/extract_path="" _subresources={} gltf/naming_version=2 gltf/embedded_image_handling=1 +gltf/texture_map_mode=0 diff --git a/levels/story_bridge/level_asphalt.jpg b/levels/story_bridge/level_asphalt.jpg index 30b225f..488f4b4 100644 Binary files a/levels/story_bridge/level_asphalt.jpg and b/levels/story_bridge/level_asphalt.jpg differ diff --git a/levels/story_bridge/level_asphalt.jpg.import b/levels/story_bridge/level_asphalt.jpg.import index 51eaaeb..c6d7ca2 100644 --- a/levels/story_bridge/level_asphalt.jpg.import +++ b/levels/story_bridge/level_asphalt.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://c68ug0eooevpv" +uid="uid://bjkijlagfiyq1" path="res://.godot/imported/level_asphalt.jpg-f0cf3564dd209cea769010f59e8665e5.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "61f0484dca5fc32f16b6163e4f2d82f7" +"md5": "6d4e58bce08ad885d626807f4870dd6b" } [deps] diff --git a/levels/story_bridge/level_awning_cream.jpg b/levels/story_bridge/level_awning_cream.jpg new file mode 100644 index 0000000..ee8e490 Binary files /dev/null and b/levels/story_bridge/level_awning_cream.jpg differ diff --git a/levels/story_bridge/level_awning_cream.jpg.import b/levels/story_bridge/level_awning_cream.jpg.import new file mode 100644 index 0000000..08bd10d --- /dev/null +++ b/levels/story_bridge/level_awning_cream.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dkmcocuocoans" +path="res://.godot/imported/level_awning_cream.jpg-86c065276e1573df2141a173de3b3716.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "fd6eadc50ee05328df123d962ebcc1a2" +} + +[deps] + +source_file="res://levels/story_bridge/level_awning_cream.jpg" +dest_files=["res://.godot/imported/level_awning_cream.jpg-86c065276e1573df2141a173de3b3716.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/story_bridge/level_awning_green.jpg b/levels/story_bridge/level_awning_green.jpg new file mode 100644 index 0000000..2acf8e8 Binary files /dev/null and b/levels/story_bridge/level_awning_green.jpg differ diff --git a/levels/story_bridge/level_awning_green.jpg.import b/levels/story_bridge/level_awning_green.jpg.import new file mode 100644 index 0000000..d0bcd0f --- /dev/null +++ b/levels/story_bridge/level_awning_green.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://tsdduqelkr7r" +path="res://.godot/imported/level_awning_green.jpg-8873e29d8a5e2cb3bc9eaa8a824c33d5.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "5f02e613fa470f9c1aae51f038c294a8" +} + +[deps] + +source_file="res://levels/story_bridge/level_awning_green.jpg" +dest_files=["res://.godot/imported/level_awning_green.jpg-8873e29d8a5e2cb3bc9eaa8a824c33d5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/story_bridge/level_awning_grey.jpg b/levels/story_bridge/level_awning_grey.jpg new file mode 100644 index 0000000..bc89374 Binary files /dev/null and b/levels/story_bridge/level_awning_grey.jpg differ diff --git a/levels/story_bridge/level_awning_grey.jpg.import b/levels/story_bridge/level_awning_grey.jpg.import new file mode 100644 index 0000000..c807c4e --- /dev/null +++ b/levels/story_bridge/level_awning_grey.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d1mxh1besxflw" +path="res://.godot/imported/level_awning_grey.jpg-73cdfa940659d04db5a91959ab5e9a5b.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "3dbfb0d5f478755a1370246878836a74" +} + +[deps] + +source_file="res://levels/story_bridge/level_awning_grey.jpg" +dest_files=["res://.godot/imported/level_awning_grey.jpg-73cdfa940659d04db5a91959ab5e9a5b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/story_bridge/level_bark.jpg b/levels/story_bridge/level_bark.jpg new file mode 100644 index 0000000..b79bb22 Binary files /dev/null and b/levels/story_bridge/level_bark.jpg differ diff --git a/levels/story_bridge/level_bark.jpg.import b/levels/story_bridge/level_bark.jpg.import new file mode 100644 index 0000000..b3e9489 --- /dev/null +++ b/levels/story_bridge/level_bark.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjvjijegykpwc" +path="res://.godot/imported/level_bark.jpg-a341aff5e009e14b59e5702082755e2a.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "21804a334d55f3bdba9fe0ac964afcd4" +} + +[deps] + +source_file="res://levels/story_bridge/level_bark.jpg" +dest_files=["res://.godot/imported/level_bark.jpg-a341aff5e009e14b59e5702082755e2a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/story_bridge/level_concrete_ground.jpg b/levels/story_bridge/level_concrete_ground.jpg index f8e5395..c7d0746 100644 Binary files a/levels/story_bridge/level_concrete_ground.jpg and b/levels/story_bridge/level_concrete_ground.jpg differ diff --git a/levels/story_bridge/level_concrete_ground.jpg.import b/levels/story_bridge/level_concrete_ground.jpg.import index 5b58fc9..6d90d1b 100644 --- a/levels/story_bridge/level_concrete_ground.jpg.import +++ b/levels/story_bridge/level_concrete_ground.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://c5n830vb2de0e" +uid="uid://c6hsm5fbh20ov" path="res://.godot/imported/level_concrete_ground.jpg-6769fa78bed00c788c662183736d1f44.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "94f81407db30c3621a4cfc3d4cc59777" +"md5": "da8e49ed928188692e8b27f94880d0f0" } [deps] diff --git a/levels/story_bridge/level_facade_brick.jpg b/levels/story_bridge/level_facade_brick.jpg index fa42b9a..3635f16 100644 Binary files a/levels/story_bridge/level_facade_brick.jpg and b/levels/story_bridge/level_facade_brick.jpg differ diff --git a/levels/story_bridge/level_facade_brick.jpg.import b/levels/story_bridge/level_facade_brick.jpg.import index 5cc4deb..587d530 100644 --- a/levels/story_bridge/level_facade_brick.jpg.import +++ b/levels/story_bridge/level_facade_brick.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://b8fs3qv3art7h" +uid="uid://cfp1fmdh7l67k" path="res://.godot/imported/level_facade_brick.jpg-a44838e21c90b12d3e9fdfc4090052c0.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "cc443eec121e9f1349f538ecdf2b8732" +"md5": "9bbc1f659c3ae0f8ff50415e0e25b0a0" } [deps] diff --git a/levels/story_bridge/level_facade_concrete.jpg b/levels/story_bridge/level_facade_concrete.jpg index 414e774..e29cb95 100644 Binary files a/levels/story_bridge/level_facade_concrete.jpg and b/levels/story_bridge/level_facade_concrete.jpg differ diff --git a/levels/story_bridge/level_facade_concrete.jpg.import b/levels/story_bridge/level_facade_concrete.jpg.import index 5123d5b..a61d9b2 100644 --- a/levels/story_bridge/level_facade_concrete.jpg.import +++ b/levels/story_bridge/level_facade_concrete.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://w4mip5jc7v2u" +uid="uid://cq5r466dehg3f" path="res://.godot/imported/level_facade_concrete.jpg-2ef101d803ef61bec7262d52e6268419.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "797a8dc03abefe25eec80c9e4fbb396e" +"md5": "01abc5a72c9b0db9fa03d6a8187d657e" } [deps] diff --git a/levels/story_bridge/level_facade_glass.jpg b/levels/story_bridge/level_facade_glass.jpg index c690591..d0882db 100644 Binary files a/levels/story_bridge/level_facade_glass.jpg and b/levels/story_bridge/level_facade_glass.jpg differ diff --git a/levels/story_bridge/level_facade_glass.jpg.import b/levels/story_bridge/level_facade_glass.jpg.import index 12a51ed..e3d95af 100644 --- a/levels/story_bridge/level_facade_glass.jpg.import +++ b/levels/story_bridge/level_facade_glass.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://ewg16syop4y6" +uid="uid://but5ho3x21hc8" path="res://.godot/imported/level_facade_glass.jpg-d4ecb4af3acbc2b60022ef6225e0cd9d.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "e12fc674ce5e0ccfb17f8d06c372410a" +"md5": "1e88904ab07ea05ef51b0ad5ef8a5176" } [deps] diff --git a/levels/story_bridge/level_facade_heritage.jpg b/levels/story_bridge/level_facade_heritage.jpg index 1fc72b8..f1c496b 100644 Binary files a/levels/story_bridge/level_facade_heritage.jpg and b/levels/story_bridge/level_facade_heritage.jpg differ diff --git a/levels/story_bridge/level_facade_heritage.jpg.import b/levels/story_bridge/level_facade_heritage.jpg.import index 4f35f92..9c3ff72 100644 --- a/levels/story_bridge/level_facade_heritage.jpg.import +++ b/levels/story_bridge/level_facade_heritage.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://gihhaoyvpycm" +uid="uid://brw76m5a8it8g" path="res://.godot/imported/level_facade_heritage.jpg-eb10270dc1b932070b20f4daed832c39.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "ed74e50bd0061f0567ff573f00ba52e8" +"md5": "ba9e1709cb12bd8fdb4a19289f624abe" } [deps] diff --git a/levels/story_bridge/level_foliage.jpg b/levels/story_bridge/level_foliage.jpg new file mode 100644 index 0000000..600d981 Binary files /dev/null and b/levels/story_bridge/level_foliage.jpg differ diff --git a/levels/story_bridge/level_foliage.jpg.import b/levels/story_bridge/level_foliage.jpg.import new file mode 100644 index 0000000..7bd6c29 --- /dev/null +++ b/levels/story_bridge/level_foliage.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dq13mhjvo46lp" +path="res://.godot/imported/level_foliage.jpg-885103ffd3e6bc0924d690c9aace9e70.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "ab3257b92ff0b75b17ceb374a6bfe480" +} + +[deps] + +source_file="res://levels/story_bridge/level_foliage.jpg" +dest_files=["res://.godot/imported/level_foliage.jpg-885103ffd3e6bc0924d690c9aace9e70.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/story_bridge/level_footpath.jpg b/levels/story_bridge/level_footpath.jpg new file mode 100644 index 0000000..f4fb7ba Binary files /dev/null and b/levels/story_bridge/level_footpath.jpg differ diff --git a/levels/story_bridge/level_footpath.jpg.import b/levels/story_bridge/level_footpath.jpg.import new file mode 100644 index 0000000..d62e71c --- /dev/null +++ b/levels/story_bridge/level_footpath.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhtrfdxfwewwq" +path="res://.godot/imported/level_footpath.jpg-62a8154357fda1f41e50d17b8ac42957.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "7cbdf662fc4a640b776d7b1845d41e45" +} + +[deps] + +source_file="res://levels/story_bridge/level_footpath.jpg" +dest_files=["res://.godot/imported/level_footpath.jpg-62a8154357fda1f41e50d17b8ac42957.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/story_bridge/level_grass.jpg b/levels/story_bridge/level_grass.jpg index 7120bc1..f5ac6c5 100644 Binary files a/levels/story_bridge/level_grass.jpg and b/levels/story_bridge/level_grass.jpg differ diff --git a/levels/story_bridge/level_grass.jpg.import b/levels/story_bridge/level_grass.jpg.import index 189209f..6048e43 100644 --- a/levels/story_bridge/level_grass.jpg.import +++ b/levels/story_bridge/level_grass.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cepj0yceqx2ea" +uid="uid://bccv0u2suvkcn" path="res://.godot/imported/level_grass.jpg-7c41cddf34130a29316e674e44920b09.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "2b4b3320271b35c9a81f4cd8ddf7ea7a" +"md5": "01321994e4e9a94eb2f15dbe2978140b" } [deps] diff --git a/levels/story_bridge/level_pavers.jpg b/levels/story_bridge/level_pavers.jpg index b1f0c4a..37c942e 100644 Binary files a/levels/story_bridge/level_pavers.jpg and b/levels/story_bridge/level_pavers.jpg differ diff --git a/levels/story_bridge/level_pavers.jpg.import b/levels/story_bridge/level_pavers.jpg.import index 970025f..1fc8ee6 100644 --- a/levels/story_bridge/level_pavers.jpg.import +++ b/levels/story_bridge/level_pavers.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://1alqxd6jrfyi" +uid="uid://cppdc2tsu4ads" path="res://.godot/imported/level_pavers.jpg-8a1de7ebebc0217e8c2136f2369d0ac1.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "4a9175b67948bd01619ca6271457748b" +"md5": "b1bbbe65052bf830311c774d65b64bc9" } [deps] diff --git a/levels/story_bridge/level_planter.jpg b/levels/story_bridge/level_planter.jpg new file mode 100644 index 0000000..7eb2e19 Binary files /dev/null and b/levels/story_bridge/level_planter.jpg differ diff --git a/levels/story_bridge/level_planter.jpg.import b/levels/story_bridge/level_planter.jpg.import new file mode 100644 index 0000000..f4dca75 --- /dev/null +++ b/levels/story_bridge/level_planter.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cnv2bj43q76dx" +path="res://.godot/imported/level_planter.jpg-209c2ac15656ad7943529ee47f8e2ec2.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "a2c7fc1915b10d99f4cb35a41d3de89e" +} + +[deps] + +source_file="res://levels/story_bridge/level_planter.jpg" +dest_files=["res://.godot/imported/level_planter.jpg-209c2ac15656ad7943529ee47f8e2ec2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/story_bridge/level_rock.jpg b/levels/story_bridge/level_rock.jpg index 8cdf9e5..13d7d4e 100644 Binary files a/levels/story_bridge/level_rock.jpg and b/levels/story_bridge/level_rock.jpg differ diff --git a/levels/story_bridge/level_rock.jpg.import b/levels/story_bridge/level_rock.jpg.import index 513473a..ce4effc 100644 --- a/levels/story_bridge/level_rock.jpg.import +++ b/levels/story_bridge/level_rock.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://gw8yd4dmgolx" +uid="uid://5vnmrc2wmkqt" path="res://.godot/imported/level_rock.jpg-8074cdd48614af40beb476fc3d5744ad.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "17b69eeff0d1d65076a44a6c6a51dddb" +"md5": "c0b75b793fd4409b9c53ae92b3095cf5" } [deps] diff --git a/levels/story_bridge/level_roof_deck.jpg b/levels/story_bridge/level_roof_deck.jpg new file mode 100644 index 0000000..1e80376 Binary files /dev/null and b/levels/story_bridge/level_roof_deck.jpg differ diff --git a/levels/story_bridge/level_roof_deck.jpg.import b/levels/story_bridge/level_roof_deck.jpg.import new file mode 100644 index 0000000..fe86ad9 --- /dev/null +++ b/levels/story_bridge/level_roof_deck.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://df7ptv8vnvv0b" +path="res://.godot/imported/level_roof_deck.jpg-d2f96af6a7b4149d7295f34ffb917413.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "abefe2c913e535b8e45c15c2fd64c035" +} + +[deps] + +source_file="res://levels/story_bridge/level_roof_deck.jpg" +dest_files=["res://.godot/imported/level_roof_deck.jpg-d2f96af6a7b4149d7295f34ffb917413.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/story_bridge/level_sandstone.jpg b/levels/story_bridge/level_sandstone.jpg new file mode 100644 index 0000000..5d77cc4 Binary files /dev/null and b/levels/story_bridge/level_sandstone.jpg differ diff --git a/levels/story_bridge/level_sandstone.jpg.import b/levels/story_bridge/level_sandstone.jpg.import new file mode 100644 index 0000000..6b35d6e --- /dev/null +++ b/levels/story_bridge/level_sandstone.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwaqm3jupvj2g" +path="res://.godot/imported/level_sandstone.jpg-e6276ccadeac38c2420110c3fb92bf43.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "4542fecfd809fc8ba6d5ffe37023980e" +} + +[deps] + +source_file="res://levels/story_bridge/level_sandstone.jpg" +dest_files=["res://.godot/imported/level_sandstone.jpg-e6276ccadeac38c2420110c3fb92bf43.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/story_bridge/level_shopfront.jpg b/levels/story_bridge/level_shopfront.jpg new file mode 100644 index 0000000..070ea5d Binary files /dev/null and b/levels/story_bridge/level_shopfront.jpg differ diff --git a/levels/story_bridge/level_shopfront.jpg.import b/levels/story_bridge/level_shopfront.jpg.import new file mode 100644 index 0000000..7eb5eff --- /dev/null +++ b/levels/story_bridge/level_shopfront.jpg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d10hjd0xue26d" +path="res://.godot/imported/level_shopfront.jpg-cd2bd258d2e98838340a81d8fdd94896.ctex" +metadata={ +"vram_texture": false +} +generator_parameters={ +"md5": "54365d23c4a16f4093874e323505f747" +} + +[deps] + +source_file="res://levels/story_bridge/level_shopfront.jpg" +dest_files=["res://.godot/imported/level_shopfront.jpg-cd2bd258d2e98838340a81d8fdd94896.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/levels/story_bridge/level_steel.jpg b/levels/story_bridge/level_steel.jpg index 394b48e..c3a953c 100644 Binary files a/levels/story_bridge/level_steel.jpg and b/levels/story_bridge/level_steel.jpg differ diff --git a/levels/story_bridge/level_steel.jpg.import b/levels/story_bridge/level_steel.jpg.import index 1681485..d3f4bec 100644 --- a/levels/story_bridge/level_steel.jpg.import +++ b/levels/story_bridge/level_steel.jpg.import @@ -2,13 +2,13 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cbennx4bjc5fe" +uid="uid://xmsyfqmcfvtg" path="res://.godot/imported/level_steel.jpg-946abcd9027d95aca826756822241ffc.ctex" metadata={ "vram_texture": false } generator_parameters={ -"md5": "8070ef37f69252d516ec9c3a8b004740" +"md5": "c89cb67b55ae73418f6c5eae7ee0f6ca" } [deps] diff --git a/levels/story_bridge/level_water.jpg b/levels/story_bridge/level_water.jpg deleted file mode 100644 index 0ed0b39..0000000 Binary files a/levels/story_bridge/level_water.jpg and /dev/null differ diff --git a/levels/woolies_carpark/carpark.gd b/levels/woolies_carpark/carpark.gd index e194575..0980fc2 100644 --- a/levels/woolies_carpark/carpark.gd +++ b/levels/woolies_carpark/carpark.gd @@ -1,24 +1,184 @@ extends Node3D -## ponytail: placeholder carpark built in code -- real levels arrive as level.glb from Blender -## and this whole folder becomes just the GLB + nothing else. +## Woolies carpark, built in code rather than as a level.glb -- the parked +## shitboxes have to stay shuntable RigidBodies, which a static GLB can't carry. +## Everything else uses the same FLUX textures as the OSM levels. +## +## The Trolley Run junction (junctions.json) runs convoys along the aisles at +## z = 15/12 and z = -21/-24, from x = -70 to 70. Keep those lanes clear. + +const TEX := "res://assets/textures/%s.jpg" + +const BAY_ROWS := [-30.0, -12.0, 6.0, 24.0] +const BAY_X0 := -27.0 +const BAY_STEP := 6.0 +const BAYS := 10 func _ready() -> void: var rng := RandomNumberGenerator.new() rng.seed = 8 - _box(Vector3(0, -0.5, 0), Vector3(240, 1, 160), Color(0.35, 0.35, 0.37)) # tarmac - for side in [-1, 1]: # kerb walls - _box(Vector3(0, 0.4, side * 79.0), Vector3(240, 0.8, 2), Color(0.6, 0.6, 0.6)) - _box(Vector3(side * 119.0, 0.4, 0), Vector3(2, 0.8, 160), Color(0.6, 0.6, 0.6)) - for row in 4: # rows of parked shitboxes, shuntable - for bay in 10: + _slab(Vector3(0, -0.5, 0), Vector3(300, 1, 240), _mat("asphalt", 10.0)) # tarmac + for side in [-1, 1]: # kerb walls + _slab(Vector3(0, 0.4, side * 79.0), Vector3(240, 0.8, 2), _mat("concrete_ground", 3.0)) + _slab(Vector3(side * 119.0, 0.4, 0), Vector3(2, 0.8, 160), _mat("concrete_ground", 3.0)) + + _bay_lines() + _store() + + # park the actual fleet -- coloured boxes read as placeholder next to + # textured everything-else, and we already ship 29 shitbox models + var models: Array[String] = [] + for id in Registry.cars(): + var st: CarStats = load(Registry.cars()[id]) + if st.model_path != "" and ResourceLoader.exists(st.model_path): + models.append(st.model_path) + models.sort() # deterministic + for row in BAY_ROWS.size(): + for bay in BAYS: if rng.randf() < 0.35: continue - var pos := Vector3(-27.0 + bay * 6.0, 0.8, -30.0 + row * 18.0) - _box(pos, Vector3(1.9, 1.4, 4.4), Color.from_hsv(rng.randf(), 0.5, rng.randf_range(0.4, 0.9)), true) - for i in 6: # light poles - _box(Vector3(-30.0 + i * 12.0, 3.0, 8.0), Vector3(0.4, 6.0, 0.4), Color(0.3, 0.3, 0.3)) + var pos := Vector3(BAY_X0 + bay * BAY_STEP, 0.75, BAY_ROWS[row]) + _car(pos, models, rng) + + for i in 6: + _light_pole(Vector3(-30.0 + i * 12.0, 0, 8.0)) + for x in [-96.0, 96.0]: # planted islands + for j in 5: + _planter_island(Vector3(x, 0, -60.0 + j * 30.0), rng) + for p in [Vector3(-52, 0, 44), Vector3(52, 0, 44), Vector3(-52, 0, -46)]: + _trolley_bay(p) _race_path() +func _mat(tex: String, scale: float, rough := 0.9) -> StandardMaterial3D: + var m := StandardMaterial3D.new() + m.albedo_texture = load(TEX % tex) + m.uv1_scale = Vector3(scale, scale, scale) + m.uv1_triplanar = true + m.roughness = rough + m.metallic = 0.0 + return m + +func _flat(color: Color, rough := 0.85) -> StandardMaterial3D: + var m := StandardMaterial3D.new() + m.albedo_color = color + m.roughness = rough + m.metallic = 0.0 + return m + +func _slab(pos: Vector3, size: Vector3, mat: Material, collide := true) -> void: + var body: PhysicsBody3D = StaticBody3D.new() + var mi := MeshInstance3D.new() + var bm := BoxMesh.new() + bm.size = size + bm.material = mat + mi.mesh = bm + body.add_child(mi) + if collide: + var shape := CollisionShape3D.new() + var bs := BoxShape3D.new() + bs.size = size + shape.shape = bs + body.add_child(shape) + body.position = pos + add_child(body) + +func _car(pos: Vector3, models: Array[String], rng: RandomNumberGenerator) -> void: + var body := RigidBody3D.new() + body.mass = 300.0 + var shape := CollisionShape3D.new() + var bs := BoxShape3D.new() + bs.size = Vector3(1.9, 1.3, 4.4) + shape.shape = bs + body.add_child(shape) + if models.is_empty(): + var mi := MeshInstance3D.new() + var bm := BoxMesh.new() + bm.size = bs.size + bm.material = _flat(Color.from_hsv(rng.randf(), 0.5, 0.7), 0.4) + mi.mesh = bm + body.add_child(mi) + else: + # model origin already sits at the 0.75 m ride height, same as the body's + body.add_child((load(models[rng.randi() % models.size()]) as PackedScene).instantiate()) + body.position = pos + body.rotate_y(rng.randf_range(-0.05, 0.05) + (PI if rng.randf() < 0.5 else 0.0)) + add_child(body) + +func _bay_lines() -> void: + # painted bay dividers -- visual only, a 12 cm kerb of paint would be absurd + var paint := _flat(Color(0.86, 0.86, 0.80), 0.7) + for row in BAY_ROWS: + for bay in BAYS + 1: + var x := BAY_X0 - BAY_STEP * 0.5 + bay * BAY_STEP + _slab(Vector3(x, 0.02, row), Vector3(0.14, 0.04, 5.0), paint, false) + _slab(Vector3(BAY_X0 + BAY_STEP * (BAYS - 1) * 0.5, 0.02, row - 2.6), + Vector3(BAY_STEP * BAYS, 0.04, 0.14), paint, false) + +func _store() -> void: + # the Woolies box at the far end -- what you're aiming at from the spawn + var front := -84.0 + var mat_wall := _mat("facade_concrete", 0.09, 0.85) + var mat_shop := _mat("shopfront", 0.16, 0.3) + var mat_sign := _flat(Color(0.06, 0.32, 0.16), 0.6) # supermarket green + _slab(Vector3(0, 7.0, front - 14.0), Vector3(130, 14, 28), mat_wall) + _slab(Vector3(0, 2.1, front + 0.2), Vector3(120, 4.2, 0.6), mat_shop, false) + _slab(Vector3(0, 5.6, front + 0.3), Vector3(120, 2.4, 0.8), mat_sign, false) + _slab(Vector3(0, 4.3, front + 2.4), Vector3(126, 0.35, 5.0), + _mat("panel_white", 0.4, 0.5), false) # entry canopy + for x in [-58.0, -29.0, 0.0, 29.0, 58.0]: + _slab(Vector3(x, 2.15, front + 4.7), Vector3(0.3, 4.3, 0.3), _flat(Color(0.2, 0.2, 0.22), 0.5), false) + +func _light_pole(base: Vector3) -> void: + var steel := _flat(Color(0.22, 0.23, 0.25), 0.5) + var pole := MeshInstance3D.new() + var cm := CylinderMesh.new() + cm.top_radius = 0.12 + cm.bottom_radius = 0.17 + cm.height = 9.0 + cm.radial_segments = 8 + cm.material = steel + pole.mesh = cm + pole.position = base + Vector3(0, 4.5, 0) + add_child(pole) + for s in [-1.0, 1.0]: + _slab(base + Vector3(s * 1.4, 8.9, 0), Vector3(2.0, 0.18, 0.6), steel, false) + _slab(base + Vector3(s * 2.2, 8.7, 0), Vector3(1.1, 0.22, 0.5), + _flat(Color(0.85, 0.84, 0.72), 0.4), false) + +func _planter_island(pos: Vector3, rng: RandomNumberGenerator) -> void: + _slab(pos + Vector3(0, 0.25, 0), Vector3(5.0, 0.5, 11.0), _mat("planter", 0.6, 0.75)) + _slab(pos + Vector3(0, 0.52, 0), Vector3(4.4, 0.06, 10.4), _mat("grass", 1.2), false) + for j in 2: + var at := pos + Vector3(0, 0, -2.6 + j * 5.2) + var trunk := MeshInstance3D.new() + var cm := CylinderMesh.new() + cm.top_radius = 0.13 + cm.bottom_radius = 0.2 + cm.height = 4.4 + cm.radial_segments = 7 + cm.material = _mat("bark", 1.4) + trunk.mesh = cm + trunk.position = at + Vector3(0, 2.7, 0) + add_child(trunk) + var crown := MeshInstance3D.new() + var sm := SphereMesh.new() + sm.radius = rng.randf_range(1.9, 2.5) + sm.height = sm.radius * 1.7 + sm.radial_segments = 12 + sm.rings = 7 + sm.material = _mat("foliage", 0.55) + crown.mesh = sm + crown.position = at + Vector3(0, 5.6, 0) + add_child(crown) + +func _trolley_bay(pos: Vector3) -> void: + var steel := _flat(Color(0.55, 0.56, 0.58), 0.45) + _slab(pos + Vector3(0, 2.5, 0), Vector3(3.0, 0.12, 9.0), _mat("panel_white", 0.5, 0.5), false) + for sx in [-1.3, 1.3]: + for sz in [-4.0, 4.0]: + _slab(pos + Vector3(sx, 1.25, sz), Vector3(0.16, 2.5, 0.16), steel, false) + for j in 5: # the trolleys themselves + _slab(pos + Vector3(0, 0.5, -3.2 + j * 1.6), Vector3(0.9, 1.0, 1.2), steel, false) + func _race_path() -> void: # perimeter loop road around the parking rows -- race line + traffic route var path := Path3D.new() @@ -32,23 +192,3 @@ func _race_path() -> void: c.add_point(p, to_prev, to_next) path.curve = c add_child(path) - -func _box(pos: Vector3, size: Vector3, color: Color, dynamic := false) -> void: - var body: PhysicsBody3D = RigidBody3D.new() if dynamic else StaticBody3D.new() - if dynamic: - body.mass = 300.0 - var shape := CollisionShape3D.new() - var bs := BoxShape3D.new() - bs.size = size - shape.shape = bs - var mi := MeshInstance3D.new() - var bm := BoxMesh.new() - bm.size = size - var mat := StandardMaterial3D.new() - mat.albedo_color = color - bm.material = mat - mi.mesh = bm - body.add_child(shape) - body.add_child(mi) - body.position = pos - add_child(body) diff --git a/shot_albert_parklands.png.import b/shot_albert_parklands.png.import new file mode 100644 index 0000000..41ce8b2 --- /dev/null +++ b/shot_albert_parklands.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cacaot1ody7kd" +path="res://.godot/imported/shot_albert_parklands.png-709880ec3f07b35d5884c6bc8143677c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://shot_albert_parklands.png" +dest_files=["res://.godot/imported/shot_albert_parklands.png-709880ec3f07b35d5884c6bc8143677c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/shot_kangaroo_point.png.import b/shot_kangaroo_point.png.import new file mode 100644 index 0000000..a5f5ce3 --- /dev/null +++ b/shot_kangaroo_point.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://nfevhdjjdgey" +path="res://.godot/imported/shot_kangaroo_point.png-f630857604c681c00ff4ab8023aaa971.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://shot_kangaroo_point.png" +dest_files=["res://.godot/imported/shot_kangaroo_point.png-f630857604c681c00ff4ab8023aaa971.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/shot_queen_st_mall.png.import b/shot_queen_st_mall.png.import new file mode 100644 index 0000000..9caa378 --- /dev/null +++ b/shot_queen_st_mall.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dqfosdy1qrqlv" +path="res://.godot/imported/shot_queen_st_mall.png-574d98f9268cb3086d50834347bcbd80.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://shot_queen_st_mall.png" +dest_files=["res://.godot/imported/shot_queen_st_mall.png-574d98f9268cb3086d50834347bcbd80.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/shot_story_bridge.png.import b/shot_story_bridge.png.import new file mode 100644 index 0000000..a1a2e47 --- /dev/null +++ b/shot_story_bridge.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dqolmf6smk5rw" +path="res://.godot/imported/shot_story_bridge.png-c0dda03340591aca8bb2478b891d1ef7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://shot_story_bridge.png" +dest_files=["res://.godot/imported/shot_story_bridge.png-c0dda03340591aca8bb2478b891d1ef7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/shot_woolies_carpark.png.import b/shot_woolies_carpark.png.import new file mode 100644 index 0000000..5de6e5f --- /dev/null +++ b/shot_woolies_carpark.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpuclminxkqb1" +path="res://.godot/imported/shot_woolies_carpark.png-a6b0808bdf7ff1a418fb8121ad945c2f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://shot_woolies_carpark.png" +dest_files=["res://.godot/imported/shot_woolies_carpark.png-a6b0808bdf7ff1a418fb8121ad945c2f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/src/game.gd b/src/game.gd index 767e719..d2aa75f 100644 --- a/src/game.gd +++ b/src/game.gd @@ -143,17 +143,7 @@ func _ready() -> void: add_child(cam) cam.global_position = car.global_position + Vector3(0, 3, 8) - var sun := DirectionalLight3D.new() - sun.rotation_degrees = Vector3(-55, 30, 0) - sun.shadow_enabled = true - add_child(sun) - var env := WorldEnvironment.new() - var e := Environment.new() - e.background_mode = Environment.BG_SKY - e.sky = Sky.new() - e.sky.sky_material = ProceduralSkyMaterial.new() - env.environment = e - add_child(env) + _build_environment() var hud := CanvasLayer.new() add_child(hud) @@ -183,6 +173,77 @@ func _ready() -> void: msg_label.add_theme_font_size_override("font_size", 48) hud.add_child(msg_label) +func _build_environment() -> void: + ## Brisbane midday: hard high sun, deep blue zenith, everything a bit blown out. + ## The bare default (no tonemap, grey ambient) rendered the city flat and dead. + var sun := DirectionalLight3D.new() + sun.rotation_degrees = Vector3(-62, 38, 0) + sun.light_color = Color(1.0, 0.96, 0.88) + sun.light_energy = 1.25 + sun.shadow_enabled = true + sun.directional_shadow_mode = DirectionalLight3D.SHADOW_PARALLEL_4_SPLITS + sun.directional_shadow_max_distance = 220.0 + sun.directional_shadow_split_1 = 0.05 + sun.directional_shadow_split_2 = 0.15 + sun.directional_shadow_split_3 = 0.45 + sun.directional_shadow_blend_splits = true + sun.shadow_bias = 0.035 + sun.shadow_normal_bias = 1.4 + add_child(sun) + + # a dim unshadowed fill from the opposite side so shadowed facades keep their + # texture instead of crushing to black + var fill := DirectionalLight3D.new() + fill.rotation_degrees = Vector3(-28, -145, 0) + fill.light_color = Color(0.86, 0.89, 0.96) + fill.light_energy = 0.22 + fill.shadow_enabled = false + add_child(fill) + + var sky_mat := ProceduralSkyMaterial.new() + sky_mat.sky_top_color = Color(0.27, 0.46, 0.74) + sky_mat.sky_horizon_color = Color(0.80, 0.86, 0.92) + sky_mat.sky_energy_multiplier = 1.0 + sky_mat.ground_bottom_color = Color(0.28, 0.28, 0.30) + sky_mat.ground_horizon_color = Color(0.66, 0.72, 0.78) + sky_mat.sun_angle_max = 4.0 + sky_mat.sun_curve = 0.08 + + var e := Environment.new() + e.background_mode = Environment.BG_SKY + e.sky = Sky.new() + e.sky.sky_material = sky_mat + e.ambient_light_source = Environment.AMBIENT_SOURCE_SKY + # a street canyon is lit almost entirely by ambient, so pure sky ambient + # painted the whole city blue -- blend it half-and-half with neutral + e.ambient_light_sky_contribution = 0.5 + e.ambient_light_color = Color(0.88, 0.87, 0.84) + e.ambient_light_energy = 0.55 + e.reflected_light_source = Environment.REFLECTION_SOURCE_SKY + e.tonemap_mode = Environment.TONE_MAPPER_ACES + e.tonemap_exposure = 0.6 + e.tonemap_white = 5.0 + e.ssao_enabled = true # contact shade is what makes the massing read + e.ssao_radius = 3.0 + e.ssao_intensity = 1.6 + e.ssao_power = 1.4 + e.ssao_light_affect = 0.25 + e.glow_enabled = true # sun off glass, and the Crashbreaker fireball + e.glow_intensity = 0.5 + e.glow_bloom = 0.08 + e.glow_hdr_threshold = 1.3 + e.fog_enabled = true # hides the level's hard edge, gives the CBD depth + e.fog_mode = Environment.FOG_MODE_DEPTH + e.fog_light_color = Color(0.74, 0.82, 0.92) + e.fog_density = 0.0 + e.fog_depth_begin = 190.0 + e.fog_depth_end = 900.0 + e.fog_depth_curve = 0.7 + e.fog_sun_scatter = 0.15 + var env := WorldEnvironment.new() + env.environment = e + add_child(env) + func _exit_tree() -> void: Engine.time_scale = 1.0 diff --git a/tools/build_all_levels.sh b/tools/build_all_levels.sh index 01f9a19..35e2598 100755 --- a/tools/build_all_levels.sh +++ b/tools/build_all_levels.sh @@ -1,19 +1,24 @@ #!/bin/bash -# Rebuild every OSM level. Area JSONs are cached in $OSM_CACHE (defaults to the -# session scratchpad); refetch via the README curl + osm_xml_to_json.py if absent. +# Rebuild every OSM level. Area JSONs are cached in $OSM_CACHE; refetch via the +# README curl + osm_xml_to_json.py if absent. set -e cd "$(dirname "$0")/.." B=/Applications/Blender.app/Contents/MacOS/Blender -C="${OSM_CACHE:-/private/tmp/claude-501/-Users-johnking-Documents-BurnoutInfinityShitbox/09d758a4-f01e-48b8-b6a7-542f1069a0ff/scratchpad}" -while IFS='|' read -r id json lat lon sway loop bridge; do +C="${OSM_CACHE:-$HOME/.cache/burnout_osm}" +[ -d "$C" ] || { echo "no OSM cache at $C -- set OSM_CACHE or refetch (see README)"; exit 1; } +while IFS='|' read -r id json lat lon sway loop bridge canopy; do ARGS=$(python3 tools/osm_level_args.py "$C/$json" "$sway" "$loop") || { echo "ARGS FAILED $id"; continue; } SPAWN=$(echo "$ARGS" | head -1) RP=$(echo "$ARGS" | tail -1) - "$B" -b -P tools/build_level_osm.py -- "$C/$json" "$id" "$lat" "$lon" "$SPAWN" "$RP" "$bridge" 2>&1 | grep -E '^(level built|bridge truss)' + # the glTF export drops textures next to the .glb; clear them first or + # renamed/dropped materials leave orphans behind forever + rm -f "levels/$id"/level_*.jpg "levels/$id"/level_*.jpg.import + "$B" -b -P tools/build_level_osm.py -- "$C/$json" "$id" "$lat" "$lon" "$SPAWN" "$RP" "$bridge" "$canopy" 2>&1 \ + | grep -E '^(level built|bridge truss|canopies built)' done <<'EOF' -queen_st_mall|brisbane_cbd.json|-27.4699|153.0251|Queen Street Mall|Adelaide Street,Edward Street,Elizabeth Street,George Street|- -southbank|southbank.json|-27.4775|153.0215|Little Stanley Street|trace:Grey Street|- -albert_parklands|albert_parklands.json|-27.4740|153.0280|Albert Street|Alice Street,George Street,Margaret Street,Edward Street|- -story_bridge|story_bridge.json|-27.4635|153.0355|Bradfield Highway|trace:Bradfield Highway|Bradfield Highway -kangaroo_point|kangaroo_point.json|-27.4780|153.0345|River Terrace|trace:River Terrace|- +queen_st_mall|brisbane_cbd.json|-27.4699|153.0251|Queen Street Mall|Adelaide Street,Edward Street,Elizabeth Street,George Street|-|Queen Street +southbank|southbank.json|-27.4775|153.0215|Little Stanley Street|trace:Grey Street|-|- +albert_parklands|albert_parklands.json|-27.4740|153.0280|Albert Street|Alice Street,George Street,Margaret Street,Edward Street|-|- +story_bridge|story_bridge.json|-27.4635|153.0355|Bradfield Highway|trace:Bradfield Highway|Bradfield Highway|- +kangaroo_point|kangaroo_point.json|-27.4780|153.0345|River Terrace|trace:River Terrace|-|- EOF diff --git a/tools/build_level_osm.py b/tools/build_level_osm.py index fefc426..9db5d92 100644 --- a/tools/build_level_osm.py +++ b/tools/build_level_osm.py @@ -1,12 +1,20 @@ """Build a textured, stylized city level from OpenStreetMap data. Run: Blender -b -P tools/build_level_osm.py -- \ - [spawn_lat,lon,bearing] [rp_lat,lon;...] [bridge_way_name|-] + [spawn_lat,lon,bearing] [rp_lat,lon;...] \ + [bridge_way_name|-] [canopy_way_name|-] -Buildings extrude with FLUX facade textures (box-projected UVs), roads/parks/ -water/cliffs get their own materials, tree nodes become low-poly trees, and an -optional named bridge way grows a steel cantilever truss (hello Story Bridge). -Meshes suffixed -col/-convcol get Godot collision on import. +Buildings extrude with FLUX facade textures (box-projected UVs) and get a +glazed shopfront band, a cantilevered awning over the footpath and a roof +parapet. Roads get dashed centre lines and zebra crossings; the OSM footway +network becomes raised chamfered footpaths. Trees are trunk + layered canopy +(figs and palms), scattered along streets on top of the mapped ones. Street +lamps, benches, bins, bollards and bus shelters come straight off OSM nodes. +An optional named way grows a steel cantilever truss (hello Story Bridge); +another grows Queen Street Mall's winged canopies. + +Meshes suffixed -col/-convcol get Godot collision on import. All variation is +seeded off OSM ids, so a rebuild is byte-for-byte reproducible. ponytail: flat terrain -- no DEM yet, so bridges sit at water level and the Kangaroo Point cliffs are walls beside the road rather than a drop. @@ -15,6 +23,7 @@ Data (c) OpenStreetMap contributors, ODbL. import json import math import os +import random import sys import bpy import bmesh @@ -26,69 +35,104 @@ LAT0, LON0 = float(argv[2]), float(argv[3]) spawn_arg = argv[4] if len(argv) > 4 else "" rp_arg = argv[5] if len(argv) > 5 else "" bridge_name = argv[6] if len(argv) > 6 and argv[6] != "-" else "" +canopy_name = argv[7] if len(argv) > 7 and argv[7] != "-" else "" TEX = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "assets", "textures") M_LAT = 110574.0 M_LON = 111320.0 * math.cos(math.radians(LAT0)) +GROUND_FLOOR = 4.2 # height of the glazed shopfront band +AWNING_Z = 3.75 # underside of the street awning +AWNING_OUT = 2.3 # how far it cantilevers over the footpath +PATH_H = 0.14 # footpath height above the road +PATH_CHAMFER = 0.45 # horizontal run of the kerb ramp -- keeps cars off a hard edge +MAX_TREES = 1400 + def xy(lat, lon): return ((lon - LON0) * M_LON, (lat - LAT0) * M_LAT) for obj in list(bpy.data.objects): bpy.data.objects.remove(obj, do_unlink=True) -def tex_material(name, img, rough=0.85): - mat = bpy.data.materials.new(name) - mat.use_nodes = True +# ---------------------------------------------------------------- materials + +def _finish(mat, rough, metal=0.0): bsdf = next(n for n in mat.node_tree.nodes if n.type == "BSDF_PRINCIPLED") bsdf.inputs["Roughness"].default_value = rough + bsdf.inputs["Metallic"].default_value = metal # explicit: GLTF defaults read as glossy + return bsdf + +def tex_material(name, img, rough=0.85, metal=0.0): + mat = bpy.data.materials.new(name) + mat.use_nodes = True + bsdf = _finish(mat, rough, metal) tex = mat.node_tree.nodes.new("ShaderNodeTexImage") tex.image = bpy.data.images.load(os.path.join(TEX, img)) mat.node_tree.links.new(tex.outputs["Color"], bsdf.inputs["Base Color"]) return mat -def flat_material(name, rgba, rough=0.8): +def flat_material(name, rgba, rough=0.85, metal=0.0): mat = bpy.data.materials.new(name) mat.use_nodes = True - bsdf = next(n for n in mat.node_tree.nodes if n.type == "BSDF_PRINCIPLED") - bsdf.inputs["Base Color"].default_value = rgba - bsdf.inputs["Roughness"].default_value = rough + _finish(mat, rough, metal).inputs["Base Color"].default_value = rgba return mat -M_GLASS = tex_material("facade_glass", "facade_glass.jpg", 0.4) +M_GLASS = tex_material("facade_glass", "facade_glass.jpg", 0.28, 0.15) M_CONC = tex_material("facade_concrete", "facade_concrete.jpg") M_BRICK = tex_material("facade_brick", "facade_brick.jpg") M_HERIT = tex_material("facade_heritage", "facade_heritage.jpg") -M_ROAD = tex_material("asphalt", "asphalt.jpg") -M_MALL = tex_material("pavers", "pavers.jpg") -M_GRASS = tex_material("grass", "grass.jpg") -M_WATER = tex_material("water", "water.jpg", 0.15) -M_ROCK = tex_material("rock", "rock.jpg") -M_STEEL = tex_material("steel", "steel.jpg", 0.5) -M_GROUND = tex_material("concrete_ground", "concrete_ground.jpg") -M_ROOF = flat_material("roofgrey", (0.30, 0.30, 0.32, 1)) -M_LEAF = flat_material("leaf", (0.18, 0.42, 0.16, 1)) -M_TRUNK = flat_material("trunk", (0.28, 0.20, 0.12, 1)) +M_SAND = tex_material("facade_sandstone", "sandstone.jpg") +M_SHOP = tex_material("shopfront", "shopfront.jpg", 0.25, 0.1) +M_ROAD = tex_material("asphalt", "asphalt.jpg", 0.92) +M_MALL = tex_material("pavers", "pavers.jpg", 0.88) +M_PATH = tex_material("footpath", "footpath.jpg", 0.9) +M_GRASS = tex_material("grass", "grass.jpg", 0.95) +M_WATER = tex_material("water", "water.jpg", 0.12) +M_ROCK = tex_material("rock", "rock.jpg", 0.95) +M_STEEL = tex_material("steel", "steel.jpg", 0.45, 0.6) +M_GROUND = tex_material("concrete_ground", "concrete_ground.jpg", 0.92) +M_ROOF = tex_material("roofdeck", "roof_deck.jpg", 0.8) +AWNINGS = [tex_material("awning_green", "awning_green.jpg", 0.9), + tex_material("awning_grey", "awning_grey.jpg", 0.9), + tex_material("awning_cream", "awning_cream.jpg", 0.9)] +M_PLANTER = tex_material("planter", "planter.jpg", 0.75, 0.35) +M_FOLIAGE = tex_material("foliage", "foliage.jpg", 0.95) +M_BARK = tex_material("bark", "bark.jpg", 0.95) +M_PANEL = tex_material("panel_white", "panel_white.jpg", 0.4, 0.25) +M_LINE = flat_material("roadline", (0.88, 0.86, 0.78, 1), 0.75) +M_DARK = flat_material("darkmetal", (0.13, 0.14, 0.15, 1), 0.55, 0.5) + +FACADES = (M_BRICK, M_CONC, M_HERIT, M_SAND) + +# ------------------------------------------------------------ mesh helpers def uv_project(bm, scale): + """Box-project UVs. `scale` is metres-per-tile: a float, or {mat_index: float}.""" bm.normal_update() # fresh faces have zero normals -> wrong projection axis uv = bm.loops.layers.uv.new("UVMap") for f in bm.faces: + s = scale[f.material_index] if isinstance(scale, dict) else scale n = f.normal ax = max(range(3), key=lambda i: abs(n[i])) for l in f.loops: c = l.vert.co if ax == 2: - l[uv].uv = (c.x / scale, c.y / scale) + l[uv].uv = (c.x / s, c.y / s) elif ax == 0: - l[uv].uv = (c.y / scale, c.z / scale) + l[uv].uv = (c.y / s, c.z / s) else: - l[uv].uv = (c.x / scale, c.z / scale) + l[uv].uv = (c.x / s, c.z / s) -def add_obj(name, bm, mats, uv_scale, roof_split=False): - if roof_split: +def add_obj(name, bm, mats, uv_scale, smooth=False): + if not bm.faces: + bm.free() + return None + if smooth: + # every primitive is built with its own verts, so a batched canopy mesh + # exports ~6x the vertices it needs; welding them also rounds the shading + bmesh.ops.remove_doubles(bm, verts=list(bm.verts), dist=0.002) for f in bm.faces: - f.material_index = 1 if f.normal.z > 0.7 else 0 + f.smooth = True uv_project(bm, uv_scale) mesh = bpy.data.meshes.new(name) bm.to_mesh(mesh) @@ -99,6 +143,70 @@ def add_obj(name, bm, mats, uv_scale, roof_split=False): bpy.context.collection.objects.link(obj) return obj +def quad(bm, pts, mat=0): + """Face from 4 points (tuples or Vectors), wound as given.""" + try: + f = bm.faces.new([bm.verts.new(Vector(p)) for p in pts]) + f.material_index = mat + return f + except ValueError: + return None + +def slab(bm, top, thick, mat=0, side_mat=None): + """Thin box from 4 top-face corners, extruded downward by `thick`.""" + side_mat = mat if side_mat is None else side_mat + t = [Vector(p) for p in top] + b = [p - Vector((0, 0, thick)) for p in t] + quad(bm, t, mat) + quad(bm, list(reversed(b)), mat) + for i in range(4): + j = (i + 1) % 4 + quad(bm, [b[i], b[j], t[j], t[i]], side_mat) + +def _paint(verts, mat): + """Material-index the faces a primitive op just made. Blender 5's create_* + ops return only 'verts', and the new verts link to exactly the new faces.""" + if mat: + for f in {f for v in verts for f in v.link_faces}: + f.material_index = mat + +def beam(bm, a, b, w, h, mat=0): + """Oriented box from point a to point b (Vectors).""" + axis = Vector(b) - Vector(a) + L = axis.length + if L < 0.05: + return + quat = axis.to_track_quat("X", "Z") + m = Matrix.Translation((Vector(a) + Vector(b)) / 2) @ quat.to_matrix().to_4x4() + verts = bmesh.ops.create_cube(bm, size=1.0)["verts"] + bmesh.ops.scale(bm, vec=(L, w, h), verts=verts) + bmesh.ops.transform(bm, matrix=m, verts=verts) + _paint(verts, mat) + +def cone(bm, at, r1, r2, depth, segments=7, mat=0): + verts = bmesh.ops.create_cone(bm, cap_ends=True, segments=segments, + radius1=r1, radius2=r2, depth=depth)["verts"] + bmesh.ops.translate(bm, vec=at, verts=verts) + _paint(verts, mat) + return verts + +def blob(bm, at, radii, subdiv=1, mat=0): + """Squashed icosphere -- the tree canopy primitive.""" + try: + verts = bmesh.ops.create_icosphere(bm, subdivisions=subdiv, radius=1.0)["verts"] + except TypeError: # Blender < 4.0 + verts = bmesh.ops.create_icosphere(bm, subdivisions=subdiv, diameter=2.0)["verts"] + bmesh.ops.scale(bm, vec=radii, verts=verts) + bmesh.ops.translate(bm, vec=at, verts=verts) + _paint(verts, mat) + +def ring_ccw(pts): + """Open vertex ring wound counter-clockwise (so edge normals point outward).""" + r = pts[:-1] if len(pts) > 2 and pts[0] == pts[-1] else list(pts) + area = sum(r[i][0] * r[(i + 1) % len(r)][1] - r[(i + 1) % len(r)][0] * r[i][1] + for i in range(len(r))) + return r if area > 0 else list(reversed(r)) + def poly_bm(pts, z, h=0.0): """Filled (optionally extruded) polygon bmesh from closed pt list.""" bm = bmesh.new() @@ -112,35 +220,153 @@ def poly_bm(pts, z, h=0.0): bmesh.ops.triangulate(bm, faces=bm.faces) return bm -def beam(bm, a, b, w, h): - """Oriented box from point a to point b (Vectors).""" - axis = b - a - L = axis.length - if L < 0.05: - return - quat = axis.to_track_quat("X", "Z") - mat = Matrix.Translation((a + b) / 2) @ quat.to_matrix().to_4x4() - res = bmesh.ops.create_cube(bm, size=1.0) - verts = res["verts"] - bmesh.ops.scale(bm, vec=(L, w, h), verts=verts) - bmesh.ops.transform(bm, matrix=mat, verts=verts) +def ribbon(bm, pts, half, z, mat=0, drop=None, offset=0.0): + """Strip of width 2*half along a polyline, shifted sideways by `offset`. + `drop` chamfers the edges down to z-PATH_H.""" + for i in range(len(pts) - 1): + (x1, y1), (x2, y2) = pts[i], pts[i + 1] + dx, dy = x2 - x1, y2 - y1 + L = math.hypot(dx, dy) + if L < 0.1: + continue + nx, ny = -dy / L, dx / L + if offset: + x1, y1 = x1 + nx * offset, y1 + ny * offset + x2, y2 = x2 + nx * offset, y2 + ny * offset + if drop is None: + quad(bm, [(x1 + nx * half, y1 + ny * half, z), (x1 - nx * half, y1 - ny * half, z), + (x2 - nx * half, y2 - ny * half, z), (x2 + nx * half, y2 + ny * half, z)], mat) + else: + inner = max(half - PATH_CHAMFER, half * 0.35) + for s0, s1, z0, z1 in ((half, inner, z - drop, z), (inner, -inner, z, z), + (-inner, -half, z, z - drop)): + quad(bm, [(x1 + nx * s0, y1 + ny * s0, z0), (x1 + nx * s1, y1 + ny * s1, z1), + (x2 + nx * s1, y2 + ny * s1, z1), (x2 + nx * s0, y2 + ny * s0, z0)], mat) + +# ------------------------------------------------------------------- props + +def add_tree(fol, frond, trunk, x, y, rng): + """Fig (broad layered canopy) or palm, seeded per site.""" + if rng.random() < 0.18: + h = rng.uniform(6.5, 9.5) + cone(trunk, (x, y, h / 2), 0.22, 0.14, h, 7) + for i in range(7): + a = i * math.tau / 7 + rng.uniform(-0.25, 0.25) + reach = rng.uniform(1.8, 2.5) + tip = Vector((x + math.cos(a) * reach, y + math.sin(a) * reach, h - rng.uniform(0.8, 1.6))) + beam(frond, Vector((x, y, h)), tip, 0.7, 0.12) + else: + # canopy well clear of the roof line of a car, and built from three + # offset spheres so the silhouette breaks up instead of reading as a ball + clear = rng.uniform(3.6, 4.8) + r = rng.uniform(1.7, 2.5) + cone(trunk, (x, y, (clear + 1.0) / 2), 0.20, 0.13, clear + 1.0, 7) + for i in range(3): + off = Vector((rng.uniform(-1, 1), rng.uniform(-1, 1), 0)) * r * 0.42 + blob(fol, (x + off.x, y + off.y, clear + r * (0.45 + 0.34 * i)), + (r * rng.uniform(0.75, 1.05), r * rng.uniform(0.75, 1.05), r * rng.uniform(0.55, 0.75)), + subdiv=2) + +def add_lamp(bm, x, y, rng): + h = 7.5 + cone(bm, (x, y, h / 2), 0.13, 0.09, h, 6) + arm = Vector((math.cos(rng.random() * math.tau), math.sin(rng.random() * math.tau), 0)) * 1.5 + beam(bm, Vector((x, y, h - 0.2)), Vector((x, y, h - 0.2)) + arm, 0.11, 0.11) + slab(bm, [(x + arm.x - 0.4, y + arm.y - 0.25, h - 0.35), (x + arm.x + 0.4, y + arm.y - 0.25, h - 0.35), + (x + arm.x + 0.4, y + arm.y + 0.25, h - 0.35), (x + arm.x - 0.4, y + arm.y + 0.25, h - 0.35)], 0.12) + +def add_bench(bm, x, y, rng): + a = rng.random() * math.tau + d = Vector((math.cos(a), math.sin(a), 0)) + p = Vector((-d.y, d.x, 0)) + for s in (-0.75, 0.75): + c = Vector((x, y, 0)) + d * s + beam(bm, c + Vector((0, 0, 0.02)), c + Vector((0, 0, 0.45)), 0.36, 0.07) + a0 = Vector((x, y, 0.47)) - d * 0.95 + slab(bm, [(a0 + p * 0.28).to_tuple(), (a0 - p * 0.28).to_tuple(), + (a0 - p * 0.28 + d * 1.9).to_tuple(), (a0 + p * 0.28 + d * 1.9).to_tuple()], 0.08) + +def add_bin(bm, x, y, rng): + cone(bm, (x, y, 0.45), 0.30, 0.27, 0.9, 8) + +def add_bollard(bm, x, y, rng): + cone(bm, (x, y, 0.45), 0.10, 0.09, 0.9, 6) + +def add_shelter(bm, glassbm, x, y, rng): + a = rng.random() * math.tau + d = Vector((math.cos(a), math.sin(a), 0)) + p = Vector((-d.y, d.x, 0)) + c = Vector((x, y, 0)) + for sd in (-1.8, 1.8): + for sp in (-1.1, 1.1): + f = c + d * sd + p * sp + beam(bm, f, f + Vector((0, 0, 2.6)), 0.1, 0.1) + top = [(c + d * s + p * q + Vector((0, 0, 2.72))).to_tuple() + for s, q in ((-2.0, -1.3), (2.0, -1.3), (2.0, 1.3), (-2.0, 1.3))] + slab(bm, top, 0.12) + back = c + p * 1.1 + quad(glassbm, [(back - d * 1.8).to_tuple(), (back + d * 1.8).to_tuple(), + (back + d * 1.8 + Vector((0, 0, 2.4))).to_tuple(), + (back - d * 1.8 + Vector((0, 0, 2.4))).to_tuple()]) + +def add_canopy(bm, at, fwd): + """Queen Street Mall's winged shade canopies: splayed legs, folded wing plates.""" + hub = Vector((at.x, at.y, 7.6)) + side = Vector((-fwd.y, fwd.x, 0)).normalized() + for s in (-1, 1): + for f in (-1, 1): + foot = Vector((at.x, at.y, 0)) + side * (s * 1.5) + fwd * (f * 1.5) + beam(bm, foot, hub, 0.24, 0.24) + for s in (-1, 1): + root_a = hub + side * (s * 0.5) - fwd * 1.2 + root_b = hub + side * (s * 0.5) + fwd * 1.2 + mid_a = root_a + side * (s * 4.5) + Vector((0, 0, 1.5)) + mid_b = root_b + side * (s * 4.5) + Vector((0, 0, 1.5)) + tip_a = mid_a + side * (s * 4.0) + fwd * 1.1 + Vector((0, 0, -0.4)) + tip_b = mid_b + side * (s * 4.0) - fwd * 1.1 + Vector((0, 0, -0.4)) + slab(bm, [root_a.to_tuple(), root_b.to_tuple(), mid_b.to_tuple(), mid_a.to_tuple()], 0.18) + slab(bm, [mid_a.to_tuple(), mid_b.to_tuple(), tip_b.to_tuple(), tip_a.to_tuple()], 0.16) + beam(bm, hub, tip_a, 0.12, 0.12) + beam(bm, hub, tip_b, 0.12, 0.12) + +# ------------------------------------------------------------------- build d = json.load(open(src)) -counts = {"bld": 0, "road": 0, "park": 0, "water": 0, "cliff": 0, "tree": 0} -GREEN_LEISURE = ("park", "garden", "recreation_ground", "pitch", "playground", "golf_course", "nature_reserve") +counts = dict.fromkeys( + ("bld", "road", "path", "park", "planter", "water", "cliff", "tree", "prop", "cross"), 0) +GREEN_LEISURE = ("park", "recreation_ground", "pitch", "playground", "golf_course", "nature_reserve") GREEN_LANDUSE = ("grass", "recreation_ground", "village_green", "meadow", "forest") +PLANTER_LEISURE = ("garden",) +SKIP_HW = ("steps", "corridor", "platform", "elevator", "proposed", "construction") +ROAD_W = {"motorway": 11.0, "trunk": 10.0, "primary": 9.0, "secondary": 8.0, + "tertiary": 7.0, "pedestrian": 16.0, "residential": 6.5, "busway": 7.0} +PATH_W = {"footway": 2.6, "path": 2.2, "cycleway": 2.4, "pedestrian": 4.0} +PROPS = {"tree": None, "street_lamp": add_lamp, "bench": add_bench, + "waste_basket": add_bin, "bollard": add_bollard, "bus_stop": None} + +fol_bm, frond_bm, trunk_bm = bmesh.new(), bmesh.new(), bmesh.new() +prop_bm, glass_bm = bmesh.new(), bmesh.new() +awn_bm, path_bm, line_bm = bmesh.new(), bmesh.new(), bmesh.new() +road_bm = {"road": bmesh.new(), "mall": bmesh.new()} # batched: 385 road objects was 385 draw calls +tree_sites = [] # (x, y, seed) -- mapped trees first, then scattered +road_ways = [] # (pts, width) for street-tree scattering -tree_bm = bmesh.new() for e in d["elements"]: tags = e.get("tags", {}) + rng = random.Random(e["id"]) + if e["type"] == "node": - if counts["tree"] >= 400: - continue - tx, ty = xy(e["lat"], e["lon"]) - res = bmesh.ops.create_cone(tree_bm, cap_ends=True, segments=6, - radius1=2.2, radius2=0.15, depth=5.5) - bmesh.ops.translate(tree_bm, vec=(tx, ty, 4.5), verts=res["verts"]) - counts["tree"] += 1 + px, py = xy(e["lat"], e["lon"]) + kind = (tags.get("natural") or tags.get("highway") or tags.get("amenity") + or tags.get("barrier") or "") + if kind == "tree": + tree_sites.append((px, py, e["id"])) + elif kind == "bus_stop": + add_shelter(prop_bm, glass_bm, px, py, rng) + counts["prop"] += 1 + elif kind in PROPS and PROPS[kind]: + PROPS[kind](prop_bm, px, py, rng) + counts["prop"] += 1 continue geom = e.get("geometry") @@ -157,19 +383,55 @@ for e in d["elements"]: except ValueError: levels = 0.0 h = levels * 3.4 if levels > 0 else 8.0 + (e["id"] % 11) * 3.5 - try: - bm = poly_bm(pts, 0, h) - except Exception: + ring = ring_ccw(pts) + if len(ring) < 3: continue - if h > 55: + bt = tags["building"] + if bt in ("tower", "office", "hotel", "apartments") and h > 30 or h > 55: fac = M_GLASS - elif h < 15 and e["id"] % 3 == 0: - fac = M_HERIT + elif h < 16 and bt in ("retail", "commercial", "yes"): + fac = (M_HERIT, M_BRICK, M_SAND)[e["id"] % 3] else: - fac = M_BRICK if e["id"] % 2 else M_CONC - add_obj("bld_%d-col" % e["id"], bm, [fac, M_ROOF], 13.0, roof_split=True) + fac = FACADES[e["id"] % 4] + + bm = bmesh.new() + gf = min(GROUND_FLOOR, h * 0.45) + for i in range(len(ring)): + (x1, y1), (x2, y2) = ring[i], ring[(i + 1) % len(ring)] + quad(bm, [(x1, y1, 0), (x2, y2, 0), (x2, y2, gf), (x1, y1, gf)], 2) + quad(bm, [(x1, y1, gf), (x2, y2, gf), (x2, y2, h), (x1, y1, h)], 0) + try: + bm.faces.new([bm.verts.new((x, y, h)) for x, y in ring]).material_index = 1 + except ValueError: + pass + for i in range(len(ring)): # parapet caps the roof edge + (x1, y1), (x2, y2) = ring[i], ring[(i + 1) % len(ring)] + beam(bm, (x1, y1, h + 0.45), (x2, y2, h + 0.45), 0.35, 0.9, 0) + if h > 26: # rooftop plant room + cx = sum(p[0] for p in ring) / len(ring) + cy = sum(p[1] for p in ring) / len(ring) + beam(bm, (cx - 2.5, cy, h + 1.4), (cx + 2.5, cy, h + 1.4), 4.0, 2.8, 1) + bmesh.ops.triangulate(bm, faces=bm.faces) + add_obj("bld_%d-col" % e["id"], bm, [fac, M_ROOF, M_SHOP], + {0: 13.0, 1: 9.0, 2: 4.6}) counts["bld"] += 1 + # street awning over the footpath -- not every shop has one, and a whole + # street at one height in one colour reads as a painted stripe + if 6.0 < h < 45.0 and rng.random() < 0.7: + az = AWNING_Z + rng.uniform(-0.35, 0.5) + amat = e["id"] % 3 + out = AWNING_OUT * rng.uniform(0.85, 1.1) + for i in range(len(ring)): + (x1, y1), (x2, y2) = ring[i], ring[(i + 1) % len(ring)] + dx, dy = x2 - x1, y2 - y1 + L = math.hypot(dx, dy) + if L < 4.0: + continue + ox, oy = dy / L * out, -dx / L * out + slab(awn_bm, [(x1, y1, az + 0.35), (x2, y2, az + 0.35), + (x2 + ox, y2 + oy, az), (x1 + ox, y1 + oy, az)], 0.14, amat) + elif tags.get("natural") == "water" or tags.get("water"): if not closed: continue @@ -181,6 +443,23 @@ for e in d["elements"]: add_obj("water_%d-col" % e["id"], bm, [M_WATER], 30.0) counts["water"] += 1 + elif tags.get("leisure") in PLANTER_LEISURE: + if not closed or len(pts) < 4: + continue + ring = ring_ccw(pts) + bm = bmesh.new() + for i in range(len(ring)): # raised corten planter box + (x1, y1), (x2, y2) = ring[i], ring[(i + 1) % len(ring)] + quad(bm, [(x1, y1, 0), (x2, y2, 0), (x2, y2, 0.5), (x1, y1, 0.5)], 0) + try: + bm.faces.new([bm.verts.new((x, y, 0.5)) for x, y in ring]).material_index = 1 + except ValueError: + bm.free() + continue + bmesh.ops.triangulate(bm, faces=bm.faces) + add_obj("planter_%d" % e["id"], bm, [M_PLANTER, M_FOLIAGE], {0: 2.5, 1: 3.5}) + counts["planter"] += 1 + elif tags.get("leisure") in GREEN_LEISURE or tags.get("landuse") in GREEN_LANDUSE \ or tags.get("natural") in ("grassland", "scrub", "wood"): if not closed: @@ -195,43 +474,89 @@ for e in d["elements"]: elif tags.get("natural") == "cliff": bm = bmesh.new() for i in range(len(pts) - 1): - a = Vector((pts[i][0], pts[i][1], 7.0)) - b = Vector((pts[i + 1][0], pts[i + 1][1], 7.0)) - beam(bm, a, b, 2.0, 14.0) + beam(bm, Vector((pts[i][0], pts[i][1], 7.0)), + Vector((pts[i + 1][0], pts[i + 1][1], 7.0)), 2.0, 14.0) add_obj("cliff_%d-col" % e["id"], bm, [M_ROCK], 12.0) counts["cliff"] += 1 elif tags.get("highway"): hw = tags["highway"] - if hw in ("footway", "steps", "path", "cycleway", "corridor", "platform"): + if hw in SKIP_HW: continue - if tags.get("tunnel") == "yes" or int(tags.get("layer", "0") or 0) < 0: + try: # OSM layer is sometimes "0.5", or junk + layer = float(tags.get("layer") or 0) + except ValueError: + layer = 0.0 + if tags.get("tunnel") == "yes" or layer < 0: continue - wide = {"primary": 9.0, "secondary": 8.0, "tertiary": 7.0, "pedestrian": 10.0}.get(hw, 6.0) - mat = M_MALL if hw == "pedestrian" else M_ROAD - bm = bmesh.new() - for i in range(len(pts) - 1): - (x1, y1), (x2, y2) = pts[i], pts[i + 1] - dx, dy = x2 - x1, y2 - y1 - L = math.hypot(dx, dy) - if L < 0.1: - continue - nx, ny = -dy / L * wide / 2, dx / L * wide / 2 - try: - bm.faces.new([bm.verts.new(p) for p in [ - (x1 + nx, y1 + ny, 0.03), (x1 - nx, y1 - ny, 0.03), - (x2 - nx, y2 - ny, 0.03), (x2 + nx, y2 + ny, 0.03)]]) - except Exception: - pass - add_obj("road_%d" % e["id"], bm, [mat], 8.0) - counts["road"] += 1 -if counts["tree"]: - trunk_bm = bmesh.new() - # trunks share the leaf-cone mesh's object for simplicity: one green mesh, one trunk mesh - add_obj("trees", tree_bm, [M_LEAF], 6.0) -else: - tree_bm.free() + if hw in ("footway", "path", "cycleway"): + if tags.get("footway") == "crossing" or tags.get("crossing"): + # actual zebra bars -- one solid strip reads as a white slab + for s in (-1.5, -0.75, 0.0, 0.75, 1.5): + ribbon(line_bm, pts, 0.22, 0.045, offset=s) + counts["cross"] += 1 + else: + ribbon(path_bm, pts, PATH_W.get(hw, 2.4) / 2, PATH_H, drop=PATH_H) + counts["path"] += 1 + continue + + wide = ROAD_W.get(hw, 6.0) + ribbon(road_bm["mall" if hw == "pedestrian" else "road"], pts, wide / 2, 0.03) + counts["road"] += 1 + road_ways.append((pts, wide, hw)) + # no footpath strip on a pedestrian mall -- the mall paving IS the surface + if hw != "pedestrian" and wide >= 7.0 and hw not in ("busway",): # dashed centre line + for i in range(len(pts) - 1): + (x1, y1), (x2, y2) = pts[i], pts[i + 1] + L = math.hypot(x2 - x1, y2 - y1) + for k in range(int(L / 9.0)): + t0, t1 = (k * 9.0 + 1.5) / L, (k * 9.0 + 5.0) / L + ribbon(line_bm, [(x1 + (x2 - x1) * t0, y1 + (y2 - y1) * t0), + (x1 + (x2 - x1) * t1, y1 + (y2 - y1) * t1)], 0.09, 0.045) + +# street trees: OSM maps a fraction of what Brisbane actually has, so line the +# kerbs of named streets and the mall edges with our own, deterministically +for pts, wide, hw in road_ways: + if hw in ("motorway", "trunk", "busway", "service"): + continue + step = 13.0 if hw == "pedestrian" else 24.0 + off = wide / 2 - (2.6 if hw == "pedestrian" else -2.4) # mall trees line the edges + for i in range(len(pts) - 1): + (x1, y1), (x2, y2) = pts[i], pts[i + 1] + dx, dy = x2 - x1, y2 - y1 + L = math.hypot(dx, dy) + if L < step: + continue + nx, ny = -dy / L, dx / L + for k in range(1, int(L / step)): + t = k * step / L + bx, by = x1 + dx * t, y1 + dy * t + for s in (-1, 1): + tree_sites.append((bx + nx * off * s, by + ny * off * s, + hash((round(bx, 1), round(by, 1), s)) & 0x7fffffff)) + +seen = set() +for tx, ty, seed in tree_sites: + if counts["tree"] >= MAX_TREES: + break + key = (round(tx / 7.0), round(ty / 7.0)) # no two trees in one 7 m cell + if key in seen: + continue + seen.add(key) + add_tree(fol_bm, frond_bm, trunk_bm, tx, ty, random.Random(seed)) + counts["tree"] += 1 + +add_obj("roads", road_bm["road"], [M_ROAD], 8.0) +add_obj("mall_paving", road_bm["mall"], [M_MALL], 4.0) +add_obj("trees_foliage", fol_bm, [M_FOLIAGE], 0.9, smooth=True) +add_obj("trees_fronds", frond_bm, [M_FOLIAGE], 0.9) +add_obj("trees_trunks", trunk_bm, [M_BARK], 0.7, smooth=True) +add_obj("props", prop_bm, [M_DARK], 1.6) +add_obj("prop_glass", glass_bm, [M_GLASS], 3.0) +add_obj("awnings", awn_bm, AWNINGS, 3.0) +add_obj("footpaths-col", path_bm, [M_PATH], 3.5) +add_obj("roadlines", line_bm, [M_LINE], 3.0) # steel truss along a named bridge way if bridge_name: @@ -256,15 +581,13 @@ if bridge_name: samples = [] for i in range(N + 1): t = i / N - s = s0 + (s1 - s0) * t - p = at(s) + p = at(s0 + (s1 - s0) * t) h = 4.0 + 16.0 * (math.exp(-((t - 0.32) / 0.10) ** 2) + math.exp(-((t - 0.68) / 0.10) ** 2)) \ + 6.0 * math.sin(math.pi * t) - fwd = (at(min(s + 4, T)) - p) + fwd = (at(min(s0 + (s1 - s0) * t + 4, T)) - p) fwd.z = 0 fwd.normalize() - perp = Vector((-fwd.y, fwd.x, 0)) - samples.append((p, perp, h)) + samples.append((p, Vector((-fwd.y, fwd.x, 0)), h)) for side in (-1, 1): for i in range(N): p1, pe1, h1 = samples[i] @@ -278,10 +601,39 @@ if bridge_name: beam(bm, a + Vector((0, 0, 0.5)), b + Vector((0, 0, h2)), 0.4, 0.4) # diagonal for i in range(0, N + 1, 3): p, pe, h = samples[i] - beam(bm, p - pe * 8.0 + Vector((0, 0, h)), p + pe * 8.0 + Vector((0, 0, h)), 0.5, 0.5) # cross brace + beam(bm, p - pe * 8.0 + Vector((0, 0, h)), p + pe * 8.0 + Vector((0, 0, h)), 0.5, 0.5) add_obj("bridge_steel-col", bm, [M_STEEL], 6.0) print("bridge truss built along %r (%.0fm span)" % (bridge_name, s1 - s0)) +# Winged shade canopies along pedestrian ways whose name starts with the given +# one -- OSM splits Queen Street Mall into a 15 m stub named "Queen Street Mall" +# plus the 438 m pedestrian way that is just "Queen Street", so match the prefix. +if canopy_name: + ways = [e for e in d["elements"] + if e.get("tags", {}).get("highway") == "pedestrian" and e.get("geometry") + and e.get("tags", {}).get("name", "").startswith(canopy_name)] + bm = bmesh.new() + n = 0 + for way in ways: + pts = [Vector((*xy(g["lat"], g["lon"]), 0.0)) for g in way["geometry"]] + acc = 22.0 + for i in range(len(pts) - 1): + seg = pts[i + 1] - pts[i] + L = seg.length + if L < 0.5: + continue + fwd = seg.normalized() + while acc < L: + add_canopy(bm, pts[i] + fwd * acc, fwd) + acc += 48.0 + n += 1 + acc -= L + if n: + add_obj("mall_canopies-col", bm, [M_PANEL], 4.0) + print("canopies built along %r (%d)" % (canopy_name, n)) + else: + bm.free() + # ground slab sized to content (convex collider: huge trimesh tris break raycasts) xs = [v.co.x for o in bpy.data.objects if o.type == "MESH" for v in o.data.vertices] ys = [v.co.y for o in bpy.data.objects if o.type == "MESH" for v in o.data.vertices] diff --git a/tools/check_textures.py b/tools/check_textures.py new file mode 100644 index 0000000..713d450 --- /dev/null +++ b/tools/check_textures.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 +"""Report mean luminance / contrast of the level textures. + +FLUX happily returns a near-white blank sheet for prompts like "pale grey +concrete", which renders as a blown-out void in game. Anything with a mean +much above ~200 or a range under ~30 is a dud worth re-prompting. + +Usage: check_textures.py [name ...] +""" +import os +import sys +from PIL import Image + +TEX = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "assets", "textures") +want = set(sys.argv[1:]) +bad = 0 +for f in sorted(os.listdir(TEX)): + if not f.endswith(".jpg") or (want and f[:-4] not in want): + continue + px = list(Image.open(os.path.join(TEX, f)).convert("L").resize((48, 48)).getdata()) + mean, rng = sum(px) / len(px), max(px) - min(px) + flag = " <-- washed out" if mean > 205 else (" <-- featureless" if rng < 8 else "") + bad += bool(flag) + print("%-22s mean %3.0f range %3d%s" % (f[:-4], mean, rng, flag)) +sys.exit(1 if bad else 0) diff --git a/tools/flux_texture.sh b/tools/flux_texture.sh index 370dfd5..f7224ee 100755 --- a/tools/flux_texture.sh +++ b/tools/flux_texture.sh @@ -1,10 +1,15 @@ #!/bin/bash # Generate a texture via Cloudflare Workers AI FLUX (flux-1-schnell). -# Usage: flux_texture.sh "" +# Usage: flux_texture.sh "" [size_px] [target_luma] +# +# target_luma (0-255) scales the result down to that mean brightness. FLUX +# returns a near-white sheet for anything described as pale -- "off white metal +# panel" came back at 240/255 however it was worded -- and a blown-out albedo +# renders as a featureless void in game. Only ever darkens. # Credentials: sourced from known .env files; accepts CLOUDFLARE_API_TOKEN/CF_API_TOKEN # + CLOUDFLARE_ACCOUNT_ID/CF_ACCOUNT_ID. Values never printed. set -euo pipefail -for f in ~/Documents/backnforth/.env ~/Documents/wardrobegod/.env; do +for f in ~/Documents/fluxgod-work/.env ~/Documents/backnforth/.env ~/Documents/wardrobegod/.env; do [ -f "$f" ] && set -a && source "$f" 2>/dev/null && set +a done TOKEN="${CLOUDFLARE_API_TOKEN:-${CF_API_TOKEN:-${CLOUDFLARE_TOKEN:-}}}" @@ -15,6 +20,8 @@ if [ -z "$TOKEN" ] || [ -z "$ACCT" ]; then fi PROMPT="$1" OUT="$2" +SIZE="${3:-512}" +LUMA="${4:-0}" RESP=$(mktemp) HTTP=$(curl -s -w '%{http_code}' -o "$RESP" --max-time 120 \ "https://api.cloudflare.com/client/v4/accounts/$ACCT/ai/run/@cf/black-forest-labs/flux-1-schnell" \ @@ -30,6 +37,18 @@ import base64, json, sys d = json.load(open(sys.argv[1])) open(sys.argv[2] + ".png", "wb").write(base64.b64decode(d["result"]["image"])) EOF -sips -Z 512 -s format jpeg -s formatOptions 80 "$OUT.png" --out "$OUT" > /dev/null 2>&1 +sips -Z "$SIZE" -s format jpeg -s formatOptions 80 "$OUT.png" --out "$OUT" > /dev/null 2>&1 rm -f "$RESP" "$OUT.png" +if [ "$LUMA" != "0" ]; then + python3 - "$OUT" "$LUMA" <<'EOF' +import sys +from PIL import Image, ImageStat +im = Image.open(sys.argv[1]).convert("RGB") +mean = ImageStat.Stat(im.convert("L")).mean[0] +target = float(sys.argv[2]) +if mean > target: + im = im.point(lambda v, k=target / mean: int(v * k)) + im.save(sys.argv[1], quality=88) +EOF +fi echo "OK $OUT ($(du -h "$OUT" | cut -f1))" diff --git a/tools/gen_textures.sh b/tools/gen_textures.sh new file mode 100755 index 0000000..a4f4ddd --- /dev/null +++ b/tools/gen_textures.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# Regenerate the level texture set via Cloudflare FLUX (see flux_texture.sh). +# Usage: gen_textures.sh [name ...] (no args = every texture below) +# +# Cloudflare's safety classifier throws occasional false positives on innocuous +# masonry prompts ("kerb stone" tripped it once), so each texture carries a +# reworded fallback prompt and we retry with that before giving up. +set -uo pipefail +cd "$(dirname "$0")/.." +OUT=assets/textures +mkdir -p "$OUT" + +# name|size|prompt|fallback prompt|target mean luma (0 = as generated) +SPECS=$(cat <<'EOF' +pavers|512|seamless tiling top down texture of a pedestrian mall floor paved in grey and buff granite blocks laid in a herringbone pattern, fine stone grain, flat overcast lighting, no shadows, no objects|overhead repeating pattern of pale grey granite paving blocks in herringbone layout, even light|165 +asphalt|512|seamless tiling top down texture of worn dark grey asphalt road surface, fine aggregate, subtle tyre polishing, flat even lighting, no markings, no shadows|repeating overhead texture of grey bitumen pavement, fine gravel aggregate, even light|0 +footpath|512|seamless tiling top down texture of a clean city concrete footpath, a dense regular grid of small square pale grey slabs, at least ten slabs across the image, very fine light grey joint lines, low contrast, subtle and uniform, no cracks, no dark seams, flat even lighting, no shadows|overhead repeating grid of many small pale grey concrete paving squares with faint thin joints, low contrast, even light|160 +concrete_ground|512|seamless tiling top down texture of a medium grey concrete surface, fine even sandy aggregate grain, uniform and subtle, light patchy staining, no cracks, no large marks, flat even lighting, no shadows|overhead repeating fine grained mid grey concrete surface, uniform subtle speckle, no cracks, even light|150 +facade_glass|768|seamless tiling texture of a modern office tower curtain wall, regular grid of desaturated slate grey blue reflective glazing panels with slim dark bronze mullions, panels vary slightly in tone as they reflect an overcast sky, muted and understated, not saturated, flat frontal view, even lighting|repeating grid of muted grey blue office window panels with thin dark frames, subtle tonal variation, desaturated, frontal view|0 +facade_concrete|768|seamless tiling texture of a 1970s concrete office building facade, horizontal window bands with deep precast concrete spandrels, pale grey, flat frontal view, even lighting|repeating pattern of grey precast concrete building front with horizontal rows of windows, frontal view|150 +facade_brick|768|seamless tiling texture of a red brick commercial building facade with regular rectangular sash windows and pale rendered sills, flat frontal view, even lighting|repeating pattern of red brick wall with evenly spaced windows, frontal view, even light|0 +facade_heritage|768|seamless tiling texture of an ornate Australian Federation era painted render facade, arched upper windows, moulded cornices and pilasters, cream and sage green paint, flat frontal view, even lighting|repeating pattern of ornate old painted plaster building front with arched windows and decorative mouldings, cream colour, frontal view|170 +shopfront|768|seamless tiling texture, daylight photograph of a row of retail shop windows, medium grey green tinted glass panes in slim dark aluminium frames, bright daytime scene, clearly lit, mid tone not dark, flat frontal view, no floor no sky|repeating grid of grey green shop window glass panels with thin metal frames, bright daylight, mid grey tone, frontal view|0 +sandstone|768|seamless tiling texture of a warm honey brown sandstone building facade, regular rows of tall arched windows with dark glazing and carved stone surrounds, ashlar block courses between them, weathered and soot stained, flat frontal view, even lighting|repeating pattern of tan sandstone building front with rows of arched windows and stone block courses, frontal view, even light|175 +awning_green|512|seamless tiling texture of taut dark bottle green canvas awning fabric, muted and desaturated, subtle woven weave, flat even lighting|repeating muted dark green heavy canvas cloth texture, woven weave, even light|0 +awning_grey|512|seamless tiling texture of taut charcoal grey canvas awning fabric, subtle woven weave, flat even lighting|repeating dark grey heavy canvas cloth texture, woven weave, even light|0 +awning_cream|512|seamless tiling texture of taut sand beige canvas awning fabric, mid tone tan colour not white, weathered and slightly dirty, visible woven weave, flat even lighting|repeating tan beige heavy canvas cloth texture with visible weave, dirty, even light|175 +planter|512|seamless tiling texture of weathered rust orange corten steel plate, mottled oxide patina, flat even lighting, no shadows|repeating rusty orange brown oxidised steel sheet texture, mottled, even light|0 +roof_deck|512|seamless tiling top down texture of a commercial building rooftop, dark weathered grey ribbed metal decking with seams, rust streaks and dirt, mid to dark grey not white, flat even lighting, no shadows|repeating overhead dirty dark grey corrugated metal roof sheeting with rust marks, even light|0 +bark|512|seamless tiling texture of grey brown fig tree bark, smooth with shallow vertical furrows, flat even lighting, no shadows|repeating grey brown tree trunk bark surface texture, even light|0 +foliage|512|seamless tiling texture of a dense mass of glossy dark green fig leaves seen from outside the canopy, overlapping leaves, flat even lighting|repeating pattern of dense dark green broad leaves overlapping, even light|0 +grass|512|seamless tiling top down texture of mown subtropical lawn, dense green blades, slight colour variation, flat even lighting, no shadows|repeating overhead green cut grass lawn texture, even light|0 +water|512|seamless tiling top down texture of murky brown green river water, gentle ripples, flat even lighting, no reflections of objects|repeating overhead calm muddy river surface with small ripples, even light|0 +rock|512|seamless tiling texture of a rough volcanic cliff face, grey brown fractured rock with vertical jointing, flat even lighting|repeating rough grey brown broken rock cliff surface texture, even light|0 +steel|512|seamless tiling texture of painted structural steel plate, medium battleship grey, rows of rivets, rust bleed and weathering streaks, darker not pale, flat even lighting|repeating mid grey painted steel bridge plate with rivets and rust streaks, even light|0 +panel_white|512|seamless tiling texture of a light warm grey painted aluminium architectural panel, subtle brushed finish, faint panel joint lines, light grey not white, flat even lighting|repeating smooth light grey painted metal sheet texture with faint seams, even light|195 +EOF +) + +want=("$@") +ok=0; fail=0 +while IFS='|' read -r name size prompt alt luma; do + [ -z "$name" ] && continue + if [ ${#want[@]} -gt 0 ]; then + hit=0 + for w in "${want[@]}"; do [ "$w" = "$name" ] && hit=1; done + [ $hit -eq 1 ] || continue + fi + if ./tools/flux_texture.sh "$prompt" "$OUT/$name.jpg" "$size" "$luma" >/dev/null 2>&1; then + echo "ok $name"; ok=$((ok+1)) + elif ./tools/flux_texture.sh "$alt" "$OUT/$name.jpg" "$size" "$luma" >/dev/null 2>&1; then + echo "ok(alt) $name"; ok=$((ok+1)) + else + echo "FAILED $name"; fail=$((fail+1)) + fi +done <<< "$SPECS" +echo "textures: $ok ok, $fail failed" diff --git a/tools/osm_xml_to_json.py b/tools/osm_xml_to_json.py index 12ad221..1f1ce26 100644 --- a/tools/osm_xml_to_json.py +++ b/tools/osm_xml_to_json.py @@ -3,7 +3,8 @@ Usage: osm_xml_to_json.py -Emits ways (tags+nodes+geometry), tree nodes, and assembles water multipolygon +Emits ways (tags+nodes+geometry), street-furniture nodes (trees, lamps, benches, +bins, bollards, bus stops, public art), and assembles water multipolygon relations (the Brisbane River is a relation, not a way) into synthetic closed ways tagged natural=water. """ @@ -11,6 +12,17 @@ import json import sys import xml.etree.ElementTree as ET +# node tags the level builder turns into props -- everything else is dropped +FURNITURE = { + "natural": ("tree",), + "highway": ("street_lamp", "bus_stop"), + "amenity": ("bench", "waste_basket", "drinking_water", "bicycle_parking", "post_box"), + "barrier": ("bollard",), + "tourism": ("artwork",), +} +WAY_KEYS = ("building", "highway", "leisure", "landuse", "natural", "water", + "waterway", "barrier", "man_made", "amenity", "tourism") + root = ET.parse(sys.argv[1]).getroot() nodes = {} elements = [] @@ -20,7 +32,7 @@ for n in root.iter("node"): lat, lon = float(n.get("lat")), float(n.get("lon")) nodes[nid] = (lat, lon) tags = {t.get("k"): t.get("v") for t in n.findall("tag")} - if tags.get("natural") == "tree": + if any(tags.get(k) in v for k, v in FURNITURE.items()): elements.append({"type": "node", "id": nid, "tags": tags, "lat": lat, "lon": lon}) ways = {} @@ -31,7 +43,7 @@ for w in root.iter("way"): if not all(r in nodes for r in nds) or len(nds) < 2: continue ways[wid] = nds - if any(tags.get(k) for k in ("building", "highway", "leisure", "landuse", "natural", "water", "waterway")): + if any(tags.get(k) for k in WAY_KEYS): elements.append({"type": "way", "id": wid, "tags": tags, "nodes": nds, "geometry": [{"lat": nodes[r][0], "lon": nodes[r][1]} for r in nds]}) @@ -78,5 +90,6 @@ json.dump({"elements": elements}, open(sys.argv[2], "w")) b = sum(1 for e in elements if e.get("tags", {}).get("building")) h = sum(1 for e in elements if e.get("tags", {}).get("highway")) w = sum(1 for e in elements if e.get("tags", {}).get("natural") == "water" or e.get("tags", {}).get("water")) -t = sum(1 for e in elements if e["type"] == "node") -print("converted: %d buildings, %d highways, %d water polys, %d trees" % (b, h, w, t)) +t = sum(1 for e in elements if e["type"] == "node" and e["tags"].get("natural") == "tree") +p = sum(1 for e in elements if e["type"] == "node") - t +print("converted: %d buildings, %d highways, %d water polys, %d trees, %d props" % (b, h, w, t, p))