feat: playtest-build

This commit is contained in:
Sara 2024-05-23 09:05:09 +02:00
parent 3e8c8a08f2
commit c8e9e2fb4d
73 changed files with 3609 additions and 642 deletions

Binary file not shown.

View file

@ -0,0 +1,16 @@
[gd_scene load_steps=3 format=3 uid="uid://cr1ytl0o43ftv"]
[ext_resource type="PackedScene" uid="uid://clwonyj2wt778" path="res://Models/SM_Prop_SatDish_01.fbx" id="1_7ohe6"]
[sub_resource type="SphereShape3D" id="SphereShape3D_nx0bu"]
radius = 43.991
[node name="BeaconPowerup" type="BeaconPowerup"]
collision_layer = 0
collision_mask = 8
monitorable = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("SphereShape3D_nx0bu")
[node name="Root Scene" parent="." instance=ExtResource("1_7ohe6")]

View file

@ -1,6 +1,7 @@
[gd_scene load_steps=12 format=3 uid="uid://dkvgi7x2epurk"]
[gd_scene load_steps=13 format=3 uid="uid://dkvgi7x2epurk"]
[ext_resource type="PackedScene" uid="uid://bm2mavtmnbaw1" path="res://Models/CarParts/SM_Veh_Hatch_01.fbx" id="1_tymeg"]
[ext_resource type="PackedScene" uid="uid://cr1ytl0o43ftv" path="res://GameObjects/beacon_powerup.tscn" id="1_uhbx0"]
[ext_resource type="PackedScene" uid="uid://bfq7ipx01ag7p" path="res://Models/CarParts/SM_Veh_Hatch_01_Bonnet_01.fbx" id="2_l8ox5"]
[ext_resource type="PackedScene" uid="uid://ci63le6giakt1" path="res://Models/CarParts/SM_Veh_Hatch_01_Front_Bumper_01.fbx" id="3_8ayy1"]
[ext_resource type="PackedScene" uid="uid://buhilfnxfvnor" path="res://Models/CarParts/SM_Veh_Hatch_01_Light_Covers_01.fbx" id="4_ebbck"]
@ -27,10 +28,15 @@ points = PackedVector3Array(-1, -0.6, -2.11, 1, -0.6, -2.11, -1, -0.6, 1.405, 1,
radius = 0.48558
[node name="CarPlayer" type="CarPlayer"]
turret_scene = ExtResource("1_uhbx0")
beacon_scene = ExtResource("1_uhbx0")
shield_scene = ExtResource("1_uhbx0")
oversteer_curve = SubResource("Curve_dpk6q")
oversteer_curve_x_scale = 40.0
understeer_curve = SubResource("Curve_htvme")
understeer_curve_x_scale = 40.0
max_slide_speed = 10.0
oversteer_speed_penalty = 10.0
collision_layer = 7
collision_mask = 3
mass = 1000.0
@ -73,3 +79,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.372761, 0)
[node name="Root Scene4" parent="Mesh" instance=ExtResource("5_v2arc")]
[node name="Root Scene5" parent="Mesh" instance=ExtResource("6_xu64x")]
[node name="RoofSlot" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.31348, -0.510359)

View file

@ -0,0 +1,86 @@
[gd_scene load_steps=7 format=3 uid="uid://dxyimydfpu8jp"]
[sub_resource type="Animation" id="Animation_xagif"]
resource_name = "explode"
length = 0.4
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("CollisionShape3D:shape:radius")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.4),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.001, 10.0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MeshInstance3D:mesh:radius")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.4),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.5, 10.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("MeshInstance3D:mesh:height")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.4),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [1.0, 20.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_eacvo"]
_data = {
"explode": SubResource("Animation_xagif")
}
[sub_resource type="GDScript" id="GDScript_0mto7"]
script/source = "extends AnimationPlayer
func _ready():
self.play(\"explode\")
"
[sub_resource type="SphereShape3D" id="SphereShape3D_gym27"]
radius = 0.001
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8dpai"]
transparency = 1
cull_mode = 2
diffuse_mode = 2
albedo_color = Color(0.964648, 0.965055, 1, 0.443137)
emission_enabled = true
emission = Color(1.15514e-06, 0.623002, 0.744944, 1)
rim = 0.0
[sub_resource type="SphereMesh" id="SphereMesh_q40p2"]
material = SubResource("StandardMaterial3D_8dpai")
[node name="DamageArea" type="DamageArea"]
target_classes = [&"CarPlayer"]
collision_layer = 0
collision_mask = 4
monitorable = false
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_eacvo")
}
script = SubResource("GDScript_0mto7")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("SphereShape3D_gym27")
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
mesh = SubResource("SphereMesh_q40p2")

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,57 @@
[gd_scene load_steps=7 format=3 uid="uid://1eawpg0buvah"]
[ext_resource type="PackedScene" uid="uid://d0ir0dpghkikq" path="res://GameObjects/beam.tscn" id="1_xm6id"]
[ext_resource type="PackedScene" uid="uid://v5p6ih28q6ro" path="res://Models/SM_Wep_Shotgun_Plasma_01.fbx" id="2_vsdye"]
[sub_resource type="CylinderMesh" id="CylinderMesh_1btvq"]
top_radius = 0.055
height = 0.39
[sub_resource type="SphereShape3D" id="SphereShape3D_rdc8b"]
radius = 167.996
[sub_resource type="BoxMesh" id="BoxMesh_ag1t0"]
size = Vector3(0.205, 1, 0.83)
[sub_resource type="SphereShape3D" id="SphereShape3D_036xw"]
radius = 0.392821
[node name="Turret" type="Turret"]
attack_classes = [&"EnemyTargetBody"]
beam_scene = ExtResource("1_xm6id")
collision_layer = 0
collision_mask = 0
freeze = true
freeze_mode = 1
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0758235, 0)
mesh = SubResource("CylinderMesh_1btvq")
[node name="AwarenessArea" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -15.7959, 0)
collision_layer = 0
collision_mask = 2
[node name="CollisionShape3D" type="CollisionShape3D" parent="AwarenessArea"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 13.9111, 0)
shape = SubResource("SphereShape3D_rdc8b")
[node name="Gun" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.273896, 0)
top_level = true
[node name="Root Scene" parent="Gun" instance=ExtResource("2_vsdye")]
transform = Transform3D(1.30858, 0, 0, 0, 1.30858, 0, 0, 0, 1.30858, 0.00200939, -0.12911, -0.0137266)
[node name="MeshInstance3D" type="MeshInstance3D" parent="Gun"]
transform = Transform3D(0.341319, 0, 0, 0, 0.282489, -0.191569, 0, 0.191569, 0.282489, 0.00200939, -0.0518904, 0.028925)
mesh = SubResource("BoxMesh_ag1t0")
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Gun"]
transform = Transform3D(0.341319, 0, 0, 0, -0.00356825, -0.3413, 0, 0.3413, -0.00356825, 0.00200939, -0.119031, -0.113755)
mesh = SubResource("BoxMesh_ag1t0")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.331101, 0)
shape = SubResource("SphereShape3D_036xw")

View file

@ -1,9 +1,11 @@
[gd_scene load_steps=6 format=3 uid="uid://brpccv2gy7pjs"]
[gd_scene load_steps=7 format=3 uid="uid://brpccv2gy7pjs"]
[ext_resource type="PackedScene" uid="uid://d0ir0dpghkikq" path="res://beam.tscn" id="1_7e7bw"]
[ext_resource type="PackedScene" uid="uid://d0ir0dpghkikq" path="res://GameObjects/beam.tscn" id="1_7e7bw"]
[ext_resource type="PackedScene" uid="uid://v5p6ih28q6ro" path="res://Models/SM_Wep_Shotgun_Plasma_01.fbx" id="2_snu5d"]
[sub_resource type="PrismMesh" id="PrismMesh_xjis4"]
size = Vector3(1, 3.135, 1)
[sub_resource type="CylinderMesh" id="CylinderMesh_sewkr"]
top_radius = 0.21
height = 4.295
[sub_resource type="BoxShape3D" id="BoxShape3D_rxnqc"]
size = Vector3(1, 3.18433, 1)
@ -11,17 +13,20 @@ size = Vector3(1, 3.18433, 1)
[sub_resource type="SphereShape3D" id="SphereShape3D_rdc8b"]
radius = 167.996
[sub_resource type="BoxMesh" id="BoxMesh_axukv"]
size = Vector3(0.5, 0.5, 1.735)
[sub_resource type="BoxMesh" id="BoxMesh_ag1t0"]
size = Vector3(0.205, 1, 0.83)
[node name="Turret" type="Turret"]
attack_classes = [&"CarPlayer"]
beam_scene = ExtResource("1_7e7bw")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 178.697, 6.0093, 28.3981)
collision_layer = 11
collision_mask = 11
freeze = true
freeze_mode = 1
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.44861, 0)
mesh = SubResource("PrismMesh_xjis4")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.47794, 0)
mesh = SubResource("CylinderMesh_sewkr")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.45032, 0)
@ -31,6 +36,7 @@ shape = SubResource("BoxShape3D_rxnqc")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -15.7959, 0)
collision_layer = 0
collision_mask = 2
monitorable = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="AwarenessArea"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 13.9111, 0)
@ -39,7 +45,13 @@ shape = SubResource("SphereShape3D_rdc8b")
[node name="Gun" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.79299, 0)
[node name="Root Scene" parent="Gun" instance=ExtResource("2_snu5d")]
transform = Transform3D(3.8339, 0, 0, 0, 3.8339, 0, 0, 0, 3.8339, 0, -0.357125, 0)
[node name="MeshInstance3D" type="MeshInstance3D" parent="Gun"]
transform = Transform3D(1, 0, 0, 0, 0.827639, -0.56126, 0, 0.56126, 0.827639, 0, -0.130876, 0.124961)
mesh = SubResource("BoxMesh_ag1t0")
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Gun"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.277781)
mesh = SubResource("BoxMesh_axukv")
skeleton = NodePath("../..")
transform = Transform3D(1, 0, 0, 0, -0.0104543, -0.999945, 0, 0.999945, -0.0104543, 0, -0.327579, -0.293065)
mesh = SubResource("BoxMesh_ag1t0")

View file

@ -0,0 +1,19 @@
[gd_scene load_steps=3 format=3 uid="uid://dcrccx2elnkcc"]
[sub_resource type="SphereShape3D" id="SphereShape3D_b476n"]
radius = 1.76997
[sub_resource type="BoxMesh" id="BoxMesh_wkw7o"]
[node name="WeaponPickup" type="WeaponPickup"]
collision_layer = 4
collision_mask = 4
monitorable = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.0604, 0)
shape = SubResource("SphereShape3D_b476n")
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.0604, 0)
mesh = SubResource("BoxMesh_wkw7o")

View file

@ -1,7 +1,7 @@
[gd_scene load_steps=3 format=3 uid="uid://05prvqpy0r6m"]
[ext_resource type="PackedScene" uid="uid://73cn4swq2gc7" path="res://game_ui.tscn" id="1_c4p6k"]
[ext_resource type="PackedScene" uid="uid://e3dmisrrgqq7" path="res://testmap.tscn" id="2_qhspd"]
[ext_resource type="PackedScene" uid="uid://73cn4swq2gc7" path="res://Levels/game_ui.tscn" id="1_c4p6k"]
[ext_resource type="PackedScene" uid="uid://e3dmisrrgqq7" path="res://Levels/testmap.tscn" id="2_qhspd"]
[node name="Level3D" type="Level3D"]

View file

