WIP checkpoint: PC2: Basic visible player character representation
This commit is contained in:
@@ -1,7 +1,32 @@
|
|||||||
[gd_scene load_steps=2 format=3]
|
[gd_scene load_steps=9 format=3]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" path="res://scenes/player.tscn" id="1_player"]
|
[ext_resource type="PackedScene" path="res://scenes/player.tscn" id="1_player"]
|
||||||
|
|
||||||
|
[sub_resource type="BoxMesh" id="mesh_ground"]
|
||||||
|
size = Vector3(40, 1, 40)
|
||||||
|
|
||||||
|
[sub_resource type="BoxMesh" id="mesh_box1"]
|
||||||
|
size = Vector3(1.5, 2.0, 1.5)
|
||||||
|
|
||||||
|
[sub_resource type="CylinderMesh" id="mesh_cylinder"]
|
||||||
|
top_radius = 0.5
|
||||||
|
bottom_radius = 0.5
|
||||||
|
height = 2.0
|
||||||
|
|
||||||
|
[sub_resource type="SphereMesh" id="mesh_sphere"]
|
||||||
|
radius = 0.75
|
||||||
|
|
||||||
|
[sub_resource type="BoxMesh" id="mesh_box2"]
|
||||||
|
size = Vector3(1.0, 3.0, 1.0)
|
||||||
|
|
||||||
|
[sub_resource type="BoxMesh" id="mesh_box3"]
|
||||||
|
size = Vector3(2.0, 1.0, 2.0)
|
||||||
|
|
||||||
|
[sub_resource type="Environment" id="env_bg"]
|
||||||
|
background_mode = 1
|
||||||
|
background_color = Color(0.4, 0.6, 0.9, 1)
|
||||||
|
ambient_light_energy = 0.6
|
||||||
|
|
||||||
[node name="TestLevel" type="Node3D"]
|
[node name="TestLevel" type="Node3D"]
|
||||||
|
|
||||||
[node name="Ground" type="StaticBody3D" parent="."]
|
[node name="Ground" type="StaticBody3D" parent="."]
|
||||||
@@ -46,31 +71,5 @@ environment = SubResource("env_bg")
|
|||||||
[node name="PlayerSpawn" type="Marker3D" parent="."]
|
[node name="PlayerSpawn" type="Marker3D" parent="."]
|
||||||
position = Vector3(0, 1.0, 0)
|
position = Vector3(0, 1.0, 0)
|
||||||
|
|
||||||
[node name="Player" type="CharacterBody3D" parent="."]
|
[node name="Player" parent="." instance=ExtResource("1_player")]
|
||||||
position = Vector3(0, 1.0, 0)
|
position = Vector3(0, 1.0, 0)
|
||||||
script = ExtResource("1_player")
|
|
||||||
|
|
||||||
[sub_resource type="BoxMesh" id="mesh_ground"]
|
|
||||||
size = Vector3(40, 1, 40)
|
|
||||||
|
|
||||||
[sub_resource type="BoxMesh" id="mesh_box1"]
|
|
||||||
size = Vector3(1.5, 2.0, 1.5)
|
|
||||||
|
|
||||||
[sub_resource type="CylinderMesh" id="mesh_cylinder"]
|
|
||||||
top_radius = 0.5
|
|
||||||
bottom_radius = 0.5
|
|
||||||
height = 2.0
|
|
||||||
|
|
||||||
[sub_resource type="SphereMesh" id="mesh_sphere"]
|
|
||||||
radius = 0.75
|
|
||||||
|
|
||||||
[sub_resource type="BoxMesh" id="mesh_box2"]
|
|
||||||
size = Vector3(1.0, 3.0, 1.0)
|
|
||||||
|
|
||||||
[sub_resource type="BoxMesh" id="mesh_box3"]
|
|
||||||
size = Vector3(2.0, 1.0, 2.0)
|
|
||||||
|
|
||||||
[sub_resource type="Environment" id="env_bg"]
|
|
||||||
background_mode = 1
|
|
||||||
background_color = Color(0.4, 0.6, 0.9, 1)
|
|
||||||
ambient_light_energy = 0.6
|
|
||||||
|
|||||||
@@ -12,34 +12,38 @@ var failed := 0
|
|||||||
|
|
||||||
|
|
||||||
func _initialize() -> void:
|
func _initialize() -> void:
|
||||||
|
print("SMOKE: starting player smoke test")
|
||||||
_run()
|
_run()
|
||||||
|
|
||||||
|
|
||||||
func _run() -> void:
|
func _run() -> void:
|
||||||
await process_frame
|
await process_frame
|
||||||
|
print("SMOKE: loading test level scene")
|
||||||
|
|
||||||
# Load the test level scene (which now includes the player).
|
# Load the test level scene (which now includes the player).
|
||||||
var packed: PackedScene = load("res://scenes/worlds/test_level.tscn")
|
var packed: PackedScene = load("res://scenes/worlds/test_level.tscn")
|
||||||
var level: Node3D = packed.instantiate()
|
var level: Node3D = packed.instantiate()
|
||||||
root.add_child(level)
|
root.add_child(level)
|
||||||
await process_frame
|
print("SMOKE: level instantiated, waiting for ready")
|
||||||
|
await level.ready
|
||||||
|
print("SMOKE: level ready")
|
||||||
|
|
||||||
# 1. Verify the player node exists in the scene tree.
|
# 1. Verify the player node exists in the scene tree.
|
||||||
var player: CharacterBody3D = level.get_node("Player") as CharacterBody3D
|
var player := level.get_node("Player")
|
||||||
_check("Player node exists in test level", player != null)
|
_check("Player node exists in test level", player != null)
|
||||||
_check("Player is a CharacterBody3D", player is CharacterBody3D)
|
_check("Player is a CharacterBody3D", player is CharacterBody3D)
|
||||||
|
|
||||||
# 2. Verify the player has the expected child structure.
|
# 2. Verify the player has the expected child structure.
|
||||||
var collision: CollisionShape3D = player.get_node("CollisionShape3D") as CollisionShape3D
|
var collision := player.get_node("CollisionShape3D")
|
||||||
_check("Player has CollisionShape3D", collision != null)
|
_check("Player has CollisionShape3D", collision != null)
|
||||||
_check("CollisionShape3D has a shape", collision.shape != null)
|
_check("CollisionShape3D has a shape", collision.shape != null)
|
||||||
|
|
||||||
var mesh: MeshInstance3D = player.get_node("CapsuleMesh") as MeshInstance3D
|
var mesh := player.get_node("CapsuleMesh")
|
||||||
_check("Player has CapsuleMesh", mesh != null)
|
_check("Player has CapsuleMesh", mesh != null)
|
||||||
_check("CapsuleMesh has a mesh", mesh.mesh != null)
|
_check("CapsuleMesh has a mesh", mesh.mesh != null)
|
||||||
|
|
||||||
# 3. Verify the player spawned at the PlayerSpawn marker position.
|
# 3. Verify the player spawned at the PlayerSpawn marker position.
|
||||||
var spawn_marker: Marker3D = level.get_node("PlayerSpawn") as Marker3D
|
var spawn_marker: Marker3D = level.get_node("PlayerSpawn")
|
||||||
_check("PlayerSpawn marker exists", spawn_marker != null)
|
_check("PlayerSpawn marker exists", spawn_marker != null)
|
||||||
|
|
||||||
# The player's _ready() should have moved it to the spawn marker's
|
# The player's _ready() should have moved it to the spawn marker's
|
||||||
@@ -50,7 +54,7 @@ func _run() -> void:
|
|||||||
player.global_position == expected_pos)
|
player.global_position == expected_pos)
|
||||||
|
|
||||||
# 4. Verify the player script class_name is correct.
|
# 4. Verify the player script class_name is correct.
|
||||||
var script: GDScript = player.get_script() as GDScript
|
var script := player.get_script()
|
||||||
_check("Player has a script attached", script != null)
|
_check("Player has a script attached", script != null)
|
||||||
_check("Player script is Player class", script is GDScript)
|
_check("Player script is Player class", script is GDScript)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user