Raceday: Willowbank quarter mile + the Queensland Raceway Paperclip
Two proper venues off the real Ipswich pair, both built in code. Willowbank Dragway (levels/willowbank_dragway): a true 402 m dual-lane strip -- concrete launch pad, FLUX-rubbered lanes, crowd grandstand with canopy, red control tower, distance boards at 60ft/eighth/1000ft, checkered finish under a scoreboard gantry, sand trap and tyre wall, smashable SL_ light towers and a staging paddock of parked fleet cars. Between the lanes: a working christmas tree, six bulbs driven by game.gd through material_override emission. Drag mode grew the event around it. Every drag now stages at the tree (three ambers, green at 2.7 s); rolling >2 m early is a RED LIGHT that bogs your launch. The opposition is a six-rung ladder of preset locals (Nanna's Shopping Run through The Willowbank Widowmaker), each with its own fleet car, power and reaction time. Beating your current rung climbs the ladder and pays an escalating purse ($250-$1600, top dog repeats); crossing at all pays $50; and every car keeps a persistent quarter-mile PB worth $150 when beaten. Losing no longer ends the run early -- you still cross for your ET, with a 10 s grace if you dawdle. Ladder rung and PBs persist in the garage save (schema extended compatibly). Queensland Raceway (levels/qld_raceway): the National Circuit digitised from the official track map and scaled to its exact 3126 m lap. The road is one generated quad strip with trimesh collision; kerbs, gravel traps and tyre stacks derive automatically from centreline curvature, sponsor hoardings space themselves down the straights, and the SF straight gets the checkered line, gantry, pit wall and the mandatory red pit complex. Plus the pond. Race/cruise/rage all run on its RacePath. Trap for the diary: Godot front faces wind CLOCKWISE. The first cut of the road ribbon wound CCW and rendered invisible from above while colliding perfectly -- the smoke suite passed and the screenshot showed four cars gridded on open grass. Three new FLUX textures (crowd, dragstrip, sand; the sand prompt tripped Cloudflare's NSFW filter, of all things, and fell back to local). Smoke suite covers tree staging, the held rival, rung-0 identity, green-bulb emission, red-light innocence, PB/rung persistence and the 3126 m lap. Also swept stale shot_*.png.import debris and ignored the pattern. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
117d950675
commit
21032191a3
1
.gitignore
vendored
1
.gitignore
vendored
@ -10,3 +10,4 @@ after_*.png
|
||||
before_*.png.import
|
||||
after_*.png.import
|
||||
*.iso
|
||||
shot_*.png.import
|
||||
|
||||
33
README.md
33
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
|
||||
|
||||
BIN
assets/textures/crowd.jpg
Normal file
BIN
assets/textures/crowd.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 99 KiB |
@ -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]
|
||||
|
||||
BIN
assets/textures/dragstrip.jpg
Normal file
BIN
assets/textures/dragstrip.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 116 KiB |
@ -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]
|
||||
|
||||
BIN
assets/textures/sand.jpg
Normal file
BIN
assets/textures/sand.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 83 KiB |
@ -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]
|
||||
|
||||
6
levels/qld_raceway/level.tscn
Normal file
6
levels/qld_raceway/level.tscn
Normal file
@ -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")
|
||||
373
levels/qld_raceway/raceway.gd
Normal file
373
levels/qld_raceway/raceway.gd
Normal file
@ -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)
|
||||
1
levels/qld_raceway/raceway.gd.uid
Normal file
1
levels/qld_raceway/raceway.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://k5xln5yysglo
|
||||
261
levels/willowbank_dragway/dragway.gd
Normal file
261
levels/willowbank_dragway/dragway.gd
Normal file
@ -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)
|
||||
1
levels/willowbank_dragway/dragway.gd.uid
Normal file
1
levels/willowbank_dragway/dragway.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://5urdkjgbac5y
|
||||
15
levels/willowbank_dragway/level.tscn
Normal file
15
levels/willowbank_dragway/level.tscn
Normal file
@ -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)
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
153
src/game.gd
153
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():
|
||||
|
||||
@ -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/<id>/stats.tres -> <id>
|
||||
return stats_path.get_base_dir().get_file()
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user