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 and character customization pattern and channel-map artwork. Voyager's
incorporated original work includes 3D assets, the provisional fish incorporated original work includes 3D assets, the provisional fish
placeholder artwork, the title and dusk music identified above, and the robot placeholder artwork, the title and dusk music identified above, and the robot
animalese tones. Specific contributor exceptions are recorded below and in the animalese tones. The current starter motorcoach exterior was supplied by a
in-game credits. 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 These credits intentionally describe work by creator and contribution family
instead of maintaining a second file-by-file asset catalog. Runtime resources 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 PlayerHomeStateType = preload("res://homes/player_home_state.gd")
const DecorCatalogType = preload("res://homes/decor_catalog.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_BODY_SIZE := Vector3(5.6, 2.5, 2.35)
const EXTERIOR_DOOR_LOCAL := Vector3(-1.45, 0.85, 1.48) const EXTERIOR_DOOR_LOCAL := Vector3(-0.2, 0.85, 1.48)
const EXTERIOR_SPAWN_LOCAL := Vector3(-1.45, 0.25, 2.45) const EXTERIOR_SPAWN_LOCAL := Vector3(-0.2, 0.25, 2.45)
const EXTERIOR_INTERACTION_DISTANCE: float = 2.7 const EXTERIOR_INTERACTION_DISTANCE: float = 2.7
const INTERIOR_EXIT_DISTANCE: float = 2.1 const INTERIOR_EXIT_DISTANCE: float = 2.1
const INTERIOR_ORIGIN := Vector3(1000.0, 300.0, 1000.0) const INTERIOR_ORIGIN := Vector3(1000.0, 300.0, 1000.0)
@ -819,9 +822,18 @@ func _build_exterior(
root.name = "RV_%s" % fingerprint.left(8) root.name = "RV_%s" % fingerprint.left(8)
_exteriors_root.add_child(root) _exteriors_root.add_child(root)
root.global_transform = world_transform root.global_transform = world_transform
_add_box( if not _dedicated_runtime:
root, "Body", EXTERIOR_BODY_SIZE, Vector3(0.0, 1.35, 0.0), var motorcoach: Node3D = STARTER_MOTORCOACH_SCENE.instantiate() as Node3D
Color("d8d2bd"), true, 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 root.visible = not _dedicated_runtime
return root return root
@ -986,19 +998,28 @@ func _add_box(
mesh_instance.position = position mesh_instance.position = position
parent.add_child(mesh_instance) parent.add_child(mesh_instance)
if with_collision: if with_collision:
var body := StaticBody3D.new() return _add_box_collision(parent, node_name, size, position)
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 null 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( func _spawn_decor_poof(
owner_fingerprint: String, owner_fingerprint: String,
instance_id: String, instance_id: String,