@ -1,6 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://73cn4swq2gc7"]
[ext_resource type="PackedScene" uid="uid://e3dmisrrgqq7" path="res://testmap.tscn" id="1_kul4y"]
[ext_resource type="PackedScene" uid="uid://e3dmisrrgqq7" path="res://Levels/testmap.tscn" id="1_kul4y"]
[node name="Level3D" type="Level3D"]

726
godot/Levels/testmap.tscn Normal file

File diff suppressed because one or more lines are too long

BIN
godot/Models/PolygonSciFi_Road_01.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c2hya1lg6w1n5"
path.s3tc="res://.godot/imported/PolygonSciFi_Road_01.png-2a3130bcf3891008ccb28c99808e07f7.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Models/PolygonSciFi_Road_01.png"
dest_files=["res://.godot/imported/PolygonSciFi_Road_01.png-2a3130bcf3891008ccb28c99808e07f7.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/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=0

BIN
godot/Models/PolygonSciFi_Road_Normal.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://gbu53dus3ink"
path.s3tc="res://.godot/imported/PolygonSciFi_Road_Normal.png-cc63a08bd1d50d94c1b22cf00aa9ed3c.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Models/PolygonSciFi_Road_Normal.png"
dest_files=["res://.godot/imported/PolygonSciFi_Road_Normal.png-cc63a08bd1d50d94c1b22cf00aa9ed3c.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://Models/PolygonSciFi_Road_Normal.png"
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=0

BIN
godot/Models/SM_Prop_Drone_01.fbx (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,41 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://bmd87fagna2u0"
path="res://.godot/imported/SM_Prop_Drone_01.fbx-ca6e530339316369afce57e31e22a35a.scn"
[deps]
source_file="res://Models/SM_Prop_Drone_01.fbx"
dest_files=["res://.godot/imported/SM_Prop_Drone_01.fbx-ca6e530339316369afce57e31e22a35a.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"materials": {
"lambert182": {
"use_external/enabled": true,
"use_external/path": "res://Models/World/City/city.tres"
}
}
}
gltf/naming_version=1
gltf/embedded_image_handling=1

BIN
godot/Models/SM_Prop_SatDish_01.fbx (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,41 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://clwonyj2wt778"
path="res://.godot/imported/SM_Prop_SatDish_01.fbx-471e11a0f38ac1c7d67a20af96be351f.scn"
[deps]
source_file="res://Models/SM_Prop_SatDish_01.fbx"
dest_files=["res://.godot/imported/SM_Prop_SatDish_01.fbx-471e11a0f38ac1c7d67a20af96be351f.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"materials": {
"lambert230": {
"use_external/enabled": true,
"use_external/path": "res://Models/World/City/city.tres"
}
}
}
gltf/naming_version=1
gltf/embedded_image_handling=1

BIN
godot/Models/SM_Wep_Shotgun_Plasma_01.fbx (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,41 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://v5p6ih28q6ro"
path="res://.godot/imported/SM_Wep_Shotgun_Plasma_01.fbx-ba3b64de16a7afbd898c81fc9d235ef9.scn"
[deps]
source_file="res://Models/SM_Wep_Shotgun_Plasma_01.fbx"
dest_files=["res://.godot/imported/SM_Wep_Shotgun_Plasma_01.fbx-ba3b64de16a7afbd898c81fc9d235ef9.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"materials": {
"lambert1": {
"use_external/enabled": true,
"use_external/path": "res://Models/World/City/city.tres"
}
}
}
gltf/naming_version=1
gltf/embedded_image_handling=1

BIN
godot/Models/World/Harbour/Container_Normal_01.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dtv7tkkntu61t"
path.s3tc="res://.godot/imported/Container_Normal_01.png-dabf886305f555d622564cfa67719741.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Models/World/Harbour/Container_Normal_01.png"
dest_files=["res://.godot/imported/Container_Normal_01.png-dabf886305f555d622564cfa67719741.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=1
roughness/src_normal="res://Models/World/Harbour/Container_Normal_01.png"
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=0

BIN
godot/Models/World/Harbour/Container_Texture_02.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cgd1o2fe1ta5l"
path.s3tc="res://.godot/imported/Container_Texture_02.png-f4cdceff2027806558f091a509b7ee62.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Models/World/Harbour/Container_Texture_02.png"
dest_files=["res://.godot/imported/Container_Texture_02.png-f4cdceff2027806558f091a509b7ee62.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/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=0

Binary file not shown.

View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bkdd78bm5vkd5"
path.s3tc="res://.godot/imported/PolygonStreetRacer_Veh_Tex_25_Rust_Painted_White.png-74d82f3e896180533c6d9f0b97aba6e0.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Models/World/Harbour/PolygonStreetRacer_Veh_Tex_25_Rust_Painted_White.png"
dest_files=["res://.godot/imported/PolygonStreetRacer_Veh_Tex_25_Rust_Painted_White.png-74d82f3e896180533c6d9f0b97aba6e0.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/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=0

BIN
godot/Models/World/Harbour/SM_Prop_Container_01.fbx (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,41 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://cxbj3kifhk2h1"
path="res://.godot/imported/SM_Prop_Container_01.fbx-ec2ac5a6c0cb5f4673c8fedc60121599.scn"
[deps]
source_file="res://Models/World/Harbour/SM_Prop_Container_01.fbx"
dest_files=["res://.godot/imported/SM_Prop_Container_01.fbx-ec2ac5a6c0cb5f4673c8fedc60121599.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=3.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"materials": {
"lambert152": {
"use_external/enabled": true,
"use_external/path": "res://Models/World/Harbour/containers.tres"
}
}
}
gltf/naming_version=1
gltf/embedded_image_handling=1

BIN
godot/Models/World/Harbour/SM_Prop_Container_02.fbx (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://ga6xfetvtdpu"
path="res://.godot/imported/SM_Prop_Container_02.fbx-8cf211240864d14e91e6d07e4024f095.scn"
[deps]
source_file="res://Models/World/Harbour/SM_Prop_Container_02.fbx"
dest_files=["res://.godot/imported/SM_Prop_Container_02.fbx-8cf211240864d14e91e6d07e4024f095.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1

BIN
godot/Models/World/Harbour/SM_Veh_ContainerCrane_01.fbx (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,41 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dtjo6l5oma51w"
path="res://.godot/imported/SM_Veh_ContainerCrane_01.fbx-0364c85def4b9919d28e1e789a707dbc.scn"
[deps]
source_file="res://Models/World/Harbour/SM_Veh_ContainerCrane_01.fbx"
dest_files=["res://.godot/imported/SM_Veh_ContainerCrane_01.fbx-0364c85def4b9919d28e1e789a707dbc.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=3.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"materials": {
"lambert7": {
"use_external/enabled": true,
"use_external/path": "res://Models/World/Harbour/crane.tres"
}
}
}
gltf/naming_version=1
gltf/embedded_image_handling=1

View file

@ -0,0 +1,9 @@
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://k8w3xmh1vhia"]
[ext_resource type="Texture2D" uid="uid://cgd1o2fe1ta5l" path="res://Models/World/Harbour/Container_Texture_02.png" id="1_oggmd"]
[ext_resource type="Texture2D" uid="uid://dtv7tkkntu61t" path="res://Models/World/Harbour/Container_Normal_01.png" id="2_3m47g"]
[resource]
albedo_texture = ExtResource("1_oggmd")
normal_enabled = true
normal_texture = ExtResource("2_3m47g")

View file

@ -0,0 +1,6 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://45e28s7j77mx"]
[ext_resource type="Texture2D" uid="uid://bkdd78bm5vkd5" path="res://Models/World/Harbour/PolygonStreetRacer_Veh_Tex_25_Rust_Painted_White.png" id="1_iwsst"]
[resource]
albedo_texture = ExtResource("1_iwsst")

View file

@ -1,6 +1,6 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://cfont63vhwa3y"]
[ext_resource type="Texture2D" uid="uid://b56x2elvi7npj" path="res://purple_grid.png" id="1_8vpt8"]
[ext_resource type="Texture2D" uid="uid://b56x2elvi7npj" path="res://Models/purple_grid.png" id="1_8vpt8"]
[resource]
albedo_texture = ExtResource("1_8vpt8")

View file

@ -3,7 +3,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b56x2elvi7npj"
path.s3tc="res://.godot/imported/purple_grid.png-c21fba44bb781e02cf20cfac8b2146af.s3tc.ctex"
path.s3tc="res://.godot/imported/purple_grid.png-ddc30508e9c4a30716ebf9b1586b65f5.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
@ -11,8 +11,8 @@ metadata={
[deps]
source_file="res://purple_grid.png"
dest_files=["res://.godot/imported/purple_grid.png-c21fba44bb781e02cf20cfac8b2146af.s3tc.ctex"]
source_file="res://Models/purple_grid.png"
dest_files=["res://.godot/imported/purple_grid.png-ddc30508e9c4a30716ebf9b1586b65f5.s3tc.ctex"]
[params]

View file

@ -10,68 +10,50 @@ size = Vector2(38, 11.1516)
[node name="TreeClump1" type="Node3D"]
[node name="tree_20" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 2.94639, -0.417668, 2.70436)
[node name="tree_21" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 2.94639, -0.417668, 6.70436)
[node name="tree_22" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -0.503949, -0.417668, 2.71279)
[node name="tree_23" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -0.70691, -0.417668, -0.399292)
[node name="tree_24" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -4.70691, -0.417668, 2.60071)
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -1.17588, -0.417668, -1.63566)
[node name="tree_25" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -3.70691, -0.417668, 5.60071)
[node name="tree_26" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -8.7133, -0.417668, 1.87975)
[node name="tree_27" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -8.7133, -0.417668, -1.50295)
[node name="tree_28" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -12.5019, -0.417668, 3.84171)
[node name="tree_29" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -15.4787, -0.417668, 6.81847)
[node name="tree_30" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -16.1552, -0.417668, 2.35332)
[node name="tree_31" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -19.1996, -0.417668, -0.961721)
[node name="tree_32" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -15.7493, -0.417668, -1.36764)
[node name="tree_33" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -19.7493, -0.417668, 3.63236)
[node name="tree_34" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -22.7937, -0.417668, 2.41459)
[node name="tree_35" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -26.9206, -0.417668, 1.33213)
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -27.9571, -0.417668, 1.81583)
[node name="tree_36" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -26.3794, -0.417668, -1.84761)
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -27.7153, -0.417668, -2.00884)
[node name="tree_127" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -27.5847, -0.417668, 5.98593)
[node name="tree_37" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -23.8102, -0.417668, 5.75798)
[node name="tree_38" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 13.6717, -0.417668, 3.15878)
[node name="tree_39" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 17.7986, -0.417668, 1.12916)
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 18.8812, -0.417668, -1.5197)
[node name="tree_40" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 14.5512, -0.417668, -0.426874)
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 19.0197, -0.417668, 2.61355)
[node name="tree_43" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 16.2787, -0.417668, -1.64765)
[node name="tree_48" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 12.7931, -0.417668, -1.60159)
[node name="tree_41" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 17.1897, -0.417668, 5.79728)
@ -82,11 +64,11 @@ transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661
[node name="tree_8" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 11.2097, -0.417668, 6.7842)
[node name="tree_43" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.6554, -0.417668, 5.01132)
[node name="tree_44" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.477941, 0, 0.878392, 0, 1, 0, -0.878392, 0, 0.477941, -22.8314, -0.417668, -0.619483)
transform = Transform3D(0.477941, 0, 0.878392, 0, 1, 0, -0.878392, 0, 0.477941, -22.5807, -0.417668, -1.74761)
[node name="tree_49" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.477941, 0, 0.878392, 0, 1, 0, -0.878392, 0, 0.477941, -24.8996, -0.417668, -2.02964)
[node name="tree_45" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.0278519, 0, -0.999612, 0, 1, 0, 0.999612, 0, 0.0278519, -14.4303, -0.417668, -0.952002)
@ -97,33 +79,12 @@ transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661
[node name="tree_47" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -11.5526, -0.417668, 6.69594)
[node name="tree_48" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -15.1382, -0.417668, 3.78682)
[node name="tree_49" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -17.2355, -0.417668, 0.133513)
[node name="tree_50" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -19.671, -0.417668, 0.404129)
[node name="tree_51" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -18.6562, -0.417668, 2.90732)
[node name="tree_52" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -20.3476, -0.417668, 5.81644)
[node name="tree_53" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -22.7831, -0.417668, 2.70436)
[node name="tree_54" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -22.7831, -0.417668, 6.70436)
[node name="tree_55" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -12.0578, -0.417668, 3.15878)
[node name="tree_56" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -7.9309, -0.417668, 1.12916)
[node name="tree_57" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -11.1783, -0.417668, -0.426874)
@ -137,10 +98,10 @@ transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.3188, -0.417668, 5.01132)
[node name="tree_61" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.477941, 0, 0.878392, 0, 1, 0, -0.878392, 0, 0.477941, -3.85712, -0.417668, -0.619483)
transform = Transform3D(0.477941, 0, 0.878392, 0, 1, 0, -0.878392, 0, 0.477941, -4.92296, -0.417668, -1.38689)
[node name="tree_62" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.0278519, 0, -0.999612, 0, 1, 0, 0.999612, 0, 0.0278519, 4.54393, -0.417668, -0.952002)
transform = Transform3D(0.0278519, 0, -0.999612, 0, 1, 0, 0.999612, 0, 0.0278519, 5.96943, -0.417668, -0.952002)
[node name="tree_63" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 1.26549, -0.417668, 7.32876)
@ -148,35 +109,17 @@ transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661
[node name="tree_64" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 7.42163, -0.417668, 6.69594)
[node name="tree_65" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 3.83603, -0.417668, 3.78682)
[node name="tree_66" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 1.73873, -0.417668, 0.133513)
[node name="tree_67" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -0.696802, -0.417668, 0.404129)
[node name="tree_68" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 0.318008, -0.417668, 2.90732)
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 2.34794, -0.417668, -1.40129)
[node name="tree_69" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -1.37334, -0.417668, 5.81644)
[node name="tree_70" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -3.80888, -0.417668, 2.70436)
[node name="tree_71" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, -3.80888, -0.417668, 6.70436)
[node name="tree_72" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 6.91643, -0.417668, 3.15878)
[node name="tree_73" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 11.0433, -0.417668, 1.12916)
[node name="tree_74" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 7.79593, -0.417668, -0.426874)
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 9.22752, -0.417668, -0.895842)
[node name="tree_75" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 10.4344, -0.417668, 5.79728)
@ -185,154 +128,100 @@ transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661
transform = Transform3D(-0.729661, 0, 0.683809, 0, 1, 0, -0.683809, 0, -0.729661, 4.45443, -0.417668, 6.7842)
[node name="tree_77" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.833405, 0, 0, 0, 0.833405, 0, 0, 0, 0.833405, 15.9238, -4.86492, 4.68233)
transform = Transform3D(0.833405, 0, 0, 0, 0.833405, 0, 0, 0, 0.833405, 15.9238, -3.56477, 4.68233)
[node name="tree_78" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.833405, 0, 0, 0, 0.833405, 0, 0, 0, 0.833405, -16.379, -4.86492, 5.82774)
transform = Transform3D(0.833405, 0, 0, 0, 0.833405, 0, 0, 0, 0.833405, -16.379, -3.56477, 5.82774)
[node name="tree_79" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.833405, 0, 0, 0, 0.833405, 0, 0, 0, 0.833405, -12.0844, -4.86492, 0.459641)
[node name="tree_80" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.833405, 0, 0, 0, 0.833405, 0, 0, 0, 0.833405, -19.9901, -4.86492, -0.728979)
[node name="tree_81" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.398319, 0, 0.732057, 0, 0.833405, 0, -0.732057, 0, 0.398319, 1.60923, -4.86492, -0.0104105)
[node name="tree_82" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.0232119, 0, -0.833082, 0, 0.833405, 0, 0.833082, 0, 0.0232119, 8.61071, -4.86492, -0.287534)
[node name="tree_83" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.0232119, 0, -0.833082, 0, 0.833405, 0, 0.833082, 0, 0.0232119, -5.24823, -4.86492, -0.545279)
transform = Transform3D(0.833405, 0, 0, 0, 0.833405, 0, 0, 0, 0.833405, -12.0844, -3.56477, 0.459641)
[node name="tree_84" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.0232119, 0, -0.833082, 0, 0.833405, 0, 0.833082, 0, 0.0232119, -8.02836, -4.86492, 4.61012)
transform = Transform3D(0.0232119, 0, -0.833082, 0, 0.833405, 0, 0.833082, 0, 0.0232119, -8.02836, -3.56477, 4.61012)
[node name="tree_85" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.0232119, 0, -0.833082, 0, 0.833405, 0, 0.833082, 0, 0.0232119, -23.9007, -4.86492, 4.82934)
transform = Transform3D(0.0232119, 0, -0.833082, 0, 0.833405, 0, 0.833082, 0, 0.0232119, -23.9007, -3.56477, 4.82934)
[node name="tree_86" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -0.746029, -4.86492, 5.8368)
[node name="tree_87" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 5.87844, -4.86492, 6.6137)
[node name="tree_88" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 11.009, -4.86492, 6.0863)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -0.746029, -3.56477, 5.8368)
[node name="tree_89" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 8.02075, -4.86492, 3.66183)
[node name="tree_90" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 6.27284, -4.86492, 0.61714)
[node name="tree_91" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 4.24306, -4.86492, 0.842673)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 7.87454, -3.56477, 3.07701)
[node name="tree_92" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 5.08881, -4.86492, 2.92885)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 5.08881, -3.56477, 2.92885)
[node name="tree_93" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 3.67923, -4.86492, 5.35332)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 3.67923, -3.56477, 5.35332)
[node name="tree_94" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 1.64944, -4.86492, 2.7597)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 1.64944, -3.56477, 2.7597)
[node name="tree_95" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 1.64944, -4.86492, 6.09332)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 1.64944, -3.56477, 6.09332)
[node name="tree_96" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -1.2261, -4.86492, 2.76672)
[node name="tree_97" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -1.39524, -4.86492, 0.173098)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -1.2261, -3.56477, 2.76672)
[node name="tree_98" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -4.72887, -4.86492, 2.67332)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -3.59578, -3.56477, 2.56366)
[node name="tree_99" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -3.89546, -4.86492, 5.17353)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -3.89546, -3.56477, 5.17353)
[node name="tree_100" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -8.06781, -4.86492, 2.07246)
[node name="tree_101" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -8.06781, -4.86492, -0.746697)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -6.67886, -3.56477, 1.8897)
[node name="tree_102" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -11.2253, -4.86492, 3.70757)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -9.47084, -3.56477, 2.79379)
[node name="tree_103" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -13.7061, -4.86492, 6.18842)
[node name="tree_104" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -14.2699, -4.86492, 2.46714)
[node name="tree_105" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -16.8072, -4.86492, -0.295634)
[node name="tree_106" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -13.9317, -4.86492, -0.633929)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -13.7061, -3.56477, 6.18842)
[node name="tree_107" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -17.2653, -4.86492, 3.5331)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -14.3046, -3.56477, 2.76552)
[node name="tree_108" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -19.8025, -4.86492, 2.5182)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -19.8025, -3.56477, 2.5182)
[node name="tree_109" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -23.2419, -4.86492, 1.61607)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -24.3384, -3.56477, 2.31055)
[node name="tree_110" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -22.7908, -4.86492, -1.03394)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -22.1088, -3.56477, 1.87193)
[node name="tree_111" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -20.6497, -4.86492, 5.3046)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -20.6497, -3.56477, 5.3046)
[node name="tree_112" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 10.588, -4.86492, 3.13841)
[node name="tree_113" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 14.0273, -4.86492, 1.44692)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 10.7863, -3.56477, 2.74045)
[node name="tree_114" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 11.3209, -4.86492, 0.150111)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 16.8034, -3.56477, 1.89508)
[node name="tree_115" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 13.5199, -4.86492, 5.33735)
[node name="tree_113" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 13.6792, -3.56477, 1.69556)
[node name="tree_116" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -10.4429, -4.86492, 6.23948)
[node name="tree_117" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, 8.53612, -4.86492, 6.15986)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -10.4429, -3.56477, 6.23948)
[node name="tree_118" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.833405, 0, 0, 0, 0.833405, 0, 0, 0, 0.833405, -5.51934, -4.86492, 4.68233)
[node name="tree_119" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.398319, 0, 0.732057, 0, 0.833405, 0, -0.732057, 0, 0.398319, -19.8339, -4.86492, -0.0104105)
[node name="tree_120" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(0.0232119, 0, -0.833082, 0, 0.833405, 0, 0.833082, 0, 0.0232119, -12.8324, -4.86492, -0.287534)
transform = Transform3D(0.833405, 0, 0, 0, 0.833405, 0, 0, 0, 0.833405, -5.51934, -3.56477, 4.68233)
[node name="tree_121" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -15.5647, -4.86492, 6.6137)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -15.5647, -3.56477, 6.6137)
[node name="tree_122" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -10.4341, -4.86492, 6.0863)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -10.4341, -3.56477, 6.0863)
[node name="tree_123" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -13.4224, -4.86492, 3.66183)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -11.9969, -3.56477, 2.9308)
[node name="tree_124" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -15.1703, -4.86492, 0.61714)
[node name="tree_125" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -17.2, -4.86492, 0.842673)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -15.1703, -3.56477, 0.61714)
[node name="tree_126" parent="." instance=ExtResource("1_x3voc")]
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -16.3543, -4.86492, 2.92885)
transform = Transform3D(-0.608103, 0, 0.56989, 0, 0.833405, 0, -0.56989, 0, -0.608103, -17.1584, -3.56477, 2.56334)
[node name="StaticBody3D" type="StaticBody3D" parent="."]
@ -341,7 +230,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.42109, 3.13712, 1.84325)
shape = SubResource("BoxShape3D_iye8r")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(0.833405, 0, 0, 0, 0.833405, 0, 0, 0, 0.833405, -4.49066, -1.90234, 2.04204)
transform = Transform3D(0.833405, 0, 0, 0, 0.833405, 0, 0, 0, 0.833405, -4.49066, -0.602195, 2.04204)
shape = SubResource("BoxShape3D_iye8r")
[node name="OccluderInstance3D" type="OccluderInstance3D" parent="."]

