diff --git a/.gitignore b/.gitignore index 9eb0807..095111b 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ after_*.png before_*.png.import after_*.png.import *.iso +shot_*.png.import diff --git a/README.md b/README.md index 91b832b..76a807f 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,15 @@ Controls: WASD/arrows drive, Shift drift, Space boost, R reset (or retry after C winnable and honestly tuned, but they're scenery crashes rather than pile-ups. Both sit on curved approaches where the launch street bends away from the intersection. Worth hand-picking better crossings for those two. -- **Race** — 3 laps vs 3 rubber-banded rivals on the level's `RacePath`. +- **Race** — 3 laps vs 3 rubber-banded rivals on the level's `RacePath`. The + proper venue is **Queensland Raceway** (`levels/qld_raceway`) — "the + Paperclip", the National Circuit digitised from the official track map and + scaled to its real 3126 m lap: three tilted parallel straights, the T2 + hairpin, the inner loop, the T6 fishhook, kerbs and gravel traps derived + automatically from curvature, sponsor hoardings down the straights, the pond, + and the red pit complex. The road is one generated quad strip with trimesh + collision (wound clockwise: Godot culls CCW faces, and the first cut of the + ribbon was invisible from above while colliding perfectly). - **Road Rage** — Burnout 3's headline mode: 90 seconds, wreck as many rivals as you can. They recover and keep driving so the supply never dries up, and a leash teleports strays back into play. Bronze/silver/gold at 4/8/12. @@ -68,8 +76,24 @@ Controls: WASD/arrows drive, Shift drift, Space boost, R reset (or retry after C genuinely straight stretch of wide road (the builder finds it and drops `DragStart`/`DragEnd` markers, so no level needs hand-authored coordinates). The gearbox *is* the game — revs climb, **space shifts**, and shifting inside - the window pays while an early shift or sitting on the limiter bogs you. One - opponent alongside. + the window pays while an early shift or sitting on the limiter bogs you. + + The proper venue is **Willowbank Dragway** (`levels/willowbank_dragway`, built + in code like the carpark): a real 402 m with a concrete launch pad, rubbered + lanes, crowd grandstand, red control tower, sand trap and tyre wall — and a + working **christmas tree**. Every drag now stages at the tree: three ambers + half a second apart, launch on the green. Roll more than 2 m early and it's a + **RED LIGHT** — you launch bogged while the tree makes sure everyone saw. + + The opposition is a **ladder** of six preset locals, weakest first: NANNA'S + SHOPPING RUN, P-PLATE PEPPER, MULLET MERV, TORQUE'N TEZZA, a SELF-DESCRIBED + BATHURST LEGEND and THE WILLOWBANK WIDOWMAKER. Each has its own car, power and + reaction time (Nanna sits at the green for most of a second; the Widowmaker + leaves with you). Beat your current rung to climb and collect the purse + ($250 up to $1600, and the top dog repeats). Crossing at all pays $50, and + every car keeps a persistent **personal best ET** — beating it pays $150 and + is recorded in the garage save. Losing doesn't end the run early: you still + get to cross for your ET. - **Derby** — Destruction Derby in the Woolies carpark: five opponents, last one running wins. They use the pursuit AI, each hunting a different car so it's a brawl rather than a mob, and leaving the ring for 8 s forfeits. @@ -104,7 +128,8 @@ one thing parts can't buy: panels that hang on through bigger hits (it raises the car's shed-a-panel and wreck thresholds). Parts buy bling; the shed buys labour. -Purchases are per-car (tools are global) and persist in `user://garage.save`. +Purchases are per-car (tools are global) and persist in `user://garage.save`, +which also carries the drag **ladder rung** and per-car **quarter-mile PBs**. Upgrades apply to a duplicate of the CarStats resource -- the .tres is shared with traffic and parked spawns of the same model, and tuning your Lazza must not secretly tune every Lazza in the city. Bolt-ons attach after the deformer diff --git a/assets/textures/crowd.jpg b/assets/textures/crowd.jpg new file mode 100644 index 0000000..127543c Binary files /dev/null and b/assets/textures/crowd.jpg differ diff --git a/shot_boom.png.import b/assets/textures/crowd.jpg.import similarity index 74% rename from shot_boom.png.import rename to assets/textures/crowd.jpg.import index cfd1148..65a5496 100644 --- a/shot_boom.png.import +++ b/assets/textures/crowd.jpg.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bsi3itd11kct2" -path="res://.godot/imported/shot_boom.png-f4ed7c2b8b65bee8e8d626deb1966c57.ctex" +uid="uid://dkm6pv1unrlkk" +path="res://.godot/imported/crowd.jpg-1b17b50537d9934dcb17506f222113db.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://shot_boom.png" -dest_files=["res://.godot/imported/shot_boom.png-f4ed7c2b8b65bee8e8d626deb1966c57.ctex"] +source_file="res://assets/textures/crowd.jpg" +dest_files=["res://.godot/imported/crowd.jpg-1b17b50537d9934dcb17506f222113db.ctex"] [params] diff --git a/assets/textures/dragstrip.jpg b/assets/textures/dragstrip.jpg new file mode 100644 index 0000000..d8fe28a Binary files /dev/null and b/assets/textures/dragstrip.jpg differ diff --git a/shot_derelica.png.import b/assets/textures/dragstrip.jpg.import similarity index 74% rename from shot_derelica.png.import rename to assets/textures/dragstrip.jpg.import index 9c17e52..74eec6a 100644 --- a/shot_derelica.png.import +++ b/assets/textures/dragstrip.jpg.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://b553yjcq4ijve" -path="res://.godot/imported/shot_derelica.png-72a2e528235e0fda933bf4773a7452df.ctex" +uid="uid://mq0icgai0rr5" +path="res://.godot/imported/dragstrip.jpg-74090b2ade60c5a42d3debc768000d06.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://shot_derelica.png" -dest_files=["res://.godot/imported/shot_derelica.png-72a2e528235e0fda933bf4773a7452df.ctex"] +source_file="res://assets/textures/dragstrip.jpg" +dest_files=["res://.godot/imported/dragstrip.jpg-74090b2ade60c5a42d3debc768000d06.ctex"] [params] diff --git a/assets/textures/sand.jpg b/assets/textures/sand.jpg new file mode 100644 index 0000000..f0dccbe Binary files /dev/null and b/assets/textures/sand.jpg differ diff --git a/shot_dusk.png.import b/assets/textures/sand.jpg.import similarity index 75% rename from shot_dusk.png.import rename to assets/textures/sand.jpg.import index 06040c8..645e3f1 100644 --- a/shot_dusk.png.import +++ b/assets/textures/sand.jpg.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://ckgqxm67w4wjg" -path="res://.godot/imported/shot_dusk.png-f6af1b6e4e64591ef1de1c661224bed5.ctex" +uid="uid://bp42dwu7txb6i" +path="res://.godot/imported/sand.jpg-cb159e87994df8b4b0b8c0252bc45be5.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://shot_dusk.png" -dest_files=["res://.godot/imported/shot_dusk.png-f6af1b6e4e64591ef1de1c661224bed5.ctex"] +source_file="res://assets/textures/sand.jpg" +dest_files=["res://.godot/imported/sand.jpg-cb159e87994df8b4b0b8c0252bc45be5.ctex"] [params] diff --git a/levels/qld_raceway/level.tscn b/levels/qld_raceway/level.tscn new file mode 100644 index 0000000..bf37b1d --- /dev/null +++ b/levels/qld_raceway/level.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://levels/qld_raceway/raceway.gd" id="1"] + +[node name="QldRaceway" type="Node3D"] +script = ExtResource("1") diff --git a/levels/qld_raceway/raceway.gd b/levels/qld_raceway/raceway.gd new file mode 100644 index 0000000..b0fd0ca --- /dev/null +++ b/levels/qld_raceway/raceway.gd @@ -0,0 +1,373 @@ +extends Node3D +## Queensland Raceway's National Circuit -- "the Paperclip" -- built in code. +## The centreline is digitised from the official track map (pixel coords) and +## scaled so the lap is exactly 3126 m, the real National Circuit length. +## Three tilted parallel straights, two outer hairpins, the inner loop and the +## T6 fishhook. Corners get kerbs, sand traps and tyre stacks automatically +## from curvature; straights get billboard hoardings. +## +## Race mode picks up the RacePath (same curve) and grids the field on it. + +const TEX := "res://assets/textures/%s.jpg" + +const LAP_M := 3126.0 +const ROAD_W := 13.0 +const STEP := 4.0 # road-mesh sampling, metres +## National Circuit red line off the track map, in image pixels (x, y-down). +## Drive order: SF heading west -> T1 -> west straight -> T2 hairpin -> top +## straight east -> east 180 -> middle straight west -> inner loop left -> +## third straight east -> T6 fishhook -> front straight -> SF. +const CENTRE_PX := [ + [680, 795], [300, 800], [150, 782], [85, 720], [70, 620], [68, 400], + [85, 290], [130, 235], [220, 215], [700, 262], [1290, 335], + [1345, 372], [1352, 420], [1300, 452], [900, 470], [460, 485], + [400, 505], [375, 545], [385, 590], [430, 622], [520, 640], + [800, 680], [1080, 718], [1150, 720], [1200, 748], [1195, 782], + [1140, 795], +] + +var curve: Curve3D + +func _ready() -> void: + var rng := RandomNumberGenerator.new() + rng.seed = 3126 + curve = _build_curve() + var samples := _samples() + + # grass world sized off the track's bounding box + var lo := Vector3(INF, 0, INF) + var hi := Vector3(-INF, 0, -INF) + for s in samples: + lo.x = minf(lo.x, s["pos"].x); lo.z = minf(lo.z, s["pos"].z) + hi.x = maxf(hi.x, s["pos"].x); hi.z = maxf(hi.z, s["pos"].z) + var mid := (lo + hi) * 0.5 + var span := hi - lo + _slab(Vector3(mid.x, -0.5, mid.z), Vector3(span.x + 260, 1, span.z + 260), _mat("grass", 18.0)) + + _road(samples) + var corners := _corners(samples) + _kerbs(samples) + for c in corners: + _corner_dressing(c, samples) + _hoardings(samples, corners) + _start_finish(samples) + _pits(samples) + + # the pond, as seen from every aerial photo of the place + var pond := Vector3(lo.x + span.x * 0.25, 0.03, lo.z + span.z * 0.37) + _slab(pond, Vector3(55, 0.03, 38), _flat(Color(0.13, 0.25, 0.30), 0.15), false) + + _gums(rng, samples, lo, hi) + + var path := Path3D.new() + path.name = "RacePath" + path.curve = curve + add_child(path) + + var spawn := Marker3D.new() + spawn.name = "Spawn" + var t0: Dictionary = samples[3] + spawn.transform = Transform3D(Basis.looking_at(t0["tan"], Vector3.UP), + t0["pos"] + Vector3.UP * 0.5) + add_child(spawn) + +func _build_curve() -> Curve3D: + # raw pixel loop -> catmull tangents -> measure -> scale to LAP_M exactly + var raw: Array[Vector3] = [] + for p in CENTRE_PX: + raw.append(Vector3(p[0], 0, p[1])) + var c := Curve3D.new() + var n := raw.size() + for i in n + 1: + var p := raw[i % n] + var t: Vector3 = (raw[(i + 1) % n] - raw[(i - 1 + n) % n]) * 0.2 + c.add_point(p, -t, t) + var scale := LAP_M / c.get_baked_length() + var sc := Curve3D.new() + for i in c.point_count: + sc.add_point(c.get_point_position(i) * scale, + c.get_point_in(i) * scale, c.get_point_out(i) * scale) + return sc + +func _samples() -> Array: + ## [{pos, tan, side, dist}] every STEP metres. side points to the LEFT of + ## the drive direction. + var out: Array = [] + var L := curve.get_baked_length() + var d := 0.0 + while d < L: + var p := curve.sample_baked(d) + var q := curve.sample_baked(fmod(d + 2.0, L)) + var tn := (q - p) + tn.y = 0.0 + tn = tn.normalized() if tn.length_squared() > 0.0001 else Vector3.FORWARD + out.append({"pos": p, "tan": tn, "side": Vector3.UP.cross(tn).normalized(), "dist": d}) + d += STEP + return out + +func _road(samples: Array) -> void: + ## One long quad strip with real collision -- cars live on this surface. + var st := SurfaceTool.new() + st.begin(Mesh.PRIMITIVE_TRIANGLES) + var h := Vector3.UP * 0.05 + var n := samples.size() + for i in n: + var a: Dictionary = samples[i] + var b: Dictionary = samples[(i + 1) % n] + var al: Vector3 = a["pos"] + a["side"] * ROAD_W * 0.5 + h + var ar: Vector3 = a["pos"] - a["side"] * ROAD_W * 0.5 + h + var bl: Vector3 = b["pos"] + b["side"] * ROAD_W * 0.5 + h + var br: Vector3 = b["pos"] - b["side"] * ROAD_W * 0.5 + h + var va: float = a["dist"] * 0.14 + var vb: float = (a["dist"] + STEP) * 0.14 + # Godot front faces wind CLOCKWISE seen from the normal side: the first + # cut of this strip wound CCW and the entire road was culled from above + for v in [[al, Vector2(0, va)], [br, Vector2(1.8, vb)], [ar, Vector2(1.8, va)], + [al, Vector2(0, va)], [bl, Vector2(0, vb)], [br, Vector2(1.8, vb)]]: + st.set_normal(Vector3.UP) + st.set_uv(v[1]) + st.add_vertex(v[0]) + var mesh := st.commit() + var m := StandardMaterial3D.new() + m.albedo_texture = load(TEX % "asphalt") + m.roughness = 0.92 + mesh.surface_set_material(0, m) + var body := StaticBody3D.new() + var mi := MeshInstance3D.new() + mi.mesh = mesh + body.add_child(mi) + var cs := CollisionShape3D.new() + cs.shape = mesh.create_trimesh_shape() + body.add_child(cs) + add_child(body) + +func _curvature(samples: Array, i: int) -> float: + ## signed heading change per metre; positive = turning left + var n := samples.size() + var a: Vector3 = samples[i]["tan"] + var b: Vector3 = samples[(i + 1) % n]["tan"] + return a.signed_angle_to(b, Vector3.UP) / STEP + +func _corners(samples: Array) -> Array: + ## contiguous runs of |curvature| > threshold, min 6 samples (24 m) + ## -> [{from, to, sign}] as sample indices + var out: Array = [] + var n := samples.size() + var run_start := -1 + var run_sign := 0.0 + for i in n: + var k := _curvature(samples, i) + if absf(k) > 0.010: + if run_start < 0: + run_start = i + run_sign = signf(k) + else: + if run_start >= 0 and i - run_start >= 6: + out.append({"from": run_start, "to": i - 1, "sign": run_sign}) + run_start = -1 + if run_start >= 0 and n - run_start >= 6: + out.append({"from": run_start, "to": n - 1, "sign": run_sign}) + return out + +func _kerbs(samples: Array) -> void: + ## red/white kerb blocks along both edges wherever the road actually turns + var red := _flat(Color(0.78, 0.12, 0.10), 0.7) + var white := _flat(Color(0.90, 0.90, 0.86), 0.7) + var n := samples.size() + for i in n: + if absf(_curvature(samples, i)) < 0.008 or i % 2 != 0: + continue + var s: Dictionary = samples[i] + for e in [-1.0, 1.0]: + var at: Vector3 = s["pos"] + s["side"] * e * (ROAD_W * 0.5 + 0.7) + Vector3.UP * 0.045 + var mi := MeshInstance3D.new() + var bm := BoxMesh.new() + bm.size = Vector3(1.4, 0.07, STEP * 2.0) + bm.material = red if (i / 2) % 2 == 0 else white + mi.mesh = bm + mi.position = at + mi.basis = Basis.looking_at(s["tan"], Vector3.UP) + add_child(mi) + +func _corner_dressing(c: Dictionary, samples: Array) -> void: + ## outside of every real corner: a sand trap; inside: a tyre stack + var midi := int((int(c["from"]) + int(c["to"])) / 2.0) + var s: Dictionary = samples[midi] + # turning left (+sign) means the outside is the RIGHT edge (-side) + var out_dir: Vector3 = s["side"] * (-1.0 if float(c["sign"]) > 0.0 else 1.0) + var span := (int(c["to"]) - int(c["from"])) * STEP + if span > 40.0: # only proper corners earn a gravel trap + var at: Vector3 = s["pos"] + out_dir * (ROAD_W * 0.5 + 13.0) + var mi := MeshInstance3D.new() + var bm := BoxMesh.new() + bm.size = Vector3(minf(span * 0.9, 60.0), 0.04, 26.0) + bm.material = _mat("sand", 5.0) + mi.mesh = bm + mi.position = Vector3(at.x, 0.035, at.z) + mi.basis = Basis.looking_at(s["tan"], Vector3.UP) + add_child(mi) + var rubber := _flat(Color(0.07, 0.07, 0.08), 0.85) + var inn: Vector3 = s["pos"] - out_dir * (ROAD_W * 0.5 + 3.5) + for j in 5: + var mi := MeshInstance3D.new() + var cm := CylinderMesh.new() + cm.top_radius = 0.58 + cm.bottom_radius = 0.58 + cm.height = 1.05 + cm.radial_segments = 9 + cm.material = rubber + mi.mesh = cm + mi.position = inn + s["tan"] * (j - 2.0) * 1.3 + Vector3.UP * 0.53 + add_child(mi) + +func _hoardings(samples: Array, corners: Array) -> void: + ## sponsor boards down the straights, FLUX gibberish and all + var ads := ["billboard_ad", "billboard_ad2", "billboard_ad3"] + var n := samples.size() + var since := 0.0 + var adi := 0 + for i in n: + since += STEP + if since < 130.0 or absf(_curvature(samples, i)) > 0.004: + continue + since = 0.0 + var s: Dictionary = samples[i] + var at: Vector3 = s["pos"] + s["side"] * (ROAD_W * 0.5 + 9.0) + var post := _flat(Color(0.3, 0.31, 0.33), 0.5) + for j in [-3.2, 3.2]: + _boxat(at + s["tan"] * j + Vector3.UP * 0.9, Vector3(0.18, 1.8, 0.18), post, s["tan"]) + _boxat(at + Vector3.UP * 1.9, Vector3(8.0, 1.9, 0.12), _mat(ads[adi % 3], 0.24, 0.4), s["tan"]) + adi += 1 + +func _start_finish(samples: Array) -> void: + var s: Dictionary = samples[0] + for row in 2: + for i in 9: + var c := Color(0.05, 0.05, 0.06) if (i + row) % 2 == 0 else Color(0.92, 0.92, 0.9) + var at: Vector3 = s["pos"] + s["side"] * (-6.0 + i * 1.5) + s["tan"] * float(row) * 1.5 + _boxat(Vector3(at.x, 0.06, at.z), Vector3(1.5, 0.02, 1.5), _flat(c, 0.7), s["tan"]) + var steel := _flat(Color(0.25, 0.26, 0.28), 0.5) + for e in [-1.0, 1.0]: + _boxat(s["pos"] + s["side"] * e * (ROAD_W * 0.5 + 1.2) + Vector3.UP * 3.5, + Vector3(0.35, 7.0, 0.35), steel, s["tan"]) + _boxat(s["pos"] + Vector3.UP * 6.6, Vector3(ROAD_W + 4.5, 1.6, 0.3), + _mat("billboard_ad2", 0.22, 0.4), s["tan"]) + +func _pits(samples: Array) -> void: + ## the red pit complex on the outside of the front straight: garage row, + ## pit wall, paddock awnings, a couple of transporters + var s: Dictionary = samples[mini(20, samples.size() - 1)] # ~80 m up-track of SF + var out_dir: Vector3 = -s["side"] # outside of the circuit on the front straight + var red := _flat(Color(0.72, 0.10, 0.08), 0.55) + var base: Vector3 = s["pos"] + out_dir * (ROAD_W * 0.5 + 22.0) + _boxat(base + Vector3.UP * 4.0, Vector3(14, 8.0, 95), red, s["tan"], true) + _boxat(base + Vector3.UP * 8.2, Vector3(15, 0.4, 98), _flat(Color(0.16, 0.17, 0.19), 0.6), s["tan"]) + _boxat(base - out_dir * 7.1 + Vector3.UP * 5.9, Vector3(0.2, 2.2, 88), + _mat("facade_glass", 0.2, 0.25), s["tan"]) + _boxat(base - out_dir * 7.1 + Vector3.UP * 2.0, Vector3(0.25, 3.4, 88), + _mat("shopfront", 0.2, 0.4), s["tan"]) + # pit wall between track and pit lane + _boxat(s["pos"] + out_dir * (ROAD_W * 0.5 + 2.5) + Vector3.UP * 0.45, + Vector3(0.4, 0.9, 130), _mat("concrete_ground", 3.0), s["tan"], true) + # paddock: white awnings + transporters behind the garages + var wt := _mat("panel_white", 0.5, 0.5) + for j in 4: + _boxat(base + out_dir * 16.0 + s["tan"] * (-33.0 + j * 22.0) + Vector3.UP * 2.9, + Vector3(9, 0.2, 7), wt, s["tan"]) + for j in 2: + _boxat(base + out_dir * 27.0 + s["tan"] * (-12.0 + j * 26.0) + Vector3.UP * 1.9, + Vector3(2.5, 3.8, 13.5), _flat(Color(0.82, 0.83, 0.86), 0.4), s["tan"], true) + +func _gums(rng: RandomNumberGenerator, samples: Array, lo: Vector3, hi: Vector3) -> void: + ## eucalypt scatter anywhere that's 25 m clear of the racing line + var pts: Array[Vector3] = [] + for i in range(0, samples.size(), 3): + pts.append(samples[i]["pos"]) + var placed := 0 + var tries := 0 + while placed < 40 and tries < 400: + tries += 1 + var at := Vector3(rng.randf_range(lo.x - 90, hi.x + 90), 0, rng.randf_range(lo.z - 90, hi.z + 90)) + var ok := true + for p in pts: + if Vector2(at.x - p.x, at.z - p.z).length_squared() < 625.0: + ok = false + break + if not ok: + continue + placed += 1 + var trunk := MeshInstance3D.new() + var cm := CylinderMesh.new() + cm.top_radius = 0.14 + cm.bottom_radius = 0.24 + cm.height = rng.randf_range(5.0, 8.5) + cm.radial_segments = 7 + cm.material = _mat("bark", 1.4) + trunk.mesh = cm + trunk.position = at + Vector3(0, cm.height * 0.5, 0) + add_child(trunk) + var crown := MeshInstance3D.new() + var sm := SphereMesh.new() + sm.radius = rng.randf_range(2.4, 3.6) + sm.height = sm.radius * 1.6 + sm.radial_segments = 10 + sm.rings = 6 + sm.material = _mat("foliage", 0.55) + crown.mesh = sm + crown.position = at + Vector3(0, cm.height + sm.radius * 0.4, 0) + add_child(crown) + +func _boxat(pos: Vector3, size: Vector3, mat: Material, along: Vector3, collide := false) -> void: + var mi := MeshInstance3D.new() + var bm := BoxMesh.new() + bm.size = size + bm.material = mat + mi.mesh = bm + if collide: + var body := StaticBody3D.new() + var cs := CollisionShape3D.new() + var bs := BoxShape3D.new() + bs.size = size + cs.shape = bs + body.add_child(cs) + body.add_child(mi) + body.position = pos + body.basis = Basis.looking_at(along, Vector3.UP) + add_child(body) + else: + mi.position = pos + mi.basis = Basis.looking_at(along, Vector3.UP) + add_child(mi) + +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 := 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) diff --git a/levels/qld_raceway/raceway.gd.uid b/levels/qld_raceway/raceway.gd.uid new file mode 100644 index 0000000..d7b16de --- /dev/null +++ b/levels/qld_raceway/raceway.gd.uid @@ -0,0 +1 @@ +uid://k5xln5yysglo diff --git a/levels/willowbank_dragway/dragway.gd b/levels/willowbank_dragway/dragway.gd new file mode 100644 index 0000000..75796b0 --- /dev/null +++ b/levels/willowbank_dragway/dragway.gd @@ -0,0 +1,261 @@ +extends Node3D +## Willowbank-ish quarter mile, built in code like the carpark. A real 402 m of +## strip plus shutdown, sand trap and tyre wall, with a working christmas tree +## (game.gd drives the bulbs via their material_override emission). +## +## Geometry contract with game.gd's drag mode: DragStart sits at (0,0,0) in the +## .tscn and DragEnd at (0,0,-402); the player spawns at x=-2, the rival at +## x=+2, both facing -Z. The tree stands between the lanes at z=-6, visual only +## -- collision there would turn a wandering launch into a head-on with a pole. + +const TEX := "res://assets/textures/%s.jpg" + +const STRIP_HALF := 12.0 # wall-to-wall half width +const FINISH := -402.0 +const SHUTDOWN_END := -640.0 + +func _ready() -> void: + var rng := RandomNumberGenerator.new() + rng.seed = 1320 # a respectable ET + + _slab(Vector3(0, -0.5, -280), Vector3(420, 1, 900), _mat("grass", 14.0)) + # the strip: asphalt base, concrete launch pad, rubbered lanes down-track + _slab(Vector3(0, -0.45, -290), Vector3(STRIP_HALF * 2, 1, 740), _mat("asphalt", 9.0)) + _slab(Vector3(0, 0.065, -40), Vector3(STRIP_HALF * 2, 0.03, 80), _mat("concrete_ground", 4.0), false) + for lx in [-4.0, 4.0]: + _slab(Vector3(lx, 0.062, -320), Vector3(7.5, 0.02, 480), _mat("dragstrip", 5.0), false) + # centre line (double yellow) and edge lines + var yellow := _flat(Color(0.85, 0.72, 0.18), 0.7) + var white := _flat(Color(0.88, 0.88, 0.84), 0.7) + for cx in [-0.18, 0.18]: + _slab(Vector3(cx, 0.07, -305), Vector3(0.12, 0.02, 670), yellow, false) + for ex in [-10.8, 10.8]: + _slab(Vector3(ex, 0.07, -305), Vector3(0.14, 0.02, 670), white, false) + + # concrete walls with alternating red/white caps, like every strip on earth + var conc := _mat("concrete_ground", 3.0) + for sx in [-1.0, 1.0]: + _slab(Vector3(sx * STRIP_HALF, 0.475, -315), Vector3(0.5, 0.95, 690), conc) + for i in 40: + var z := 20.0 - i * 17.0 + _slab(Vector3(sx * STRIP_HALF, 0.99, z), Vector3(0.54, 0.08, 8.0), + _flat(Color(0.78, 0.12, 0.10) if i % 2 == 0 else Color(0.9, 0.9, 0.88), 0.6), false) + + _tree() + _start_line() + _finish_line() + _boards() + _grandstand() + _tower() + _sand_trap() + + # return road up the right-hand side, back to the staging paddock + _slab(Vector3(19.0, 0.04, -290), Vector3(8, 0.02, 700), _mat("asphalt", 9.0), false) + + # staging paddock: PP_ markers become shuntable parked fleet cars (game.gd) + for i in 8: + var m := Marker3D.new() + m.name = "PP_pad%d" % i + m.position = Vector3(20.0 + 5.5 * (i % 4), 0.0, 22.0 + 8.0 * (i / 4)) + m.rotate_y(PI * 0.5 + rng.randf_range(-0.08, 0.08)) + add_child(m) + # lighting towers as SL_ markers: game.gd builds them as smashable street + # lights that really cast light at night. Yes, you can flatten them. + var sl := 0 + for z in [-80.0, -220.0, -360.0, -500.0]: + for sx in [-1.0, 1.0]: + var m := Marker3D.new() + m.name = "SL_%d" % sl + sl += 1 + m.position = Vector3(sx * (STRIP_HALF + 2.0), 0.0, z) + add_child(m) + # wheelie bins behind the wall because there is always a row of wheelie bins + for i in 6: + var m := Marker3D.new() + m.name = "WB_%d" % i + m.position = Vector3(14.5, 0.0, 8.0 - i * 3.0) + add_child(m) + + _gums(rng) + _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 _tree() -> void: + ## The christmas tree: pole + backboard + six named bulbs. game.gd finds + ## them by name and flips material_override.emission_enabled. Visual only. + var steel := _flat(Color(0.22, 0.23, 0.25), 0.5) + _slab(Vector3(0, 1.1, -6), Vector3(0.14, 2.2, 0.14), steel, false) + _slab(Vector3(0, 2.0, -6), Vector3(0.55, 1.75, 0.10), _flat(Color(0.10, 0.10, 0.12), 0.6), false) + var bulbs := [ + ["TreeStage", 2.68, Color(0.9, 0.9, 0.8)], + ["TreeAmber1", 2.38, Color(1.0, 0.68, 0.05)], + ["TreeAmber2", 2.12, Color(1.0, 0.68, 0.05)], + ["TreeAmber3", 1.86, Color(1.0, 0.68, 0.05)], + ["TreeGreen", 1.58, Color(0.15, 0.95, 0.25)], + ["TreeRed", 1.30, Color(0.95, 0.10, 0.08)], + ] + for b in bulbs: + var mi := MeshInstance3D.new() + var sm := SphereMesh.new() + sm.radius = 0.105 + sm.height = 0.21 + sm.radial_segments = 12 + sm.rings = 6 + mi.mesh = sm + var m := StandardMaterial3D.new() + m.albedo_color = Color(b[2]) * 0.35 # dim housing until it fires + m.roughness = 0.4 + m.emission_enabled = false + m.emission = Color(b[2]) + m.emission_energy_multiplier = 3.5 + mi.material_override = m + mi.name = String(b[0]) + mi.position = Vector3(0, float(b[1]), -6.06) + add_child(mi) + +func _start_line() -> void: + var white := _flat(Color(0.9, 0.9, 0.86), 0.7) + _slab(Vector3(0, 0.07, 0), Vector3(STRIP_HALF * 2 - 1.6, 0.02, 0.4), white, false) + # burnout box water patches behind the line + for lx in [-4.0, 4.0]: + _slab(Vector3(lx, 0.068, 8.0), Vector3(5.0, 0.015, 9.0), + _flat(Color(0.10, 0.11, 0.13), 0.15), false) + +func _finish_line() -> void: + # checkered strip + scoreboard gantry + for row in 2: + for i in 11: + var c := Color(0.05, 0.05, 0.06) if (i + row) % 2 == 0 else Color(0.92, 0.92, 0.9) + _slab(Vector3(-10.0 + i * 2.0, 0.07, FINISH - row * 2.0), + Vector3(2.0, 0.02, 2.0), _flat(c, 0.7), false) + var steel := _flat(Color(0.25, 0.26, 0.28), 0.5) + for sx in [-1.0, 1.0]: + _slab(Vector3(sx * (STRIP_HALF + 0.8), 3.5, FINISH), Vector3(0.35, 7.0, 0.35), steel) + _slab(Vector3(0, 7.1, FINISH), Vector3(STRIP_HALF * 2 + 2.5, 0.45, 0.45), steel, false) + for sx in [-5.0, 5.0]: + _slab(Vector3(sx, 5.9, FINISH), Vector3(4.5, 2.0, 0.3), _mat("billboard_ad3", 0.22, 0.4), false) + +func _boards() -> void: + # distance boards: 60ft, eighth, 1000ft -- the numbers that matter + var posts := _flat(Color(0.85, 0.85, 0.8), 0.6) + for z in [-18.3, -201.2, -305.0]: + for sx in [-1.0, 1.0]: + _slab(Vector3(sx * (STRIP_HALF + 1.2), 1.0, z), Vector3(0.16, 2.0, 0.16), posts, false) + _slab(Vector3(sx * (STRIP_HALF + 1.2), 2.2, z), Vector3(1.3, 0.9, 0.1), posts, false) + +func _grandstand() -> void: + ## Six stepped tiers with FLUX crowd panels on the risers and a white canopy. + var conc := _mat("concrete_ground", 3.0) + for i in 6: + var x := -16.5 - i * 2.6 + var y := 0.55 + i * 0.85 + _slab(Vector3(x, y * 0.5, -80), Vector3(2.6, y, 120), conc) + _slab(Vector3(x + 1.28, y + 0.75, -80), Vector3(0.08, 1.5, 118), _mat("crowd", 7.0, 0.9), false) + var steel := _flat(Color(0.3, 0.31, 0.33), 0.5) + for zi in 5: + _slab(Vector3(-24.0, 3.8, -128 + zi * 24.0), Vector3(0.3, 7.6, 0.3), steel, false) + _slab(Vector3(-25.5, 7.6, -80), Vector3(20.0, 0.25, 124), _mat("panel_white", 0.5, 0.5), false) + +func _tower() -> void: + ## The red control tower: every Queensland circuit building is this shade. + var red := _flat(Color(0.72, 0.10, 0.08), 0.55) + var glass := _mat("facade_glass", 0.2, 0.25) + _slab(Vector3(21.0, 6.0, -14), Vector3(9.0, 12.0, 8.0), red) + _slab(Vector3(21.0, 10.4, -9.95), Vector3(8.2, 2.6, 0.2), glass, false) + _slab(Vector3(21.0, 12.3, -14), Vector3(9.6, 0.4, 8.6), _flat(Color(0.16, 0.17, 0.19), 0.6), false) + _slab(Vector3(21.0, 7.4, -9.9), Vector3(8.2, 1.6, 0.15), _mat("billboard_ad", 0.3, 0.4), false) + # paddock awnings behind it + for i in 3: + _slab(Vector3(30.0, 2.9, -30.0 - i * 14.0), Vector3(7.0, 0.2, 10.0), _mat("panel_white", 0.5, 0.5), false) + for sx in [-3.0, 3.0]: + for sz in [-4.5, 4.5]: + _slab(Vector3(30.0 + sx, 1.45, -30.0 - i * 14.0 + sz), Vector3(0.15, 2.9, 0.15), + _flat(Color(0.5, 0.5, 0.52), 0.5), false) + +func _sand_trap() -> void: + _slab(Vector3(0, 0.055, -668), Vector3(STRIP_HALF * 2, 0.03, 56), _mat("sand", 5.0), false) + # tyre wall: fat black cylinders in a row, then an honest collision slab + var rubber := _flat(Color(0.07, 0.07, 0.08), 0.85) + for i in 17: + var mi := MeshInstance3D.new() + var cm := CylinderMesh.new() + cm.top_radius = 0.62 + cm.bottom_radius = 0.62 + cm.height = 1.15 + cm.radial_segments = 10 + cm.material = rubber + mi.mesh = cm + mi.position = Vector3(-11.2 + i * 1.4, 0.58, -694) + add_child(mi) + _slab(Vector3(0, 1.0, -695.2), Vector3(STRIP_HALF * 2 + 2, 2.0, 1.0), rubber) + +func _gums(rng: RandomNumberGenerator) -> void: + for i in 26: + var sx := -1.0 if i % 2 == 0 else 1.0 + var at := Vector3(sx * rng.randf_range(30.0, 80.0), 0, rng.randf_range(-620.0, 40.0)) + var trunk := MeshInstance3D.new() + var cm := CylinderMesh.new() + cm.top_radius = 0.14 + cm.bottom_radius = 0.24 + cm.height = rng.randf_range(5.0, 8.0) + cm.radial_segments = 7 + cm.material = _mat("bark", 1.4) + trunk.mesh = cm + trunk.position = at + Vector3(0, cm.height * 0.5, 0) + add_child(trunk) + var crown := MeshInstance3D.new() + var sm := SphereMesh.new() + sm.radius = rng.randf_range(2.2, 3.4) + sm.height = sm.radius * 1.6 + sm.radial_segments = 10 + sm.rings = 6 + sm.material = _mat("foliage", 0.55) + crown.mesh = sm + crown.position = at + Vector3(0, cm.height + sm.radius * 0.4, 0) + add_child(crown) + +func _race_path() -> void: + # loop for cruise traffic: down the strip, back up the return road + var path := Path3D.new() + path.name = "RacePath" + var c := Curve3D.new() + var pts := [Vector3(0, 0, 40), Vector3(0, 0, -620), Vector3(19, 0, -620), Vector3(19, 0, 40)] + for i in pts.size() + 1: + var p: Vector3 = pts[i % pts.size()] + var to_prev: Vector3 = (pts[(i - 1 + pts.size()) % pts.size()] - p).normalized() * 8.0 + var to_next: Vector3 = (pts[(i + 1) % pts.size()] - p).normalized() * 8.0 + c.add_point(p, to_prev, to_next) + path.curve = c + add_child(path) diff --git a/levels/willowbank_dragway/dragway.gd.uid b/levels/willowbank_dragway/dragway.gd.uid new file mode 100644 index 0000000..dd5836f --- /dev/null +++ b/levels/willowbank_dragway/dragway.gd.uid @@ -0,0 +1 @@ +uid://5urdkjgbac5y diff --git a/levels/willowbank_dragway/level.tscn b/levels/willowbank_dragway/level.tscn new file mode 100644 index 0000000..c15474d --- /dev/null +++ b/levels/willowbank_dragway/level.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://levels/willowbank_dragway/dragway.gd" id="1"] + +[node name="WillowbankDragway" type="Node3D"] +script = ExtResource("1") + +[node name="Spawn" type="Marker3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 40) + +[node name="DragStart" type="Marker3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) + +[node name="DragEnd" type="Marker3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -402) diff --git a/shot_albert_parklands.png.import b/shot_albert_parklands.png.import deleted file mode 100644 index 41ce8b2..0000000 --- a/shot_albert_parklands.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[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_bridge.png.import b/shot_bridge.png.import deleted file mode 100644 index 45ce9ee..0000000 --- a/shot_bridge.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bqaxeko1tl5w7" -path="res://.godot/imported/shot_bridge.png-2373c808c2e6eab2488c5d984769ec6f.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_bridge.png" -dest_files=["res://.godot/imported/shot_bridge.png-2373c808c2e6eab2488c5d984769ec6f.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_bridge_dem.png.import b/shot_bridge_dem.png.import deleted file mode 100644 index 2f85ce7..0000000 --- a/shot_bridge_dem.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cfq88o84umvip" -path="res://.godot/imported/shot_bridge_dem.png-75be2353aa1d96cb1fa690daade691e3.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_bridge_dem.png" -dest_files=["res://.godot/imported/shot_bridge_dem.png-75be2353aa1d96cb1fa690daade691e3.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_busted_leyland.png.import b/shot_busted_leyland.png.import deleted file mode 100644 index 19c9e74..0000000 --- a/shot_busted_leyland.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://wxu5r0kb7at5" -path="res://.godot/imported/shot_busted_leyland.png-1b68c6edebd14db41b2b3046347cecf4.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_busted_leyland.png" -dest_files=["res://.godot/imported/shot_busted_leyland.png-1b68c6edebd14db41b2b3046347cecf4.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_casserola_dx.png.import b/shot_casserola_dx.png.import deleted file mode 100644 index 62c2cc2..0000000 --- a/shot_casserola_dx.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bvj8acey6cfwt" -path="res://.godot/imported/shot_casserola_dx.png-143068759f8248f4e67facd7ba986a47.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_casserola_dx.png" -dest_files=["res://.godot/imported/shot_casserola_dx.png-143068759f8248f4e67facd7ba986a47.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_casserola_ke80.png.import b/shot_casserola_ke80.png.import deleted file mode 100644 index 94190f5..0000000 --- a/shot_casserola_ke80.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://caxryihtxhm3" -path="res://.godot/imported/shot_casserola_ke80.png-25193f7ba65f0ecac14cf98f399167eb.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_casserola_ke80.png" -dest_files=["res://.godot/imported/shot_casserola_ke80.png-25193f7ba65f0ecac14cf98f399167eb.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_chaebol_90.png.import b/shot_chaebol_90.png.import deleted file mode 100644 index b96d3bf..0000000 --- a/shot_chaebol_90.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dtw68ub6k2k57" -path="res://.godot/imported/shot_chaebol_90.png-34f2f19d59a1dfc9c9065b0f098ba31b.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_chaebol_90.png" -dest_files=["res://.godot/imported/shot_chaebol_90.png-34f2f19d59a1dfc9c9065b0f098ba31b.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_chaebol_92.png.import b/shot_chaebol_92.png.import deleted file mode 100644 index d5fc15d..0000000 --- a/shot_chaebol_92.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dj88gcnypqq47" -path="res://.godot/imported/shot_chaebol_92.png-72629faa17fdf8d9689fb8bb7ae41c7e.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_chaebol_92.png" -dest_files=["res://.godot/imported/shot_chaebol_92.png-72629faa17fdf8d9689fb8bb7ae41c7e.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_chaebol_x1.png.import b/shot_chaebol_x1.png.import deleted file mode 100644 index 103658b..0000000 --- a/shot_chaebol_x1.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bm80bpeqm41q4" -path="res://.godot/imported/shot_chaebol_x1.png-ab23f1251ae9c80a4dbe158ad9a4e40d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_chaebol_x1.png" -dest_files=["res://.godot/imported/shot_chaebol_x1.png-ab23f1251ae9c80a4dbe158ad9a4e40d.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_chaebol_x2.png.import b/shot_chaebol_x2.png.import deleted file mode 100644 index 788de2d..0000000 --- a/shot_chaebol_x2.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://khjyhwdfp4of" -path="res://.godot/imported/shot_chaebol_x2.png-85e80bf3292aa38ec2e2af06d6395f40.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_chaebol_x2.png" -dest_files=["res://.godot/imported/shot_chaebol_x2.png-85e80bf3292aa38ec2e2af06d6395f40.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_crash.png.import b/shot_crash.png.import deleted file mode 100644 index 79517bd..0000000 --- a/shot_crash.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://x0ap1xtqufy" -path="res://.godot/imported/shot_crash.png-0fd81ecc7f94fef4c0d6e80bfb3abf5a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_crash.png" -dest_files=["res://.godot/imported/shot_crash.png-0fd81ecc7f94fef4c0d6e80bfb3abf5a.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_dadson_240z.png.import b/shot_dadson_240z.png.import deleted file mode 100644 index 0866cb8..0000000 --- a/shot_dadson_240z.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dr1yh3qyfpgew" -path="res://.godot/imported/shot_dadson_240z.png-607e7502187621a2dca20481e5ded264.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_dadson_240z.png" -dest_files=["res://.godot/imported/shot_dadson_240z.png-607e7502187621a2dca20481e5ded264.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_datto_120y.png.import b/shot_datto_120y.png.import deleted file mode 100644 index 7915fa6..0000000 --- a/shot_datto_120y.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://csax7yqjgptvt" -path="res://.godot/imported/shot_datto_120y.png-85e191822a21ddbb3112ee0a47028b7f.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_datto_120y.png" -dest_files=["res://.godot/imported/shot_datto_120y.png-85e191822a21ddbb3112ee0a47028b7f.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_deform_after.png.import b/shot_deform_after.png.import deleted file mode 100644 index 1ed37b8..0000000 --- a/shot_deform_after.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cp2rgao7fesff" -path="res://.godot/imported/shot_deform_after.png-3d28120be42a8120e987f9dc2910eef4.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_deform_after.png" -dest_files=["res://.godot/imported/shot_deform_after.png-3d28120be42a8120e987f9dc2910eef4.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_deform_before.png.import b/shot_deform_before.png.import deleted file mode 100644 index 548a8d1..0000000 --- a/shot_deform_before.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://caxvklepgk1l0" -path="res://.godot/imported/shot_deform_before.png-f2ee82086fe3fb722b601ee9d7cccf9e.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_deform_before.png" -dest_files=["res://.godot/imported/shot_deform_before.png-f2ee82086fe3fb722b601ee9d7cccf9e.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_facade_f.png.import b/shot_facade_f.png.import deleted file mode 100644 index e3534dd..0000000 --- a/shot_facade_f.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://3n2kvgojbgwf" -path="res://.godot/imported/shot_facade_f.png-9fa96bfde3dcbd65751693978b15004c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_facade_f.png" -dest_files=["res://.godot/imported/shot_facade_f.png-9fa96bfde3dcbd65751693978b15004c.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_facade_r.png.import b/shot_facade_r.png.import deleted file mode 100644 index e2c072c..0000000 --- a/shot_facade_r.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cjfi57xn0na3h" -path="res://.godot/imported/shot_facade_r.png-2e6fbc4bb08a15dde0b9e54f90566d31.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_facade_r.png" -dest_files=["res://.godot/imported/shot_facade_r.png-2e6fbc4bb08a15dde0b9e54f90566d31.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_floored_xd.png.import b/shot_floored_xd.png.import deleted file mode 100644 index 8aa7c08..0000000 --- a/shot_floored_xd.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cd5quvmmdk7wy" -path="res://.godot/imported/shot_floored_xd.png-6498dca165edfeb647825ab5252ac5e1.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_floored_xd.png" -dest_files=["res://.godot/imported/shot_floored_xd.png-6498dca165edfeb647825ab5252ac5e1.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_garage_f.png.import b/shot_garage_f.png.import deleted file mode 100644 index 1cc1d71..0000000 --- a/shot_garage_f.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dr7aglv20utx3" -path="res://.godot/imported/shot_garage_f.png-aa2f56aea17c124e5ede0f7b9bc1c349.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_garage_f.png" -dest_files=["res://.godot/imported/shot_garage_f.png-aa2f56aea17c124e5ede0f7b9bc1c349.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_garage_r.png.import b/shot_garage_r.png.import deleted file mode 100644 index 4642482..0000000 --- a/shot_garage_r.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bmlq6d63wenbp" -path="res://.godot/imported/shot_garage_r.png-524c5e48bfb09463cc90db7e4ba2f22b.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_garage_r.png" -dest_files=["res://.godot/imported/shot_garage_r.png-524c5e48bfb09463cc90db7e4ba2f22b.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_hardon_cmere.png.import b/shot_hardon_cmere.png.import deleted file mode 100644 index 4d5bb3c..0000000 --- a/shot_hardon_cmere.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://ogsrhjmu4sa5" -path="res://.godot/imported/shot_hardon_cmere.png-791bf7aa28c70148da5c8cc8507cb785.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_hardon_cmere.png" -dest_files=["res://.godot/imported/shot_hardon_cmere.png-791bf7aa28c70148da5c8cc8507cb785.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_hardon_effex.png.import b/shot_hardon_effex.png.import deleted file mode 100644 index bd5167e..0000000 --- a/shot_hardon_effex.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dcofpebmsrb7e" -path="res://.godot/imported/shot_hardon_effex.png-ce88a33c72f9e74e80b1be1d7cd98350.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_hardon_effex.png" -dest_files=["res://.godot/imported/shot_hardon_effex.png-ce88a33c72f9e74e80b1be1d7cd98350.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_hardon_eh.png.import b/shot_hardon_eh.png.import deleted file mode 100644 index e7e78b9..0000000 --- a/shot_hardon_eh.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://crxu1cferab8n" -path="res://.godot/imported/shot_hardon_eh.png-4a87b9f2900c736fab809fe8e9cd34a0.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_hardon_eh.png" -dest_files=["res://.godot/imported/shot_hardon_eh.png-4a87b9f2900c736fab809fe8e9cd34a0.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_hardon_hr.png.import b/shot_hardon_hr.png.import deleted file mode 100644 index 7b5dac6..0000000 --- a/shot_hardon_hr.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bu5mmxfeeas03" -path="res://.godot/imported/shot_hardon_hr.png-852559122027f557a8bf101f41ade1d7.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_hardon_hr.png" -dest_files=["res://.godot/imported/shot_hardon_hr.png-852559122027f557a8bf101f41ade1d7.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_hardon_shaggen.png.import b/shot_hardon_shaggen.png.import deleted file mode 100644 index ed07e65..0000000 --- a/shot_hardon_shaggen.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://m6mfjs5lhsdj" -path="res://.godot/imported/shot_hardon_shaggen.png-ac88433802c5d63125f57723ad489e3a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_hardon_shaggen.png" -dest_files=["res://.godot/imported/shot_hardon_shaggen.png-ac88433802c5d63125f57723ad489e3a.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_jct.png.import b/shot_jct.png.import deleted file mode 100644 index 636621a..0000000 --- a/shot_jct.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dkm1p5n1xyg7t" -path="res://.godot/imported/shot_jct.png-d1005de9ee52815e0d48b6f3b6f72efa.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_jct.png" -dest_files=["res://.godot/imported/shot_jct.png-d1005de9ee52815e0d48b6f3b6f72efa.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_jct_woolies.png.import b/shot_jct_woolies.png.import deleted file mode 100644 index 175cc80..0000000 --- a/shot_jct_woolies.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b4qj6hifty7co" -path="res://.godot/imported/shot_jct_woolies.png-8055f5e30848dcfa5c2e67aa3a1cbdb1.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_jct_woolies.png" -dest_files=["res://.godot/imported/shot_jct_woolies.png-8055f5e30848dcfa5c2e67aa3a1cbdb1.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_juice1.png.import b/shot_juice1.png.import deleted file mode 100644 index a4b9630..0000000 --- a/shot_juice1.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://d00cb83dfqjw4" -path="res://.godot/imported/shot_juice1.png-fba2fcb034fbfdcb8d9ae2a583d4d311.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_juice1.png" -dest_files=["res://.godot/imported/shot_juice1.png-fba2fcb034fbfdcb8d9ae2a583d4d311.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_juice2.png.import b/shot_juice2.png.import deleted file mode 100644 index bb81ae2..0000000 --- a/shot_juice2.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://l2umf3kh323s" -path="res://.godot/imported/shot_juice2.png-2a393fa7456855db0f24793b286f65ec.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_juice2.png" -dest_files=["res://.godot/imported/shot_juice2.png-2a393fa7456855db0f24793b286f65ec.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 deleted file mode 100644 index a5f5ce3..0000000 --- a/shot_kangaroo_point.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[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_kingswood_hz.png.import b/shot_kingswood_hz.png.import deleted file mode 100644 index 845a4f3..0000000 --- a/shot_kingswood_hz.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://brgybf6k2kpms" -path="res://.godot/imported/shot_kingswood_hz.png-7d4abe16335ac30b38209e6834875a74.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_kingswood_hz.png" -dest_files=["res://.godot/imported/shot_kingswood_hz.png-7d4abe16335ac30b38209e6834875a74.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_kp.png.import b/shot_kp.png.import deleted file mode 100644 index 2ee280f..0000000 --- a/shot_kp.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bvti3upsy17mh" -path="res://.godot/imported/shot_kp.png-38a7ee1a2c8da54f618e19705f30821f.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_kp.png" -dest_files=["res://.godot/imported/shot_kp.png-38a7ee1a2c8da54f618e19705f30821f.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_kp2.png.import b/shot_kp2.png.import deleted file mode 100644 index 1cf50b8..0000000 --- a/shot_kp2.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bflslcdy1e4vi" -path="res://.godot/imported/shot_kp2.png-e7a65557575e8977229d43997986ddec.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_kp2.png" -dest_files=["res://.godot/imported/shot_kp2.png-e7a65557575e8977229d43997986ddec.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_kp_dem.png.import b/shot_kp_dem.png.import deleted file mode 100644 index 12f6245..0000000 --- a/shot_kp_dem.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://boesb5lcxhlfv" -path="res://.godot/imported/shot_kp_dem.png-c9ce5dfc952a5ba8544840830a36b4c0.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_kp_dem.png" -dest_files=["res://.godot/imported/shot_kp_dem.png-c9ce5dfc952a5ba8544840830a36b4c0.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_kp_top.png.import b/shot_kp_top.png.import deleted file mode 100644 index 5a798b2..0000000 --- a/shot_kp_top.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dv0r0ctfsvyse" -path="res://.godot/imported/shot_kp_top.png-9b910b7280f9d3c8de3410ea2430621a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_kp_top.png" -dest_files=["res://.godot/imported/shot_kp_top.png-9b910b7280f9d3c8de3410ea2430621a.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_lazza_f.png.import b/shot_lazza_f.png.import deleted file mode 100644 index b341803..0000000 --- a/shot_lazza_f.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bbib77a1k1ctx" -path="res://.godot/imported/shot_lazza_f.png-c4f6c2fc6a04fba4e5ef692bbc36f5ef.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_lazza_f.png" -dest_files=["res://.godot/imported/shot_lazza_f.png-c4f6c2fc6a04fba4e5ef692bbc36f5ef.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_lazza_r.png.import b/shot_lazza_r.png.import deleted file mode 100644 index 7b6684a..0000000 --- a/shot_lazza_r.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bgmqcpm3wcbxc" -path="res://.godot/imported/shot_lazza_r.png-83a41ac1c2e13b89e6d117f1a065c9f1.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_lazza_r.png" -dest_files=["res://.godot/imported/shot_lazza_r.png-83a41ac1c2e13b89e6d117f1a065c9f1.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_leyland_morry.png.import b/shot_leyland_morry.png.import deleted file mode 100644 index bd592ec..0000000 --- a/shot_leyland_morry.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dnefwmnb6uh83" -path="res://.godot/imported/shot_leyland_morry.png-6f6ed93a4bdf1412b7f94fc8f339450b.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_leyland_morry.png" -dest_files=["res://.godot/imported/shot_leyland_morry.png-6f6ed93a4bdf1412b7f94fc8f339450b.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_maxi_merk.png.import b/shot_maxi_merk.png.import deleted file mode 100644 index 978dd2c..0000000 --- a/shot_maxi_merk.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dsunbri1n1hdl" -path="res://.godot/imported/shot_maxi_merk.png-d03ea9df7245aee513664c0ffe034bb5.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_maxi_merk.png" -dest_files=["res://.godot/imported/shot_maxi_merk.png-d03ea9df7245aee513664c0ffe034bb5.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_menu.png.import b/shot_menu.png.import deleted file mode 100644 index d9b5d15..0000000 --- a/shot_menu.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://btgywefwig6wi" -path="res://.godot/imported/shot_menu.png-c61344a3ec1e3de2e32ce9670e847ca3.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_menu.png" -dest_files=["res://.godot/imported/shot_menu.png-c61344a3ec1e3de2e32ce9670e847ca3.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_mini_merk.png.import b/shot_mini_merk.png.import deleted file mode 100644 index ffc93b1..0000000 --- a/shot_mini_merk.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dqcoi0fwl2ifg" -path="res://.godot/imported/shot_mini_merk.png-4058795d9b92ecc2207e6bc083eb6cae.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_mini_merk.png" -dest_files=["res://.godot/imported/shot_mini_merk.png-4058795d9b92ecc2207e6bc083eb6cae.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_minicab.png.import b/shot_minicab.png.import deleted file mode 100644 index 6ad2cd1..0000000 --- a/shot_minicab.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b1vkow0v583bx" -path="res://.godot/imported/shot_minicab.png-43c91c995b8c283a20b4adb3e1f5787d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_minicab.png" -dest_files=["res://.godot/imported/shot_minicab.png-43c91c995b8c283a20b4adb3e1f5787d.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_morry.png.import b/shot_morry.png.import deleted file mode 100644 index 382b2d1..0000000 --- a/shot_morry.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bn4ofl8uhfeaq" -path="res://.godot/imported/shot_morry.png-654f7e7886c576aa15987960425204b9.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_morry.png" -dest_files=["res://.godot/imported/shot_morry.png-654f7e7886c576aa15987960425204b9.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_new_bubbla_600.png.import b/shot_new_bubbla_600.png.import deleted file mode 100644 index ee89fdd..0000000 --- a/shot_new_bubbla_600.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://ceecujmymhp7v" -path="res://.godot/imported/shot_new_bubbla_600.png-05b2db194b7a014fc14c973c912e5583.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_new_bubbla_600.png" -dest_files=["res://.godot/imported/shot_new_bubbla_600.png-05b2db194b7a014fc14c973c912e5583.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_new_falcodore_gtho.png.import b/shot_new_falcodore_gtho.png.import deleted file mode 100644 index ae27d47..0000000 --- a/shot_new_falcodore_gtho.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://mll58atwcrp6" -path="res://.godot/imported/shot_new_falcodore_gtho.png-e66ed2ab5a9d8d094ec961c70879ba93.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_new_falcodore_gtho.png" -dest_files=["res://.godot/imported/shot_new_falcodore_gtho.png-e66ed2ab5a9d8d094ec961c70879ba93.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_new_hardon_waggo.png.import b/shot_new_hardon_waggo.png.import deleted file mode 100644 index 008c5f4..0000000 --- a/shot_new_hardon_waggo.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://c7vogu04epx1b" -path="res://.godot/imported/shot_new_hardon_waggo.png-070bed85dde44ad7d2157c19c292a0a0.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_new_hardon_waggo.png" -dest_files=["res://.godot/imported/shot_new_hardon_waggo.png-070bed85dde44ad7d2157c19c292a0a0.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_new_hardon_wb_ute.png.import b/shot_new_hardon_wb_ute.png.import deleted file mode 100644 index bc22849..0000000 --- a/shot_new_hardon_wb_ute.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bgjfj2d166iw" -path="res://.godot/imported/shot_new_hardon_wb_ute.png-7ed5d240147f85803b553146a1f90363.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_new_hardon_wb_ute.png" -dest_files=["res://.godot/imported/shot_new_hardon_wb_ute.png-7ed5d240147f85803b553146a1f90363.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_night.png.import b/shot_night.png.import deleted file mode 100644 index b4a1b09..0000000 --- a/shot_night.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://ssfx4eea0hio" -path="res://.godot/imported/shot_night.png-18957e7f26c9433700879ac3d7e65fdb.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_night.png" -dest_files=["res://.godot/imported/shot_night.png-18957e7f26c9433700879ac3d7e65fdb.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_probe1.png.import b/shot_probe1.png.import deleted file mode 100644 index 8526a19..0000000 --- a/shot_probe1.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://chisg1pamath8" -path="res://.godot/imported/shot_probe1.png-7fcccbd8717c822595793ca3bec750d3.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_probe1.png" -dest_files=["res://.godot/imported/shot_probe1.png-7fcccbd8717c822595793ca3bec750d3.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_probe2.png.import b/shot_probe2.png.import deleted file mode 100644 index 299021b..0000000 --- a/shot_probe2.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://c6iefyegaq2wn" -path="res://.godot/imported/shot_probe2.png-80097fc680af478bf18b1d5937767200.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_probe2.png" -dest_files=["res://.godot/imported/shot_probe2.png-80097fc680af478bf18b1d5937767200.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_qsm.png.import b/shot_qsm.png.import deleted file mode 100644 index 372cdf0..0000000 --- a/shot_qsm.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://mfkte8qttss2" -path="res://.godot/imported/shot_qsm.png-967b3acff66d7bf0bed2878528afe78c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_qsm.png" -dest_files=["res://.godot/imported/shot_qsm.png-967b3acff66d7bf0bed2878528afe78c.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_qsm_top.png.import b/shot_qsm_top.png.import deleted file mode 100644 index 2384e68..0000000 --- a/shot_qsm_top.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cyrxo3cw4imnk" -path="res://.godot/imported/shot_qsm_top.png-6e1ac5a3e8dd19f56575f328b6aac35d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_qsm_top.png" -dest_files=["res://.godot/imported/shot_qsm_top.png-6e1ac5a3e8dd19f56575f328b6aac35d.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 deleted file mode 100644 index 9caa378..0000000 --- a/shot_queen_st_mall.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[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_sb1.png.import b/shot_sb1.png.import deleted file mode 100644 index 5d24842..0000000 --- a/shot_sb1.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://rlp11v4g2ur1" -path="res://.godot/imported/shot_sb1.png-da1bbcae1e530a41f044756363f0c5e7.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_sb1.png" -dest_files=["res://.godot/imported/shot_sb1.png-da1bbcae1e530a41f044756363f0c5e7.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_sb_bridge.png.import b/shot_sb_bridge.png.import deleted file mode 100644 index 27d98a7..0000000 --- a/shot_sb_bridge.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dpv2rx6laf2w3" -path="res://.godot/imported/shot_sb_bridge.png-3a49e069a8658d202658083a9b3802d5.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_sb_bridge.png" -dest_files=["res://.godot/imported/shot_sb_bridge.png-3a49e069a8658d202658083a9b3802d5.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_sb_top.png.import b/shot_sb_top.png.import deleted file mode 100644 index 31c9b3a..0000000 --- a/shot_sb_top.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://d4kx2h1eua5tv" -path="res://.godot/imported/shot_sb_top.png-3f1ec0b6cf3244f763576dcf24a3d29e.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_sb_top.png" -dest_files=["res://.godot/imported/shot_sb_top.png-3f1ec0b6cf3244f763576dcf24a3d29e.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_signals.png.import b/shot_signals.png.import deleted file mode 100644 index c4da4cb..0000000 --- a/shot_signals.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cekys4ivgu4h8" -path="res://.godot/imported/shot_signals.png-63a3c63abf5322b610cd10df0b3df2ad.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_signals.png" -dest_files=["res://.godot/imported/shot_signals.png-63a3c63abf5322b610cd10df0b3df2ad.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_skin_f.png.import b/shot_skin_f.png.import deleted file mode 100644 index 2b2c94d..0000000 --- a/shot_skin_f.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://s6i8tuutr6lt" -path="res://.godot/imported/shot_skin_f.png-c6f63b09adc28589fda207aea5e20aef.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_skin_f.png" -dest_files=["res://.godot/imported/shot_skin_f.png-c6f63b09adc28589fda207aea5e20aef.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_skin_r.png.import b/shot_skin_r.png.import deleted file mode 100644 index 7fe36da..0000000 --- a/shot_skin_r.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bkffl21h7ydui" -path="res://.godot/imported/shot_skin_r.png-d462c89253aeeef933841bff40b3422a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_skin_r.png" -dest_files=["res://.godot/imported/shot_skin_r.png-d462c89253aeeef933841bff40b3422a.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_smash.png.import b/shot_smash.png.import deleted file mode 100644 index 5db5b46..0000000 --- a/shot_smash.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cfi0qm6la5und" -path="res://.godot/imported/shot_smash.png-74c714eba18dc662dd518b4cb8cf6335.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_smash.png" -dest_files=["res://.godot/imported/shot_smash.png-74c714eba18dc662dd518b4cb8cf6335.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_southbank.png.import b/shot_southbank.png.import deleted file mode 100644 index d79ccc4..0000000 --- a/shot_southbank.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dq74to3ccwpby" -path="res://.godot/imported/shot_southbank.png-c868fc85f6d129b498f68423d5fba80c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_southbank.png" -dest_files=["res://.godot/imported/shot_southbank.png-c868fc85f6d129b498f68423d5fba80c.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 deleted file mode 100644 index a1a2e47..0000000 --- a/shot_story_bridge.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[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_trolleys.png.import b/shot_trolleys.png.import deleted file mode 100644 index d2738b9..0000000 --- a/shot_trolleys.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://w384sbljyqjk" -path="res://.godot/imported/shot_trolleys.png-4bc10206031793a54eda76f31a101806.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_trolleys.png" -dest_files=["res://.godot/imported/shot_trolleys.png-4bc10206031793a54eda76f31a101806.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_turdeno.png.import b/shot_turdeno.png.import deleted file mode 100644 index 81ea57a..0000000 --- a/shot_turdeno.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dbp7gnpd3ju1h" -path="res://.godot/imported/shot_turdeno.png-d5b513f8b0848eb839603ea9d63538a4.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_turdeno.png" -dest_files=["res://.godot/imported/shot_turdeno.png-d5b513f8b0848eb839603ea9d63538a4.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_turdrunner_slur.png.import b/shot_turdrunner_slur.png.import deleted file mode 100644 index 4630737..0000000 --- a/shot_turdrunner_slur.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bxit0l621tsok" -path="res://.godot/imported/shot_turdrunner_slur.png-2dfbb7c644ee0226f53c86ea197285f9.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_turdrunner_slur.png" -dest_files=["res://.godot/imported/shot_turdrunner_slur.png-2dfbb7c644ee0226f53c86ea197285f9.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_wheel.png.import b/shot_wheel.png.import deleted file mode 100644 index e345777..0000000 --- a/shot_wheel.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dnjqu44q2852h" -path="res://.godot/imported/shot_wheel.png-4565b180afd912702d97c89afcbab902.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://shot_wheel.png" -dest_files=["res://.godot/imported/shot_wheel.png-4565b180afd912702d97c89afcbab902.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 deleted file mode 100644 index 5de6e5f..0000000 --- a/shot_woolies_carpark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[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 bcc7440..82d97bb 100644 --- a/src/game.gd +++ b/src/game.gd @@ -50,6 +50,22 @@ const DRAG_GEARS := 5 const SHIFT_LO := 0.74 # revs below this = shifted early, lose drive const REDLINE := 0.99 # hit it without shifting and the engine bogs const DRAG_REV_RATE := [0.0, 0.62, 0.50, 0.40, 0.32, 0.26] # per gear, revs/sec +## The Willowbank ladder: preset rivals, weakest first. power is their +## power_scale once they launch, reaction is how long after the green they sit +## there blinking, purse is what beating them pays. Beat the rung you're on to +## climb; the top dog repeats and keeps paying. +const DRAG_LADDER := [ + {"name": "NANNA'S SHOPPING RUN", "car": "morry", "power": 0.55, "reaction": 0.85, "purse": 250}, + {"name": "P-PLATE PEPPER", "car": "excel_x3", "power": 0.78, "reaction": 0.55, "purse": 400}, + {"name": "MULLET MERV", "car": "kingswood_hq", "power": 0.98, "reaction": 0.40, "purse": 600}, + {"name": "TORQUE'N TEZZA", "car": "vl_terbo", "power": 1.12, "reaction": 0.30, "purse": 850}, + {"name": "SELF-DESCRIBED BATHURST LEGEND", "car": "floored_xd", "power": 1.26, "reaction": 0.22, "purse": 1200}, + {"name": "THE WILLOWBANK WIDOWMAKER", "car": "falcodore_gtho", "power": 1.45, "reaction": 0.15, "purse": 1600}, +] +const TREE_AMBERS := [1.2, 1.7, 2.2] # seconds into staging, sportsman tree +const TREE_GREEN := 2.7 +const DRAG_FINISH_PAY := 50 # crossing the line at all +const DRAG_PB_PAY := 150 # beating your own best const DERBY_CARS := 5 # opponents in the arena, last one running wins const DERBY_ARENA := 90.0 # leave the ring this long and you forfeit const DERBY_OUT := 8.0 @@ -88,7 +104,16 @@ var revs := 0.0 var bog := 0.0 # seconds of lost drive from a blown shift var clean_shifts := 0 var blown_shifts := 0 -var drag_t := 0.0 +var drag_t := 0.0 # elapsed time, counted from the GREEN +var drag_state := "" # "stage" (at the tree) -> "run" (green light) +var stage_t := 0.0 +var jumped := false # rolled out of the beams before the green +var drag_rung_now := 0 # index into DRAG_LADDER for this event +var rival_reaction := 0.0 +var rival_et := 0.0 # rival's ET once it crosses; 0 = hasn't yet +var rival_wait := 0.0 # grace timer after the rival crosses first +var _tree_bulbs := {} # "TreeGreen" etc -> MeshInstance3D (dragway only) +var _launch_pos := Vector3.ZERO var derby: Array[Cop] = [] # arena opponents; Cop AI already hunts a target var derby_centre: Vector3 @@ -253,15 +278,29 @@ func _ready() -> void: sc.add_point(drag_end + Vector3.UP * (drag_end_y + 0.7) + lane + fwd * 120.0) strip.curve = sc add_child(strip) - var pool := Registry.cars().values() + # the ladder: your current rung decides who's in the other lane + drag_rung_now = mini(Garage.drag_rung(), DRAG_LADDER.size() - 1) + var rung: Dictionary = DRAG_LADDER[drag_rung_now] + rival_reaction = float(rung["reaction"]) + var cars_dict := Registry.cars() var r: Rival = (load("res://src/rival.tscn") as PackedScene).instantiate() - r.stats = load(pool[randi() % pool.size()]) + r.stats = load(cars_dict[rung["car"]]) if cars_dict.has(rung["car"]) \ + else load(cars_dict.values()[randi() % cars_dict.size()]) r.path = strip + r.power_scale = 0.0 # held at the tree until green + reaction time add_child(r) r.global_transform = Transform3D(Basis.looking_at(fwd, Vector3.UP), car.global_position + lane) r.progress = 0.0 rivals.append(r) + drag_state = "stage" + _launch_pos = car.global_position + # the Willowbank tree, if this level has one: bulbs are MeshInstance3Ds + # with an emission material_override that _bulb() switches on and off + for bn in ["TreeStage", "TreeAmber1", "TreeAmber2", "TreeAmber3", "TreeGreen", "TreeRed"]: + var b := level.find_child(bn, true, false) + if b is MeshInstance3D: + _tree_bulbs[bn] = b elif mode == "rage" and race_path: time_left = RAGE_TIME var pool := Registry.cars().values() @@ -735,8 +774,16 @@ func _drag_tick(delta: float) -> void: if drag_len <= 0.0: info_label.text = "no drag strip in this level" return + if drag_state == "stage": + _stage_tick(delta) + return drag_t += delta bog = maxf(bog - delta, 0.0) + # the rival launches when its reaction time is up -- Nanna sits at the green + # for most of a second; the Widowmaker leaves with you + if not rivals.is_empty(): + rivals[0].power_scale = 0.0 if drag_t < rival_reaction \ + else float(DRAG_LADDER[drag_rung_now]["power"]) if gear <= DRAG_GEARS: revs = minf(revs + DRAG_REV_RATE[gear] * delta * (1.0 if bog == 0.0 else 0.25), 1.0) @@ -764,23 +811,97 @@ func _drag_tick(delta: float) -> void: var flat := Vector3(car.global_position.x, 0.0, car.global_position.z) var left := flat.distance_to(drag_end) - var rival_left := INF - if not rivals.is_empty(): + if rival_et == 0.0 and not rivals.is_empty(): var rf := Vector3(rivals[0].global_position.x, 0.0, rivals[0].global_position.z) - rival_left = rf.distance_to(drag_end) - info_label.text = "GEAR %d %s %dm %.1fs" % [ + if rf.distance_to(drag_end) < 12.0: + rival_et = drag_t + var pb := Garage.drag_pb(Garage.car_id_of(car_path)) + info_label.text = "VS %s%s\nGEAR %d %s %dm %.1fs" % [ + DRAG_LADDER[drag_rung_now]["name"], + (" | PB %.2f" % pb) if pb > 0.0 else "", mini(gear, DRAG_GEARS), ("BOGGED" if bog > 0.0 else ("SHIFT!" if revs >= SHIFT_LO else "%d%%" % int(revs * 100))), int(left), drag_t] - # the rival crossing has to end it too, or losing means the run never stops - if left < 12.0 or rival_left < 12.0: - over = true - car.power_scale = 1.0 # _drag_tick stops on `over`, so reset it here - var won := left <= rival_left - var drag_pay := 400 if won else 0 - Garage.earn(drag_pay) - _msg("%s %.2fs +$%d bucks\n%d clean / %d blown\nR to retry, Esc for menu" - % ["WON" if won else "LOST", drag_t, drag_pay, clean_shifts, blown_shifts], 44, true) + # the event ends when YOU cross: losing to the rival mustn't rob you of your + # ET and PB. If the rival's crossed and you dawdle 10 s, it gets called. + if rival_et > 0.0: + rival_wait += delta + if left < 12.0: + _drag_finish(true) + elif rival_wait > 10.0: + _drag_finish(false) + +func _stage_tick(delta: float) -> void: + ## At the tree. The RIVAL is held by the electronics; you're held by nothing + ## but your own discipline, which is the whole point of a christmas tree. + var was := stage_t + stage_t += delta + if not rivals.is_empty(): + rivals[0].power_scale = 0.0 + car.power_scale = 0.8 + if was <= 0.0: + _bulb("TreeStage", true) + for i in TREE_AMBERS.size(): + if was < float(TREE_AMBERS[i]) and stage_t >= float(TREE_AMBERS[i]): + _bulb("TreeAmber%d" % (i + 1), true) + Sfx.shot_2d("clunk", -10.0) + if not jumped and car.global_position.distance_to(_launch_pos) > 2.0: + jumped = true + _bulb("TreeRed", true) + Sfx.shot(car, "bog", -2.0) + _msg("RED LIGHT", 44) + var rung: Dictionary = DRAG_LADDER[drag_rung_now] + var pb := Garage.drag_pb(Garage.car_id_of(car_path)) + info_label.text = "VS %s%s\nHOLD FOR THE GREEN..." % [rung["name"], + (" | PB %.2fs" % pb) if pb > 0.0 else ""] + if stage_t >= TREE_GREEN: + drag_state = "run" + for i in 3: + _bulb("TreeAmber%d" % (i + 1), false) + _bulb("TreeGreen", true) + Sfx.shot_2d("clunk", -2.0) + if jumped: + bog = 1.6 # you launched at a light that wasn't green + _msg("GO! (BOGGED: RED LIGHT)", 44) + else: + _msg("GO!", 52) + +func _drag_finish(crossed: bool) -> void: + over = true + car.power_scale = 1.0 # _drag_tick stops on `over`, so reset it here + var rung: Dictionary = DRAG_LADDER[drag_rung_now] + var won := crossed and (rival_et == 0.0 or drag_t <= rival_et) + var pay := DRAG_FINISH_PAY if crossed else 0 + var lines: Array[String] = [] + if crossed: + lines.append("%s vs %s -- %.2fs" % ["WON" if won else "LOST", rung["name"], drag_t]) + if Garage.record_drag_pb(Garage.car_id_of(car_path), drag_t): + pay += DRAG_PB_PAY + lines.append("NEW PERSONAL BEST +$%d" % DRAG_PB_PAY) + else: + lines.append("LOST vs %s (never crossed)" % rung["name"]) + if won: + pay += int(rung["purse"]) + lines.append("PURSE +$%d" % int(rung["purse"])) + if Garage.drag_rung() == drag_rung_now and drag_rung_now < DRAG_LADDER.size() - 1: + Garage.drag_advance() + lines.append("UP THE LADDER: next is %s" % DRAG_LADDER[drag_rung_now + 1]["name"]) + elif drag_rung_now == DRAG_LADDER.size() - 1: + lines.append("TOP OF THE LADDER. AGAIN?") + if jumped: + lines.append("(red light. we saw it. everyone saw it.)") + Garage.earn(pay) + lines.append("+$%d bucks | %d clean / %d blown" % [pay, clean_shifts, blown_shifts]) + lines.append("R to retry, Esc for menu") + Sfx.shot_2d("sting_win" if won else "bog") + _msg("\n".join(lines), 40, true) + +func _bulb(bn: String, on: bool) -> void: + if not _tree_bulbs.has(bn): + return # street drags have no tree hardware; the HUD carries the count + var m := (_tree_bulbs[bn] as MeshInstance3D).material_override as StandardMaterial3D + if m: + m.emission_enabled = on func add_heat(amount: float) -> void: if mode != "cruise" or heat_cd > 0.0 or not cops.is_empty(): diff --git a/src/garage.gd b/src/garage.gd index 2bcc50a..2187511 100644 --- a/src/garage.gd +++ b/src/garage.gd @@ -186,6 +186,35 @@ static func buy_tune(car_id: String, tune: String) -> bool: _flush() return true +## ---- raceday: the drag ladder + personal bests ---------------------------- +## Rung index into game.gd's DRAG_LADDER; beat your current rung to advance. +## PBs are per-car elapsed times (seconds from the green), 0.0 = none yet. + +static func drag_rung() -> int: + _load() + return int(_data.get("drag_rung", 0)) + +static func drag_advance() -> void: + _load() + _data["drag_rung"] = drag_rung() + 1 + _flush() + +static func drag_pb(car_id: String) -> float: + _load() + return float(_data.get("drag_pbs", {}).get(car_id, 0.0)) + +static func record_drag_pb(car_id: String, et: float) -> bool: + ## Returns true when this run is a new personal best. + _load() + var pbs: Dictionary = _data.get("drag_pbs", {}) + var old := float(pbs.get(car_id, 0.0)) + if old > 0.0 and et >= old: + return false + pbs[car_id] = et + _data["drag_pbs"] = pbs + _flush() + return true + static func car_id_of(stats_path: String) -> String: # res://cars//stats.tres -> return stats_path.get_base_dir().get_file() diff --git a/tests/smoke.gd b/tests/smoke.gd index c41a564..34a2d0f 100644 --- a/tests/smoke.gd +++ b/tests/smoke.gd @@ -51,6 +51,14 @@ func _run() -> void: gg = await _boot("cruise") _check(gg.car.part_dv > Car.PART_DV + 1.0, "retorque didn't harden panels (%.1f)" % gg.car.part_dv) gg.free() + # raceday persistence: ladder rung and per-car quarter-mile PBs + _check(Garage.drag_rung() == 0, "fresh save not on ladder rung 0") + Garage.drag_advance() + _check(Garage.drag_rung() == 1, "ladder didn't advance") + _check(Garage.record_drag_pb("datto_120y", 14.5), "first ET not a PB") + _check(not Garage.record_drag_pb("datto_120y", 15.0), "slower ET counted as a PB") + _check(Garage.record_drag_pb("datto_120y", 13.9), "faster ET refused as PB") + _check(absf(Garage.drag_pb("datto_120y") - 13.9) < 0.01, "PB not stored") Garage._reset_for_test() # later stages must run stock # cruise: throttle 3s, car must move @@ -154,12 +162,28 @@ func _run() -> void: _check(game.heat_cd > 0.0, "no cooldown after escape") game.free() - # drag: needs a level with DragStart/DragEnd, so not the code-built carpark - Game.level_path = levels["southbank"] + # drag: the Willowbank quarter mile -- tree staging, ladder rival, then the box + Game.level_path = levels["willowbank_dragway"] print(" .. drag") game = await _boot("drag") - _check(game.drag_len > 100.0, "no drag strip found (%.0f m)" % game.drag_len) + _check(absf(game.drag_len - 402.0) < 5.0, "quarter mile measures %.0f m" % game.drag_len) _check(game.rivals.size() == 1, "drag had no opponent") + _check(game.drag_state == "stage", "no tree staging phase") + _check(game.drag_rung_now == 0, "fresh ladder not starting at rung 0") + _check(game.rivals[0].stats.resource_path.contains("morry"), + "rung 0 rival isn't Nanna (%s)" % game.rivals[0].stats.resource_path) + _check(game._tree_bulbs.size() == 6, "christmas tree bulbs missing (%d)" % game._tree_bulbs.size()) + await physics_frame + _check(game.rivals[0].power_scale == 0.0, "rival not held at the tree") + # hold still like a disciplined launch: no red light, wait out the ambers + var tree_spin := 0 + while game.drag_state != "run" and tree_spin < 400: + await physics_frame + tree_spin += 1 + _check(game.drag_state == "run", "tree never went green") + _check(not game.jumped, "stationary car scored a red light") + var green_m := (game._tree_bulbs["TreeGreen"] as MeshInstance3D).material_override as StandardMaterial3D + _check(green_m.emission_enabled, "green bulb didn't light") Input.action_press("throttle") for i in 10: await physics_frame @@ -230,9 +254,12 @@ func _run() -> void: _check(game.car.boost > 0.05, "oncoming earned no boost (%.3f)" % game.car.boost) game.free() - # race: rivals spawn and make progress along the path + # race: grid up at Queensland Raceway -- the paperclip is ~3126 m of Path3D + Game.level_path = levels["qld_raceway"] print(" .. race") game = await _boot("race") + var lap: float = game.race_path.curve.get_baked_length() + _check(absf(lap - 3126.0) < 60.0, "paperclip lap measures %.0f m" % lap) _check(game.rivals.size() == Game.RIVAL_COUNT, "rivals missing") var p0: float = game.rivals[0].progress for i in 240: @@ -244,7 +271,7 @@ func _run() -> void: _check(moved, "no rival is driving") game.free() - print("smoke ok: %d cars, %d levels | cruise %.1f m | crash $%d | junction $%d | outrun arms+pays | pursuit spawns+escapes | drag shifts | derby %d cars | race AI driving" % + print("smoke ok: %d cars, %d levels | cruise %.1f m | crash $%d | junction $%d | outrun arms+pays | pursuit spawns+escapes | quarter mile stages+shifts | derby %d cars | paperclip race AI driving" % [cars.size(), levels.size(), dist, int(crash_score), int(jct_score), Game.DERBY_CARS]) quit(0)