Replace starter RV placeholder with donated motorcoach

This commit is contained in:
Alexander Sellite 2026-08-31 00:31:02 -04:00
parent 826f62c352
commit 9b96a3bf53
4 changed files with 85 additions and 17 deletions

View file

@ -142,8 +142,10 @@ environment and UI artwork, item artwork, finished fish and creature artwork,
and character customization pattern and channel-map artwork. Voyager's
incorporated original work includes 3D assets, the provisional fish
placeholder artwork, the title and dusk music identified above, and the robot
animalese tones. Specific contributor exceptions are recorded below and in the
in-game credits.
animalese tones. The current starter motorcoach exterior was supplied by a
contributing artist who released its copyright to the project; the original
and cleaned source files are retained in the owners' source-work archive.
Specific contributor exceptions are recorded below and in the in-game credits.
These credits intentionally describe work by creator and contribution family
instead of maintaining a second file-by-file asset catalog. Runtime resources

Binary file not shown.

View file

@ -0,0 +1,45 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://bhph22caipcj6"
path="res://.godot/imported/starter_motorcoach.glb-153681ef1e622a556fba4df576dc6f84.scn"
[deps]
source_file="res://homes/assets/starter_motorcoach.glb"
dest_files=["res://.godot/imported/starter_motorcoach.glb-153681ef1e622a556fba4df576dc6f84.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
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
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
gltf/naming_version=2
gltf/embedded_image_handling=1
gltf/texture_map_mode=1

View file

@ -6,10 +6,13 @@ const NetworkHomeProtocolType = preload(
)
const PlayerHomeStateType = preload("res://homes/player_home_state.gd")
const DecorCatalogType = preload("res://homes/decor_catalog.gd")
const STARTER_MOTORCOACH_SCENE: PackedScene = preload(
"res://homes/assets/starter_motorcoach.glb"
)
const EXTERIOR_BODY_SIZE := Vector3(5.6, 2.5, 2.35)
const EXTERIOR_DOOR_LOCAL := Vector3(-1.45, 0.85, 1.48)
const EXTERIOR_SPAWN_LOCAL := Vector3(-1.45, 0.25, 2.45)
const EXTERIOR_DOOR_LOCAL := Vector3(-0.2, 0.85, 1.48)
const EXTERIOR_SPAWN_LOCAL := Vector3(-0.2, 0.25, 2.45)
const EXTERIOR_INTERACTION_DISTANCE: float = 2.7
const INTERIOR_EXIT_DISTANCE: float = 2.1
const INTERIOR_ORIGIN := Vector3(1000.0, 300.0, 1000.0)
@ -819,9 +822,18 @@ func _build_exterior(
root.name = "RV_%s" % fingerprint.left(8)
_exteriors_root.add_child(root)
root.global_transform = world_transform
_add_box(
root, "Body", EXTERIOR_BODY_SIZE, Vector3(0.0, 1.35, 0.0),
Color("d8d2bd"), true,
if not _dedicated_runtime:
var motorcoach: Node3D = STARTER_MOTORCOACH_SCENE.instantiate() as Node3D
if motorcoach != null:
motorcoach.name = "StarterMotorcoach"
root.add_child(motorcoach)
else:
push_error("The starter motorcoach exterior could not be instantiated.")
_add_box_collision(
root,
"Body",
EXTERIOR_BODY_SIZE,
Vector3(0.0, 1.35, 0.0),
)
root.visible = not _dedicated_runtime
return root
@ -986,19 +998,28 @@ func _add_box(
mesh_instance.position = position
parent.add_child(mesh_instance)
if with_collision:
var body := StaticBody3D.new()
body.name = "%sCollision" % node_name
body.position = position
var collision := CollisionShape3D.new()
var shape := BoxShape3D.new()
shape.size = size
collision.shape = shape
body.add_child(collision)
parent.add_child(body)
return body
return _add_box_collision(parent, node_name, size, position)
return null
func _add_box_collision(
parent: Node3D,
node_name: String,
size: Vector3,
position: Vector3,
) -> StaticBody3D:
var body := StaticBody3D.new()
body.name = "%sCollision" % node_name
body.position = position
var collision := CollisionShape3D.new()
var shape := BoxShape3D.new()
shape.size = size
collision.shape = shape
body.add_child(collision)
parent.add_child(body)
return body
func _spawn_decor_poof(
owner_fingerprint: String,
instance_id: String,