View file

@ -0,0 +1,49 @@
[gd_scene load_steps=5 format=3 uid="uid://dcljtjjyxymd"]
[ext_resource type="Material" uid="uid://k8w3xmh1vhia" path="res://Models/World/Harbour/containers.tres" id="1_fgu0h"]
[sub_resource type="ArrayMesh" id="ArrayMesh_3g704"]
_surfaces = [{
"aabb": AABB(-9.08555, 0, -3.645, 18.1711, 7.77001, 7.29),
"format": 34896613377,
"index_count": 60,
"index_data": PackedByteArray(0, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 2, 0, 0, 0, 4, 0, 5, 0, 4, 0, 6, 0, 6, 0, 4, 0, 7, 0, 8, 0, 3, 0, 9, 0, 8, 0, 0, 0, 3, 0, 8, 0, 4, 0, 0, 0, 1, 0, 10, 0, 9, 0, 9, 0, 3, 0, 1, 0, 1, 0, 2, 0, 11, 0, 11, 0, 10, 0, 1, 0, 11, 0, 2, 0, 5, 0, 11, 0, 9, 0, 10, 0, 11, 0, 7, 0, 8, 0, 11, 0, 8, 0, 9, 0, 4, 0, 5, 0, 2, 0, 7, 0, 4, 0, 8, 0, 6, 0, 7, 0, 11, 0, 5, 0, 6, 0, 11, 0),
"name": "lambert152",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 12,
"vertex_data": PackedByteArray(255, 127, 254, 255, 0, 0, 0, 0, 0, 0, 254, 255, 255, 255, 0, 0, 255, 127, 254, 255, 255, 255, 0, 0, 0, 0, 254, 255, 0, 0, 0, 0, 255, 255, 254, 255, 0, 0, 0, 0, 255, 255, 254, 255, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, 127, 0, 0, 255, 255, 0, 0)
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_4ux16"]
resource_name = "Root Scene_SM_Prop_Container_01"
_surfaces = [{
"aabb": AABB(-9.08555, 0, -3.645, 18.1711, 7.77001, 7.29),
"attribute_data": PackedByteArray(121, 233, 160, 221, 110, 107, 110, 115, 121, 233, 110, 115, 110, 107, 160, 221, 110, 107, 160, 221, 186, 3, 87, 115, 186, 3, 137, 221, 93, 103, 87, 115, 93, 103, 137, 221, 195, 127, 21, 110, 240, 251, 21, 110, 240, 251, 226, 3, 195, 127, 226, 3, 150, 3, 226, 3, 93, 103, 87, 115, 186, 3, 137, 221, 93, 103, 137, 221, 186, 3, 87, 115, 150, 3, 226, 3, 195, 127, 21, 110, 195, 127, 226, 3, 150, 3, 21, 110, 240, 251, 226, 3, 121, 233, 160, 221, 110, 107, 160, 221, 110, 107, 110, 115, 121, 233, 110, 115, 110, 107, 110, 115, 110, 107, 110, 115, 150, 3, 21, 110, 110, 107, 160, 221, 240, 251, 21, 110),
"format": 34896613399,
"index_count": 60,
"index_data": PackedByteArray(0, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 2, 0, 0, 0, 4, 0, 5, 0, 7, 0, 6, 0, 6, 0, 7, 0, 8, 0, 9, 0, 11, 0, 10, 0, 9, 0, 12, 0, 11, 0, 9, 0, 13, 0, 12, 0, 14, 0, 16, 0, 15, 0, 15, 0, 17, 0, 14, 0, 18, 0, 20, 0, 19, 0, 19, 0, 21, 0, 18, 0, 19, 0, 20, 0, 22, 0, 23, 0, 25, 0, 24, 0, 23, 0, 27, 0, 26, 0, 23, 0, 26, 0, 25, 0, 4, 0, 28, 0, 2, 0, 29, 0, 13, 0, 9, 0, 30, 0, 27, 0, 23, 0, 22, 0, 31, 0, 19, 0),
"material": ExtResource("1_fgu0h"),
"name": "lambert152",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 32,
"vertex_data": PackedByteArray(255, 127, 254, 255, 0, 0, 255, 255, 0, 0, 254, 255, 255, 255, 255, 63, 255, 127, 254, 255, 255, 255, 255, 255, 0, 0, 254, 255, 0, 0, 255, 63, 255, 255, 254, 255, 0, 0, 255, 255, 255, 255, 254, 255, 255, 255, 255, 191, 255, 255, 0, 0, 255, 255, 255, 191, 255, 255, 254, 255, 0, 0, 255, 191, 255, 255, 0, 0, 0, 0, 255, 191, 255, 127, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 254, 255, 0, 0, 255, 255, 255, 127, 254, 255, 0, 0, 255, 255, 255, 255, 254, 255, 0, 0, 255, 255, 0, 0, 254, 255, 255, 255, 255, 191, 0, 0, 0, 0, 0, 0, 255, 191, 0, 0, 0, 0, 255, 255, 255, 191, 0, 0, 254, 255, 0, 0, 255, 191, 0, 0, 254, 255, 255, 255, 0, 128, 255, 127, 0, 0, 255, 255, 0, 128, 255, 127, 254, 255, 255, 255, 0, 128, 0, 0, 0, 0, 255, 255, 0, 128, 255, 255, 254, 255, 255, 255, 0, 128, 255, 127, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 63, 0, 0, 0, 0, 0, 0, 255, 63, 255, 127, 0, 0, 0, 0, 255, 63, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 0, 128, 255, 127, 255, 191, 255, 255, 255, 127, 255, 127, 255, 191, 255, 255, 255, 127, 255, 127, 255, 191, 255, 127, 0, 0, 255, 127, 0, 0, 255, 127, 0, 0, 255, 127, 0, 0, 255, 127, 254, 255, 255, 127, 254, 255, 255, 127, 254, 255, 255, 127, 255, 255, 255, 127, 254, 255, 255, 127, 254, 255, 255, 127, 254, 255, 255, 127, 254, 255, 255, 127, 254, 255, 255, 127, 255, 255, 255, 127, 255, 255, 255, 127, 255, 255, 255, 127, 255, 255, 255, 127, 255, 255, 255, 127, 255, 63, 0, 0, 255, 127, 0, 0, 255, 127, 0, 0, 255, 127, 255, 127, 255, 63, 255, 127, 255, 191, 255, 127, 254, 255, 255, 127, 255, 63, 255, 127, 255, 255)
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_3g704")
[sub_resource type="BoxShape3D" id="BoxShape3D_lqnrc"]
size = Vector3(18.166, 7.769, 7.175)
[node name="Container1" type="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.2252, 9.53674e-07, 7.54063)
[node name="SM_Prop_Container_01" type="MeshInstance3D" parent="."]
mesh = SubResource("ArrayMesh_4ux16")
skeleton = NodePath("")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00177002, 3.88474, 0)
shape = SubResource("BoxShape3D_lqnrc")

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,72 @@
[gd_scene load_steps=7 format=3 uid="uid://bylfs6dk8s7ea"]
[ext_resource type="PackedScene" uid="uid://boh0mf73cpyk3" path="res://WorldObjects/wall.tscn" id="1_uyih3"]
[sub_resource type="Animation" id="Animation_4n6h2"]
resource_name = "RESET"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Wall2:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 69.6674, 0)]
}
[sub_resource type="Animation" id="Animation_ak006"]
resource_name = "open"
length = 2.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Wall2:position")
tracks/0/interp = 2
tracks/0/loop_wrap = false
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 69.6674, 0), Vector3(0, -12.7737, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_o7nv8"]
_data = {
"RESET": SubResource("Animation_4n6h2"),
"open": SubResource("Animation_ak006")
}
[sub_resource type="BoxShape3D" id="BoxShape3D_oaqug"]
size = Vector3(180.842, 95.54, 143.84)
[sub_resource type="BoxShape3D" id="BoxShape3D_ve4sa"]
size = Vector3(164.406, 151.328, 12.4365)
[node name="ExitDoor" type="ExitDoor"]
transform = Transform3D(0.300345, 0, 0, 0, 0.300345, 0, 0, 0, 0.300345, 0, 0, 0)
[node name="Wall2" parent="." instance=ExtResource("1_uyih3")]
transform = Transform3D(-1.23393, -1.07873e-07, 0, 1.07873e-07, -1.23393, 0, 0, 0, 1.23393, 0, 69.6674, 0)
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_o7nv8")
}
[node name="ExitTrigger" type="ExitTrigger" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 30.6259, -81.7435)
collision_layer = 0
collision_mask = 4
monitorable = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="ExitTrigger"]
shape = SubResource("BoxShape3D_oaqug")
[node name="StaticBody3D" type="StaticBody3D" parent="."]
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 149.79, -0.855263)
shape = SubResource("BoxShape3D_ve4sa")

View file

@ -1,6 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://yrr5jjbpt60l"]
[ext_resource type="PackedScene" uid="uid://73cn4swq2gc7" path="res://game_ui.tscn" id="1_g28e3"]
[ext_resource type="PackedScene" uid="uid://73cn4swq2gc7" path="res://Levels/game_ui.tscn" id="1_g28e3"]
[node name="GameRoot3D" type="GameRoot3D"]
first_boot_level = ExtResource("1_g28e3")

102
godot/export_presets.cfg Normal file
View file

@ -0,0 +1,102 @@
[preset.0]
name="Windows Desktop"
platform="Windows Desktop"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="../../../../Downloads/Export/dirt-racer.exe"
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false
[preset.0.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=0
binary_format/embed_pck=true
texture_format/bptc=true
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
binary_format/architecture="x86_64"
codesign/enable=false
codesign/timestamp=true
codesign/timestamp_server_url=""
codesign/digest_algorithm=1
codesign/description=""
codesign/custom_options=PackedStringArray()
application/modify_resources=true
application/icon=""
application/console_wrapper_icon=""
application/icon_interpolation=4
application/file_version=""
application/product_version=""
application/company_name=""
application/product_name=""
application/file_description=""
application/copyright=""
application/trademarks=""
application/export_angle=0
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
$settings = New-ScheduledTaskSettingsSet
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
Start-ScheduledTask -TaskName godot_remote_debug
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
Remove-Item -Recurse -Force '{temp_dir}'"
[preset.1]
name="Linux/X11"
platform="Linux/X11"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="../../../../Downloads/Export/game.linux.x86_64"
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false
[preset.1.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=0
binary_format/embed_pck=true
texture_format/bptc=true
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
binary_format/architecture="x86_64"
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="#!/usr/bin/env bash
export DISPLAY=:0
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
\"{temp_dir}/{exe_name}\" {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""

View file

@ -43,6 +43,11 @@ brake={
3d_physics/layer_1="Default"
3d_physics/layer_2="Entities"
3d_physics/layer_3="Player"
3d_physics/layer_4="Turrets"
[navigation]
3d/default_cell_size=0.5
[rendering]

View file

@ -1,6 +1,6 @@
[gd_resource type="RallyRushGameMode" load_steps=3 format=3 uid="uid://r8bx64rqumkl"]
[ext_resource type="PackedScene" uid="uid://dkvgi7x2epurk" path="res://car_player.tscn" id="1_fnunr"]
[ext_resource type="PackedScene" uid="uid://dkvgi7x2epurk" path="res://GameObjects/car_player.tscn" id="1_fnunr"]
[sub_resource type="GameState" id="GameState_bm1yf"]

View file

@ -1,402 +0,0 @@
[gd_scene load_steps=19 format=3 uid="uid://e3dmisrrgqq7"]
[ext_resource type="RallyRushGameMode" uid="uid://r8bx64rqumkl" path="res://rally_rush_game_mode.tres" id="1_p2wxn"]
[ext_resource type="PackedScene" uid="uid://ceolgn0y2m6e4" path="res://key_pickup.tscn" id="3_j5pjd"]
[ext_resource type="PackedScene" uid="uid://brpccv2gy7pjs" path="res://turret.tscn" id="4_u6a78"]
[ext_resource type="PackedScene" uid="uid://boh0mf73cpyk3" path="res://WorldObjects/wall.tscn" id="5_k107i"]
[ext_resource type="PackedScene" uid="uid://dw47vdyt678og" path="res://WorldObjects/City/building_tall.tscn" id="6_vguh7"]
[ext_resource type="PackedScene" uid="uid://dro5j4614bj8d" path="res://WorldObjects/City/building_square.tscn" id="7_f7hv0"]
[ext_resource type="PackedScene" uid="uid://d2ltua7nsbicf" path="res://WorldObjects/Forest/tree_1.tscn" id="8_afqnf"]
[ext_resource type="PackedScene" uid="uid://bcy771u5xp5ks" path="res://WorldObjects/Forest/tree_clump_1.tscn" id="8_ttasg"]
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_whr25"]
rough = true
[sub_resource type="BoxShape3D" id="BoxShape3D_n0p5i"]
size = Vector3(429.847, 1, 453.185)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nkk7c"]
albedo_color = Color(0.182897, 0.208885, 0.233497, 1)
[sub_resource type="PlaneMesh" id="PlaneMesh_g4f08"]
size = Vector2(500, 492.925)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1kmc5"]
albedo_color = Color(0.172977, 0.228055, 0.0684017, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5vcqt"]
albedo_color = Color(0.290196, 0.32549, 0.545098, 1)
[sub_resource type="PlaneMesh" id="PlaneMesh_2c53x"]
size = Vector2(10000, 10000)
[sub_resource type="Animation" id="Animation_4n6h2"]
resource_name = "RESET"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Wall2:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(275.35, 0, -43.6241)]
}
[sub_resource type="Animation" id="Animation_ak006"]
resource_name = "open"
length = 2.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Wall2:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(275.35, 0, -43.6241), Vector3(275.35, 45.5758, -43.6241)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_o7nv8"]
_data = {
"RESET": SubResource("Animation_4n6h2"),
"open": SubResource("Animation_ak006")
}
[node name="TestMap2" type="Level3D"]
game_mode_prototype = ExtResource("1_p2wxn")
[node name="Track" type="Node" parent="."]
[node name="StaticBody3D" type="StaticBody3D" parent="Track"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0)
physics_material_override = SubResource("PhysicsMaterial_whr25")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Track/StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 162.29, 0, 176.592)
shape = SubResource("BoxShape3D_n0p5i")
[node name="MeshInstance3D" type="MeshInstance3D" parent="Track/StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 197.7, 0.499969, -58.6266)
material_override = SubResource("StandardMaterial3D_nkk7c")
mesh = SubResource("PlaneMesh_g4f08")
skeleton = NodePath("../..")
[node name="MeshInstance3D3" type="MeshInstance3D" parent="Track/StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 197.7, 0.499969, 434.526)
material_override = SubResource("StandardMaterial3D_1kmc5")
mesh = SubResource("PlaneMesh_g4f08")
skeleton = NodePath("../..")
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Track/StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -222.115, -23.9654, 162.32)
material_override = SubResource("StandardMaterial3D_5vcqt")
mesh = SubResource("PlaneMesh_2c53x")
skeleton = NodePath("../..")
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(-1, 8.41198e-08, -2.38035e-08, 0, 0.27228, 0.962218, 8.74228e-08, 0.962218, -0.27228, -0.0725344, 23.9486, -1.67003)
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.160191, 0.987086, 0, -0.987086, 0.160191, 0, 11.4689, 0)
[node name="SpawnPoint3D" type="SpawnPoint3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.28211, 0)
[node name="CanvasLayer" type="GameUI" parent="."]
[node name="DebugInfo" type="Label" parent="CanvasLayer"]
offset_right = 293.0
offset_bottom = 276.0
[node name="KeyPickup" parent="." instance=ExtResource("3_j5pjd")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.9755, -3.8147e-06, 65.2061)
[node name="KeyPickup2" parent="." instance=ExtResource("3_j5pjd")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.28003, 0, 285.053)
[node name="KeyPickup3" parent="." instance=ExtResource("3_j5pjd")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 322.429, 1.52588e-05, -14.5738)
[node name="Turret" parent="." instance=ExtResource("4_u6a78")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 178.697, 5.47171, 28.3981)
[node name="Wall" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 203.116, 0, -43.6241)
[node name="Wall15" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 404.191, 0, -43.6241)
[node name="Wall3" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 104.287, 0, -43.6241)
[node name="Wall4" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.89083, 0, -43.6241)
[node name="Wall5" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -51.2117, -60.1015, 98.4981)
[node name="Wall18" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -51.2117, -60.1015, 199.498)
[node name="Wall19" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -51.2117, -60.1015, 302.498)
[node name="Wall6" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -51.2117, -60.1015, -1.67426)
[node name="Wall24" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -51.2117, -60.1015, -100.982)
[node name="Wall7" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -49.7306, -7.62939e-06, 198.499)
[node name="Wall10" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -49.7306, -7.62939e-06, 298.596)
[node name="Wall20" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -54.7927, -7.62939e-06, 298.596)
[node name="Wall21" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -54.7927, -7.62939e-06, 198.499)
[node name="Wall23" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -47.9966, -7.62939e-06, -94.1335)
[node name="Wall8" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0.947126, -7.62939e-06, 350.162)
[node name="Wall9" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 101.947, -7.62939e-06, 350.162)
[node name="Wall11" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 204.088, -7.62939e-06, 350.863)
[node name="Wall12" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 304.088, -7.62939e-06, 350.537)
[node name="Wall22" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 407.427, -7.62939e-06, 350.537)
[node name="Wall13" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(1.31134e-07, 0, -1, 0, 1, 0, 1, 0, 1.31134e-07, 380.929, -7.62939e-06, 100.621)
[node name="Wall16" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(1.31134e-07, 0, -1, 0, 1, 0, 1, 0, 1.31134e-07, 380.929, -7.62939e-06, 203.315)
[node name="Wall17" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(1.31134e-07, 0, -1, 0, 1, 0, 1, 0, 1.31134e-07, 380.929, -7.62939e-06, 304.64)
[node name="Wall14" parent="." instance=ExtResource("5_k107i")]
transform = Transform3D(1.31134e-07, 0, -1, 0, 1, 0, 1, 0, 1.31134e-07, 380.929, -7.62939e-06, 0.620964)
[node name="Building_Tall" parent="." instance=ExtResource("6_vguh7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 283.525, 3.05176e-05, 17.3603)
[node name="Building_Tall2" parent="." instance=ExtResource("6_vguh7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 249.782, 3.05176e-05, 17.3603)
[node name="Building_Square" parent="." instance=ExtResource("7_f7hv0")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 169.28, 1.09139e-11, 26.6662)
[node name="Building_Square2" parent="." instance=ExtResource("7_f7hv0")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 265.655, 1.52588e-05, 108.798)
[node name="Building_Square3" parent="." instance=ExtResource("7_f7hv0")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 173.342, 1.52588e-05, 108.798)
[node name="tree_1" parent="." instance=ExtResource("8_afqnf")]
[node name="ExitDoor" type="ExitDoor" parent="."]
[node name="Wall2" parent="ExitDoor" instance=ExtResource("5_k107i")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 275.35, 0, -43.6241)
[node name="AnimationPlayer" type="AnimationPlayer" parent="ExitDoor"]
libraries = {
"": SubResource("AnimationLibrary_o7nv8")
}
[node name="TreeClump1" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 64.4707, 0, 208.92)
[node name="TreeClump2" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 112.651, 0, 208.92)
[node name="TreeClump3" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.903851, 0, -0.427847, 0, 1, 0, 0.427847, 0, 0.903851, 160.67, 0, 221.783)
[node name="TreeClump4" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.746034, 0, 0.665908, 0, 1, 0, -0.665908, 0, 0.746034, 199.264, 0, 211.758)
[node name="TreeClump5" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.710628, 0, -0.703568, 0, 1, 0, 0.703568, 0, -0.710628, 210.358, 0, 235.16)
[node name="TreeClump6" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.949737, 0, 0.313048, 0, 1, 0, -0.313048, 0, -0.949737, 215.523, 0, 254.392)
[node name="TreeClump56" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.832564, 0, 0.553929, 0, 1, 0, -0.553929, 0, -0.832564, 237.905, 0, 258.735)
[node name="TreeClump7" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.997277, 0, -0.0737429, 0, 1, 0, 0.0737429, 0, -0.997277, 279.885, 0, 272.054)
[node name="TreeClump8" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.673928, 0, -0.738797, 0, 1, 0, 0.738797, 0, 0.673928, 319.458, 0, 279.407)
[node name="TreeClump9" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.988668, 0, 0.150122, 0, 1, 0, -0.150122, 0, 0.988668, 281.504, 0, 286.13)
[node name="TreeClump11" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.946261, 0, -0.323405, 0, 1, 0, 0.323405, 0, 0.946261, 241.148, 0, 282.439)
[node name="TreeClump12" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.875262, 0, -0.483649, 0, 1, 0, 0.483649, 0, 0.875262, 199.448, 0, 264.102)
[node name="TreeClump13" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.900205, 0, -0.435467, 0, 1, 0, 0.435467, 0, 0.900205, 159.558, 0, 243.642)
[node name="TreeClump14" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.999995, 0, 0.00312342, 0, 1, 0, -0.00312342, 0, 0.999995, 114.195, 0, 233.042)
[node name="TreeClump15" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.963738, 0, 0.266851, 0, 1, 0, -0.266851, 0, 0.963738, 65.9432, 0, 240.582)
[node name="TreeClump16" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.0477164, 0, 0.998861, 0, 1, 0, -0.998861, 0, -0.0477164, 14.3677, 0.176632, 214.065)
[node name="TreeClump17" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.14465, 0, 0.989483, 0, 1, 0, -0.989483, 0, -0.14465, 17.5073, 0, 265.281)
[node name="TreeClump18" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.14465, 0, 0.989483, 0, 1, 0, -0.989483, 0, -0.14465, 44.6038, 0, 274.313)
[node name="TreeClump19" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.677351, 0, 0.73566, 0, 1, 0, -0.73566, 0, -0.677351, 36.143, 0, 312.681)
[node name="TreeClump20" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.993343, 0, 0.115198, 0, 1, 0, -0.115198, 0, -0.993343, 72.7878, 0, 311.346)
[node name="TreeClump21" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.999999, 0, -0.00136105, 0, 1, 0, 0.00136105, 0, -0.999999, 63.9524, 0, 337.338)
[node name="TreeClump22" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.999999, 0, -0.00136105, 0, 1, 0, 0.00136105, 0, -0.999999, 114.483, 0, 340.258)
[node name="TreeClump23" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.999999, 0, -0.00136105, 0, 1, 0, 0.00136105, 0, -0.999999, 164.485, 0, 339.708)
[node name="TreeClump24" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.999999, 0, -0.00136105, 0, 1, 0, 0.00136105, 0, -0.999999, 215.772, -1.52588e-05, 340.161)
[node name="TreeClump25" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.999999, 0, -0.00136105, 0, 1, 0, 0.00136105, 0, -0.999999, 265.772, -1.52588e-05, 341.439)
[node name="TreeClump26" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.999999, 0, -0.00136105, 0, 1, 0, 0.00136105, 0, -0.999999, 319.326, -1.52588e-05, 341.495)
[node name="TreeClump27" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.989318, 0, -0.145772, 0, 1, 0, 0.145772, 0, -0.989318, 272.856, -1.52588e-05, 311.392)
[node name="TreeClump28" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.955582, 0, 0.294724, 0, 1, 0, -0.294724, 0, -0.955582, 228.159, -1.52588e-05, 303.891)
[node name="TreeClump29" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.0174346, 0, -0.999848, 0, 1, 0, 0.999848, 0, 0.0174346, 180.474, -0.00174713, 310.019)
[node name="TreeClump60" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.0174346, 0, -0.999848, 0, 1, 0, 0.999848, 0, 0.0174346, 180.108, -0.0387268, 356.465)
[node name="TreeClump30" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.9907, 0, 0.136062, 0, 1, 0, -0.136062, 0, -0.9907, 120.704, -0.00493622, 317.72)
[node name="TreeClump58" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.988202, 0, -0.153159, 0, 1, 0, 0.153159, 0, 0.988202, 136.064, 0.0132599, 294.864)
[node name="TreeClump59" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.988202, 0, -0.153159, 0, 1, 0, 0.153159, 0, 0.988202, 136.064, 0.00423431, 306.2)
[node name="TreeClump31" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.943968, 0, 0.330037, 0, 1, 0, -0.330037, 0, -0.943968, 130.61, 0.00730133, 286.561)
[node name="TreeClump32" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.999989, 0, -0.00472952, 0, 1, 0, 0.00472952, 0, -0.999989, 108.02, 0, 258.198)
[node name="TreeClump33" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.592125, 0, -0.805846, 0, 1, 0, 0.805846, 0, 0.592125, 75.6799, 0.00844574, 269.823)
[node name="TreeClump34" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.996624, 0, 0.0820958, 0, 1, 0, -0.0820958, 0, -0.996624, 90.9779, 0.0106506, 279.475)
[node name="TreeClump35" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.917401, 0, 0.397965, 0, 1, 0, -0.397965, 0, -0.917401, 185.761, 2.28882e-05, 287.792)
[node name="TreeClump57" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.858629, 0, 0.512597, 0, 1, 0, -0.512597, 0, -0.858629, 147.009, 2.28882e-05, 266.746)
[node name="TreeClump36" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.994956, 0, -0.10031, 0, 1, 0, 0.10031, 0, -0.994956, 259.065, 2.28882e-05, 218.801)
[node name="TreeClump37" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.998265, 0, -0.0588879, 0, 1, 0, 0.0588879, 0, -0.998265, 302.528, 2.28882e-05, 204.999)
[node name="TreeClump38" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.99663, 0, -0.0820252, 0, 1, 0, 0.0820252, 0, -0.99663, 258.198, 2.28882e-05, 208.103)
[node name="TreeClump55" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.245714, 0, -0.969342, 0, 1, 0, 0.969342, 0, -0.245714, 230.137, 2.28882e-05, 232.824)
[node name="TreeClump39" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.99663, 0, -0.0820252, 0, 1, 0, 0.0820252, 0, -0.99663, 348.441, 2.28882e-05, 202.556)
[node name="TreeClump40" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.99663, 0, -0.0820252, 0, 1, 0, 0.0820252, 0, -0.99663, 350.834, 2.28882e-05, 211.919)
[node name="TreeClump48" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.99663, 0, -0.0820252, 0, 1, 0, 0.0820252, 0, -0.99663, 304.9, 2.28882e-05, 214.758)
[node name="TreeClump49" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.994956, 0, -0.10031, 0, 1, 0, 0.10031, 0, -0.994956, 255.056, 2.28882e-05, 227.988)
[node name="TreeClump50" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.99663, 0, -0.0820252, 0, 1, 0, 0.0820252, 0, -0.99663, 346.825, 2.28882e-05, 221.106)
[node name="TreeClump51" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.99663, 0, -0.0820252, 0, 1, 0, 0.0820252, 0, -0.99663, 300.891, 2.28882e-05, 223.945)
[node name="TreeClump52" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.999946, 0, 0.0104195, 0, 1, 0, -0.0104195, 0, -0.999946, 247.251, 2.28882e-05, 245.272)
[node name="TreeClump53" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.999586, 0, 0.0287768, 0, 1, 0, -0.0287768, 0, -0.999586, 339.218, 2.28882e-05, 248.588)
[node name="TreeClump54" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.999586, 0, 0.0287768, 0, 1, 0, -0.0287768, 0, -0.999586, 293.252, 2.28882e-05, 246.327)
[node name="TreeClump41" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.99983, 0, -0.0184294, 0, 1, 0, 0.0184294, 0, -0.99983, 150.718, 2.28882e-05, 206.918)
[node name="TreeClump46" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.99983, 0, -0.0184294, 0, 1, 0, 0.0184294, 0, -0.99983, 191.808, 2.28882e-05, 204.079)
[node name="TreeClump47" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.99983, 0, -0.0184294, 0, 1, 0, 0.0184294, 0, -0.99983, 168.925, 2.28882e-05, 216.272)
[node name="TreeClump42" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.997851, 0, 0.0655253, 0, 1, 0, -0.0655253, 0, -0.997851, 100.926, 2.28882e-05, 204.707)
[node name="TreeClump43" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.999555, 0, -0.0298055, 0, 1, 0, 0.0298055, 0, -0.999555, 58.38, 2.28882e-05, 203.719)
[node name="TreeClump44" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.99663, 0, -0.0820252, 0, 1, 0, 0.0820252, 0, -0.99663, -2.82897, 3.8147e-05, 199.647)
[node name="TreeClump45" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(-0.99663, 0, -0.0820252, 0, 1, 0, 0.0820252, 0, -0.99663, -47.6028, 3.8147e-05, 199.647)
[node name="TreeClump10" parent="." instance=ExtResource("8_ttasg")]
transform = Transform3D(0.930827, 0, 0.365462, 0, 1, 0, -0.365462, 0, 0.930827, 313.648, 0, 297.946)

27
src/beacon_powerup.cpp Normal file
View file

@ -0,0 +1,27 @@
#include "beacon_powerup.hpp"
#include "godot_cpp/variant/utility_functions.hpp"
#include "turret.hpp"
#include "utils/godot_macros.h"
namespace godot {
void BeaconPowerup::_bind_methods() {}
void BeaconPowerup::_enter_tree() { GDGAMEONLY();
this->connect("body_entered", callable_mp(this, &BeaconPowerup::body_entered));
}
void BeaconPowerup::_exit_tree() { GDGAMEONLY();
for(Turret *turret : this->affected) {
turret->set_invert_targets(false);
}
}
void BeaconPowerup::body_entered(Node3D *node) {
UtilityFunctions::print(this->get_path(), " overlapped ", node->get_path());
Turret *turret = Object::cast_to<Turret>(node);
if(!turret) return;
turret->set_invert_targets(true);
this->affected.push_back(turret);
UtilityFunctions::print(this->get_path(), " ", node->get_path(), " is a turret");
}
}

22
src/beacon_powerup.hpp Normal file
View file

@ -0,0 +1,22 @@
#ifndef BEACON_POWERUP_HPP
#define BEACON_POWERUP_HPP
#include "godot_cpp/templates/vector.hpp"
#include "turret.hpp"
#include <godot_cpp/classes/area3d.hpp>
namespace godot {
class BeaconPowerup : public Area3D {
GDCLASS(BeaconPowerup, Area3D);
static void _bind_methods();
public:
virtual void _enter_tree() override;
virtual void _exit_tree() override;
void body_entered(Node3D *node);
private:
Vector<Turret*> affected{};
};
}
#endif // !BEACON_POWERUP_HPP

View file

@ -25,8 +25,7 @@ void Beam::_process(double delta_time) { GDGAMEONLY();
}
void Beam::body_entered(Node3D *node) {
CarPlayer *player = Object::cast_to<CarPlayer>(node);
if(player) player->damage();
node->call("damage");
}
void Beam::set_from_to(Vector3 from, Vector3 to) {

View file

@ -133,26 +133,6 @@ void CarPhysics::on_body_shape_exited(RID body_rid, Node *body, int body_shape_i
this->grounded_objects.erase(body);
}
Vector3 CarPhysics::local_to_world_velocity() const {
Basis const basis = this->get_global_basis();
Vector3 world_velocity{
this->local_velocity.x * basis.get_column(0) +
this->local_velocity.y * basis.get_column(1) +
this->local_velocity.z * basis.get_column(2)
};
return world_velocity;
}
Vector3 CarPhysics::world_to_local_velocity() const {
Basis const basis = this->get_global_basis();
Vector3 const velocity = this->get_linear_velocity();
return Vector3{
basis.get_column(0).dot(velocity),
0.f,
basis.get_column(2).dot(velocity)
};
}
float CarPhysics::evaluate_oversteer_curve(float speed) const {
return this->current_steering != 0.f
? this->oversteer_curve->sample(speed / this->oversteer_curve_x_scale)
@ -185,6 +165,26 @@ float CarPhysics::get_current_acceleration() const {
: (this->engine_brake_force * (1.f-Math::abs(this->current_oversteer * this->oversteer_brake_penalty)))));
}
Vector3 CarPhysics::local_to_world_velocity() const {
Basis const basis = this->get_global_basis();
Vector3 world_velocity{
this->local_velocity.x * basis.get_column(0) +
this->local_velocity.y * basis.get_column(1) +
this->local_velocity.z * basis.get_column(2)
};
return world_velocity;
}
Vector3 CarPhysics::world_to_local_velocity() const {
Basis const basis = this->get_global_basis();
Vector3 const velocity = this->get_linear_velocity();
return Vector3{
basis.get_column(0).dot(velocity),
0.f,
basis.get_column(2).dot(velocity)
};
}
void CarPhysics::set_target_speed(float target) {
this->target_speed = target;
}

View file

@ -27,9 +27,6 @@ protected:
void integrate_oversteer(PhysicsDirectBodyState3D *state);
void on_body_shape_entered(RID body_rid, Node *node, int body_shape_index, int local_shape_index);
void on_body_shape_exited(RID body_rid, Node *node, int body_shape_index, int local_shape_index);
// convert the local_velocity to world coordinates
Vector3 local_to_world_velocity() const;
Vector3 world_to_local_velocity() const;
// evaluate the oversteer curve with a speed, taking *_x_scale into account
float evaluate_oversteer_curve(float speed) const;
// evaluate the understeer curve with a speed, taking *_x_scale into account
@ -40,6 +37,9 @@ protected:
bool is_grounded() const;
float get_current_acceleration() const;
public:
// convert the local_velocity to world coordinates
Vector3 local_to_world_velocity() const;
Vector3 world_to_local_velocity() const;
void set_target_speed(float target);
float get_target_speed() const;
void set_current_steering(float steering);

View file

@ -1,6 +1,9 @@
#include "car_player.hpp"
#include "godot_cpp/classes/global_constants.hpp"
#include "godot_cpp/classes/time.hpp"
#include "rally_rush_game_mode.hpp"
#include "utils/game_root.hpp"
#include "utils/godot_macros.h"
#include "utils/player_input.hpp"
#include <godot_cpp/variant/transform3d.hpp>
#include <godot_cpp/classes/physics_direct_body_state3d.hpp>
@ -8,6 +11,20 @@
namespace godot {
void CarPlayer::_bind_methods() {
#define CLASSNAME CarPlayer
GDFUNCTION(damage);
GDPROPERTY_HINTED(turret_scene, Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE, "PackedScene");
GDPROPERTY_HINTED(beacon_scene, Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE, "PackedScene");
GDPROPERTY_HINTED(shield_scene, Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE, "PackedScene");
}
void CarPlayer::_ready() { GDGAMEONLY();
this->roof_slot = this->get_node<Node3D>("RoofSlot");
}
void CarPlayer::_process(double delta_time) { GDGAMEONLY();
if(this->roof_slot->get_child_count() > 0 && Time::get_singleton()->get_ticks_msec() * 0.001 > this->end_of_powerup) {
this->destroy_all_powerups();
}
}
void CarPlayer::setup_player_input(PlayerInput *input) {
@ -42,4 +59,46 @@ void CarPlayer::damage() {
game_mode->notify_player_death();
}
}
void CarPlayer::destroy_all_powerups() {
for(int i = 0; i < this->roof_slot->get_child_count(); ++i) {
this->roof_slot->get_child(0)->queue_free();
}
}
void CarPlayer::activate_powerup(Ref<PackedScene> scene) {
this->destroy_all_powerups();
Node3D *powerup = Object::cast_to<Node3D>(scene->instantiate());
this->roof_slot->add_child(powerup);
powerup->set_global_transform(this->roof_slot->get_global_transform());
this->end_of_powerup = Time::get_singleton()->get_ticks_msec() * 0.001 + this->powerup_duration;
}
void CarPlayer::activate_turret() { this->activate_powerup(this->turret); }
void CarPlayer::activate_beacon() { this->activate_powerup(this->beacon); }
void CarPlayer::activate_shield() { this->activate_powerup(this->turret); }
void CarPlayer::set_turret_scene(Ref<PackedScene> scene) {
this->turret = scene;
}
Ref<PackedScene> CarPlayer::get_turret_scene() const {
return this->turret;
}
void CarPlayer::set_beacon_scene(Ref<PackedScene> scene) {
this->beacon = scene;
}
Ref<PackedScene> CarPlayer::get_beacon_scene() const {
return this->beacon;
}
void CarPlayer::set_shield_scene(Ref<PackedScene> scene) {
this->shield = scene;
}
Ref<PackedScene> CarPlayer::get_shield_scene() const {
return this->shield;
}
}

View file

@ -2,6 +2,7 @@
#define CAR_PLAYER_HPP
#include "car_physics.hpp"
#include "godot_cpp/classes/packed_scene.hpp"
#include "utils/player.hpp"
#include <godot_cpp/classes/input_event.hpp>
#include <godot_cpp/classes/rigid_body3d.hpp>
@ -13,6 +14,8 @@ class CarPlayer : public CarPhysics,
GDCLASS(CarPlayer, CarPhysics);
static void _bind_methods();
public:
virtual void _ready() override;
virtual void _process(double delta_time) override;
virtual void setup_player_input(PlayerInput *input) override;
virtual void spawn_at_position(Transform3D const &transform) override;
virtual Node *to_node() override;
@ -22,12 +25,33 @@ public:
void on_accelerate(Ref<InputEvent> event, float value);
void damage();
void destroy_all_powerups();
void activate_powerup(Ref<PackedScene> scene);
void activate_turret();
void activate_beacon();
void activate_shield();
void set_turret_scene(Ref<PackedScene> scene);
Ref<PackedScene> get_turret_scene() const;
void set_beacon_scene(Ref<PackedScene> scene);
Ref<PackedScene> get_beacon_scene() const;
void set_shield_scene(Ref<PackedScene> scene);
Ref<PackedScene> get_shield_scene() const;
private:
int health{5};
double end_of_powerup{0.0};
Node3D *roof_slot{nullptr};
Ref<PackedScene> turret;
Ref<PackedScene> beacon;
Ref<PackedScene> shield;
const float max_speed{40.f};
const float max_speed_reverse{10.f};
const float steering_factor{0.7f};
const float powerup_duration{10.f};
};
};

41
src/damage_area.cpp Normal file
View file

@ -0,0 +1,41 @@
#include "damage_area.hpp"
#include "godot_cpp/classes/global_constants.hpp"
#include "utils/godot_macros.h"
namespace godot {
void DamageArea::_bind_methods() {
#define CLASSNAME DamageArea
GDPROPERTY_HINTED(target_classes, Variant::ARRAY, PROPERTY_HINT_ARRAY_TYPE, "StringName");
}
void DamageArea::_enter_tree() { GDGAMEONLY();
this->connect("body_entered", callable_mp(this, &DamageArea::body_entered));
this->anim = this->get_node<AnimationPlayer>("AnimationPlayer");
}
void DamageArea::_process(double delta_time) {
if(this->anim && this->anim->get_current_animation_position() >= this->anim->get_current_animation_length())
this->queue_free();
}
void DamageArea::body_entered(Node3D *node) {
if(this->target_classes.has(node->get_class()))
node->call("damage");
}
void DamageArea::set_target_classes(Array array) {
this->target_classes.clear();
for(int i = 0; i < array.size(); ++i) {
if(array[i].get_type() == Variant::STRING_NAME && !this->target_classes.has(array[i]))
this->target_classes.push_back(array[i]);
else this->target_classes.push_back("");
}
}
Array DamageArea::get_target_classes() const {
Array a{};
for(StringName const &name : this->target_classes)
a.push_back(name);
return a;
}
}

25
src/damage_area.hpp Normal file
View file

@ -0,0 +1,25 @@
#ifndef DAMAGE_AREA_HPP
#define DAMAGE_AREA_HPP
#include "godot_cpp/classes/animation_player.hpp"
#include <godot_cpp/classes/area3d.hpp>
#include <godot_cpp/templates/vector.hpp>
namespace godot {
class DamageArea : public Area3D {
GDCLASS(DamageArea, Area3D);
static void _bind_methods();
public:
virtual void _enter_tree() override;
virtual void _process(double delta_time) override;
protected:
void body_entered(Node3D *node);
void set_target_classes(Array array);
Array get_target_classes() const;
private:
Vector<StringName> target_classes{};
AnimationPlayer *anim{nullptr};
};
}
#endif // !DAMAGE_AREA_HPP

82
src/drone.cpp Normal file
View file

@ -0,0 +1,82 @@
#include "drone.hpp"
#include "godot_cpp/classes/animation_player.hpp"
#include "godot_cpp/classes/global_constants.hpp"
#include "utils/game_root.hpp"
#include "utils/godot_macros.h"
#include <godot_cpp/classes/navigation_agent3d.hpp>
namespace godot {
void Drone::_bind_methods() {
#define CLASSNAME Drone
GDPROPERTY_HINTED(explosion_scene, Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE, "PackedScene");
}
void Drone::_ready() { GDGAMEONLY();
this->agent = this->get_node<NavigationAgent3D>("NavigationAgent3D");
this->anim = this->get_node<AnimationPlayer>("AnimationPlayer");
this->player = Object::cast_to<CarPlayer>(GameRoot3D::get_singleton()->get_players()[0]->to_node());
this->recalculate_navigation();
}
void Drone::_process(double delta_time) { GDGAMEONLY();
switch(this->state) {
case DroneState::CHASE:
this->process_chase(delta_time);
break;
case DroneState::FLEE:
this->process_flee(delta_time);
break;
case DroneState::DROP:
if(this->anim->get_current_animation_position() >= this->anim->get_current_animation_length())
this->spawn_explosion();
break;
}
}
void Drone::process_chase(double delta_time) {
this->process_navigate(delta_time);
if(this->get_global_position().distance_to(this->agent->get_target_position()) < 2.f) {
this->anim->play("drop");
this->state = DroneState::DROP;
}
}
void Drone::process_flee(double delta_time) {
this->process_navigate(delta_time);
}
void Drone::process_navigate(double delta_time) {
this->next_recalc--;
if(this->next_recalc == 0) this->recalculate_navigation();
Vector3 path_node{this->agent->get_next_path_position()};
Vector3 forward = (path_node - this->get_global_position()).normalized();
this->set_global_position(this->get_global_position() + forward * float(delta_time) * this->speed);
Vector3 left = forward.cross({0.f, 1.f, 0.f});
this->set_global_basis({left, left.cross(forward), forward});
}
void Drone::recalculate_navigation() {
this->next_recalc = this->recalc_frame_interval;
Vector3 player_pos = this->player->get_global_position();
Vector3 target = player_pos + (this->player->local_to_world_velocity() * lead_time);
if(this->state == DroneState::CHASE)
this->agent->set_target_position(target);
else if(this->state == DroneState::FLEE)
this->agent->set_target_position(target + (this->get_global_position() - target).normalized() * 100.f);
}
void Drone::spawn_explosion() {
this->set_process(false);
Node3D *node = Object::cast_to<Node3D>(this->explosion_scene->instantiate());
this->add_sibling(node);
node->set_global_position(this->get_global_position());
this->queue_free();
}
void Drone::set_explosion_scene(Ref<PackedScene> scene) {
this->explosion_scene = scene;
}
Ref<PackedScene> Drone::get_explosion_scene() const {
return this->explosion_scene;
}
}

42
src/drone.hpp Normal file
View file

@ -0,0 +1,42 @@
#ifndef DRONE_HPP
#define DRONE_HPP
#include "car_player.hpp"
#include "godot_cpp/classes/animation_player.hpp"
#include "godot_cpp/classes/navigation_agent3d.hpp"
#include "godot_cpp/classes/packed_scene.hpp"
#include <godot_cpp/classes/node3d.hpp>
namespace godot {
enum class DroneState {
CHASE, DROP, FLEE
};
class Drone : public Node3D {
GDCLASS(Drone, Node3D);
static void _bind_methods();
public:
virtual void _ready() override;
virtual void _process(double delta_time) override;
void process_chase(double delta_time);
void process_flee(double delta_time);
void process_navigate(double delta_time);
void recalculate_navigation();
void spawn_explosion();
void set_explosion_scene(Ref<PackedScene> scene);
Ref<PackedScene> get_explosion_scene() const;
private:
int recalc_frame_interval{10};
int next_recalc{10};
float speed{30.f};
float lead_time{2.f};
DroneState state{DroneState::CHASE};
CarPlayer *player{nullptr};
Ref<PackedScene> explosion_scene{};
NavigationAgent3D *agent{nullptr};
AnimationPlayer *anim{nullptr};
};
}
#endif // !DRONE_HPP

18
src/drone_target.cpp Normal file
View file

@ -0,0 +1,18 @@
#include "drone_target.hpp"
#include "utils/godot_macros.h"
namespace godot {
void EnemyTargetBody::_bind_methods() {
#define CLASSNAME EnemyTargetBody
GDFUNCTION(damage);
}
void EnemyTargetBody::_enter_tree() {
this->set_freeze_mode(FreezeMode::FREEZE_MODE_KINEMATIC);
this->set_freeze_enabled(true);
}
void EnemyTargetBody::damage() {
this->get_owner()->queue_free();
}
}

16
src/drone_target.hpp Normal file
View file

@ -0,0 +1,16 @@
#ifndef ENEMY_TARGET_BODY_HPP
#define ENEMY_TARGET_BODY_HPP
#include <godot_cpp/classes/rigid_body3d.hpp>
namespace godot {
class EnemyTargetBody : public RigidBody3D {
GDCLASS(EnemyTargetBody, RigidBody3D);
static void _bind_methods();
public:
virtual void _enter_tree() override;
void damage();
};
}
#endif // !ENEMY_TARGET_BODY_HPP

View file

@ -17,7 +17,7 @@ public:
void set_drones(bool val);
bool get_drones() const;
private:
bool keys{false};
bool keys{true};
bool cars{true};
bool drones{true};
};

View file

@ -1,13 +1,14 @@
#include "exit_trigger.hpp"
#include "rally_rush_game_mode.hpp"
#include "utils/game_root.hpp"
#include "utils/godot_macros.h"
namespace godot {
void ExitTrigger::_bind_methods() {
#define CLASSNAME ExitTrigger
}
void ExitTrigger::_enter_tree() {
void ExitTrigger::_enter_tree() { GDGAMEONLY();
this->connect("body_entered", callable_mp(this, &ExitTrigger::body_entered));
}

View file

@ -21,11 +21,13 @@ void RallyRushGameMode::notify_key_found() {
this->emit_signal("all_keys_found");
}
#define GAME_END_SCENE "res://Levels/game_end_screen.tscn"
void RallyRushGameMode::notify_player_death() {
GameRoot3D::get_singleton()->replace_levels(ResourceLoader::get_singleton()->load("res://game_end_screen.tscn"));
GameRoot3D::get_singleton()->replace_levels(ResourceLoader::get_singleton()->load(GAME_END_SCENE));
}
void RallyRushGameMode::notify_player_escaped() {
GameRoot3D::get_singleton()->replace_levels(ResourceLoader::get_singleton()->load("res://game_end_screen.tscn"));
GameRoot3D::get_singleton()->replace_levels(ResourceLoader::get_singleton()->load(GAME_END_SCENE));
}
}

View file

@ -1,14 +1,20 @@
#include "register_types.h"
#include "beacon_powerup.hpp"
#include "beam.hpp"
#include "car_physics.hpp"
#include "car_player.hpp"
#include "damage_area.hpp"
#include "drone.hpp"
#include "drone_target.hpp"
#include "end_screen.hpp"
#include "enemy_spawnpoint.hpp"
#include "exit_door.hpp"
#include "exit_trigger.hpp"
#include "game_ui.hpp"
#include "key_pickup.hpp"
#include "menu_ui.hpp"
#include "rally_rush_game_mode.hpp"
#include "spawner.hpp"
#include "turret.hpp"
#include "utils/game_mode.hpp"
#include "utils/game_root.hpp"
@ -16,6 +22,7 @@
#include "utils/level.hpp"
#include "utils/player_input.hpp"
#include "utils/spawn_point.hpp"
#include "weapon_pickup.hpp"
#include <gdextension_interface.h>
#include <godot_cpp/core/class_db.hpp>
#include <godot_cpp/core/defs.hpp>
@ -46,6 +53,13 @@ void initialize_gdextension_types(ModuleInitializationLevel p_level)
ClassDB::register_class<Beam>();
ClassDB::register_class<ExitDoor>();
ClassDB::register_class<ExitTrigger>();
ClassDB::register_class<Spawner>();
ClassDB::register_class<EnemySpawnpoint>();
ClassDB::register_class<Drone>();
ClassDB::register_class<DamageArea>();
ClassDB::register_class<EnemyTargetBody>();
ClassDB::register_class<WeaponPickup>();
ClassDB::register_class<BeaconPowerup>();
}
extern "C"

View file

@ -13,32 +13,35 @@ void Spawner::_bind_methods() {
GDPROPERTY_HINTED(key_scene, Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE, "PackedScene");
}
void Spawner::_ready() {
void Spawner::_enter_tree() { GDGAMEONLY();
this->game_mode = Object::cast_to<RallyRushGameMode>(GameRoot3D::get_singleton()->get_game_mode().ptr());
this->spawn_key();
this->spawn_key();
this->spawn_key();
Callable spawn_key_mp = callable_mp(this, &Spawner::spawn_key);
spawn_key_mp.call_deferred();
spawn_key_mp.call_deferred();
spawn_key_mp.call_deferred();
}
void Spawner::_process(double delta_time) {
if(Time::get_singleton()->get_ticks_msec() * 0.001f > next) {
void Spawner::_process(double delta_time) { GDGAMEONLY();
double time = Time::get_singleton()->get_ticks_msec() * 0.001;
if(time > next) {
next = time + 5.f / (1 + this->game_mode->get_num_found_keys());
if(num_cars < this->max_enemy_cars() && tick % 2 == 0) this->spawn_enemy_car();
else if(num_drones < this->max_enemy_drones()) this->spawn_enemy_drone();
}
}
int Spawner::max_enemy_cars() {
return this->game_mode->get_num_found_keys() * 3;
return (this->game_mode->get_num_found_keys() + 1) * 3;
}
int Spawner::max_enemy_drones() {
return this->game_mode->get_num_found_keys() * 3;
return (this->game_mode->get_num_found_keys() + 1) * 3;
}
void Spawner::spawn_enemy_car() {
int const child_count{this->get_child_count()};
int iter_count{0};
int child_index{int(this->rng.get_state()) % child_count};
int child_index{int(this->rng.randi()) % child_count};
while(iter_count++ < child_count) {
EnemySpawnpoint *spawnpoint = Object::cast_to<EnemySpawnpoint>(this->get_child(child_index));
child_index++;
@ -46,7 +49,7 @@ void Spawner::spawn_enemy_car() {
if(!spawnpoint->get_cars()) continue;
if(spawnpoint->player_can_see()) continue;
Node3D *node = Object::cast_to<Node3D>(this->car_scene->instantiate());
this->get_parent()->add_child(node);
this->add_sibling(node);
node->set_global_transform(spawnpoint->get_global_transform());
this->num_cars++;
node->connect("tree_exited", callable_mp(this, &Spawner::decrement_cars));
@ -57,7 +60,7 @@ void Spawner::spawn_enemy_car() {
void Spawner::spawn_enemy_drone() {
int const child_count{this->get_child_count()};
int iter_count{0};
int child_index{int(this->rng.get_state()) % child_count};
int child_index{int(this->rng.randi()) % child_count};
while(iter_count++ < child_count) {
EnemySpawnpoint *spawnpoint = Object::cast_to<EnemySpawnpoint>(this->get_child(child_index));
child_index++;
@ -65,7 +68,7 @@ void Spawner::spawn_enemy_drone() {
if(!spawnpoint->get_drones()) continue;
if(spawnpoint->player_can_see()) continue;
Node3D *node = Object::cast_to<Node3D>(this->drone_scene->instantiate());
this->get_parent()->add_child(node);
this->add_sibling(node);
node->set_global_transform(spawnpoint->get_global_transform());
this->num_drones++;
node->connect("tree_exited", callable_mp(this, &Spawner::decrement_drones));
@ -76,14 +79,14 @@ void Spawner::spawn_enemy_drone() {
void Spawner::spawn_key() {
int const child_count{this->get_child_count()};
int iter_count{0};
int child_index{int(this->rng.get_state()) % child_count};
int child_index{int(this->rng.randi()) % child_count};
while(iter_count++ < child_count) {
EnemySpawnpoint *spawnpoint = Object::cast_to<EnemySpawnpoint>(this->get_child(child_index));
child_index++;
if(!spawnpoint) continue;
if(!spawnpoint->get_keys()) continue;
Node3D *node = Object::cast_to<Node3D>(this->key_scene->instantiate());
this->get_parent()->add_child(node);
this->add_sibling(node);
node->set_global_transform(spawnpoint->get_global_transform());
return;
}

View file

@ -14,12 +14,11 @@ class Spawner : public Node {
GDCLASS(Spawner, Node);
static void _bind_methods();
public:
virtual void _ready() override;
virtual void _enter_tree() override;
virtual void _process(double delta_time) override;
int max_enemy_cars();
int max_enemy_drones();
protected:
void spawn_enemy_car();
void spawn_enemy_drone();

View file

@ -15,7 +15,10 @@ void Turret::_bind_methods() {
GDPROPERTY_HINTED(beam_scene, Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE, "PackedScene");
}
void Turret::_enter_tree() { GDGAMEONLY();
void Turret::_enter_tree() {
this->set_freeze_mode(FreezeMode::FREEZE_MODE_KINEMATIC);
this->set_freeze_enabled(true);
GDGAMEONLY();
Area3D *awareness_area = this->get_node<Area3D>("AwarenessArea");
awareness_area->connect("body_entered", callable_mp(this, &Turret::detect_node));
awareness_area->connect("body_exited", callable_mp(this, &Turret::lose_node));
@ -47,8 +50,12 @@ void Turret::awareness_changed() {
Node3D *Turret::select_target() {
for(Node3D *node : this->awareness)
if(this->attack_classes.has(node->get_class()) ^ this->invert_attack_classes)
if(!this->invert_attack_classes && this->attack_classes.has(node->get_class()))
return node;
else if(this->invert_attack_classes && !this->attack_classes.has(node->get_class())) {
UtilityFunctions::print("selecting inverted target");
return node;
}
return nullptr;
}
@ -130,13 +137,22 @@ void Turret::beam_ended() {
this->last_state_switch = Time::get_singleton()->get_ticks_msec() * 0.001f;
}
void Turret::set_invert_targets(bool value) {
this->invert_attack_classes = value;
this->current_target = nullptr;
this->awareness_changed();
if(this->state != TurretState::FIRING)
this->state = TurretState::WAITING;
}
void Turret::set_attack_classes(Array array) {
this->attack_classes.clear();
for(int i = 0; i < array.size(); ++i)
for(int i = 0; i < array.size(); ++i) {
if(array[i].get_type() == Variant::STRING_NAME && !this->attack_classes.has(array[i]))
this->attack_classes.push_back(array[i]);
else
this->attack_classes.push_back("");
}
}
Array Turret::get_attack_classes() const {

View file

@ -3,7 +3,7 @@
#include <godot_cpp/classes/area3d.hpp>
#include <godot_cpp/classes/packed_scene.hpp>
#include <godot_cpp/classes/static_body3d.hpp>
#include <godot_cpp/classes/rigid_body3d.hpp>
#include <godot_cpp/templates/hash_set.hpp>
#include <godot_cpp/templates/vector.hpp>
@ -14,8 +14,8 @@ enum class TurretState {
CHARGING,
FIRING
};
class Turret : public StaticBody3D {
GDCLASS(Turret, StaticBody3D);
class Turret : public RigidBody3D {
GDCLASS(Turret, RigidBody3D);
static void _bind_methods();
public:
virtual void _enter_tree() override;
@ -31,8 +31,10 @@ public:
void try_next_state();
void create_beam();
void beam_ended();
void set_invert_targets(bool value);
void set_attack_classes(Array array);
Array get_attack_classes() const;
void set_beam_scene(Ref<PackedScene> scene);

29
src/weapon_pickup.cpp Normal file
View file

@ -0,0 +1,29 @@
#include "weapon_pickup.hpp"
#include "car_player.hpp"
#include "godot_cpp/classes/random_number_generator.hpp"
namespace godot {
void WeaponPickup::_bind_methods() {
#define CLASSNAME WeaponPickup
}
void WeaponPickup::_enter_tree() {
this->connect("body_entered", callable_mp(this, &WeaponPickup::body_entered));
}
void WeaponPickup::body_entered(Node3D *node) {
CarPlayer *player = Object::cast_to<CarPlayer>(node);
if(!player) return;
switch(rng.randi() % 3) {
case 0:
player->activate_beacon();
break;
case 1:
player->activate_shield();
break;
case 2:
player->activate_turret();
}
this->queue_free();
}
}

17
src/weapon_pickup.hpp Normal file
View file

@ -0,0 +1,17 @@
#ifndef WEAPON_PICKUP_HPP
#define WEAPON_PICKUP_HPP
#include "godot_cpp/classes/area3d.hpp"
#include "godot_cpp/classes/random_number_generator.hpp"
namespace godot {
class WeaponPickup : public Area3D {
GDCLASS(WeaponPickup, Area3D);
static void _bind_methods();
public:
RandomNumberGenerator rng;
virtual void _enter_tree() override;
void body_entered(Node3D *node);
};
}
#endif // !WEAPON_PICKUP_HPP